summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Figuiere <hub@figuiere.net>2010-03-05 22:01:47 -0800
committerHubert Figuiere <hub@figuiere.net>2010-03-05 22:01:47 -0800
commit91af77f1e4bac06946de99ac8b459bfceba71a44 (patch)
tree7c711d06995ed0c305316b2ebd923ce04d5f1dc6
parent81d750df8576716a421787beea2a44141ac87aee (diff)
- New demo ppmload to create a ppm out of the demosaicized image.
-rw-r--r--.gitignore1
-rw-r--r--demo/Makefile.am6
-rw-r--r--demo/ppmload.c77
3 files changed, 83 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 6349706..a7b7a18 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@ demo/cfa
demo/gdk
demo/extensions
demo/pixbufload
+demo/ppmload
lib/io/teststream
test/ljpegtest
test/extensions
diff --git a/demo/Makefile.am b/demo/Makefile.am
index bccf643..7acf016 100644
--- a/demo/Makefile.am
+++ b/demo/Makefile.am
@@ -4,7 +4,7 @@ if BUILD_GNOME_SUPPORT
GNOME_BINARIES = gdk pixbufload
endif
-noinst_PROGRAMS = extensions thumb thumbc cfa ccfa $(GNOME_BINARIES)
+noinst_PROGRAMS = extensions thumb thumbc cfa ccfa ppmload $(GNOME_BINARIES)
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/gnome/include \
@LIBGDKPIXBUF_CFLAGS@
@@ -40,3 +40,7 @@ gdk_LDFLAGS = -L$(top_builddir)/gnome -static
pixbufload_SOURCES = pixbufload.c
pixbufload_LDADD = $(LIBOPENRAWGNOME_LIBS)
pixbufload_LDFLAGS = -L$(top_builddir)/gnome -static
+
+ppmload_SOURCES = ppmload.c
+ppmload_LDADD = $(LIBOPENRAW_LIBS)
+ppmload_LDFLAGS = -L$(top_builddir)/lib -static
diff --git a/demo/ppmload.c b/demo/ppmload.c
new file mode 100644
index 0000000..7cf118c
--- /dev/null
+++ b/demo/ppmload.c
@@ -0,0 +1,77 @@
+/*
+ * libopenraw - ppmload.c
+ *
+ * Copyright (C) 2007, 2010 Hubert Figuiere
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <libopenraw/libopenraw.h>
+
+int
+main(int argc, char **argv)
+{
+ const char *filename;
+
+ if(argc < 2) {
+ return 1;
+ }
+
+ filename = argv[1];
+
+ or_debug_set_level(DEBUG2);
+
+ if(filename && *filename) {
+ ORRawFileRef raw_file = or_rawfile_new(filename, OR_RAWFILE_TYPE_UNKNOWN);
+
+ if(raw_file) {
+ or_error err;
+ ORBitmapDataRef bitmapdata = or_bitmapdata_new();
+ err = or_rawfile_get_rendered_image(raw_file, bitmapdata, 0);
+ if(err == OR_ERROR_NONE) {
+ uint32_t x, y;
+ FILE * f;
+ size_t size, written_size;
+
+ or_bitmapdata_dimensions(bitmapdata, &x, &y);
+ printf(" --- dimensions x = %d, y = %d\n", x, y);
+ f = fopen("image.ppm", "wb");
+ fprintf(f, "P6\n");
+ fprintf(f, "%d %d\n", x - 2, y);
+ fprintf(f, "255\n");
+
+ size = or_bitmapdata_data_size(bitmapdata);
+ printf(" --- size = %ld\n", (long)size);
+ written_size = fwrite(or_bitmapdata_data(bitmapdata), 1, size, f);
+ if(written_size != size) {
+ printf("short read\n");
+ }
+ fclose(f);
+ }
+ or_bitmapdata_release(bitmapdata);
+ or_rawfile_release(raw_file);
+ }
+ }
+ else {
+ printf("No input file name\n");
+ }
+
+ return 0;
+}