/*
- * Geeqie
- * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2012 The Geeqie Team
+ * Copyright (C) 2006 John Ellis
+ * Copyright (C) 2008 - 2016 The Geeqie Team
*
- * Authors:
- * Support for Exif file format, originally written by Eric Swalens.
- * Modified by Quy Tonthat
- * Reimplemented with generic data storage by John Ellis
+ * Authors: Eric Swalens, Quy Tonthat, John Ellis
*
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
#ifndef __EXIF_INT_H
#define __EXIF_INT_H
+#include <cstdio>
+
#include "exif.h"
/*
*-----------------------------------------------------------------------------
*/
-typedef enum {
+enum ExifByteOrder {
EXIF_BYTE_ORDER_INTEL,
EXIF_BYTE_ORDER_MOTOROLA
-} ExifByteOrder;
+};
-typedef struct _ExifFormatAttrib ExifFormatAttrib;
-struct _ExifFormatAttrib
+struct ExifFormatAttrib
{
ExifFormatType type;
guint size;
const gchar *description;
};
-/* the list of known tag data formats */
-extern ExifFormatAttrib ExifFormatList[];
+extern ExifFormatAttrib ExifFormatList[]; /**< the list of known tag data formats */
/*
*-----------------------------------------------------------------------------
*/
-typedef struct _ExifMarker ExifMarker;
-typedef struct _ExifTextList ExifTextList;
-
-struct _ExifData
+struct ExifData
{
gchar *path;
- GList *items; /* list of (ExifItem *) */
- GList *current; /* for exif_get_next_item */
+ GList *items; /**< list of (ExifItem *) */
+ GList *current; /**< for exif_get_next_item */
};
-
-struct _ExifItem
+struct ExifTextList
{
- ExifFormatType format;
- guint tag;
- const ExifMarker *marker;
- guint elements;
- gpointer data;
- guint data_len;
+ gint value;
+ const gchar *description;
};
-struct _ExifMarker
+struct ExifMarker
{
guint tag;
ExifFormatType format;
gint components;
- gchar *key;
- gchar *description;
+ const gchar *key;
+ const gchar *description;
ExifTextList *list;
};
-#define EXIF_MARKER_LIST_END { 0x0000, EXIF_FORMAT_UNKNOWN, 0, NULL, NULL, NULL }
-
-struct _ExifTextList
+struct ExifItem
{
- gint value;
- const gchar *description;
+ ExifFormatType format;
+ guint tag;
+ const ExifMarker *marker;
+ guint elements;
+ gpointer data;
+ guint data_len;
};
+#define EXIF_MARKER_LIST_END { 0x0000, EXIF_FORMAT_UNKNOWN, 0, NULL, NULL, NULL }
+
#define EXIF_TEXT_LIST_END { -1, NULL }
-/* the known exif tags list */
-extern ExifMarker ExifKnownMarkersList[];
+extern ExifMarker ExifKnownMarkersList[]; /**< the known exif tags list */
-/* the unknown tags utilize this generic list */
-extern ExifMarker ExifUnknownMarkersList[];
+extern ExifMarker ExifUnknownMarkersList[]; /**< the unknown tags utilize this generic list */
-/* the list of specially formatted keys, for human readable output */
-extern ExifFormattedText ExifFormattedList[];
+extern ExifFormattedText ExifFormattedList[]; /**< the list of specially formatted keys, for human readable output */
/*
*-----------------------------------------------------------------------------
*/
-
-/* usually for debugging to stdout */
+/**
+ * @headerfile exif_write_data_list
+ * usually for debugging to stdout
+ */
void exif_write_data_list(ExifData *exif, FILE *f, gint human_readable_list);
gint level,
const ExifMarker *list);
-gint exif_tiff_directory_offset(guchar *data, const guint len,
+gint exif_tiff_directory_offset(guchar *data, guint len,
guint *offset, ExifByteOrder *bo);
gint exif_tiff_parse(ExifData *exif, guchar *tiff, guint size, ExifMarker *list);