diff src/format_raw.h @ 101:847e4bc6b54c

Tue Nov 7 15:35:59 2006 John Ellis <johne@verizon.net> * exif.c: Use new format_raw_exif_offset() function to find Exif in raw files. * filelist.c: Add orf and pef to displayed file types. * format_canon.h, format_fuji.h: Update to new #define format. * format_fuji.c: Use same offset for Exif as the jpeg image as the Exif is always embedded in the jpeg and assuming offset of 12 is just broken. * format_nikon.h: Update to new #define format, and add pentax here as finding the jpeg will be same code. * format_olympus.[ch]: Support Olympus raw files with embedded jpegs, not all raw files will have a jpeg, but all appear to have Exif tags. * format_raw.[ch]: Add new camera types, and add a debugging facility to easily list all tags within tiff files (see format_raw.h to enable).
author gqview
date Tue, 07 Nov 2006 21:00:50 +0000
parents b58cac75ad12
children 71e1ebee420e
line wrap: on
line diff
--- a/src/format_raw.h	Tue Nov 07 01:57:19 2006 +0000
+++ b/src/format_raw.h	Tue Nov 07 21:00:50 2006 +0000
@@ -22,15 +22,30 @@
 	FORMAT_RAW_MATCH_TIFF_MAKE
 } FormatRawMatchType;
 
+typedef enum {
+	FORMAT_RAW_EXIF_NONE,
+	FORMAT_RAW_EXIF_TIFF,
+	FORMAT_RAW_EXIF_JPEG,
+	FORMAT_RAW_EXIF_IFD_II,
+	FORMAT_RAW_EXIF_IFD_MM,
+	FORMAT_RAW_EXIF_PROPRIETARY
+} FormatRawExifType;
+
 typedef gint (* FormatRawParseFunc)(unsigned char *data, const guint len,
 				    guint *image_offset, guint *exif_offset);
 
+typedef gint (* FormatRawExifParseFunc)(unsigned char *data, const guint len,
+					ExifData *exif);
+
 gint format_raw_img_exif_offsets(unsigned char *data, const guint len,
 				 guint *image_offset, guint *exif_offset);
 gint format_raw_img_exif_offsets_fd(int fd, const gchar *path,
 				    unsigned char *header_data, const guint header_len,
 				    guint *image_offset, guint *exif_offset);
 
+FormatRawExifType format_raw_exif_offset(unsigned char *data, const guint len, guint *exif_offset,
+					 FormatRawExifParseFunc *exif_parse_func);
+
 
 typedef enum {
 	FORMAT_EXIF_MATCH_MAKE,
@@ -44,5 +59,23 @@
 				 guint size, ExifByteOrder bo);
 
 
+#define DEBUG_RAW_TIFF 0
+
+#if DEBUG_RAW_TIFF
+
+#define FORMAT_RAW_DEBUG_TIFF { "", \
+				FORMAT_RAW_MATCH_MAGIC,     0, "II", 2, \
+				FORMAT_RAW_EXIF_NONE, NULL, \
+				"Tiff debugger II", format_debug_tiff_raw }, \
+			      { "", \
+				FORMAT_RAW_MATCH_MAGIC,     0, "MM", 2, \
+				FORMAT_RAW_EXIF_NONE, NULL, \
+				"Tiff debugger MM", format_debug_tiff_raw }
+
+/* used for debugging only */
+gint format_debug_tiff_raw(unsigned char *data, const guint len,
+			   guint *image_offset, guint *exif_offset);
 #endif
 
+#endif
+