Tue Nov 7 15:35:59 2006 John Ellis <johne@verizon.net>
[geeqie.git] / src / format_raw.h
1 /*
2  *  GQView
3  *  (C) 2005 John Ellis
4  *
5  *  Authors:
6  *    Original version 2005 Lars Ellenberg, base on dcraw by David coffin.
7  *
8  * This software is released under the GNU General Public License (GNU GPL).
9  * Please read the included file COPYING for more information.
10  * This software comes with no warranty of any kind, use at your own risk!
11  */
12
13 #ifndef __FORMAT_RAW_H
14 #define __FORMAT_RAW_H
15
16
17 #include "exif.h"
18
19
20 typedef enum {
21         FORMAT_RAW_MATCH_MAGIC,
22         FORMAT_RAW_MATCH_TIFF_MAKE
23 } FormatRawMatchType;
24
25 typedef enum {
26         FORMAT_RAW_EXIF_NONE,
27         FORMAT_RAW_EXIF_TIFF,
28         FORMAT_RAW_EXIF_JPEG,
29         FORMAT_RAW_EXIF_IFD_II,
30         FORMAT_RAW_EXIF_IFD_MM,
31         FORMAT_RAW_EXIF_PROPRIETARY
32 } FormatRawExifType;
33
34 typedef gint (* FormatRawParseFunc)(unsigned char *data, const guint len,
35                                     guint *image_offset, guint *exif_offset);
36
37 typedef gint (* FormatRawExifParseFunc)(unsigned char *data, const guint len,
38                                         ExifData *exif);
39
40 gint format_raw_img_exif_offsets(unsigned char *data, const guint len,
41                                  guint *image_offset, guint *exif_offset);
42 gint format_raw_img_exif_offsets_fd(int fd, const gchar *path,
43                                     unsigned char *header_data, const guint header_len,
44                                     guint *image_offset, guint *exif_offset);
45
46 FormatRawExifType format_raw_exif_offset(unsigned char *data, const guint len, guint *exif_offset,
47                                          FormatRawExifParseFunc *exif_parse_func);
48
49
50 typedef enum {
51         FORMAT_EXIF_MATCH_MAKE,
52         FORMAT_EXIF_MATCH_MAKERNOTE
53 } FormatExifMatchType;
54
55 typedef gint (* FormatExifParseFunc)(ExifData *exif, unsigned char *tiff, guint offset,
56                                     guint size, ExifByteOrder bo);
57
58 gint format_exif_makernote_parse(ExifData *exif, unsigned char *tiff, guint offset,
59                                  guint size, ExifByteOrder bo);
60
61
62 #define DEBUG_RAW_TIFF 0
63
64 #if DEBUG_RAW_TIFF
65
66 #define FORMAT_RAW_DEBUG_TIFF { "", \
67                                 FORMAT_RAW_MATCH_MAGIC,     0, "II", 2, \
68                                 FORMAT_RAW_EXIF_NONE, NULL, \
69                                 "Tiff debugger II", format_debug_tiff_raw }, \
70                               { "", \
71                                 FORMAT_RAW_MATCH_MAGIC,     0, "MM", 2, \
72                                 FORMAT_RAW_EXIF_NONE, NULL, \
73                                 "Tiff debugger MM", format_debug_tiff_raw }
74
75 /* used for debugging only */
76 gint format_debug_tiff_raw(unsigned char *data, const guint len,
77                            guint *image_offset, guint *exif_offset);
78 #endif
79
80 #endif
81