EXIF library (libexif) Internals  0.6.24
exif-data.h
Go to the documentation of this file.
1 
4 /*
5  * \author Lutz Mueller <lutz@users.sourceforge.net>
6  * \date 2001-2005
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  * Boston, MA 02110-1301 USA.
22  */
23 
24 #ifndef LIBEXIF_EXIF_DATA_H
25 #define LIBEXIF_EXIF_DATA_H
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* __cplusplus */
30 
32 #include <libexif/exif-data-type.h>
33 #include <libexif/exif-ifd.h>
34 #include <libexif/exif-log.h>
35 #include <libexif/exif-tag.h>
36 
38 typedef struct _ExifData ExifData;
39 typedef struct _ExifDataPrivate ExifDataPrivate;
40 
41 #include <libexif/exif-content.h>
43 #include <libexif/exif-mem.h>
44 
46 struct _ExifData
47 {
50 
52  unsigned char *data;
53 
55  unsigned int size;
56 
58 };
59 
67 ExifData *exif_data_new (void);
68 
77 
84 ExifData *exif_data_new_from_file (const char *path);
85 
92 ExifData *exif_data_new_from_data (const unsigned char *data,
93  unsigned int size);
94 
106 void exif_data_load_data (ExifData *data, const unsigned char *d,
107  unsigned int size);
108 
119 void exif_data_save_data (ExifData *data, unsigned char **d,
120  unsigned int *ds);
121 
122 void exif_data_ref (ExifData *data);
123 void exif_data_unref (ExifData *data);
124 void exif_data_free (ExifData *data);
125 
132 
141 
151 
159 void exif_data_fix (ExifData *d);
160 
161 typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data);
162 
171  void *user_data);
172 
174 typedef enum {
177 
180 
184 
192 
200 
207 
214 
221 
228 
234 void exif_data_dump (ExifData *data);
235 
241 void exif_data_log (ExifData *data, ExifLog *log);
242 
251 #define exif_data_get_entry(d,t) \
252  (exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \
253  exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \
254  exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \
255  exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \
256  exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \
257  exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \
258  exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \
259  exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \
260  exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \
261  exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
262 
263 #ifdef __cplusplus
264 }
265 #endif /* __cplusplus */
266 
267 #endif /* !defined(LIBEXIF_EXIF_DATA_H) */
Defines the ExifByteOrder enum and the associated functions.
ExifByteOrder
Which byte order to use.
Handling EXIF IFDs.
ExifDataType
Represents the type of image data to which the EXIF data applies.
void exif_data_set_byte_order(ExifData *data, ExifByteOrder order)
Set the byte order to use for this EXIF data.
Definition: exif-data.c:1217
ExifData * exif_data_new(void)
Allocate a new ExifData.
Definition: exif-data.c:96
void exif_data_unref(ExifData *data)
Definition: exif-data.c:1098
void exif_data_free(ExifData *data)
Definition: exif-data.c:1109
const char * exif_data_option_get_name(ExifDataOption o)
Return a short textual description of the given ExifDataOption.
Definition: exif-data.c:1274
ExifByteOrder exif_data_get_byte_order(ExifData *data)
Return the byte order in use by this EXIF structure.
Definition: exif-data.c:1173
ExifDataOption
Options to configure the behaviour of ExifData.
Definition: exif-data.h:174
@ EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE
Leave the MakerNote alone, which could cause it to be corrupted.
Definition: exif-data.h:182
@ EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS
Act as though unknown tags are not present.
Definition: exif-data.h:176
@ EXIF_DATA_OPTION_FOLLOW_SPECIFICATION
Fix the EXIF tags to follow the spec.
Definition: exif-data.h:179
void exif_data_ref(ExifData *data)
Definition: exif-data.c:1089
const char * exif_data_option_get_description(ExifDataOption o)
Return a verbose textual description of the given ExifDataOption.
Definition: exif-data.c:1285
ExifDataType exif_data_get_data_type(ExifData *d)
Return the data type for the given ExifData.
Definition: exif-data.c:1357
ExifData * exif_data_new_from_data(const unsigned char *data, unsigned int size)
Allocate a new ExifData and load EXIF data from a memory buffer.
Definition: exif-data.c:154
ExifMnoteData * exif_data_get_mnote_data(ExifData *d)
Return the MakerNote data out of the EXIF data.
Definition: exif-data.c:90
void exif_data_fix(ExifData *d)
Fix the EXIF data to bring it into specification.
Definition: exif-data.c:1342
void exif_data_dump(ExifData *data)
Dump all EXIF data to stdout.
Definition: exif-data.c:1146
void(* ExifDataForeachContentFunc)(ExifContent *, void *user_data)
Definition: exif-data.h:161
void exif_data_unset_option(ExifData *d, ExifDataOption o)
Clear the given option on the given ExifData.
Definition: exif-data.c:1305
void exif_data_set_data_type(ExifData *d, ExifDataType dt)
Set the data type for the given ExifData.
Definition: exif-data.c:1348
ExifData * exif_data_new_from_file(const char *path)
Allocate a new ExifData and load EXIF data from a JPEG file.
Definition: exif-data.c:1075
void exif_data_save_data(ExifData *data, unsigned char **d, unsigned int *ds)
Store raw EXIF data representing the ExifData structure into a memory buffer.
Definition: exif-data.c:1030
void exif_data_foreach_content(ExifData *data, ExifDataForeachContentFunc func, void *user_data)
Execute a function on each IFD in turn.
Definition: exif-data.c:1182
ExifData * exif_data_new_mem(ExifMem *)
Allocate a new ExifData using the given memory allocator.
Definition: exif-data.c:107
void exif_data_load_data(ExifData *data, const unsigned char *d, unsigned int size)
Load the ExifData structure from the raw JPEG or EXIF data in the given memory buffer.
Definition: exif-data.c:844
void exif_data_log(ExifData *data, ExifLog *log)
Set the log message object for all IFDs.
Definition: exif-data.c:1233
void exif_data_set_option(ExifData *d, ExifDataOption o)
Set the given option on the given ExifData.
Definition: exif-data.c:1296
unsigned char size
Definition: exif-format.c:35
@ EXIF_IFD_COUNT
Not a real value, just (max_value + 1).
Definition: exif-ifd.h:35
Log message infrastructure.
Define the ExifMem data type and the associated functions.
Handling EXIF MakerNote tags.
Handling EXIF tags.
Represents the entire EXIF data found in an image.
Definition: exif-data.h:47
unsigned char * data
Pointer to thumbnail image, or NULL if not available.
Definition: exif-data.h:52
unsigned int size
Number of bytes in thumbnail image at data.
Definition: exif-data.h:55
ExifContent * ifd[EXIF_IFD_COUNT]
Data for each IFD.
Definition: exif-data.h:49
ExifDataPrivate * priv
Definition: exif-data.h:57

libexif Generated by doxygen