/usr/include/libexif/exif-entry.h is in libexif-dev 0.6.21-2+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | /*! \file exif-entry.h
* \brief Handling EXIF entries
*/
/*
* Copyright (c) 2001 Lutz Mueller <lutz@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*/
#ifndef __EXIF_ENTRY_H__
#define __EXIF_ENTRY_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*! 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.
*/
typedef struct _ExifEntry ExifEntry;
typedef struct _ExifEntryPrivate ExifEntryPrivate;
#include <libexif/exif-content.h>
#include <libexif/exif-format.h>
#include <libexif/exif-mem.h>
/*! Data found in one EXIF tag */
struct _ExifEntry {
/*! EXIF tag for this entry */
ExifTag tag;
/*! Type of data in this entry */
ExifFormat format;
/*! Number of elements in the array, if this is an array entry.
* Contains 1 for non-array data types. */
unsigned long components;
/*! Pointer to the raw EXIF data for this entry. It is allocated
* by #exif_entry_initialize and is NULL beforehand. Data contained
* here may be manipulated using the functions in exif-utils.h */
unsigned char *data;
/*! Number of bytes in the buffer at \c data. This must be no less
* than exif_format_get_size(format)*components */
unsigned int size;
/*! #ExifContent containing this entry.
* \see exif_entry_get_ifd */
ExifContent *parent;
/*! Internal data to be used by libexif itself */
ExifEntryPrivate *priv;
};
/* Lifecycle */
/*! Reserve memory for and initialize a new #ExifEntry.
* No memory is allocated for the \c data element of the returned #ExifEntry.
*
* \return new allocated #ExifEntry, or NULL on error
*
* \see exif_entry_new_mem, exif_entry_unref
*/
ExifEntry *exif_entry_new (void);
/*! Reserve memory for and initialize new #ExifEntry using the specified
* memory allocator.
* No memory is allocated for the \c data element of the returned #ExifEntry.
*
* \return new allocated #ExifEntry, or NULL on error
*
* \see exif_entry_new, exif_entry_unref
*/
ExifEntry *exif_entry_new_mem (ExifMem *);
/*! Increase reference counter for #ExifEntry.
*
* \param[in] entry #ExifEntry
*
* \see exif_entry_unref
*/
void exif_entry_ref (ExifEntry *entry);
/*! Decrease reference counter for #ExifEntry.
* When the reference count drops to zero, free the entry.
*
* \param[in] entry #ExifEntry
*/
void exif_entry_unref (ExifEntry *entry);
/*! Actually free the #ExifEntry.
*
* \deprecated Should not be called directly. Use #exif_entry_ref and
* #exif_entry_unref instead.
*
* \param[in] entry EXIF entry
*/
void exif_entry_free (ExifEntry *entry);
/*! 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 \c data element of the given #ExifEntry.
* That memory is freed at the same time as the #ExifEntry.
*
* \param[out] e entry to initialize
* \param[in] tag tag number to initialize as
*/
void exif_entry_initialize (ExifEntry *e, ExifTag tag);
/*! 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.
*
* \param[in,out] entry EXIF entry
*/
void exif_entry_fix (ExifEntry *entry);
/* For your convenience */
/*! 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.
*
* \param[in] entry EXIF entry
* \param[out] val buffer in which to store value
* \param[in] maxlen length of the buffer val
* \return val pointer
*/
const char *exif_entry_get_value (ExifEntry *entry, char *val,
unsigned int maxlen);
/*! Dump text representation of #ExifEntry to stdout.
* This is intended for diagnostic purposes only.
*
* \param[in] entry EXIF tag data
* \param[in] indent how many levels deep to indent the data
*/
void exif_entry_dump (ExifEntry *entry, unsigned int indent);
/*! Return the IFD number of the given #ExifEntry
*
* \param[in] e an #ExifEntry*
* \return #ExifIfd, or #EXIF_IFD_COUNT on error
*/
#define exif_entry_get_ifd(e) ((e)?exif_content_get_ifd((e)->parent):EXIF_IFD_COUNT)
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __EXIF_ENTRY_H__ */
|