1548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \file exif-tag.h 2548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \brief Handling EXIF tags 3548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 4548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* 5548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Copyright (c) 2001 Lutz Mueller <lutz@users.sourceforge.net> 6548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 7548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is free software; you can redistribute it and/or 8548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * modify it under the terms of the GNU Lesser General Public 9548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License as published by the Free Software Foundation; either 10548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * version 2 of the License, or (at your option) any later version. 11548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 12548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is distributed in the hope that it will be useful, 13548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * but WITHOUT ANY WARRANTY; without even the implied warranty of 14548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Lesser General Public License for more details. 16548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 17548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * You should have received a copy of the GNU Lesser General Public 18548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License along with this library; if not, write to the 19548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Boston, MA 02110-1301 USA. 21548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 22548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 23548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef __EXIF_TAG_H__ 24548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define __EXIF_TAG_H__ 25548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 26548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus 27548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern "C" { 28548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __cplusplus */ 29548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 30548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-ifd.h> 31548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-data-type.h> 32548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 33548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! EXIF tags */ 34548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef enum { 35548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_INTEROPERABILITY_INDEX = 0x0001, 36548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_INTEROPERABILITY_VERSION = 0x0002, 37548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_NEW_SUBFILE_TYPE = 0x00fe, 38548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IMAGE_WIDTH = 0x0100, 39548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IMAGE_LENGTH = 0x0101, 40548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_BITS_PER_SAMPLE = 0x0102, 41548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_COMPRESSION = 0x0103, 42548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PHOTOMETRIC_INTERPRETATION = 0x0106, 43548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FILL_ORDER = 0x010a, 44548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DOCUMENT_NAME = 0x010d, 45548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IMAGE_DESCRIPTION = 0x010e, 46548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_MAKE = 0x010f, 47548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_MODEL = 0x0110, 48548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_STRIP_OFFSETS = 0x0111, 49548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_ORIENTATION = 0x0112, 50548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SAMPLES_PER_PIXEL = 0x0115, 51548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_ROWS_PER_STRIP = 0x0116, 52548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_STRIP_BYTE_COUNTS = 0x0117, 53548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_X_RESOLUTION = 0x011a, 54548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_Y_RESOLUTION = 0x011b, 55548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PLANAR_CONFIGURATION = 0x011c, 56548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_RESOLUTION_UNIT = 0x0128, 57548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_TRANSFER_FUNCTION = 0x012d, 58548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SOFTWARE = 0x0131, 59548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DATE_TIME = 0x0132, 60548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_ARTIST = 0x013b, 61548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_WHITE_POINT = 0x013e, 62548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PRIMARY_CHROMATICITIES = 0x013f, 63548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUB_IFDS = 0x014a, 64548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_TRANSFER_RANGE = 0x0156, 65548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_JPEG_PROC = 0x0200, 66548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_JPEG_INTERCHANGE_FORMAT = 0x0201, 67548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 0x0202, 68548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_YCBCR_COEFFICIENTS = 0x0211, 69548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_YCBCR_SUB_SAMPLING = 0x0212, 70548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_YCBCR_POSITIONING = 0x0213, 71548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_REFERENCE_BLACK_WHITE = 0x0214, 72548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XML_PACKET = 0x02bc, 73548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000, 74548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_RELATED_IMAGE_WIDTH = 0x1001, 75548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_RELATED_IMAGE_LENGTH = 0x1002, 76548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_CFA_REPEAT_PATTERN_DIM = 0x828d, 77548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_CFA_PATTERN = 0x828e, 78548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_BATTERY_LEVEL = 0x828f, 79548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_COPYRIGHT = 0x8298, 80548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXPOSURE_TIME = 0x829a, 81548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FNUMBER = 0x829d, 82548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IPTC_NAA = 0x83bb, 83548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IMAGE_RESOURCES = 0x8649, 84548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXIF_IFD_POINTER = 0x8769, 85548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_INTER_COLOR_PROFILE = 0x8773, 86548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXPOSURE_PROGRAM = 0x8822, 87548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SPECTRAL_SENSITIVITY = 0x8824, 88548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_GPS_INFO_IFD_POINTER = 0x8825, 89548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_ISO_SPEED_RATINGS = 0x8827, 90548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_OECF = 0x8828, 91548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_TIME_ZONE_OFFSET = 0x882a, 92548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXIF_VERSION = 0x9000, 93548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DATE_TIME_ORIGINAL = 0x9003, 94548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DATE_TIME_DIGITIZED = 0x9004, 95548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_COMPONENTS_CONFIGURATION = 0x9101, 96548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = 0x9102, 97548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SHUTTER_SPEED_VALUE = 0x9201, 98548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_APERTURE_VALUE = 0x9202, 99548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_BRIGHTNESS_VALUE = 0x9203, 100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXPOSURE_BIAS_VALUE = 0x9204, 101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_MAX_APERTURE_VALUE = 0x9205, 102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUBJECT_DISTANCE = 0x9206, 103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_METERING_MODE = 0x9207, 104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_LIGHT_SOURCE = 0x9208, 105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FLASH = 0x9209, 106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FOCAL_LENGTH = 0x920a, 107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUBJECT_AREA = 0x9214, 108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_TIFF_EP_STANDARD_ID = 0x9216, 109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_MAKER_NOTE = 0x927c, 110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_USER_COMMENT = 0x9286, 111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUB_SEC_TIME = 0x9290, 112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUB_SEC_TIME_ORIGINAL = 0x9291, 113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUB_SEC_TIME_DIGITIZED = 0x9292, 114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XP_TITLE = 0x9c9b, 115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XP_COMMENT = 0x9c9c, 116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XP_AUTHOR = 0x9c9d, 117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XP_KEYWORDS = 0x9c9e, 118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_XP_SUBJECT = 0x9c9f, 119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FLASH_PIX_VERSION = 0xa000, 120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_COLOR_SPACE = 0xa001, 121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PIXEL_X_DIMENSION = 0xa002, 122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PIXEL_Y_DIMENSION = 0xa003, 123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_RELATED_SOUND_FILE = 0xa004, 124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_INTEROPERABILITY_IFD_POINTER = 0xa005, 125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FLASH_ENERGY = 0xa20b, 126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE = 0xa20c, 127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FOCAL_PLANE_X_RESOLUTION = 0xa20e, 128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION = 0xa20f, 129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT = 0xa210, 130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUBJECT_LOCATION = 0xa214, 131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXPOSURE_INDEX = 0xa215, 132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SENSING_METHOD = 0xa217, 133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FILE_SOURCE = 0xa300, 134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SCENE_TYPE = 0xa301, 135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_NEW_CFA_PATTERN = 0xa302, 136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_CUSTOM_RENDERED = 0xa401, 137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_EXPOSURE_MODE = 0xa402, 138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_WHITE_BALANCE = 0xa403, 139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DIGITAL_ZOOM_RATIO = 0xa404, 140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM = 0xa405, 141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SCENE_CAPTURE_TYPE = 0xa406, 142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_GAIN_CONTROL = 0xa407, 143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_CONTRAST = 0xa408, 144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SATURATION = 0xa409, 145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SHARPNESS = 0xa40a, 146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_DEVICE_SETTING_DESCRIPTION = 0xa40b, 147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_SUBJECT_DISTANCE_RANGE = 0xa40c, 148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_IMAGE_UNIQUE_ID = 0xa420, 149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_GAMMA = 0xa500, 150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PRINT_IMAGE_MATCHING = 0xc4a5, 151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_TAG_PADDING = 0xea1c 152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} ExifTag; 153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* GPS tags overlap with above ones. */ 155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_VERSION_ID 0x0000 156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_LATITUDE_REF 0x0001 /* INTEROPERABILITY_INDEX */ 157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_LATITUDE 0x0002 /* INTEROPERABILITY_VERSION */ 158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_LONGITUDE_REF 0x0003 159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_LONGITUDE 0x0004 160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_ALTITUDE_REF 0x0005 161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_ALTITUDE 0x0006 162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_TIME_STAMP 0x0007 163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_SATELLITES 0x0008 164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_STATUS 0x0009 165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_MEASURE_MODE 0x000a 166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DOP 0x000b 167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_SPEED_REF 0x000c 168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_SPEED 0x000d 169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_TRACK_REF 0x000e 170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_TRACK 0x000f 171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_IMG_DIRECTION_REF 0x0010 172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_IMG_DIRECTION 0x0011 173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_MAP_DATUM 0x0012 174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_LATITUDE_REF 0x0013 175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_LATITUDE 0x0014 176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_LONGITUDE_REF 0x0015 177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_LONGITUDE 0x0016 178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_BEARING_REF 0x0017 179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_BEARING 0x0018 180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_DISTANCE_REF 0x0019 181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DEST_DISTANCE 0x001a 182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_PROCESSING_METHOD 0x001b 183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_AREA_INFORMATION 0x001c 184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DATE_STAMP 0x001d 185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_GPS_DIFFERENTIAL 0x001e 186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! What level of support a tag enjoys in the EXIF standard */ 188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef enum { 189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /*! The meaning of this tag is unknown */ 190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_SUPPORT_LEVEL_UNKNOWN = 0, 191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /*! This tag is not allowed in the given IFD */ 193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_SUPPORT_LEVEL_NOT_RECORDED, 194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /*! This tag is mandatory in the given IFD */ 196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_SUPPORT_LEVEL_MANDATORY, 197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /*! This tag is optional in the given IFD */ 199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen EXIF_SUPPORT_LEVEL_OPTIONAL 200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} ExifSupportLevel; 201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! Return the tag ID given its unique textual name. 203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] name tag name 205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \return tag ID, or 0 if tag not found 206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \note The tag not found value cannot be distinguished from a legitimate 207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * tag number 0. 208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 209548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenExifTag exif_tag_from_name (const char *name); 210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! Return a textual name of the given tag when found in the given IFD. The 212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * name is a short, unique, non-localized text string containing only 213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * US-ASCII alphanumeric characters. 214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] tag EXIF tag 216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] ifd IFD 217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \return textual name of the tag, or NULL if the tag is unknown 218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_name_in_ifd (ExifTag tag, ExifIfd ifd); 220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! Return a textual title of the given tag when found in the given IFD. 222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * The title is a short, localized description of the tag. 223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] tag EXIF tag 225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] ifd IFD 226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \return textual title of the tag, or NULL if the tag is unknown 227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_title_in_ifd (ExifTag tag, ExifIfd ifd); 229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! Return a verbose textual description of the given tag when found in the 231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * given IFD. The description is a verbose, localized description of the tag. 232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] tag EXIF tag 234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] ifd IFD 235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \return textual description of the tag, or NULL if the tag is unknown 236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_description_in_ifd (ExifTag tag, ExifIfd ifd); 238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! Return whether the given tag is mandatory or not in the given IFD and 240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * data type according to the EXIF specification. If the IFD given is 241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * EXIF_IFD_COUNT, the result is EXIF_SUPPORT_LEVEL_UNKNOWN. If the data 242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * type is EXIF_DATA_TYPE_UNKNOWN, the result is 243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * EXIF_SUPPORT_LEVEL_UNKNOWN unless the support level is the same for 244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * all data types. 245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * 246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] tag EXIF tag 247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] ifd IFD or EXIF_IFD_COUNT 248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \param[in] t data type or EXIF_DATA_TYPE_UNKNOWN 249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * \return the level of support for this tag 250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 251548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenExifSupportLevel exif_tag_get_support_level_in_ifd (ExifTag tag, ExifIfd ifd, 252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ExifDataType t); 253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Don't use these functions. They are here for compatibility only. */ 255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \deprecated Use #exif_tag_get_name_in_ifd instead */ 257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_name (ExifTag tag); 258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \deprecated Use #exif_tag_get_title_in_ifd instead */ 260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_title (ExifTag tag); 261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \deprecated Use #exif_tag_get_description_in_ifd instead */ 263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_get_description (ExifTag tag); 264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* For now, do not use these functions. */ 267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */ 269548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenExifTag exif_tag_table_get_tag (unsigned int n); 270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */ 272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *exif_tag_table_get_name (unsigned int n); 273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */ 275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenunsigned int exif_tag_table_count (void); 276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Don't use these definitions. They are here for compatibility only. */ 279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \deprecated Use EXIF_TAG_PRINT_IMAGE_MATCHING instead. */ 281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define EXIF_TAG_UNKNOWN_C4A5 EXIF_TAG_PRINT_IMAGE_MATCHING 282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus 284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __cplusplus */ 286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __EXIF_TAG_H__ */ 288