N_("A tag used to record fractions of seconds for the "
"<DateTimeDigitized> tag."),
{ ESL_NNNN, ESL_NNNN, ESL_OOOO, ESL_NNNN, ESL_NNNN } },
- {EXIF_TAG_XP_TITLE, "XPTitle", N_("XP Title"), "",
+ /* Not in EXIF 2.2 (Microsoft extension) */
+ {EXIF_TAG_XP_TITLE, "XPTitle", N_("XP Title"),
+ N_("A character string giving the title of the image, encoded in "
+ "UTF-16LE."),
{ ESL_OOOO, ESL_NNNN, ESL_NNNN, ESL_NNNN, ESL_NNNN } },
- {EXIF_TAG_XP_COMMENT, "XPComment", N_("XP Comment"), "",
+ /* Not in EXIF 2.2 (Microsoft extension) */
+ {EXIF_TAG_XP_COMMENT, "XPComment", N_("XP Comment"),
+ N_("A character string containing a comment about the image, encoded "
+ "in UTF-16LE."),
{ ESL_OOOO, ESL_NNNN, ESL_NNNN, ESL_NNNN, ESL_NNNN } },
- {EXIF_TAG_XP_AUTHOR, "XPAuthor", N_("XP Author"), "",
+ /* Not in EXIF 2.2 (Microsoft extension) */
+ {EXIF_TAG_XP_AUTHOR, "XPAuthor", N_("XP Author"),
+ N_("A character string containing the name of the image creator, "
+ "encoded in UTF-16LE."),
{ ESL_OOOO, ESL_NNNN, ESL_NNNN, ESL_NNNN, ESL_NNNN } },
- {EXIF_TAG_XP_KEYWORDS, "XPKeywords", N_("XP Keywords"), "",
+ /* Not in EXIF 2.2 (Microsoft extension) */
+ {EXIF_TAG_XP_KEYWORDS, "XPKeywords", N_("XP Keywords"),
+ N_("A character string containing key words describing the image, "
+ "encoded in UTF-16LE."),
{ ESL_OOOO, ESL_NNNN, ESL_NNNN, ESL_NNNN, ESL_NNNN } },
- {EXIF_TAG_XP_SUBJECT, "XPSubject", N_("XP Subject"), "",
+ /* Not in EXIF 2.2 (Microsoft extension) */
+ {EXIF_TAG_XP_SUBJECT, "XPSubject", N_("XP Subject"),
+ N_("A character string giving the image subject, encoded in "
+ "UTF-16LE."),
{ ESL_OOOO, ESL_NNNN, ESL_NNNN, ESL_NNNN, ESL_NNNN } },
{EXIF_TAG_FLASH_PIX_VERSION, "FlashPixVersion", "FlashPixVersion",
N_("The FlashPix format version supported by a FPXR file."),
/* Not in EXIF 2.2 */
{EXIF_TAG_GAMMA, "Gamma", N_("Gamma"),
N_("Indicates the value of coefficient gamma.")},
+ /* Not in EXIF 2.2 */
{EXIF_TAG_PRINT_IMAGE_MATCHING, "PrintImageMatching", N_("PRINT Image Matching"),
N_("Related to Epson's PRINT Image Matching technology")},
#endif
* data types and isn't marked not recorded.
*/
const ExifSupportLevel supp = ExifTagTable[i].esl[ifd][0];
+ /* If level is not recorded, keep searching for another */
if (supp != EXIF_SUPPORT_LEVEL_NOT_RECORDED) {
unsigned int dt;
for (dt = 0; dt < EXIF_DATA_TYPE_COUNT; ++dt) {
* libexif installation. If you are using libtool to build your
* package, you can also integrate make use of libexif-uninstalled.pc.
*
+ * An application using libexif would typically first create an #ExifLoader to
+ * load EXIF data into memory. From there, it would extract that data as
+ * an #ExifData to start manipulating it. Each IFD is represented by its own
+ * #ExifContent within that #ExifData, which contains all the tag data in
+ * #ExifEntry form. If the MakerNote data is required, an #ExifMnoteData
+ * can be extracted from the #ExifData and manipulated with the MakerNote
+ * functions.
+ *
+ * libexif is written in C using an object-based style that defines
+ * sets of functions that operate on each data structure.
+ *
* \section data_structures Primary Data Structures
*
* #ExifLoader
* Strings of 8 bit characters ("char*"). When libexif is compiled with
* NLS, character set and encoding are as set in the current locale,
* except for strings that come directly from the data in EXIF
- * tags which are generally returned in raw form.
+ * tags which are generally returned in raw form. Most EXIF strings are
+ * defined to be plain 7-bit ASCII so this raw form should be acceptable in
+ * any UNIX locale, but some software ignores the specification and
+ * writes 8-bit characters. It is up to the application to detect this
+ * and deal with it intelligently.
*
* \section memory_management Memory Management Patterns
*