exif-data.h File Reference

Defines the ExifData type and the associated functions. More...

#include <libexif/exif-byte-order.h>
#include <libexif/exif-data-type.h>
#include <libexif/exif-ifd.h>
#include <libexif/exif-log.h>
#include <libexif/exif-tag.h>
#include <libexif/exif-content.h>
#include <libexif/exif-mnote-data.h>
#include <libexif/exif-mem.h>

Go to the source code of this file.

Data Structures

struct  _ExifData
 Represents the entire EXIF data found in an image. More...

Defines

#define exif_data_get_entry(d, t)
 Return an ExifEntry for the given tag if found in any IFD.

Typedefs

typedef struct _ExifData ExifData
 Represents the entire EXIF data found in an image.
typedef struct _ExifDataPrivate ExifDataPrivate
typedef void(* ExifDataForeachContentFunc )(ExifContent *, void *user_data)

Enumerations

enum  ExifDataOption { EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS = 1 << 0, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION = 1 << 1, EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE = 1 << 2 }
 Options to configure the behaviour of ExifData. More...

Functions

ExifDataexif_data_new (void)
 Allocate a new ExifData.
ExifDataexif_data_new_mem (ExifMem *)
 Allocate a new ExifData using the given memory allocator.
ExifDataexif_data_new_from_file (const char *path)
 Allocate a new ExifData and load EXIF data from a JPEG file.
ExifDataexif_data_new_from_data (const unsigned char *data, unsigned int size)
 Allocate a new ExifData and load EXIF data from a memory buffer.
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.
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.
void exif_data_ref (ExifData *data)
void exif_data_unref (ExifData *data)
void exif_data_free (ExifData *data)
ExifByteOrder exif_data_get_byte_order (ExifData *data)
 Return the byte order in use by this EXIF structure.
void exif_data_set_byte_order (ExifData *data, ExifByteOrder order)
 Set the byte order to use for this EXIF data.
ExifMnoteDataexif_data_get_mnote_data (ExifData *d)
 Return the MakerNote data out of the EXIF data.
void exif_data_fix (ExifData *d)
 Fix the EXIF data to bring it into specification.
void exif_data_foreach_content (ExifData *data, ExifDataForeachContentFunc func, void *user_data)
 Execute a function on each IFD in turn.
const char * exif_data_option_get_name (ExifDataOption o)
 Return a short textual description of the given ExifDataOption.
const char * exif_data_option_get_description (ExifDataOption o)
 Return a verbose textual description of the given ExifDataOption.
void exif_data_set_option (ExifData *d, ExifDataOption o)
 Set the given option on the given ExifData.
void exif_data_unset_option (ExifData *d, ExifDataOption o)
 Clear the given option on the given ExifData.
void exif_data_set_data_type (ExifData *d, ExifDataType dt)
 Set the data type for the given ExifData.
ExifDataType exif_data_get_data_type (ExifData *d)
 Return the data type for the given ExifData.
void exif_data_dump (ExifData *data)
 Dump all EXIF data to stdout.
void exif_data_log (ExifData *data, ExifLog *log)
 Set the log message object for all IFDs.


Detailed Description

Defines the ExifData type and the associated functions.


Define Documentation

#define exif_data_get_entry ( d,
 ) 

Value:

(exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ?                 \
         exif_content_get_entry(d->ifd[EXIF_IFD_0],t) :                 \
         exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ?                 \
         exif_content_get_entry(d->ifd[EXIF_IFD_1],t) :                 \
         exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ?              \
         exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) :              \
         exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ?               \
         exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) :               \
         exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ?  \
         exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
Return an ExifEntry for the given tag if found in any IFD.

Each IFD is searched in turn and the first containing a tag with this number is returned.

Parameters:
[in] d ExifData
[in] t ExifTag
Returns:
ExifEntry* if found, else NULL if not found


Enumeration Type Documentation

Options to configure the behaviour of ExifData.

Enumerator:
EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS  Act as though unknown tags are not present.
EXIF_DATA_OPTION_FOLLOW_SPECIFICATION  Fix the EXIF tags to follow the spec.
EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE  Leave the MakerNote alone, which could cause it to be corrupted.


Function Documentation

void exif_data_dump ( ExifData data  ) 

Dump all EXIF data to stdout.

This is intended for diagnostic purposes only.

Parameters:
[in] data EXIF data

References _ExifData::data, _ExifData::ifd, and _ExifData::size.

void exif_data_fix ( ExifData d  ) 

Fix the EXIF data to bring it into specification.

Call exif_content_fix on each IFD to fix existing entries, create any new entries that are mandatory but do not yet exist, and remove any entries that are not allowed.

Parameters:
[in,out] d EXIF data

void exif_data_foreach_content ( ExifData data,
ExifDataForeachContentFunc  func,
void *  user_data 
)

Execute a function on each IFD in turn.

Parameters:
[in] data EXIF data over which to iterate
[in] func function to call for each entry
[in] user_data data to pass into func on each call

References _ExifData::ifd.

ExifByteOrder exif_data_get_byte_order ( ExifData data  ) 

Return the byte order in use by this EXIF structure.

Parameters:
[in] data EXIF data
Returns:
byte order

References _ExifData::priv.

ExifDataType exif_data_get_data_type ( ExifData d  ) 

Return the data type for the given ExifData.

Parameters:
[in] d EXIF data
Returns:
data type, or EXIF_DATA_TYPE_UNKNOWN on error

References _ExifData::priv.

ExifMnoteData* exif_data_get_mnote_data ( ExifData d  ) 

Return the MakerNote data out of the EXIF data.

Only certain MakerNote formats that are recognized by libexif are supported. The pointer references a member of the ExifData structure and must NOT be freed by the caller.

Parameters:
[in] d EXIF data
Returns:
MakerNote data, or NULL if not found or not supported

References _ExifData::priv.

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.

If the EXIF data contains a recognized MakerNote, it is loaded and stored as well for later retrieval by exif_data_get_mnote_data. If the EXIF_DATA_OPTION_FOLLOW_SPECIFICATION has been set on this ExifData, then the tags are fixed after loading.

Parameters:
[in,out] data EXIF data
[in] d pointer to raw JPEG or EXIF data
[in] size number of bytes of data at d

References EXIF_DATA_OPTION_FOLLOW_SPECIFICATION, and _ExifData::priv.

void exif_data_log ( ExifData data,
ExifLog log 
)

Set the log message object for all IFDs.

Parameters:
[in] data EXIF data
[in] log ExifLog

References _ExifData::ifd, and _ExifData::priv.

ExifData* exif_data_new ( void   ) 

Allocate a new ExifData.

The ExifData contains an empty ExifContent for each IFD and the default set of options, which has EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS and EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set.

Returns:
allocated ExifData, or NULL on error

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.

Parameters:
[in] data pointer to raw JPEG or EXIF data
[in] size number of bytes of data at data
Returns:
allocated ExifData, or NULL on error

ExifData* exif_data_new_from_file ( const char *  path  ) 

Allocate a new ExifData and load EXIF data from a JPEG file.

Uses an ExifLoader internally to do the loading.

Parameters:
[in] path filename including path
Returns:
allocated ExifData, or NULL on error

ExifData* exif_data_new_mem ( ExifMem  ) 

Allocate a new ExifData using the given memory allocator.

The ExifData contains an empty ExifContent for each IFD and the default set of options, which has EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS and EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set.

Returns:
allocated ExifData, or NULL on error

References EXIF_DATA_OPTION_FOLLOW_SPECIFICATION, EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS, _ExifData::ifd, and _ExifData::priv.

const char* exif_data_option_get_description ( ExifDataOption  o  ) 

Return a verbose textual description of the given ExifDataOption.

Parameters:
[in] o option
Returns:
verbose localized textual description of the option

const char* exif_data_option_get_name ( ExifDataOption  o  ) 

Return a short textual description of the given ExifDataOption.

Parameters:
[in] o option
Returns:
localized textual description of the option

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.

The buffer is allocated by this function and must subsequently be freed by the caller.

Parameters:
[in] data EXIF data
[out] d pointer to buffer pointer containing raw EXIF data on return
[out] ds pointer to variable to hold the number of bytes of data at d, or set to 0 on error

References _ExifData::ifd, and _ExifData::priv.

void exif_data_set_byte_order ( ExifData data,
ExifByteOrder  order 
)

Set the byte order to use for this EXIF data.

If any tags already exist (including MakerNote tags) they are are converted to the specified byte order.

Parameters:
[in,out] data EXIF data
[in] order byte order

References _ExifData::priv.

void exif_data_set_data_type ( ExifData d,
ExifDataType  dt 
)

Set the data type for the given ExifData.

Parameters:
[in] d EXIF data
[in] dt data type

References _ExifData::priv.

void exif_data_set_option ( ExifData d,
ExifDataOption  o 
)

Set the given option on the given ExifData.

Parameters:
[in] d EXIF data
[in] o option

References _ExifData::priv.

void exif_data_unset_option ( ExifData d,
ExifDataOption  o 
)

Clear the given option on the given ExifData.

Parameters:
[in] d EXIF data
[in] o option

References _ExifData::priv.


SourceForge.net Logo Generated by doxygen