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
00117 void exif_data_save_data (ExifData *data, unsigned char **d,
00118 unsigned int *ds);
00119
00120 void exif_data_ref (ExifData *data);
00121 void exif_data_unref (ExifData *data);
00122 void exif_data_free (ExifData *data);
00123
00129 ExifByteOrder exif_data_get_byte_order (ExifData *data);
00130
00138 void exif_data_set_byte_order (ExifData *data, ExifByteOrder order);
00139
00148 ExifMnoteData *exif_data_get_mnote_data (ExifData *d);
00149
00157 void exif_data_fix (ExifData *d);
00158
00159 typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data);
00160
00167 void exif_data_foreach_content (ExifData *data,
00168 ExifDataForeachContentFunc func,
00169 void *user_data);
00170
00172 typedef enum {
00174 EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS = 1 << 0,
00175
00177 EXIF_DATA_OPTION_FOLLOW_SPECIFICATION = 1 << 1,
00178
00180 EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE = 1 << 2
00181 } ExifDataOption;
00182
00188 const char *exif_data_option_get_name (ExifDataOption o);
00189
00195 const char *exif_data_option_get_description (ExifDataOption o);
00196
00202 void exif_data_set_option (ExifData *d, ExifDataOption o);
00203
00209 void exif_data_unset_option (ExifData *d, ExifDataOption o);
00210
00216 void exif_data_set_data_type (ExifData *d, ExifDataType dt);
00217
00223 ExifDataType exif_data_get_data_type (ExifData *d);
00224
00230 void exif_data_dump (ExifData *data);
00231
00237 void exif_data_log (ExifData *data, ExifLog *log);
00238
00247 #define exif_data_get_entry(d,t) \
00248 (exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \
00249 exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \
00250 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \
00251 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \
00252 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \
00253 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \
00254 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \
00255 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \
00256 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \
00257 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
00258
00259 #ifdef __cplusplus
00260 }
00261 #endif
00262
00263 #endif