2 * Copyright (C) 2006 John Ellis
3 * Copyright (C) 2008 - 2016 The Geeqie Team
5 * Authors: Eric Swalens, Quy Tonthat, John Ellis
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 *-----------------------------------------------------------------------------
30 *-----------------------------------------------------------------------------
34 EXIF_BYTE_ORDER_INTEL,
35 EXIF_BYTE_ORDER_MOTOROLA
38 struct ExifFormatAttrib
42 const gchar *short_name;
43 const gchar *description;
46 extern ExifFormatAttrib ExifFormatList[]; /**< the list of known tag data formats */
50 *-----------------------------------------------------------------------------
52 *-----------------------------------------------------------------------------
58 GList *items; /**< list of (ExifItem *) */
59 GList *current; /**< for exif_get_next_item */
65 const gchar *description;
71 ExifFormatType format;
74 const gchar *description;
80 ExifFormatType format;
82 const ExifMarker *marker;
88 #define EXIF_MARKER_LIST_END { 0x0000, EXIF_FORMAT_UNKNOWN, 0, NULL, NULL, NULL }
90 #define EXIF_TEXT_LIST_END { -1, NULL }
96 *-----------------------------------------------------------------------------
98 *-----------------------------------------------------------------------------
103 extern ExifMarker ExifKnownMarkersList[]; /**< the known exif tags list */
105 extern ExifMarker ExifUnknownMarkersList[]; /**< the unknown tags utilize this generic list */
107 extern ExifFormattedText ExifFormattedList[]; /**< the list of specially formatted keys, for human readable output */
111 *-----------------------------------------------------------------------------
113 *-----------------------------------------------------------------------------
117 * @headerfile exif_write_data_list
118 * usually for debugging to stdout
120 void exif_write_data_list(ExifData *exif, FILE *f, gint human_readable_list);
124 /* These funcs for use by makernote/tiff parsers only */
126 #define EXIF_TIFF_MAX_LEVELS 4
128 #define EXIF_TIFD_OFFSET_TAG 0
129 #define EXIF_TIFD_OFFSET_FORMAT 2
130 #define EXIF_TIFD_OFFSET_COUNT 4
131 #define EXIF_TIFD_OFFSET_DATA 8
132 #define EXIF_TIFD_SIZE 12
135 guint16 exif_byte_get_int16(guchar *f, ExifByteOrder bo);
136 guint32 exif_byte_get_int32(guchar *f, ExifByteOrder bo);
137 void exif_byte_put_int16(guchar *f, guint16 n, ExifByteOrder bo);
138 void exif_byte_put_int32(guchar *f, guint32 n, ExifByteOrder bo);
140 ExifItem *exif_item_new(ExifFormatType format, guint tag,
141 guint elements, const ExifMarker *marker);
142 void exif_item_copy_data(ExifItem *item, gpointer src, guint len,
143 ExifFormatType src_format, ExifByteOrder bo);
145 gint exif_parse_IFD_table(ExifData *exif,
146 guchar *tiff, guint offset,
147 guint size, ExifByteOrder bo,
149 const ExifMarker *list);
151 gint exif_tiff_directory_offset(guchar *data, guint len,
152 guint *offset, ExifByteOrder *bo);
153 gint exif_tiff_parse(ExifData *exif, guchar *tiff, guint size, ExifMarker *list);
155 gchar *exif_text_list_find_value(ExifTextList *list, guint value);
158 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */