exif-entry.h File Reference

#include <libexif/exif-content.h>
#include <libexif/exif-format.h>
#include <libexif/exif-mem.h>

Go to the source code of this file.

Data Structures

struct  _ExifEntry
 Data found in one EXIF tag. More...

Defines

#define exif_entry_get_ifd(e)   ((e)?exif_content_get_ifd((e)->parent):EXIF_IFD_COUNT)
 Return the IFD number of the given ExifEntry.

Typedefs

typedef struct _ExifEntry ExifEntry
 Data found in one EXIF tag.
typedef struct
_ExifEntryPrivate 
ExifEntryPrivate

Functions

ExifEntryexif_entry_new (void)
 Reserve memory for and initialize a new ExifEntry.
ExifEntryexif_entry_new_mem (ExifMem *)
 Reserve memory for and initialize new ExifEntry using the specified memory allocator.
void exif_entry_ref (ExifEntry *entry)
 Increase reference counter for ExifEntry.
void exif_entry_unref (ExifEntry *entry)
 Decrease reference counter for ExifEntry.
void exif_entry_free (ExifEntry *entry)
 Actually free the ExifEntry.
void exif_entry_initialize (ExifEntry *e, ExifTag tag)
 Initialize an empty ExifEntry with default data in the correct format for the given tag.
void exif_entry_fix (ExifEntry *entry)
 Fix the type or format of the given EXIF entry to bring it into spec.
const char * exif_entry_get_value (ExifEntry *entry, char *val, unsigned int maxlen)
 Return a localized textual representation of the value of the EXIF entry.
void exif_entry_dump (ExifEntry *entry, unsigned int indent)
 Dump text representation of ExifEntry to stdout.


Detailed Description

Handling EXIF entries

Definition in file exif-entry.h.


Define Documentation

#define exif_entry_get_ifd (  )     ((e)?exif_content_get_ifd((e)->parent):EXIF_IFD_COUNT)

Return the IFD number of the given ExifEntry.

Parameters:
[in] e an ExifEntry*
Returns:
ExifIfd, or EXIF_IFD_COUNT on error

Definition at line 179 of file exif-entry.h.

Referenced by exif_entry_dump(), exif_entry_fix(), and remove_not_recorded().


Typedef Documentation

typedef struct _ExifEntry ExifEntry

Data found in one EXIF tag.

The exif_entry_get_value function can provide access to the formatted contents, or the struct members can be used directly to access the raw contents.

Definition at line 35 of file exif-entry.h.

typedef struct _ExifEntryPrivate ExifEntryPrivate

Definition at line 36 of file exif-entry.h.


Function Documentation

void exif_entry_dump ( ExifEntry entry,
unsigned int  indent 
)

Dump text representation of ExifEntry to stdout.

This is intended for diagnostic purposes only.

Parameters:
[in] entry EXIF tag data
[in] indent how many levels deep to indent the data

Definition at line 592 of file exif-entry.c.

References _ExifEntry::components, exif_entry_get_ifd, exif_entry_get_value(), exif_format_get_name(), exif_tag_get_name_in_ifd(), _ExifEntry::format, _ExifEntry::size, and _ExifEntry::tag.

void exif_entry_fix ( ExifEntry entry  ) 

Fix the type or format of the given EXIF entry to bring it into spec.

If the data for this EXIF tag is in of the wrong type or is in an invalid format according to the EXIF specification, then it is converted to make it valid. This may involve, for example, converting an EXIF_FORMAT_LONG into a EXIF_FORMAT_SHORT. If the tag is unknown, its value is untouched.

Note:
Unfortunately, some conversions are to a type with a more restricted range, which could have the side effect that the converted data becomes invalid. This is unlikely as the range of each tag in the standard is designed to encompass all likely data.
Parameters:
[in,out] entry EXIF entry

Definition at line 196 of file exif-entry.c.

References _, _ExifEntry::components, _ExifEntry::data, ExifSRational::denominator, ExifRational::denominator, exif_data_get_byte_order(), exif_entry_alloc(), exif_entry_get_ifd, exif_entry_log(), exif_entry_realloc(), EXIF_FORMAT_BYTE, exif_format_get_name(), exif_format_get_size(), EXIF_FORMAT_LONG, EXIF_FORMAT_RATIONAL, EXIF_FORMAT_SBYTE, EXIF_FORMAT_SHORT, EXIF_FORMAT_SLONG, EXIF_FORMAT_SRATIONAL, EXIF_FORMAT_SSHORT, EXIF_FORMAT_UNDEFINED, exif_get_rational(), exif_get_short_convert(), exif_get_srational(), EXIF_LOG_CODE_CORRUPT_DATA, EXIF_LOG_CODE_DEBUG, EXIF_LOG_CODE_NO_MEMORY, exif_mem_free(), exif_set_rational(), exif_set_short(), exif_set_srational(), EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE, EXIF_TAG_COLOR_SPACE, EXIF_TAG_CONTRAST, EXIF_TAG_CUSTOM_RENDERED, EXIF_TAG_EXPOSURE_BIAS_VALUE, EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_EXPOSURE_TIME, EXIF_TAG_FNUMBER, EXIF_TAG_FOCAL_LENGTH, EXIF_TAG_GAIN_CONTROL, exif_tag_get_name_in_ifd(), EXIF_TAG_ISO_SPEED_RATINGS, EXIF_TAG_ORIENTATION, EXIF_TAG_PHOTOMETRIC_INTERPRETATION, EXIF_TAG_PLANAR_CONFIGURATION, EXIF_TAG_SATURATION, EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_SENSING_METHOD, EXIF_TAG_SHARPNESS, EXIF_TAG_SHUTTER_SPEED_VALUE, EXIF_TAG_SUBJECT_AREA, EXIF_TAG_USER_COMMENT, EXIF_TAG_WHITE_BALANCE, EXIF_TAG_YCBCR_POSITIONING, EXIF_TAG_YCBCR_SUB_SAMPLING, _ExifEntry::format, _ExifEntryPrivate::mem, ExifSRational::numerator, ExifRational::numerator, _ExifContent::parent, _ExifEntry::parent, _ExifEntry::priv, _ExifEntry::size, and _ExifEntry::tag.

void exif_entry_free ( ExifEntry entry  ) 

Actually free the ExifEntry.

Deprecated:
Should not be called directly. Use exif_entry_ref and exif_entry_unref instead.
Parameters:
[in] entry EXIF entry

Definition at line 155 of file exif-entry.c.

References _ExifEntry::data, exif_mem_free(), exif_mem_unref(), _ExifEntryPrivate::mem, and _ExifEntry::priv.

const char* exif_entry_get_value ( ExifEntry entry,
char *  val,
unsigned int  maxlen 
)

Return a localized textual representation of the value of the EXIF entry.

This is meant for display to the user. The format of each tag is subject to change between locales and in newer versions of libexif. Users who require the tag data in an unambiguous form should access the data members of the ExifEntry structure directly.

Warning:
The character set of the returned string may be in the encoding of the current locale or the native encoding of the camera.
Bug:
The EXIF_TAG_XP_* tags are currently always returned in UTF-8, regardless of locale, and code points above U+FFFF are not supported.
Parameters:
[in] entry EXIF entry
[out] val buffer in which to store value
[in] maxlen length of the buffer val
Returns:
val pointer

Definition at line 830 of file exif-entry.c.

References _, bindtextdomain, CC, CF, _ExifEntry::components, _ExifEntry::data, ExifSRational::denominator, ExifRational::denominator, elem, exif_content_get_entry(), exif_convert_utf16_to_utf8(), exif_data_get_byte_order(), exif_entry_format_value(), exif_entry_log(), EXIF_FORMAT_ASCII, EXIF_FORMAT_BYTE, exif_format_get_size(), EXIF_FORMAT_RATIONAL, EXIF_FORMAT_SHORT, EXIF_FORMAT_SRATIONAL, EXIF_FORMAT_UNDEFINED, exif_get_rational(), exif_get_short(), exif_get_srational(), EXIF_IFD_0, EXIF_LOG_CODE_DEBUG, exif_mem_alloc(), exif_mem_free(), EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE, EXIF_TAG_COLOR_SPACE, EXIF_TAG_COMPONENTS_CONFIGURATION, EXIF_TAG_COMPRESSION, EXIF_TAG_CONTRAST, EXIF_TAG_COPYRIGHT, EXIF_TAG_CUSTOM_RENDERED, EXIF_TAG_EXIF_VERSION, EXIF_TAG_EXPOSURE_BIAS_VALUE, EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_EXPOSURE_PROGRAM, EXIF_TAG_EXPOSURE_TIME, EXIF_TAG_FILE_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FLASH_PIX_VERSION, EXIF_TAG_FNUMBER, EXIF_TAG_FOCAL_LENGTH, EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT, EXIF_TAG_GAIN_CONTROL, EXIF_TAG_GPS_ALTITUDE_REF, EXIF_TAG_GPS_TIME_STAMP, EXIF_TAG_GPS_VERSION_ID, EXIF_TAG_INTEROPERABILITY_VERSION, EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_MAKE, EXIF_TAG_MAX_APERTURE_VALUE, EXIF_TAG_METERING_MODE, EXIF_TAG_MODEL, EXIF_TAG_ORIENTATION, EXIF_TAG_PHOTOMETRIC_INTERPRETATION, EXIF_TAG_PLANAR_CONFIGURATION, EXIF_TAG_RESOLUTION_UNIT, EXIF_TAG_SATURATION, EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_SCENE_TYPE, EXIF_TAG_SENSING_METHOD, EXIF_TAG_SHARPNESS, EXIF_TAG_SHUTTER_SPEED_VALUE, EXIF_TAG_SUBJECT_AREA, EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_SUBJECT_DISTANCE_RANGE, EXIF_TAG_USER_COMMENT, EXIF_TAG_WHITE_BALANCE, EXIF_TAG_XP_AUTHOR, EXIF_TAG_XP_COMMENT, EXIF_TAG_XP_KEYWORDS, EXIF_TAG_XP_SUBJECT, EXIF_TAG_XP_TITLE, EXIF_TAG_YCBCR_POSITIONING, EXIF_TAG_YCBCR_SUB_SAMPLING, _ExifEntry::format, _ExifData::ifd, index, list, list2, M_PI, match_repeated_char(), _ExifEntryPrivate::mem, MIN, ExifSRational::numerator, ExifRational::numerator, _ExifContent::parent, _ExifEntry::parent, _ExifEntry::priv, _ExifEntry::size, strings, tag, _ExifEntry::tag, and values.

void exif_entry_initialize ( ExifEntry e,
ExifTag  tag 
)

Initialize an empty ExifEntry with default data in the correct format for the given tag.

If the entry is already initialized, this function does nothing. This call allocates memory for the data element of the given ExifEntry. That memory is freed at the same time as the ExifEntry.

Parameters:
[out] e entry to initialize
[in] tag tag number to initialize as
Bug:
Log and report failed exif_mem_malloc() calls.

Definition at line 1408 of file exif-entry.c.

References _, _ExifEntry::components, _ExifEntry::data, ExifRational::denominator, exif_data_get_byte_order(), exif_entry_alloc(), EXIF_FORMAT_ASCII, exif_format_get_size(), EXIF_FORMAT_LONG, EXIF_FORMAT_RATIONAL, EXIF_FORMAT_SHORT, EXIF_FORMAT_SRATIONAL, EXIF_FORMAT_UNDEFINED, exif_set_rational(), exif_set_short(), EXIF_TAG_APERTURE_VALUE, EXIF_TAG_ARTIST, EXIF_TAG_BITS_PER_SAMPLE, EXIF_TAG_BRIGHTNESS_VALUE, EXIF_TAG_COLOR_SPACE, EXIF_TAG_COMPONENTS_CONFIGURATION, EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, EXIF_TAG_COMPRESSION, EXIF_TAG_CONTRAST, EXIF_TAG_COPYRIGHT, EXIF_TAG_CUSTOM_RENDERED, EXIF_TAG_DATE_TIME, EXIF_TAG_DATE_TIME_DIGITIZED, EXIF_TAG_DATE_TIME_ORIGINAL, EXIF_TAG_DIGITAL_ZOOM_RATIO, EXIF_TAG_EXIF_IFD_POINTER, EXIF_TAG_EXIF_VERSION, EXIF_TAG_EXPOSURE_BIAS_VALUE, EXIF_TAG_EXPOSURE_INDEX, EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_EXPOSURE_PROGRAM, EXIF_TAG_EXPOSURE_TIME, EXIF_TAG_FILE_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FLASH_ENERGY, EXIF_TAG_FLASH_PIX_VERSION, EXIF_TAG_FNUMBER, EXIF_TAG_FOCAL_LENGTH, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM, EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT, EXIF_TAG_FOCAL_PLANE_X_RESOLUTION, EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION, EXIF_TAG_GAIN_CONTROL, EXIF_TAG_GPS_INFO_IFD_POINTER, EXIF_TAG_IMAGE_DESCRIPTION, EXIF_TAG_IMAGE_LENGTH, EXIF_TAG_IMAGE_WIDTH, EXIF_TAG_INTEROPERABILITY_IFD_POINTER, EXIF_TAG_ISO_SPEED_RATINGS, EXIF_TAG_JPEG_INTERCHANGE_FORMAT, EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH, EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_MAKE, EXIF_TAG_MAKER_NOTE, EXIF_TAG_MAX_APERTURE_VALUE, EXIF_TAG_METERING_MODE, EXIF_TAG_MODEL, EXIF_TAG_ORIENTATION, EXIF_TAG_PHOTOMETRIC_INTERPRETATION, EXIF_TAG_PIXEL_X_DIMENSION, EXIF_TAG_PIXEL_Y_DIMENSION, EXIF_TAG_PLANAR_CONFIGURATION, EXIF_TAG_PRIMARY_CHROMATICITIES, EXIF_TAG_REFERENCE_BLACK_WHITE, EXIF_TAG_RESOLUTION_UNIT, EXIF_TAG_SAMPLES_PER_PIXEL, EXIF_TAG_SATURATION, EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_SCENE_TYPE, EXIF_TAG_SENSING_METHOD, EXIF_TAG_SHARPNESS, EXIF_TAG_SHUTTER_SPEED_VALUE, EXIF_TAG_SOFTWARE, EXIF_TAG_SUB_SEC_TIME, EXIF_TAG_SUB_SEC_TIME_DIGITIZED, EXIF_TAG_SUB_SEC_TIME_ORIGINAL, EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_SUBJECT_DISTANCE_RANGE, EXIF_TAG_SUBJECT_LOCATION, EXIF_TAG_USER_COMMENT, EXIF_TAG_WHITE_BALANCE, EXIF_TAG_WHITE_POINT, EXIF_TAG_X_RESOLUTION, EXIF_TAG_Y_RESOLUTION, EXIF_TAG_YCBCR_POSITIONING, EXIF_TAG_YCBCR_SUB_SAMPLING, _ExifEntry::format, ExifRational::numerator, _ExifContent::parent, _ExifEntry::parent, _ExifEntry::size, and _ExifEntry::tag.

ExifEntry* exif_entry_new ( void   ) 

Reserve memory for and initialize a new ExifEntry.

No memory is allocated for the data element of the returned ExifEntry.

Returns:
new allocated ExifEntry, or NULL on error
See also:
exif_entry_new_mem, exif_entry_unref

Definition at line 109 of file exif-entry.c.

References exif_entry_new_mem(), exif_mem_new_default(), and exif_mem_unref().

ExifEntry* exif_entry_new_mem ( ExifMem  ) 

Reserve memory for and initialize new ExifEntry using the specified memory allocator.

No memory is allocated for the data element of the returned ExifEntry.

Returns:
new allocated ExifEntry, or NULL on error
See also:
exif_entry_new, exif_entry_unref

Definition at line 120 of file exif-entry.c.

References exif_mem_alloc(), exif_mem_free(), exif_mem_ref(), _ExifEntryPrivate::mem, _ExifEntry::priv, and _ExifEntryPrivate::ref_count.

void exif_entry_ref ( ExifEntry entry  ) 

Increase reference counter for ExifEntry.

Parameters:
[in] entry ExifEntry
See also:
exif_entry_unref

Definition at line 137 of file exif-entry.c.

References _ExifEntry::priv, and _ExifEntryPrivate::ref_count.

void exif_entry_unref ( ExifEntry entry  ) 

Decrease reference counter for ExifEntry.

When the reference count drops to zero, free the entry.

Parameters:
[in] entry ExifEntry

Definition at line 145 of file exif-entry.c.

References exif_entry_free(), _ExifEntry::priv, and _ExifEntryPrivate::ref_count.


SourceForge.net Logo Generated by doxygen