EXIF library (libexif) API 0.6.25
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
33#include <libexif/exif-data-type.h>
34#include <libexif/exif-ifd.h>
35#include <libexif/exif-log.h>
36#include <libexif/exif-tag.h>
37
39typedef struct _ExifData ExifData;
40typedef struct _ExifDataPrivate ExifDataPrivate;
41
44#include <libexif/exif-mem.h>
45
48{
50 ExifContent *ifd[EXIF_IFD_COUNT];
51
53 unsigned char *data;
54
56 unsigned int size;
57
58 ExifDataPrivate *priv;
59};
60
68ExifData *exif_data_new (void);
69
77ExifData *exif_data_new_mem (ExifMem *);
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
132ExifByteOrder exif_data_get_byte_order (ExifData *data);
133
141void exif_data_set_byte_order (ExifData *data, ExifByteOrder order);
142
151ExifMnoteData *exif_data_get_mnote_data (ExifData *d);
152
160void exif_data_fix (ExifData *d);
161
162typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data);
163
170void exif_data_foreach_content (ExifData *data,
171 ExifDataForeachContentFunc func,
172 void *user_data);
173
185
192const char *exif_data_option_get_name (ExifDataOption o);
193
200const char *exif_data_option_get_description (ExifDataOption o);
201
207void exif_data_set_option (ExifData *d, ExifDataOption o);
208
214void exif_data_unset_option (ExifData *d, ExifDataOption o);
215
221void exif_data_set_data_type (ExifData *d, ExifDataType dt);
222
228ExifDataType exif_data_get_data_type (ExifData *d);
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.
Definition exif-byte-order.h:33
Handling EXIF IFDs.
struct _ExifContent ExifContent
Holds all EXIF tags in a single IFD.
Definition exif-content.h:33
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
struct _ExifData ExifData
Represents the entire EXIF data found in an image.
Definition exif-data.h:39
Log message infrastructure.
struct _ExifLog ExifLog
State maintained by the logging interface.
Definition exif-log.h:36
Define the ExifMem data type and the associated functions.
struct _ExifMem ExifMem
ExifMem define a memory allocator.
Definition exif-mem.h:59
Handling EXIF MakerNote tags.
struct _ExifMnoteData ExifMnoteData
Data found in the MakerNote tag.
Definition exif-mnote-data.h:35
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