diff src/format_fuji.c @ 45:7cfa60beda76

Thu May 26 13:57:19 2005 John Ellis <johne@verizon.net> * format_raw.[ch]: Move camera specific code to manufacturer specific format_*.c files. Change code so that file descripter version is now a separate functions that wraps the standard parser by using mmap. * format_canon.[ch]: Moved Canon specific raw support here, removed file descriptor versions of parser. This Canon raw file parser written by Daniel M. German. * format_fuji.[ch]: Move Fuji specific raw support here, parser written by Lars Ellenberg. * exif.c: Update for change to format_raw_img_exif_offsets. * filelist.c: Add cr2 extension to Canon raw format list. * image-load.c: Fixes for changes to format_raw_img_exif_offset_fd so that buffer is refilled using new offset of file descriptor. * src/Makefile.am: Add format_canon.[ch], format_fuji.[ch] to build. ##### Note: GQview CVS on sourceforge is not always up to date, please use ##### ##### an offical release when making enhancements and translation updates. #####
author gqview
date Thu, 26 May 2005 18:10:52 +0000
parents
children 276ea4c98d33
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/format_fuji.c	Thu May 26 18:10:52 2005 +0000
@@ -0,0 +1,59 @@
+/*
+ *  GQView
+ *  (C) 2005 John Ellis
+ *
+ *  Authors:
+ *    Original version 2005 Lars Ellenberg, base on dcraw by David coffin.
+ *
+ * This software is released under the GNU General Public License (GNU GPL).
+ * Please read the included file COPYING for more information.
+ * This software comes with no warranty of any kind, use at your own risk!
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <glib.h>
+
+#include "intl.h"
+
+#include "format_fuji.h"
+#include "format_raw.h"
+
+
+gint format_raw_test_fuji(const void *data, const guint len,
+			  guint *image_offset, guint *exif_offset)
+{
+	guint io;
+	guint eo;
+
+	if (len < 128 ||
+	    memcmp(data, "FUJIFILM", 8) != 0)
+		{
+		return FALSE;
+		}
+
+	io = GUINT32_FROM_BE(*(guint32*)(data + 84));
+	eo = *image_offset + 12;
+
+	/* verify jpeg marker */
+	if (memcmp(data + io, "\xff\xd8\xff\xe1", 4) != 0)
+		{
+		return FALSE;
+		}
+
+	if (image_offset) *image_offset = io;
+	if (exif_offset) *exif_offset = eo;
+
+	printf("raw Fuji format file\n");
+
+	return TRUE;
+}
+
+