EXIF library (libexif) API
0.6.20
|
00001 00004 /* 00005 * Copyright (c) 2001 Lutz Mueller <lutz@users.sourceforge.net> 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the 00019 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00020 * Boston, MA 02110-1301 USA. 00021 */ 00022 00023 #ifndef __EXIF_TAG_H__ 00024 #define __EXIF_TAG_H__ 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif /* __cplusplus */ 00029 00030 #include <libexif/exif-ifd.h> 00031 #include <libexif/exif-data-type.h> 00032 00034 typedef enum { 00035 EXIF_TAG_INTEROPERABILITY_INDEX = 0x0001, 00036 EXIF_TAG_INTEROPERABILITY_VERSION = 0x0002, 00037 EXIF_TAG_NEW_SUBFILE_TYPE = 0x00fe, 00038 EXIF_TAG_IMAGE_WIDTH = 0x0100, 00039 EXIF_TAG_IMAGE_LENGTH = 0x0101, 00040 EXIF_TAG_BITS_PER_SAMPLE = 0x0102, 00041 EXIF_TAG_COMPRESSION = 0x0103, 00042 EXIF_TAG_PHOTOMETRIC_INTERPRETATION = 0x0106, 00043 EXIF_TAG_FILL_ORDER = 0x010a, 00044 EXIF_TAG_DOCUMENT_NAME = 0x010d, 00045 EXIF_TAG_IMAGE_DESCRIPTION = 0x010e, 00046 EXIF_TAG_MAKE = 0x010f, 00047 EXIF_TAG_MODEL = 0x0110, 00048 EXIF_TAG_STRIP_OFFSETS = 0x0111, 00049 EXIF_TAG_ORIENTATION = 0x0112, 00050 EXIF_TAG_SAMPLES_PER_PIXEL = 0x0115, 00051 EXIF_TAG_ROWS_PER_STRIP = 0x0116, 00052 EXIF_TAG_STRIP_BYTE_COUNTS = 0x0117, 00053 EXIF_TAG_X_RESOLUTION = 0x011a, 00054 EXIF_TAG_Y_RESOLUTION = 0x011b, 00055 EXIF_TAG_PLANAR_CONFIGURATION = 0x011c, 00056 EXIF_TAG_RESOLUTION_UNIT = 0x0128, 00057 EXIF_TAG_TRANSFER_FUNCTION = 0x012d, 00058 EXIF_TAG_SOFTWARE = 0x0131, 00059 EXIF_TAG_DATE_TIME = 0x0132, 00060 EXIF_TAG_ARTIST = 0x013b, 00061 EXIF_TAG_WHITE_POINT = 0x013e, 00062 EXIF_TAG_PRIMARY_CHROMATICITIES = 0x013f, 00063 EXIF_TAG_SUB_IFDS = 0x014a, 00064 EXIF_TAG_TRANSFER_RANGE = 0x0156, 00065 EXIF_TAG_JPEG_PROC = 0x0200, 00066 EXIF_TAG_JPEG_INTERCHANGE_FORMAT = 0x0201, 00067 EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 0x0202, 00068 EXIF_TAG_YCBCR_COEFFICIENTS = 0x0211, 00069 EXIF_TAG_YCBCR_SUB_SAMPLING = 0x0212, 00070 EXIF_TAG_YCBCR_POSITIONING = 0x0213, 00071 EXIF_TAG_REFERENCE_BLACK_WHITE = 0x0214, 00072 EXIF_TAG_XML_PACKET = 0x02bc, 00073 EXIF_TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000, 00074 EXIF_TAG_RELATED_IMAGE_WIDTH = 0x1001, 00075 EXIF_TAG_RELATED_IMAGE_LENGTH = 0x1002, 00076 EXIF_TAG_CFA_REPEAT_PATTERN_DIM = 0x828d, 00077 EXIF_TAG_CFA_PATTERN = 0x828e, 00078 EXIF_TAG_BATTERY_LEVEL = 0x828f, 00079 EXIF_TAG_COPYRIGHT = 0x8298, 00080 EXIF_TAG_EXPOSURE_TIME = 0x829a, 00081 EXIF_TAG_FNUMBER = 0x829d, 00082 EXIF_TAG_IPTC_NAA = 0x83bb, 00083 EXIF_TAG_IMAGE_RESOURCES = 0x8649, 00084 EXIF_TAG_EXIF_IFD_POINTER = 0x8769, 00085 EXIF_TAG_INTER_COLOR_PROFILE = 0x8773, 00086 EXIF_TAG_EXPOSURE_PROGRAM = 0x8822, 00087 EXIF_TAG_SPECTRAL_SENSITIVITY = 0x8824, 00088 EXIF_TAG_GPS_INFO_IFD_POINTER = 0x8825, 00089 EXIF_TAG_ISO_SPEED_RATINGS = 0x8827, 00090 EXIF_TAG_OECF = 0x8828, 00091 EXIF_TAG_TIME_ZONE_OFFSET = 0x882a, 00092 EXIF_TAG_EXIF_VERSION = 0x9000, 00093 EXIF_TAG_DATE_TIME_ORIGINAL = 0x9003, 00094 EXIF_TAG_DATE_TIME_DIGITIZED = 0x9004, 00095 EXIF_TAG_COMPONENTS_CONFIGURATION = 0x9101, 00096 EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = 0x9102, 00097 EXIF_TAG_SHUTTER_SPEED_VALUE = 0x9201, 00098 EXIF_TAG_APERTURE_VALUE = 0x9202, 00099 EXIF_TAG_BRIGHTNESS_VALUE = 0x9203, 00100 EXIF_TAG_EXPOSURE_BIAS_VALUE = 0x9204, 00101 EXIF_TAG_MAX_APERTURE_VALUE = 0x9205, 00102 EXIF_TAG_SUBJECT_DISTANCE = 0x9206, 00103 EXIF_TAG_METERING_MODE = 0x9207, 00104 EXIF_TAG_LIGHT_SOURCE = 0x9208, 00105 EXIF_TAG_FLASH = 0x9209, 00106 EXIF_TAG_FOCAL_LENGTH = 0x920a, 00107 EXIF_TAG_SUBJECT_AREA = 0x9214, 00108 EXIF_TAG_TIFF_EP_STANDARD_ID = 0x9216, 00109 EXIF_TAG_MAKER_NOTE = 0x927c, 00110 EXIF_TAG_USER_COMMENT = 0x9286, 00111 EXIF_TAG_SUB_SEC_TIME = 0x9290, 00112 EXIF_TAG_SUB_SEC_TIME_ORIGINAL = 0x9291, 00113 EXIF_TAG_SUB_SEC_TIME_DIGITIZED = 0x9292, 00114 EXIF_TAG_XP_TITLE = 0x9c9b, 00115 EXIF_TAG_XP_COMMENT = 0x9c9c, 00116 EXIF_TAG_XP_AUTHOR = 0x9c9d, 00117 EXIF_TAG_XP_KEYWORDS = 0x9c9e, 00118 EXIF_TAG_XP_SUBJECT = 0x9c9f, 00119 EXIF_TAG_FLASH_PIX_VERSION = 0xa000, 00120 EXIF_TAG_COLOR_SPACE = 0xa001, 00121 EXIF_TAG_PIXEL_X_DIMENSION = 0xa002, 00122 EXIF_TAG_PIXEL_Y_DIMENSION = 0xa003, 00123 EXIF_TAG_RELATED_SOUND_FILE = 0xa004, 00124 EXIF_TAG_INTEROPERABILITY_IFD_POINTER = 0xa005, 00125 EXIF_TAG_FLASH_ENERGY = 0xa20b, 00126 EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE = 0xa20c, 00127 EXIF_TAG_FOCAL_PLANE_X_RESOLUTION = 0xa20e, 00128 EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION = 0xa20f, 00129 EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT = 0xa210, 00130 EXIF_TAG_SUBJECT_LOCATION = 0xa214, 00131 EXIF_TAG_EXPOSURE_INDEX = 0xa215, 00132 EXIF_TAG_SENSING_METHOD = 0xa217, 00133 EXIF_TAG_FILE_SOURCE = 0xa300, 00134 EXIF_TAG_SCENE_TYPE = 0xa301, 00135 EXIF_TAG_NEW_CFA_PATTERN = 0xa302, 00136 EXIF_TAG_CUSTOM_RENDERED = 0xa401, 00137 EXIF_TAG_EXPOSURE_MODE = 0xa402, 00138 EXIF_TAG_WHITE_BALANCE = 0xa403, 00139 EXIF_TAG_DIGITAL_ZOOM_RATIO = 0xa404, 00140 EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM = 0xa405, 00141 EXIF_TAG_SCENE_CAPTURE_TYPE = 0xa406, 00142 EXIF_TAG_GAIN_CONTROL = 0xa407, 00143 EXIF_TAG_CONTRAST = 0xa408, 00144 EXIF_TAG_SATURATION = 0xa409, 00145 EXIF_TAG_SHARPNESS = 0xa40a, 00146 EXIF_TAG_DEVICE_SETTING_DESCRIPTION = 0xa40b, 00147 EXIF_TAG_SUBJECT_DISTANCE_RANGE = 0xa40c, 00148 EXIF_TAG_IMAGE_UNIQUE_ID = 0xa420, 00149 EXIF_TAG_GAMMA = 0xa500, 00150 EXIF_TAG_PRINT_IMAGE_MATCHING = 0xc4a5, 00151 EXIF_TAG_PADDING = 0xea1c 00152 } ExifTag; 00153 00154 /* GPS tags overlap with above ones. */ 00155 #define EXIF_TAG_GPS_VERSION_ID 0x0000 00156 #define EXIF_TAG_GPS_LATITUDE_REF 0x0001 /* INTEROPERABILITY_INDEX */ 00157 #define EXIF_TAG_GPS_LATITUDE 0x0002 /* INTEROPERABILITY_VERSION */ 00158 #define EXIF_TAG_GPS_LONGITUDE_REF 0x0003 00159 #define EXIF_TAG_GPS_LONGITUDE 0x0004 00160 #define EXIF_TAG_GPS_ALTITUDE_REF 0x0005 00161 #define EXIF_TAG_GPS_ALTITUDE 0x0006 00162 #define EXIF_TAG_GPS_TIME_STAMP 0x0007 00163 #define EXIF_TAG_GPS_SATELLITES 0x0008 00164 #define EXIF_TAG_GPS_STATUS 0x0009 00165 #define EXIF_TAG_GPS_MEASURE_MODE 0x000a 00166 #define EXIF_TAG_GPS_DOP 0x000b 00167 #define EXIF_TAG_GPS_SPEED_REF 0x000c 00168 #define EXIF_TAG_GPS_SPEED 0x000d 00169 #define EXIF_TAG_GPS_TRACK_REF 0x000e 00170 #define EXIF_TAG_GPS_TRACK 0x000f 00171 #define EXIF_TAG_GPS_IMG_DIRECTION_REF 0x0010 00172 #define EXIF_TAG_GPS_IMG_DIRECTION 0x0011 00173 #define EXIF_TAG_GPS_MAP_DATUM 0x0012 00174 #define EXIF_TAG_GPS_DEST_LATITUDE_REF 0x0013 00175 #define EXIF_TAG_GPS_DEST_LATITUDE 0x0014 00176 #define EXIF_TAG_GPS_DEST_LONGITUDE_REF 0x0015 00177 #define EXIF_TAG_GPS_DEST_LONGITUDE 0x0016 00178 #define EXIF_TAG_GPS_DEST_BEARING_REF 0x0017 00179 #define EXIF_TAG_GPS_DEST_BEARING 0x0018 00180 #define EXIF_TAG_GPS_DEST_DISTANCE_REF 0x0019 00181 #define EXIF_TAG_GPS_DEST_DISTANCE 0x001a 00182 #define EXIF_TAG_GPS_PROCESSING_METHOD 0x001b 00183 #define EXIF_TAG_GPS_AREA_INFORMATION 0x001c 00184 #define EXIF_TAG_GPS_DATE_STAMP 0x001d 00185 #define EXIF_TAG_GPS_DIFFERENTIAL 0x001e 00186 00188 typedef enum { 00190 EXIF_SUPPORT_LEVEL_UNKNOWN = 0, 00191 00193 EXIF_SUPPORT_LEVEL_NOT_RECORDED, 00194 00196 EXIF_SUPPORT_LEVEL_MANDATORY, 00197 00199 EXIF_SUPPORT_LEVEL_OPTIONAL 00200 } ExifSupportLevel; 00201 00209 ExifTag exif_tag_from_name (const char *name); 00210 00219 const char *exif_tag_get_name_in_ifd (ExifTag tag, ExifIfd ifd); 00220 00228 const char *exif_tag_get_title_in_ifd (ExifTag tag, ExifIfd ifd); 00229 00237 const char *exif_tag_get_description_in_ifd (ExifTag tag, ExifIfd ifd); 00238 00251 ExifSupportLevel exif_tag_get_support_level_in_ifd (ExifTag tag, ExifIfd ifd, 00252 ExifDataType t); 00253 00254 /* Don't use these functions. They are here for compatibility only. */ 00255 00257 const char *exif_tag_get_name (ExifTag tag); 00258 00260 const char *exif_tag_get_title (ExifTag tag); 00261 00263 const char *exif_tag_get_description (ExifTag tag); 00264 00265 00266 /* For now, do not use these functions. */ 00267 00269 ExifTag exif_tag_table_get_tag (unsigned int n); 00270 00272 const char *exif_tag_table_get_name (unsigned int n); 00273 00275 unsigned int exif_tag_table_count (void); 00276 00277 00278 /* Don't use these definitions. They are here for compatibility only. */ 00279 00281 #define EXIF_TAG_UNKNOWN_C4A5 EXIF_TAG_PRINT_IMAGE_MATCHING 00282 00283 #ifdef __cplusplus 00284 } 00285 #endif /* __cplusplus */ 00286 00287 #endif /* __EXIF_TAG_H__ */