    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017package org.apache.commons.imaging.formats.tiff.constants;
    018
    019import java.util.Arrays;
    020import java.util.Collections;
    021import java.util.List;
    022
    023import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo;
    024import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii;
    025import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte;
    026import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes;
    027import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDirectory;
    028import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDouble;
    029import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoGpsText;
    030import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong;
    031import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs;
    032import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational;
    033import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals;
    034import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLong;
    035import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational;
    036import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort;
    037import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong;
    038import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts;
    039import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefined;
    040import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds;
    041import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUnknowns;
    042
    043/**
    044 * References:
    045 * http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
    046 * http://tiki-lounge.com/~raf/tiff/fields.html
    047 * http://www.awaresystems.be/imaging/tiff/tifftags.html
    048 *
    049 * "Stonits": http://www.anyhere.com/gward/pixformat/tiffluv.html
    050 */
    051public final class ExifTagConstants {
    052
    053    public static final TagInfoAscii EXIF_TAG_INTEROPERABILITY_INDEX = new TagInfoAscii(
    054            "InteroperabilityIndex", 0x0001, -1,
    055            TiffDirectoryType.EXIF_DIRECTORY_INTEROP_IFD);
    056    public static final TagInfoUndefined EXIF_TAG_INTEROPERABILITY_VERSION = new TagInfoUndefined(
    057            "InteroperabilityVersion", 0x0002,
    058            TiffDirectoryType.EXIF_DIRECTORY_INTEROP_IFD);
    059    public static final TagInfoAscii EXIF_TAG_PROCESSING_SOFTWARE = new TagInfoAscii(
    060            "ProcessingSoftware", 0x000b, -1,
    061            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    062    public static final TagInfoAscii EXIF_TAG_SOFTWARE = new TagInfoAscii(
    063            "Software", 0x0131, -1,
    064            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    065    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_IFD0 = new TagInfoLong(
    066            "PreviewImageStart", 0x0111,
    067            TiffDirectoryType.EXIF_DIRECTORY_IFD0, true);
    068    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_SUB_IFD1 = new TagInfoLong(
    069            "PreviewImageStart", 0x0111,
    070            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD1, true);
    071    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD2 = new TagInfoLong(
    072            "JpgFromRawStart", 0x0111,
    073            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD2, true);
    074    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_IFD0 = new TagInfoLong(
    075            "PreviewImageLength", 0x0117,
    076            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    077    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_SUB_IFD1 = new TagInfoLong(
    078            "PreviewImageLength", 0x0117,
    079            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD1);
    080    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2 = new TagInfoLong(
    081            "JpgFromRawLength", 0x0117,
    082            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD2);
    083    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_START_MAKER_NOTES = new TagInfoLong(
    084            "PreviewImageStart", 0x0201,
    085            TiffDirectoryType.EXIF_DIRECTORY_MAKER_NOTES);
    086    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD = new TagInfoLong(
    087            "JpgFromRawStart", 0x0201,
    088            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD, true);
    089    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_START_IFD2 = new TagInfoLong(
    090            "JpgFromRawStart", 0x0201,
    091            TiffDirectoryType.EXIF_DIRECTORY_IFD2, true);
    092    public static final TagInfoLong EXIF_TAG_OTHER_IMAGE_START = new TagInfoLong(
    093            "OtherImageStart", 0x0201,
    094            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN, true);
    095    public static final TagInfoLong EXIF_TAG_PREVIEW_IMAGE_LENGTH_MAKER_NOTES = new TagInfoLong(
    096            "PreviewImageLength", 0x0202,
    097            TiffDirectoryType.EXIF_DIRECTORY_MAKER_NOTES);
    098    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD = new TagInfoLong(
    099            "JpgFromRawLength", 0x0202,
    100            TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD);
    101    public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_IFD2 = new TagInfoLong(
    102            "JpgFromRawLength", 0x0202,
    103            TiffDirectoryType.EXIF_DIRECTORY_IFD2);
    104    public static final TagInfoLong EXIF_TAG_OTHER_IMAGE_LENGTH = new TagInfoLong(
    105            "OtherImageLength", 0x0202,
    106            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    107    public static final TagInfoBytes EXIF_TAG_APPLICATION_NOTES = new TagInfoBytes(
    108            "ApplicationNotes", 0x02bc, -1,
    109            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    110    public static final TagInfoUnknowns EXIF_TAG_MATTEING = new TagInfoUnknowns(
    111            "Matteing", 0x80e3, -1,
    112            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    113    public static final TagInfoUnknowns EXIF_TAG_DATA_TYPE = new TagInfoUnknowns(
    114            "DataType", 0x80e4, -1,
    115            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    116    public static final TagInfoUnknowns EXIF_TAG_IMAGE_DEPTH = new TagInfoUnknowns(
    117            "ImageDepth", 0x80e5, -1,
    118            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    119    public static final TagInfoUnknowns EXIF_TAG_TILE_DEPTH = new TagInfoUnknowns(
    120            "TileDepth", 0x80e6, -1,
    121            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    122    public static final TagInfoUnknowns EXIF_TAG_MODEL_2 = new TagInfoUnknowns(
    123            "Model2", 0x827d, -1,
    124            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    125    public static final TagInfoRationals EXIF_TAG_EXPOSURE_TIME = new TagInfoRationals(
    126            "ExposureTime", 0x829a, -1,
    127            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    128    public static final TagInfoRationals EXIF_TAG_FNUMBER = new TagInfoRationals(
    129            "FNumber", 0x829d, -1,
    130            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    131    // FIXME: other types?
    132    public static final TagInfoLong EXIF_TAG_IPTC_NAA = new TagInfoLong(
    133            "IPTC-NAA", 0x83bb,
    134            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    135    public static final TagInfoShorts EXIF_TAG_INTERGRAPH_PACKET_DATA = new TagInfoShorts(
    136            "IntergraphPacketData", 0x847e, -1,
    137            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    138    public static final TagInfoLongs EXIF_TAG_INTERGRAPH_FLAG_REGISTERS = new TagInfoLongs(
    139            "IntergraphFlagRegisters", 0x847f, 16,
    140            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    141    public static final TagInfoAscii EXIF_TAG_SITE = new TagInfoAscii(
    142            "Site", 0x84e0, -1,
    143            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    144    public static final TagInfoAscii EXIF_TAG_COLOR_SEQUENCE = new TagInfoAscii(
    145            "ColorSequence", 0x84e1, -1,
    146            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    147    public static final TagInfoAscii EXIF_TAG_IT8HEADER = new TagInfoAscii(
    148            "IT8Header", 0x84e2, -1,
    149            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    150    public static final TagInfoShort EXIF_TAG_RASTER_PADDING = new TagInfoShort(
    151            "RasterPadding", 0x84e3,
    152            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    153    public static final TagInfoShort EXIF_TAG_BITS_PER_RUN_LENGTH = new TagInfoShort(
    154            "BitsPerRunLength", 0x84e4,
    155            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    156    public static final TagInfoShort EXIF_TAG_BITS_PER_EXTENDED_RUN_LENGTH = new TagInfoShort(
    157            "BitsPerExtendedRunLength", 0x84e5,
    158            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    159    public static final TagInfoBytes EXIF_TAG_COLOR_TABLE = new TagInfoBytes(
    160            "ColorTable", 0x84e6, -1,
    161            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    162    public static final TagInfoByte EXIF_TAG_IMAGE_COLOR_INDICATOR = new TagInfoByte(
    163            "ImageColorIndicator", 0x84e7,
    164            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    165    public static final TagInfoByte EXIF_TAG_BACKGROUND_COLOR_INDICATOR = new TagInfoByte(
    166            "BackgroundColorIndicator", 0x84e8,
    167            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    168    public static final TagInfoBytes EXIF_TAG_IMAGE_COLOR_VALUE = new TagInfoBytes(
    169            "ImageColorValue", 0x84e9, -1,
    170            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    171    public static final TagInfoBytes EXIF_TAG_BACKGROUND_COLOR_VALUE = new TagInfoBytes(
    172            "BackgroundColorValue", 0x84ea, -1,
    173            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    174    public static final TagInfoBytes EXIF_TAG_PIXEL_INTENSITY_RANGE = new TagInfoBytes(
    175            "PixelIntensityRange", 0x84eb, -1,
    176            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    177    public static final TagInfoByte EXIF_TAG_TRANSPARENCY_INDICATOR = new TagInfoByte(
    178            "TransparencyIndicator", 0x84ec,
    179            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    180    public static final TagInfoAscii EXIF_TAG_COLOR_CHARACTERIZATION = new TagInfoAscii(
    181            "ColorCharacterization", 0x84ed, -1,
    182            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    183    public static final TagInfoShortOrLong EXIF_TAG_HCUSAGE = new TagInfoShortOrLong(
    184            "HCUsage", 0x84ee, 1,
    185            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    186    public static final TagInfoAscii EXIF_TAG_SEMINFO = new TagInfoAscii(
    187            "SEMInfo", 0x8546, 1,
    188            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    189    public static final TagInfoLong EXIF_TAG_AFCP_IPTC = new TagInfoLong(
    190            "AFCP_IPTC", 0x8568,
    191            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    192    public static final TagInfoLong EXIF_TAG_LEAF_DATA = new TagInfoLong(
    193            "LeafData", 0x8606,
    194            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    195    public static final TagInfoBytes EXIF_TAG_PHOTOSHOP_SETTINGS = new TagInfoBytes(
    196            "PhotoshopSettings", 0x8649, -1,
    197            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    198    public static final TagInfoDirectory EXIF_TAG_EXIF_OFFSET = new TagInfoDirectory(
    199            "ExifOffset", 0x8769,
    200            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    201    public static final TagInfoShort EXIF_TAG_EXPOSURE_PROGRAM = new TagInfoShort(
    202            "ExposureProgram", 0x8822,
    203            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    204    public static final int EXPOSURE_PROGRAM_VALUE_MANUAL = 1;
    205    public static final int EXPOSURE_PROGRAM_VALUE_PROGRAM_AE = 2;
    206    public static final int EXPOSURE_PROGRAM_VALUE_APERTURE_PRIORITY_AE = 3;
    207    public static final int EXPOSURE_PROGRAM_VALUE_SHUTTER_SPEED_PRIORITY_AE = 4;
    208    public static final int EXPOSURE_PROGRAM_VALUE_CREATIVE_SLOW_SPEED = 5;
    209    public static final int EXPOSURE_PROGRAM_VALUE_ACTION_HIGH_SPEED = 6;
    210    public static final int EXPOSURE_PROGRAM_VALUE_PORTRAIT = 7;
    211    public static final int EXPOSURE_PROGRAM_VALUE_LANDSCAPE = 8;
    212    public static final TagInfoAscii EXIF_TAG_SPECTRAL_SENSITIVITY = new TagInfoAscii(
    213            "SpectralSensitivity", 0x8824, -1,
    214            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    215    public static final TagInfoDirectory EXIF_TAG_GPSINFO = new TagInfoDirectory(
    216            "GPSInfo", 0x8825,
    217            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    218    public static final TagInfoShorts EXIF_TAG_ISO = new TagInfoShorts(
    219            "PhotographicSensitivity", 0x8827, -1,
    220            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    221    public static final TagInfoUndefineds EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR = new TagInfoUndefineds(
    222            "Opto - Electric Conv Factor", 0x8828, -1,
    223            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    224    public static final TagInfoLong EXIF_TAG_LEAF_SUB_IFD = new TagInfoLong(
    225            "LeafSubIFD", 0x888a,
    226            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    227    public static final TagInfoUndefineds EXIF_TAG_EXIF_VERSION = new TagInfoUndefineds(
    228            "ExifVersion", 0x9000, 4,
    229            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    230    public static final TagInfoAscii EXIF_TAG_DATE_TIME_ORIGINAL = new TagInfoAscii(
    231            "DateTimeOriginal", 0x9003, 20,
    232            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    233    public static final TagInfoAscii EXIF_TAG_DATE_TIME_DIGITIZED = new TagInfoAscii(
    234            "DateTimeDigitized", 0x9004, 20, TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    235    public static final TagInfoUndefineds EXIF_TAG_COMPONENTS_CONFIGURATION = new TagInfoUndefineds(
    236            "ComponentsConfiguration", 0x9101, 4,
    237            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    238    public static final TagInfoRational EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = new TagInfoRational(
    239            "CompressedBitsPerPixel", 0x9102,
    240            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    241    public static final TagInfoSRational EXIF_TAG_SHUTTER_SPEED_VALUE = new TagInfoSRational(
    242            "ShutterSpeedValue", 0x9201,
    243            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    244    public static final TagInfoRational EXIF_TAG_APERTURE_VALUE = new TagInfoRational(
    245            "ApertureValue", 0x9202,
    246            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    247    public static final TagInfoSRational EXIF_TAG_BRIGHTNESS_VALUE = new TagInfoSRational(
    248            "BrightnessValue", 0x9203,
    249            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    250    public static final TagInfoSRational EXIF_TAG_EXPOSURE_COMPENSATION = new TagInfoSRational(
    251            "ExposureCompensation", 0x9204,
    252            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    253    public static final TagInfoRational EXIF_TAG_MAX_APERTURE_VALUE = new TagInfoRational(
    254            "MaxApertureValue", 0x9205,
    255            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    256    public static final TagInfoRationals EXIF_TAG_SUBJECT_DISTANCE = new TagInfoRationals(
    257            "Subject Distance", 0x9206, -1,
    258            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    259    public static final TagInfoShort EXIF_TAG_METERING_MODE = new TagInfoShort(
    260            "MeteringMode", 0x9207,
    261            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    262    public static final int METERING_MODE_VALUE_AVERAGE = 1;
    263    public static final int METERING_MODE_VALUE_CENTER_WEIGHTED_AVERAGE = 2;
    264    public static final int METERING_MODE_VALUE_SPOT = 3;
    265    public static final int METERING_MODE_VALUE_MULTI_SPOT = 4;
    266    public static final int METERING_MODE_VALUE_MULTI_SEGMENT = 5;
    267    public static final int METERING_MODE_VALUE_PARTIAL = 6;
    268    public static final int METERING_MODE_VALUE_OTHER = 255;
    269    public static final TagInfoShort EXIF_TAG_LIGHT_SOURCE = new TagInfoShort(
    270            "LightSource", 0x9208,
    271            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    272    public static final int LIGHT_SOURCE_VALUE_DAYLIGHT = 1;
    273    public static final int LIGHT_SOURCE_VALUE_FLUORESCENT = 2;
    274    public static final int LIGHT_SOURCE_VALUE_TUNGSTEN = 3;
    275    public static final int LIGHT_SOURCE_VALUE_FLASH = 4;
    276    public static final int LIGHT_SOURCE_VALUE_FINE_WEATHER = 9;
    277    public static final int LIGHT_SOURCE_VALUE_CLOUDY = 10;
    278    public static final int LIGHT_SOURCE_VALUE_SHADE = 11;
    279    public static final int LIGHT_SOURCE_VALUE_DAYLIGHT_FLUORESCENT = 12;
    280    public static final int LIGHT_SOURCE_VALUE_DAY_WHITE_FLUORESCENT = 13;
    281    public static final int LIGHT_SOURCE_VALUE_COOL_WHITE_FLUORESCENT = 14;
    282    public static final int LIGHT_SOURCE_VALUE_WHITE_FLUORESCENT = 15;
    283    public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_A = 17;
    284    public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_B = 18;
    285    public static final int LIGHT_SOURCE_VALUE_STANDARD_LIGHT_C = 19;
    286    public static final int LIGHT_SOURCE_VALUE_D55 = 20;
    287    public static final int LIGHT_SOURCE_VALUE_D65 = 21;
    288    public static final int LIGHT_SOURCE_VALUE_D75 = 22;
    289    public static final int LIGHT_SOURCE_VALUE_D50 = 23;
    290    public static final int LIGHT_SOURCE_VALUE_ISO_STUDIO_TUNGSTEN = 24;
    291    public static final int LIGHT_SOURCE_VALUE_OTHER = 255;
    292    public static final TagInfoShort EXIF_TAG_FLASH = new TagInfoShort(
    293            "Flash", 0x9209,
    294            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    295    public static final int FLASH_VALUE_NO_FLASH = 0x0;
    296    public static final int FLASH_VALUE_FIRED = 0x1;
    297    public static final int FLASH_VALUE_FIRED_RETURN_NOT_DETECTED = 0x5;
    298    public static final int FLASH_VALUE_FIRED_RETURN_DETECTED = 0x7;
    299    public static final int FLASH_VALUE_ON_DID_NOT_FIRE = 0x8;
    300    public static final int FLASH_VALUE_ON = 0x9;
    301    public static final int FLASH_VALUE_ON_RETURN_NOT_DETECTED = 0xd;
    302    public static final int FLASH_VALUE_ON_RETURN_DETECTED = 0xf;
    303    public static final int FLASH_VALUE_OFF = 0x10;
    304    public static final int FLASH_VALUE_OFF_DID_NOT_FIRE_RETURN_NOT_DETECTED = 0x14;
    305    public static final int FLASH_VALUE_AUTO_DID_NOT_FIRE = 0x18;
    306    public static final int FLASH_VALUE_AUTO_FIRED = 0x19;
    307    public static final int FLASH_VALUE_AUTO_FIRED_RETURN_NOT_DETECTED = 0x1d;
    308    public static final int FLASH_VALUE_AUTO_FIRED_RETURN_DETECTED = 0x1f;
    309    public static final int FLASH_VALUE_NO_FLASH_FUNCTION = 0x20;
    310    public static final int FLASH_VALUE_OFF_NO_FLASH_FUNCTION = 0x30;
    311    public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION = 0x41;
    312    public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x45;
    313    public static final int FLASH_VALUE_FIRED_RED_EYE_REDUCTION_RETURN_DETECTED = 0x47;
    314    public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION = 0x49;
    315    public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x4d;
    316    public static final int FLASH_VALUE_ON_RED_EYE_REDUCTION_RETURN_DETECTED = 0x4f;
    317    public static final int FLASH_VALUE_OFF_RED_EYE_REDUCTION = 0x50;
    318    public static final int FLASH_VALUE_AUTO_DID_NOT_FIRE_RED_EYE_REDUCTION = 0x58;
    319    public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION = 0x59;
    320    public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION_RETURN_NOT_DETECTED = 0x5d;
    321    public static final int FLASH_VALUE_AUTO_FIRED_RED_EYE_REDUCTION_RETURN_DETECTED = 0x5f;
    322    public static final TagInfoRationals EXIF_TAG_FOCAL_LENGTH = new TagInfoRationals(
    323            "FocalLength", 0x920a, -1,
    324            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    325    public static final TagInfoShorts EXIF_TAG_SUBJECT_AREA = new TagInfoShorts(
    326            "SubjectArea", 0x9214, -1,
    327            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    328    public static final TagInfoDouble EXIF_TAG_STO_NITS = new TagInfoDouble(
    329            "StoNits", 0x923f,
    330            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    331    public static final TagInfoUndefineds EXIF_TAG_MAKER_NOTE = new TagInfoUndefineds(
    332            "MakerNote", 0x927c, -1,
    333            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    334    public static final TagInfoGpsText EXIF_TAG_USER_COMMENT = new TagInfoGpsText(
    335            "UserComment", 0x9286,
    336            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    337    public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME = new TagInfoAscii(
    338            "SubSecTime", 0x9290, -1,
    339            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    340    public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME_ORIGINAL = new TagInfoAscii(
    341            "SubSecTimeOriginal", 0x9291, -1,
    342            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    343    public static final TagInfoAscii EXIF_TAG_SUB_SEC_TIME_DIGITIZED = new TagInfoAscii(
    344            "SubSecTimeDigitized", 0x9292, -1,
    345            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    346    public static final TagInfoUndefineds EXIF_TAG_FLASHPIX_VERSION = new TagInfoUndefineds(
    347            "FlashpixVersion", 0xa000, 4,
    348            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    349    public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_WIDTH = new TagInfoShort(
    350            "ExifImageWidth", 0xa002,
    351            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    352    public static final TagInfoShort EXIF_TAG_EXIF_IMAGE_LENGTH = new TagInfoShort(
    353            "ExifImageLength", 0xa003,
    354            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    355    public static final TagInfoAscii EXIF_TAG_RELATED_SOUND_FILE = new TagInfoAscii(
    356            "RelatedSoundFile", 0xa004, 13,
    357            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    358    public static final TagInfoDirectory EXIF_TAG_INTEROP_OFFSET = new TagInfoDirectory(
    359            "InteropOffset", 0xa005,
    360            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    361    public static final TagInfoRationals EXIF_TAG_FLASH_ENERGY_EXIF_IFD = new TagInfoRationals(
    362            "FlashEnergy", 0xa20b, -1,
    363            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    364    public static final TagInfoUndefineds EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE_2 = new TagInfoUndefineds(
    365            "SpatialFrequencyResponse", 0xa20c, -1,
    366            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    367    public static final TagInfoUnknowns EXIF_TAG_NOISE_2 = new TagInfoUnknowns(
    368            "Noise", 0xa20d, -1,
    369            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    370    public static final TagInfoRational EXIF_TAG_FOCAL_PLANE_XRESOLUTION_EXIF_IFD = new TagInfoRational(
    371            "FocalPlaneXResolution", 0xa20e,
    372            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    373    public static final TagInfoRational EXIF_TAG_FOCAL_PLANE_YRESOLUTION_EXIF_IFD = new TagInfoRational(
    374            "FocalPlaneYResolution", 0xa20f,
    375            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    376    public static final TagInfoShort EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD = new TagInfoShort(
    377            "FocalPlaneResolutionUnit", 0xa210,
    378            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    379    public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_NONE = 1;
    380    public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_INCHES = 2;
    381    public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_CM = 3;
    382    public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_MM = 4;
    383    public static final int FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD_VALUE_UM = 5;
    384    public static final TagInfoUnknowns EXIF_TAG_IMAGE_NUMBER = new TagInfoUnknowns(
    385            "ImageNumber", 0xa211, -1,
    386            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    387    public static final TagInfoUnknowns EXIF_TAG_SECURITY_CLASSIFICATION = new TagInfoUnknowns(
    388            "SecurityClassification", 0xa212, -1,
    389            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    390    public static final TagInfoUnknowns EXIF_TAG_IMAGE_HISTORY = new TagInfoUnknowns(
    391            "ImageHistory", 0xa213, -1,
    392            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    393    public static final TagInfoShorts EXIF_TAG_SUBJECT_LOCATION = new TagInfoShorts(
    394            "SubjectLocation", 0xa214, 2,
    395            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    396    public static final TagInfoRational EXIF_TAG_EXPOSURE_INDEX_EXIF_IFD = new TagInfoRational(
    397            "ExposureIndex", 0xa215,
    398            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    399    public static final TagInfoUnknowns EXIF_TAG_TIFF_EPSTANDARD_ID_2 = new TagInfoUnknowns(
    400            "TIFF-EPStandardID", 0xa216, -1,
    401            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    402    public static final TagInfoShort EXIF_TAG_SENSING_METHOD_EXIF_IFD = new TagInfoShort(
    403            "SensingMethod", 0xa217,
    404            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    405    public static final int SENSING_METHOD_EXIF_IFD_VALUE_NOT_DEFINED = 1;
    406    public static final int SENSING_METHOD_EXIF_IFD_VALUE_ONE_CHIP_COLOR_AREA = 2;
    407    public static final int SENSING_METHOD_EXIF_IFD_VALUE_TWO_CHIP_COLOR_AREA = 3;
    408    public static final int SENSING_METHOD_EXIF_IFD_VALUE_THREE_CHIP_COLOR_AREA = 4;
    409    public static final int SENSING_METHOD_EXIF_IFD_VALUE_COLOR_SEQUENTIAL_AREA = 5;
    410    public static final int SENSING_METHOD_EXIF_IFD_VALUE_TRILINEAR = 7;
    411    public static final int SENSING_METHOD_EXIF_IFD_VALUE_COLOR_SEQUENTIAL_LINEAR = 8;
    412    public static final TagInfoUndefined EXIF_TAG_FILE_SOURCE = new TagInfoUndefined(
    413            "FileSource", 0xa300,
    414            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    415    public static final int FILE_SOURCE_VALUE_FILM_SCANNER = 1;
    416    public static final int FILE_SOURCE_VALUE_REFLECTION_PRINT_SCANNER = 2;
    417    public static final int FILE_SOURCE_VALUE_DIGITAL_CAMERA = 3;
    418    public static final TagInfoUndefined EXIF_TAG_SCENE_TYPE = new TagInfoUndefined(
    419            "SceneType", 0xa301,
    420            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    421    public static final TagInfoUndefineds EXIF_TAG_CFAPATTERN = new TagInfoUndefineds(
    422            "CFAPattern", 0xa302, -1,
    423            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    424    public static final TagInfoShort EXIF_TAG_CUSTOM_RENDERED = new TagInfoShort(
    425            "CustomRendered", 0xa401,
    426            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    427    public static final int CUSTOM_RENDERED_VALUE_NORMAL = 0;
    428    public static final int CUSTOM_RENDERED_VALUE_CUSTOM = 1;
    429    public static final TagInfoShort EXIF_TAG_EXPOSURE_MODE = new TagInfoShort(
    430            "ExposureMode", 0xa402,
    431            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    432    public static final int EXPOSURE_MODE_VALUE_AUTO = 0;
    433    public static final int EXPOSURE_MODE_VALUE_MANUAL = 1;
    434    public static final int EXPOSURE_MODE_VALUE_AUTO_BRACKET = 2;
    435    public static final TagInfoShort EXIF_TAG_WHITE_BALANCE_1 = new TagInfoShort(
    436            "WhiteBalance", 0xa403,
    437            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    438    public static final int WHITE_BALANCE_1_VALUE_AUTO = 0;
    439    public static final int WHITE_BALANCE_1_VALUE_MANUAL = 1;
    440    public static final TagInfoRational EXIF_TAG_DIGITAL_ZOOM_RATIO = new TagInfoRational(
    441            "DigitalZoomRatio", 0xa404,
    442            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    443    public static final TagInfoShort EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT = new TagInfoShort(
    444            "FocalLengthIn35mmFormat", 0xa405,
    445            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    446    public static final TagInfoShort EXIF_TAG_SCENE_CAPTURE_TYPE = new TagInfoShort(
    447            "SceneCaptureType", 0xa406,
    448            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    449    public static final int SCENE_CAPTURE_TYPE_VALUE_STANDARD = 0;
    450    public static final int SCENE_CAPTURE_TYPE_VALUE_LANDSCAPE = 1;
    451    public static final int SCENE_CAPTURE_TYPE_VALUE_PORTRAIT = 2;
    452    public static final int SCENE_CAPTURE_TYPE_VALUE_NIGHT = 3;
    453    public static final TagInfoShort EXIF_TAG_GAIN_CONTROL = new TagInfoShort(
    454            "GainControl", 0xa407,
    455            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    456    public static final int GAIN_CONTROL_VALUE_NONE = 0;
    457    public static final int GAIN_CONTROL_VALUE_LOW_GAIN_UP = 1;
    458    public static final int GAIN_CONTROL_VALUE_HIGH_GAIN_UP = 2;
    459    public static final int GAIN_CONTROL_VALUE_LOW_GAIN_DOWN = 3;
    460    public static final int GAIN_CONTROL_VALUE_HIGH_GAIN_DOWN = 4;
    461    public static final TagInfoShort EXIF_TAG_CONTRAST_1 = new TagInfoShort(
    462            "Contrast", 0xa408,
    463            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    464    public static final int CONTRAST_1_VALUE_NORMAL = 0;
    465    public static final int CONTRAST_1_VALUE_LOW = 1;
    466    public static final int CONTRAST_1_VALUE_HIGH = 2;
    467    public static final TagInfoShort EXIF_TAG_SATURATION_1 = new TagInfoShort(
    468            "Saturation", 0xa409,
    469            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    470    public static final int SATURATION_1_VALUE_NORMAL = 0;
    471    public static final int SATURATION_1_VALUE_LOW = 1;
    472    public static final int SATURATION_1_VALUE_HIGH = 2;
    473    public static final TagInfoShort EXIF_TAG_SHARPNESS_1 = new TagInfoShort(
    474            "Sharpness", 0xa40a,
    475            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    476    public static final int SHARPNESS_1_VALUE_NORMAL = 0;
    477    public static final int SHARPNESS_1_VALUE_SOFT = 1;
    478    public static final int SHARPNESS_1_VALUE_HARD = 2;
    479    public static final TagInfoUndefineds EXIF_TAG_DEVICE_SETTING_DESCRIPTION = new TagInfoUndefineds(
    480            "DeviceSettingDescription", 0xa40b, -1,
    481            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    482    public static final TagInfoShort EXIF_TAG_SUBJECT_DISTANCE_RANGE = new TagInfoShort(
    483            "SubjectDistanceRange", 0xa40c,
    484            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    485    public static final int SUBJECT_DISTANCE_RANGE_VALUE_MACRO = 1;
    486    public static final int SUBJECT_DISTANCE_RANGE_VALUE_CLOSE = 2;
    487    public static final int SUBJECT_DISTANCE_RANGE_VALUE_DISTANT = 3;
    488    public static final TagInfoAscii EXIF_TAG_IMAGE_UNIQUE_ID = new TagInfoAscii(
    489            "ImageUniqueID", 0xa420, 33,
    490            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    491    public static final TagInfoAscii EXIF_TAG_CAMERA_OWNER_NAME = new TagInfoAscii(
    492            "CameraOwnerName", 0xa430, -1,
    493            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    494    public static final TagInfoAscii EXIF_TAG_BODY_SERIAL_NUMBER = new TagInfoAscii(
    495            "BodySerialNumber", 0xa431, -1,
    496            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    497    public static final TagInfoRationals EXIF_TAG_LENS_SPECIFICATION = new TagInfoRationals(
    498            "LensSpecification", 0xa432, 4,
    499            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    500    public static final TagInfoAscii EXIF_TAG_LENS_MAKE = new TagInfoAscii(
    501            "LensMake", 0xa433, -1,
    502            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    503    public static final TagInfoAscii EXIF_TAG_LENS_MODEL = new TagInfoAscii(
    504            "LensModel", 0xa434, -1,
    505            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    506    public static final TagInfoAscii EXIF_TAG_LENS_SERIAL_NUMBER = new TagInfoAscii(
    507            "LensSerialNumber", 0xa435, -1,
    508            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    509    public static final TagInfoRational EXIF_TAG_GAMMA = new TagInfoRational(
    510            "Gamma", 0xa500,
    511            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    512    public static final TagInfoUnknowns EXIF_TAG_ANNOTATIONS = new TagInfoUnknowns(
    513            "Annotations", 0xc44f, -1,
    514            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    515    public static final TagInfoUndefined EXIF_TAG_PRINT_IM = new TagInfoUndefined(
    516            "PrintIM", 0xc4a5,
    517            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    518    public static final TagInfoSLong EXIF_TAG_OFFSET_SCHEMA = new TagInfoSLong(
    519            "OffsetSchema", 0xea1d,
    520            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    521    public static final TagInfoAscii EXIF_TAG_OWNER_NAME = new TagInfoAscii(
    522            "OwnerName", 0xfde8, -1,
    523            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    524    public static final TagInfoAscii EXIF_TAG_SERIAL_NUMBER = new TagInfoAscii(
    525            "SerialNumber", 0xfde9, -1,
    526            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    527    public static final TagInfoAscii EXIF_TAG_LENS = new TagInfoAscii(
    528            "Lens", 0xfdea, -1,
    529            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    530    public static final TagInfoAscii EXIF_TAG_RAW_FILE = new TagInfoAscii(
    531            "RawFile", 0xfe4c, -1,
    532            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    533    public static final TagInfoAscii EXIF_TAG_CONVERTER = new TagInfoAscii(
    534            "Converter", 0xfe4d, -1,
    535            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    536    public static final TagInfoAscii EXIF_TAG_WHITE_BALANCE_2 = new TagInfoAscii(
    537            "WhiteBalance", 0xfe4e, -1,
    538            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    539    public static final TagInfoAscii EXIF_TAG_EXPOSURE = new TagInfoAscii(
    540            "Exposure", 0xfe51, -1,
    541            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    542    public static final TagInfoAscii EXIF_TAG_SHADOWS = new TagInfoAscii(
    543            "Shadows", 0xfe52, -1,
    544            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    545    public static final TagInfoAscii EXIF_TAG_BRIGHTNESS = new TagInfoAscii(
    546            "Brightness", 0xfe53, -1,
    547            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    548    public static final TagInfoAscii EXIF_TAG_CONTRAST_2 = new TagInfoAscii(
    549            "Contrast", 0xfe54, -1,
    550            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    551    public static final TagInfoAscii EXIF_TAG_SATURATION_2 = new TagInfoAscii(
    552            "Saturation", 0xfe55, -1,
    553            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    554    public static final TagInfoAscii EXIF_TAG_SHARPNESS_2 = new TagInfoAscii(
    555            "Sharpness", 0xfe56, -1,
    556            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    557    public static final TagInfoAscii EXIF_TAG_SMOOTHNESS = new TagInfoAscii(
    558            "Smoothness", 0xfe57, -1,
    559            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    560    public static final TagInfoAscii EXIF_TAG_MOIRE_FILTER = new TagInfoAscii(
    561            "MoireFilter", 0xfe58, -1,
    562            TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD);
    563
    564    public static final List<TagInfo> ALL_EXIF_TAGS =
    565            Collections.unmodifiableList(Arrays.asList(
    566                    EXIF_TAG_INTEROPERABILITY_INDEX, EXIF_TAG_INTEROPERABILITY_VERSION,
    567                    EXIF_TAG_PROCESSING_SOFTWARE,
    568                    EXIF_TAG_SOFTWARE,
    569                    EXIF_TAG_PREVIEW_IMAGE_START_IFD0,
    570                    EXIF_TAG_PREVIEW_IMAGE_START_SUB_IFD1,
    571                    EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD2,
    572                    EXIF_TAG_PREVIEW_IMAGE_LENGTH_IFD0,
    573                    EXIF_TAG_PREVIEW_IMAGE_LENGTH_SUB_IFD1,
    574                    EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2,
    575                    EXIF_TAG_PREVIEW_IMAGE_START_MAKER_NOTES,
    576                    EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD,
    577                    EXIF_TAG_JPG_FROM_RAW_START_IFD2, EXIF_TAG_OTHER_IMAGE_START,
    578                    EXIF_TAG_PREVIEW_IMAGE_LENGTH_MAKER_NOTES,
    579                    EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD,
    580                    EXIF_TAG_JPG_FROM_RAW_LENGTH_IFD2, EXIF_TAG_OTHER_IMAGE_LENGTH,
    581                    EXIF_TAG_APPLICATION_NOTES,
    582                    EXIF_TAG_MATTEING, EXIF_TAG_DATA_TYPE,
    583                    EXIF_TAG_IMAGE_DEPTH, EXIF_TAG_TILE_DEPTH, EXIF_TAG_MODEL_2,
    584                    EXIF_TAG_EXPOSURE_TIME,
    585                    EXIF_TAG_FNUMBER, EXIF_TAG_IPTC_NAA,
    586                    EXIF_TAG_INTERGRAPH_PACKET_DATA,
    587                    EXIF_TAG_INTERGRAPH_FLAG_REGISTERS,
    588                    EXIF_TAG_SITE, EXIF_TAG_COLOR_SEQUENCE,
    589                    EXIF_TAG_IT8HEADER, EXIF_TAG_RASTER_PADDING,
    590                    EXIF_TAG_BITS_PER_RUN_LENGTH,
    591                    EXIF_TAG_BITS_PER_EXTENDED_RUN_LENGTH, EXIF_TAG_COLOR_TABLE,
    592                    EXIF_TAG_IMAGE_COLOR_INDICATOR,
    593                    EXIF_TAG_BACKGROUND_COLOR_INDICATOR, EXIF_TAG_IMAGE_COLOR_VALUE,
    594                    EXIF_TAG_BACKGROUND_COLOR_VALUE, EXIF_TAG_PIXEL_INTENSITY_RANGE,
    595                    EXIF_TAG_TRANSPARENCY_INDICATOR, EXIF_TAG_COLOR_CHARACTERIZATION,
    596                    EXIF_TAG_HCUSAGE, EXIF_TAG_SEMINFO, EXIF_TAG_AFCP_IPTC,
    597                    EXIF_TAG_LEAF_DATA,
    598                    EXIF_TAG_PHOTOSHOP_SETTINGS, EXIF_TAG_EXIF_OFFSET,
    599                    EXIF_TAG_EXPOSURE_PROGRAM,
    600                    EXIF_TAG_SPECTRAL_SENSITIVITY, EXIF_TAG_GPSINFO, EXIF_TAG_ISO,
    601                    EXIF_TAG_OPTO_ELECTRIC_CONV_FACTOR,
    602                    EXIF_TAG_LEAF_SUB_IFD,
    603                    EXIF_TAG_EXIF_VERSION, EXIF_TAG_DATE_TIME_ORIGINAL,
    604                    EXIF_TAG_DATE_TIME_DIGITIZED, EXIF_TAG_COMPONENTS_CONFIGURATION,
    605                    EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, EXIF_TAG_SHUTTER_SPEED_VALUE,
    606                    EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE,
    607                    EXIF_TAG_EXPOSURE_COMPENSATION, EXIF_TAG_MAX_APERTURE_VALUE,
    608                    EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_IMAGE_UNIQUE_ID,
    609                    EXIF_TAG_CAMERA_OWNER_NAME,
    610                    EXIF_TAG_BODY_SERIAL_NUMBER,
    611                    EXIF_TAG_LENS_SPECIFICATION,
    612                    EXIF_TAG_LENS_MAKE,
    613                    EXIF_TAG_LENS_MODEL,
    614                    EXIF_TAG_LENS_SERIAL_NUMBER,
    615                    EXIF_TAG_METERING_MODE,
    616                    EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FOCAL_LENGTH,
    617                    EXIF_TAG_SUBJECT_AREA,
    618                    EXIF_TAG_STO_NITS, EXIF_TAG_SUB_SEC_TIME,
    619                    EXIF_TAG_SUB_SEC_TIME_ORIGINAL, EXIF_TAG_SUB_SEC_TIME_DIGITIZED,
    620                    EXIF_TAG_FLASHPIX_VERSION,
    621                    EXIF_TAG_EXIF_IMAGE_WIDTH, EXIF_TAG_EXIF_IMAGE_LENGTH,
    622                    EXIF_TAG_RELATED_SOUND_FILE, EXIF_TAG_INTEROP_OFFSET,
    623                    EXIF_TAG_FLASH_ENERGY_EXIF_IFD,
    624                    EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE_2, EXIF_TAG_NOISE_2,
    625                    EXIF_TAG_FOCAL_PLANE_XRESOLUTION_EXIF_IFD,
    626                    EXIF_TAG_FOCAL_PLANE_YRESOLUTION_EXIF_IFD,
    627                    EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT_EXIF_IFD,
    628                    EXIF_TAG_IMAGE_NUMBER, EXIF_TAG_SECURITY_CLASSIFICATION,
    629                    EXIF_TAG_IMAGE_HISTORY, EXIF_TAG_SUBJECT_LOCATION,
    630                    EXIF_TAG_EXPOSURE_INDEX_EXIF_IFD, EXIF_TAG_TIFF_EPSTANDARD_ID_2,
    631                    EXIF_TAG_SENSING_METHOD_EXIF_IFD, EXIF_TAG_FILE_SOURCE,
    632                    EXIF_TAG_SCENE_TYPE, EXIF_TAG_CFAPATTERN, EXIF_TAG_CUSTOM_RENDERED,
    633                    EXIF_TAG_EXPOSURE_MODE, EXIF_TAG_WHITE_BALANCE_1,
    634                    EXIF_TAG_DIGITAL_ZOOM_RATIO, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FORMAT,
    635                    EXIF_TAG_SCENE_CAPTURE_TYPE, EXIF_TAG_GAIN_CONTROL,
    636                    EXIF_TAG_CONTRAST_1, EXIF_TAG_SATURATION_1, EXIF_TAG_SHARPNESS_1,
    637                    EXIF_TAG_DEVICE_SETTING_DESCRIPTION,
    638                    EXIF_TAG_SUBJECT_DISTANCE_RANGE, EXIF_TAG_IMAGE_UNIQUE_ID,
    639                    EXIF_TAG_GAMMA,
    640                    EXIF_TAG_ANNOTATIONS, EXIF_TAG_PRINT_IM,
    641                    EXIF_TAG_OFFSET_SCHEMA, EXIF_TAG_OWNER_NAME,
    642                    EXIF_TAG_SERIAL_NUMBER, EXIF_TAG_LENS, EXIF_TAG_RAW_FILE,
    643                    EXIF_TAG_CONVERTER, EXIF_TAG_WHITE_BALANCE_2, EXIF_TAG_EXPOSURE,
    644                    EXIF_TAG_SHADOWS, EXIF_TAG_BRIGHTNESS, EXIF_TAG_CONTRAST_2,
    645                    EXIF_TAG_SATURATION_2, EXIF_TAG_SHARPNESS_2, EXIF_TAG_SMOOTHNESS,
    646                    EXIF_TAG_MOIRE_FILTER,
    647
    648                    EXIF_TAG_USER_COMMENT, //
    649
    650                    EXIF_TAG_MAKER_NOTE));
    651
    652    private ExifTagConstants() {
    653    }
    654}