EXIF library (libexif) Internals 0.6.26
exif-data.h
Go to the documentation of this file.
1
4/*
5 * Copyright (c) 2001-2008 Lutz Mueller <lutz@users.sourceforge.net>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library 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 GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301 USA.
21 *
22 * SPDX-License-Identifier: LGPL-2.0-or-later
23 */
24
25#ifndef LIBEXIF_EXIF_DATA_H
26#define LIBEXIF_EXIF_DATA_H
27
28#ifdef __cplusplus
29extern "C" {
30#endif /* __cplusplus */
31
34#include <libexif/exif-ifd.h>
35#include <libexif/exif-log.h>
36#include <libexif/exif-tag.h>
37
39typedef struct _ExifData ExifData;
41
44#include <libexif/exif-mem.h>
45
48{
51
53 unsigned char *data;
54
56 unsigned int size;
57
59};
60
69
78
85ExifData *exif_data_new_from_file (const char *path);
86
93ExifData *exif_data_new_from_data (const unsigned char *data,
94 unsigned int size);
95
107void exif_data_load_data (ExifData *data, const unsigned char *d,
108 unsigned int size);
109
120void exif_data_save_data (ExifData *data, unsigned char **d,
121 unsigned int *ds);
122
123void exif_data_ref (ExifData *data);
124void exif_data_unref (ExifData *data);
125void exif_data_free (ExifData *data);
126
133
142
152
160void exif_data_fix (ExifData *d);
161
162typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data);
163
172 void *user_data);
173
175typedef enum {
178
181
185
193
201
208
215
222
229
235void exif_data_dump (ExifData *data);
236
242void exif_data_log (ExifData *data, ExifLog *log);
243
252#define exif_data_get_entry(d,t) \
253 (exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \
254 exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \
255 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \
256 exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \
257 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \
258 exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \
259 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \
260 exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \
261 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \
262 exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
263
264#ifdef __cplusplus
265}
266#endif /* __cplusplus */
267
268#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:1229
void exif_data_unref(ExifData *data)
Definition exif-data.c:1110
void exif_data_free(ExifData *data)
Definition exif-data.c:1121
ExifByteOrder exif_data_get_byte_order(ExifData *data)
Return the byte order in use by this EXIF structure.
Definition exif-data.c:1185
ExifDataOption
Options to configure the behaviour of ExifData.
Definition exif-data.h:175
@ EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE
Leave the MakerNote alone, which could cause it to be corrupted.
Definition exif-data.h:183
@ EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS
Act as though unknown tags are not present.
Definition exif-data.h:177
@ EXIF_DATA_OPTION_FOLLOW_SPECIFICATION
Fix the EXIF tags to follow the spec.
Definition exif-data.h:180
ExifMnoteData * exif_data_get_mnote_data(ExifData *d)
Return the MakerNote data out of the EXIF data.
Definition exif-data.c:92
void exif_data_ref(ExifData *data)
Definition exif-data.c:1101
ExifDataType exif_data_get_data_type(ExifData *d)
Return the data type for the given ExifData.
Definition exif-data.c:1369
const char * exif_data_option_get_description(ExifDataOption o)
Return a verbose textual description of the given ExifDataOption.
Definition exif-data.c:1297
const char * exif_data_option_get_name(ExifDataOption o)
Return a short textual description of the given ExifDataOption.
Definition exif-data.c:1286
ExifData * exif_data_new(void)
Allocate a new ExifData.
Definition exif-data.c:98
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:156
void exif_data_fix(ExifData *d)
Fix the EXIF data to bring it into specification.
Definition exif-data.c:1354
void exif_data_dump(ExifData *data)
Dump all EXIF data to stdout.
Definition exif-data.c:1158
void(* ExifDataForeachContentFunc)(ExifContent *, void *user_data)
Definition exif-data.h:162
void exif_data_unset_option(ExifData *d, ExifDataOption o)
Clear the given option on the given ExifData.
Definition exif-data.c:1317
void exif_data_set_data_type(ExifData *d, ExifDataType dt)
Set the data type for the given ExifData.
Definition exif-data.c:1360
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:1087
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:1042
void exif_data_foreach_content(ExifData *data, ExifDataForeachContentFunc func, void *user_data)
Execute a function on each IFD in turn.
Definition exif-data.c:1194
ExifData * exif_data_new_mem(ExifMem *)
Allocate a new ExifData using the given memory allocator.
Definition exif-data.c:109
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:856
void exif_data_log(ExifData *data, ExifLog *log)
Set the log message object for all IFDs.
Definition exif-data.c:1245
void exif_data_set_option(ExifData *d, ExifDataOption o)
Set the given option on the given ExifData.
Definition exif-data.c:1308
unsigned char size
Definition exif-format.c:37
@ EXIF_IFD_COUNT
Not a real value, just (max_value + 1).
Definition exif-ifd.h:37
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:48
unsigned char * data
Pointer to thumbnail image, or NULL if not available.
Definition exif-data.h:53
unsigned int size
Number of bytes in thumbnail image at data.
Definition exif-data.h:56
ExifContent * ifd[EXIF_IFD_COUNT]
Data for each IFD.
Definition exif-data.h:50
ExifDataPrivate * priv
Definition exif-data.h:58

libexif Generated by doxygen