exif-data.h
Go to the documentation of this file.00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __EXIF_DATA_H__
00025 #define __EXIF_DATA_H__
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 #include <libexif/exif-byte-order.h>
00032 #include <libexif/exif-data-type.h>
00033 #include <libexif/exif-ifd.h>
00034 #include <libexif/exif-log.h>
00035 #include <libexif/exif-tag.h>
00036
00038 typedef struct _ExifData ExifData;
00039 typedef struct _ExifDataPrivate ExifDataPrivate;
00040
00041 #include <libexif/exif-content.h>
00042 #include <libexif/exif-mnote-data.h>
00043 #include <libexif/exif-mem.h>
00044
00046 struct _ExifData
00047 {
00049 ExifContent *ifd[EXIF_IFD_COUNT];
00050
00052 unsigned char *data;
00053
00055 unsigned int size;
00056
00057 ExifDataPrivate *priv;
00058 };
00059
00067 ExifData *exif_data_new (void);
00068
00076 ExifData *exif_data_new_mem (ExifMem *);
00077
00084 ExifData *exif_data_new_from_file (const char *path);
00085
00092 ExifData *exif_data_new_from_data (const unsigned char *data,
00093 unsigned int size);
00094
00105 void exif_data_load_data (ExifData *data, const unsigned char *d,
00106 unsigned int size);
00107
00118 void exif_data_save_data (ExifData *data, unsigned char **d,
00119 unsigned int *ds);
00120
00121 void exif_data_ref (ExifData *data);
00122 void exif_data_unref (ExifData *data);
00123 void exif_data_free (ExifData *data);
00124
00130 ExifByteOrder exif_data_get_byte_order (ExifData *data);
00131
00139 void exif_data_set_byte_order (ExifData *data, ExifByteOrder order);
00140
00149 ExifMnoteData *exif_data_get_mnote_data (ExifData *d);
00150
00158 void exif_data_fix (ExifData *d);
00159
00160 typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data);
00161
00168 void exif_data_foreach_content (ExifData *data,
00169 ExifDataForeachContentFunc func,
00170 void *user_data);
00171
00173 typedef enum {
00175 EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS = 1 << 0,
00176
00178 EXIF_DATA_OPTION_FOLLOW_SPECIFICATION = 1 << 1,
00179
00181 EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE = 1 << 2
00182 } ExifDataOption;
00183
00189 const char *exif_data_option_get_name (ExifDataOption o);
00190
00196 const char *exif_data_option_get_description (ExifDataOption o);
00197
00203 void exif_data_set_option (ExifData *d, ExifDataOption o);
00204
00210 void exif_data_unset_option (ExifData *d, ExifDataOption o);
00211
00217 void exif_data_set_data_type (ExifData *d, ExifDataType dt);
00218
00224 ExifDataType exif_data_get_data_type (ExifData *d);
00225
00231 void exif_data_dump (ExifData *data);
00232
00238 void exif_data_log (ExifData *data, ExifLog *log);
00239
00248 #define exif_data_get_entry(d,t) \
00249 (exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \
00250 exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \
00251 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \
00252 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \
00253 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \
00254 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \
00255 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \
00256 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \
00257 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \
00258 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
00259
00260 #ifdef __cplusplus
00261 }
00262 #endif
00263
00264 #endif