    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.TagInfoAsciiOrByte;
    026import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes;
    027import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDoubles;
    028import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloats;
    029import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong;
    030import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs;
    031import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational;
    032import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals;
    033import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational;
    034import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRationals;
    035import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort;
    036import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong;
    037import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLongOrRational;
    038import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrRational;
    039import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts;
    040import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds;
    041
    042/**
    043 * Digital Negative (DNG) Specification
    044 * <BR>
    045 * http://www.adobe.com/products/dng/pdfs/dng_spec_1_3_0_0.pdf
    046 */
    047public final class DngTagConstants {
    048
    049    public static final TagInfoBytes EXIF_TAG_DNG_VERSION = new TagInfoBytes(
    050            "DNGVersion", 0xc612, 4,
    051            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    052
    053    public static final TagInfoBytes EXIF_TAG_DNG_BACKWARD_VERSION = new TagInfoBytes(
    054            "DNGBackwardVersion", 0xc613, 4,
    055            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    056
    057    public static final TagInfoAscii EXIF_TAG_UNIQUE_CAMERA_MODEL = new TagInfoAscii(
    058            "UniqueCameraModel", 0xc614, -1,
    059            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    060
    061    public static final TagInfoAsciiOrByte EXIF_TAG_LOCALIZED_CAMERA_MODEL = new TagInfoAsciiOrByte(
    062            "LocalizedCameraModel", 0xc615, -1,
    063            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    064
    065    public static final TagInfoBytes EXIF_TAG_CFAPLANE_COLOR = new TagInfoBytes(
    066            "CFAPlaneColor", 0xc616, -1,
    067            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    068
    069    public static final TagInfoShort EXIF_TAG_CFALAYOUT = new TagInfoShort(
    070            "CFALayout", 0xc617,
    071            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    072    public static final int CFALAYOUT_VALUE_RECTANGULAR = 1;
    073    public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_DOWN_1_2_ROW = 2;
    074    public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_UP_1_2_ROW = 3;
    075    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_RIGHT_1_2_COLUMN = 4;
    076    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_LEFT_1_2_COLUMN = 5;
    077    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 6;
    078    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 7;
    079    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 8;
    080    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 9;
    081
    082    public static final TagInfoShorts EXIF_TAG_LINEARIZATION_TABLE = new TagInfoShorts(
    083            "LinearizationTable", 0xc618, -1,
    084            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    085
    086    public static final TagInfoShorts EXIF_TAG_BLACK_LEVEL_REPEAT_DIM = new TagInfoShorts(
    087            "BlackLevelRepeatDim", 0xc619, 2,
    088            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    089
    090    public static final TagInfoShortOrLongOrRational EXIF_TAG_BLACK_LEVEL = new TagInfoShortOrLongOrRational(
    091            "BlackLevel", 0xc61a, -1,
    092            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    093
    094    public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_H = new TagInfoSRationals(
    095            "BlackLevelDeltaH", 0xc61b, -1,
    096            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    097
    098    public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_V = new TagInfoSRationals(
    099            "BlackLevelDeltaV", 0xc61c, -1,
    100            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    101
    102    public static final TagInfoShortOrLong EXIF_TAG_WHITE_LEVEL = new TagInfoShortOrLong(
    103            "WhiteLevel", 0xc61d, -1,
    104            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    105
    106    public static final TagInfoRationals EXIF_TAG_DEFAULT_SCALE = new TagInfoRationals(
    107            "DefaultScale", 0xc61e, 2,
    108            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    109
    110    public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_ORIGIN = new TagInfoShortOrLongOrRational(
    111            "DefaultCropOrigin", 0xc61f, 2,
    112            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    113
    114    public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_SIZE = new TagInfoShortOrLongOrRational(
    115            "DefaultCropSize", 0xc620, 2,
    116            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    117
    118    public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_1 = new TagInfoSRationals(
    119            "ColorMatrix1", 0xc621, -1,
    120            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    121
    122    public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_2 = new TagInfoSRationals(
    123            "ColorMatrix2", 0xc622, -1,
    124            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    125
    126    public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_1 = new TagInfoSRationals(
    127            "CameraCalibration1", 0xc623, -1,
    128            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    129
    130    public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_2 = new TagInfoSRationals(
    131            "CameraCalibration2", 0xc624, -1,
    132            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    133
    134    public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_1 = new TagInfoSRationals(
    135            "ReductionMatrix1", 0xc625, -1,
    136            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    137
    138    public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_2 = new TagInfoSRationals(
    139            "ReductionMatrix2", 0xc626, -1,
    140            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    141
    142    public static final TagInfoRationals EXIF_TAG_ANALOG_BALANCE = new TagInfoRationals(
    143            "AnalogBalance", 0xc627, -1,
    144            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    145
    146    public static final TagInfoShortOrRational EXIF_TAG_AS_SHOT_NEUTRAL = new TagInfoShortOrRational(
    147            "AsShotNeutral", 0xc628, -1,
    148            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    149
    150    public static final TagInfoRationals EXIF_TAG_AS_SHOT_WHITE_XY = new TagInfoRationals(
    151            "AsShotWhiteXY", 0xc629, 2,
    152            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    153
    154    public static final TagInfoSRational EXIF_TAG_BASELINE_EXPOSURE = new TagInfoSRational(
    155            "BaselineExposure", 0xc62a,
    156            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    157
    158    public static final TagInfoRational EXIF_TAG_BASELINE_NOISE = new TagInfoRational(
    159            "BaselineNoise", 0xc62b,
    160            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    161
    162    public static final TagInfoRational EXIF_TAG_BASELINE_SHARPNESS = new TagInfoRational(
    163            "BaselineSharpness", 0xc62c,
    164            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    165
    166    public static final TagInfoLong EXIF_TAG_BAYER_GREEN_SPLIT = new TagInfoLong(
    167            "BayerGreenSplit", 0xc62d,
    168            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    169
    170    public static final TagInfoRational EXIF_TAG_LINEAR_RESPONSE_LIMIT = new TagInfoRational(
    171            "LinearResponseLimit", 0xc62e,
    172            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    173
    174    public static final TagInfoAscii EXIF_TAG_CAMERA_SERIAL_NUMBER = new TagInfoAscii(
    175            "CameraSerialNumber", 0xc62f, -1,
    176            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    177
    178    public static final TagInfoRationals EXIF_TAG_DNG_LENS_INFO = new TagInfoRationals(
    179            "DNGLensInfo", 0xc630, 4,
    180            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    181
    182    public static final TagInfoRational EXIF_TAG_CHROMA_BLUR_RADIUS = new TagInfoRational(
    183            "ChromaBlurRadius", 0xc631,
    184            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    185
    186    public static final TagInfoRational EXIF_TAG_ANTI_ALIAS_STRENGTH = new TagInfoRational(
    187            "AntiAliasStrength", 0xc632,
    188            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    189
    190    public static final TagInfoRational EXIF_TAG_SHADOW_SCALE = new TagInfoRational(
    191            "ShadowScale", 0xc633,
    192            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    193
    194    public static final TagInfoBytes EXIF_TAG_DNG_PRIVATE_DATA = new TagInfoBytes(
    195            "DNGPrivateData", 0xc634, -1,
    196            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    197
    198    public static final TagInfoShort EXIF_TAG_MAKER_NOTE_SAFETY = new TagInfoShort(
    199            "MakerNoteSafety", 0xc635,
    200            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    201    public static final int MAKER_NOTE_SAFETY_VALUE_UNSAFE = 0;
    202    public static final int MAKER_NOTE_SAFETY_VALUE_SAFE = 1;
    203
    204    public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_1 = new TagInfoShort(
    205            "CalibrationIlluminant1", 0xc65a,
    206            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    207    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAYLIGHT = 1;
    208    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FLUORESCENT = 2;
    209    public static final int CALIBRATION_ILLUMINANT_1_VALUE_TUNGSTEN = 3;
    210    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FLASH = 4;
    211    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FINE_WEATHER = 9;
    212    public static final int CALIBRATION_ILLUMINANT_1_VALUE_CLOUDY = 10;
    213    public static final int CALIBRATION_ILLUMINANT_1_VALUE_SHADE = 11;
    214    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAYLIGHT_FLUORESCENT = 12;
    215    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAY_WHITE_FLUORESCENT = 13;
    216    public static final int CALIBRATION_ILLUMINANT_1_VALUE_COOL_WHITE_FLUORESCENT = 14;
    217    public static final int CALIBRATION_ILLUMINANT_1_VALUE_WHITE_FLUORESCENT = 15;
    218    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_A = 17;
    219    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_B = 18;
    220    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_C = 19;
    221    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D55 = 20;
    222    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D65 = 21;
    223    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D75 = 22;
    224    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D50 = 23;
    225    public static final int CALIBRATION_ILLUMINANT_1_VALUE_ISO_STUDIO_TUNGSTEN = 24;
    226    public static final int CALIBRATION_ILLUMINANT_1_VALUE_OTHER = 255;
    227
    228    public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_2 = new TagInfoShort(
    229            "CalibrationIlluminant2", 0xc65b,
    230            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    231    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT = 1;
    232    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLUORESCENT = 2;
    233    public static final int CALIBRATION_ILLUMINANT_2_VALUE_TUNGSTEN = 3;
    234    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLASH = 4;
    235    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FINE_WEATHER = 9;
    236    public static final int CALIBRATION_ILLUMINANT_2_VALUE_CLOUDY = 10;
    237    public static final int CALIBRATION_ILLUMINANT_2_VALUE_SHADE = 11;
    238    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT_FLUORESCENT = 12;
    239    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAY_WHITE_FLUORESCENT = 13;
    240    public static final int CALIBRATION_ILLUMINANT_2_VALUE_COOL_WHITE_FLUORESCENT = 14;
    241    public static final int CALIBRATION_ILLUMINANT_2_VALUE_WHITE_FLUORESCENT = 15;
    242    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_A = 17;
    243    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_B = 18;
    244    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_C = 19;
    245    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D55 = 20;
    246    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D65 = 21;
    247    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D75 = 22;
    248    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D50 = 23;
    249    public static final int CALIBRATION_ILLUMINANT_2_VALUE_ISO_STUDIO_TUNGSTEN = 24;
    250    public static final int CALIBRATION_ILLUMINANT_2_VALUE_OTHER = 255;
    251
    252    public static final TagInfoRational EXIF_TAG_BEST_QUALITY_SCALE = new TagInfoRational(
    253            "BestQualityScale", 0xc65c,
    254            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    255
    256    public static final TagInfoBytes EXIF_TAG_RAW_DATA_UNIQUE_ID = new TagInfoBytes(
    257            "RawDataUniqueID", 0xc65d, 16,
    258            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    259
    260    public static final TagInfoAsciiOrByte EXIF_TAG_ORIGINAL_RAW_FILE_NAME = new TagInfoAsciiOrByte(
    261            "OriginalRawFileName", 0xc68b, -1,
    262            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    263
    264    public static final TagInfoUndefineds EXIF_TAG_ORIGINAL_RAW_FILE_DATA = new TagInfoUndefineds(
    265            "OriginalRawFileData", 0xc68c, -1,
    266            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    267
    268    public static final TagInfoShortOrLong EXIF_TAG_ACTIVE_AREA = new TagInfoShortOrLong(
    269            "ActiveArea", 0xc68d, 4,
    270            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    271
    272    public static final TagInfoShortOrLong EXIF_TAG_MASKED_AREAS = new TagInfoShortOrLong(
    273            "MaskedAreas", 0xc68e, 4,
    274            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    275
    276    public static final TagInfoUndefineds EXIF_TAG_AS_SHOT_ICCPROFILE = new TagInfoUndefineds(
    277            "AsShotICCProfile", 0xc68f, -1,
    278            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    279
    280    public static final TagInfoSRationals EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX = new TagInfoSRationals(
    281            "AsShotPreProfileMatrix", 0xc690, -1,
    282            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    283
    284    public static final TagInfoUndefineds EXIF_TAG_CURRENT_ICCPROFILE = new TagInfoUndefineds(
    285            "CurrentICCProfile", 0xc691, -1,
    286            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    287
    288    public static final TagInfoSRationals EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX = new TagInfoSRationals(
    289            "CurrentPreProfileMatrix", 0xc692, -1,
    290            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    291
    292    public static final TagInfoShort EXIF_TAG_COLORIMETRIC_REFERENCE = new TagInfoShort(
    293            "ColorimetricReference", 0xc6bf,
    294            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    295    public static final short COLORIMETRIC_REFERENCE_VALUE_SCENE_REFERRED = 0;
    296    public static final short COLORIMETRIC_REFERENCE_VALUE_OUTPUT_REFERRED = 1;
    297
    298    public static final TagInfoAsciiOrByte EXIF_TAG_CAMERA_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte(
    299            "CameraCalibrationSignature", 0xc6f3, -1,
    300            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    301
    302    public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte(
    303            "ProfileCalibrationSignature", 0xc6f4, -1,
    304            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    305
    306    public static final TagInfoLongs EXIF_TAG_EXTRA_CAMERA_PROFILES = new TagInfoLongs(
    307            "ExtraCameraProfiles", 0xc6f5, -1,
    308            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    309
    310    public static final TagInfoAsciiOrByte EXIF_TAG_AS_SHOT_PROFILE_NAME = new TagInfoAsciiOrByte(
    311            "AsShotProfileName", 0xc6f6, -1,
    312            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    313
    314    public static final TagInfoRational EXIF_TAG_NOISE_REDUCTION_APPLIED = new TagInfoRational(
    315            "NoiseReductionApplied", 0xc6f7,
    316            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    317
    318    public static final TagInfoAscii EXIF_TAG_PROFILE_NAME = new TagInfoAscii(
    319            "ProfileName", 0xc6f8, -1,
    320            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    321
    322    public static final TagInfoLongs EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS = new TagInfoLongs(
    323            "ProfileHueSatMapDims", 0xc6f9, 3,
    324            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    325
    326    public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1 = new TagInfoFloats(
    327            "ProfileHueSatMapData1", 0xc6fa, -1,
    328            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    329
    330    public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2 = new TagInfoFloats(
    331            "ProfileHueSatMapData2", 0xc6fb, -1,
    332            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    333
    334    public static final TagInfoFloats EXIF_TAG_PROFILE_TONE_CURVE = new TagInfoFloats(
    335            "ProfileToneCurve", 0xc6fc, -1,
    336            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    337
    338    public static final TagInfoLong EXIF_TAG_PROFILE_EMBED_POLICY = new TagInfoLong(
    339            "ProfileEmbedPolicy", 0xc6fd,
    340            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    341    public static final int PROFILE_EMBED_POLICY_VALUE_ALLOW_COPYING = 0;
    342    public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_IF_USED = 1;
    343    public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_NEVER = 2;
    344    public static final int PROFILE_EMBED_POLICY_VALUE_NO_RESTRICTIONS = 3;
    345
    346    public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_COPYRIGHT = new TagInfoAsciiOrByte(
    347            "ProfileCopyright", 0xc6fe, -1,
    348            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    349
    350    public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX1 = new TagInfoSRationals(
    351            "ForwardMatrix1", 0xc714, -1,
    352            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    353
    354    public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX2 = new TagInfoSRationals(
    355            "ForwardMatrix2", 0xc715, -1,
    356            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    357
    358    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_NAME = new TagInfoAsciiOrByte(
    359            "PreviewApplicationName", 0xc716, -1,
    360            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    361
    362    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_VERSION = new TagInfoAsciiOrByte(
    363            "PreviewApplicationVersion", 0xc717, -1,
    364            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    365
    366    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_SETTINGS_NAME = new TagInfoAsciiOrByte(
    367            "PreviewSettingsName", 0xc718, -1,
    368            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    369
    370    public static final TagInfoBytes EXIF_TAG_PREVIEW_SETTINGS_DIGEST = new TagInfoBytes(
    371            "PreviewSettingsDigest", 0xc719, 16,
    372            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    373
    374    public static final TagInfoLong EXIF_TAG_PREVIEW_COLORSPACE = new TagInfoLong(
    375            "PreviewColorspace", 0xc71a,
    376            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    377    public static final int PREVIEW_COLORSPACE_VALUE_UNKNOWN = 0;
    378    public static final int PREVIEW_COLORSPACE_VALUE_GRAY_GAMMA_2_2 = 1;
    379    public static final int PREVIEW_COLORSPACE_VALUE_sRGB = 2;
    380    public static final int PREVIEW_COLORSPACE_VALUE_ADOBE_RGB = 3;
    381    public static final int PREVIEW_COLORSPACE_VALUE_PROPHOTO_RGB = 4;
    382
    383    public static final TagInfoAscii EXIF_TAG_PREVIEW_DATE_TIME = new TagInfoAscii(
    384            "PreviewDateTime", 0xc71b, -1,
    385            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    386
    387    public static final TagInfoBytes EXIF_TAG_RAW_IMAGE_DIGEST = new TagInfoBytes(
    388            "RawImageDigest", 0xc71c, 16,
    389            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    390
    391    public static final TagInfoBytes EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST = new TagInfoBytes(
    392            "OriginalRawFileDigest", 0xc71d, 16,
    393            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    394
    395    public static final TagInfoShortOrLong EXIF_TAG_SUB_TILE_BLOCK_SIZE = new TagInfoShortOrLong(
    396            "SubTileBlockSize", 0xc71e, 2,
    397            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    398
    399    public static final TagInfoShortOrLong EXIF_TAG_ROW_INTERLEAVE_FACTOR = new TagInfoShortOrLong(
    400            "RowInterleaveFactor", 0xc71f, 1,
    401            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    402
    403    public static final TagInfoLongs EXIF_TAG_PROFILE_LOOK_TABLE_DIMS = new TagInfoLongs(
    404            "ProfileLookTableDims", 0xc725, 3,
    405            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    406
    407    public static final TagInfoFloats EXIF_TAG_PROFILE_LOOK_TABLE_DATA = new TagInfoFloats(
    408            "ProfileLookTableData", 0xc726, -1,
    409            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    410
    411    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_1 = new TagInfoUndefineds(
    412            "OpcodeList1", 0xc740, -1,
    413            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    414
    415    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_2 = new TagInfoUndefineds(
    416            "OpcodeList2", 0xc741, -1,
    417            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    418
    419    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_3 = new TagInfoUndefineds(
    420            "OpcodeList3", 0xc74E, -1,
    421            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    422
    423    public static final TagInfoDoubles EXIF_TAG_NOISE_PROFILE = new TagInfoDoubles(
    424            "NoiseProfile", 0xc761, -1,
    425            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    426
    427    public static final List<TagInfo> ALL_DNG_TAGS =
    428            Collections.unmodifiableList(Arrays.asList(
    429                    EXIF_TAG_DNG_VERSION,
    430                    EXIF_TAG_DNG_BACKWARD_VERSION,
    431                    EXIF_TAG_UNIQUE_CAMERA_MODEL,
    432                    EXIF_TAG_LOCALIZED_CAMERA_MODEL,
    433                    EXIF_TAG_CFAPLANE_COLOR,
    434                    EXIF_TAG_CFALAYOUT,
    435                    EXIF_TAG_LINEARIZATION_TABLE,
    436                    EXIF_TAG_BLACK_LEVEL_REPEAT_DIM,
    437                    EXIF_TAG_BLACK_LEVEL,
    438                    EXIF_TAG_BLACK_LEVEL_DELTA_H,
    439                    EXIF_TAG_BLACK_LEVEL_DELTA_V,
    440                    EXIF_TAG_WHITE_LEVEL,
    441                    EXIF_TAG_DEFAULT_SCALE,
    442                    EXIF_TAG_DEFAULT_CROP_ORIGIN,
    443                    EXIF_TAG_DEFAULT_CROP_SIZE,
    444                    EXIF_TAG_COLOR_MATRIX_1,
    445                    EXIF_TAG_COLOR_MATRIX_2,
    446                    EXIF_TAG_CAMERA_CALIBRATION_1,
    447                    EXIF_TAG_CAMERA_CALIBRATION_2,
    448                    EXIF_TAG_REDUCTION_MATRIX_1,
    449                    EXIF_TAG_REDUCTION_MATRIX_2,
    450                    EXIF_TAG_ANALOG_BALANCE,
    451                    EXIF_TAG_AS_SHOT_NEUTRAL,
    452                    EXIF_TAG_AS_SHOT_WHITE_XY,
    453                    EXIF_TAG_BASELINE_EXPOSURE,
    454                    EXIF_TAG_BASELINE_NOISE,
    455                    EXIF_TAG_BASELINE_SHARPNESS,
    456                    EXIF_TAG_BAYER_GREEN_SPLIT,
    457                    EXIF_TAG_LINEAR_RESPONSE_LIMIT,
    458                    EXIF_TAG_CAMERA_SERIAL_NUMBER,
    459                    EXIF_TAG_DNG_LENS_INFO,
    460                    EXIF_TAG_CHROMA_BLUR_RADIUS,
    461                    EXIF_TAG_ANTI_ALIAS_STRENGTH,
    462                    EXIF_TAG_SHADOW_SCALE,
    463                    EXIF_TAG_DNG_PRIVATE_DATA,
    464                    EXIF_TAG_MAKER_NOTE_SAFETY,
    465                    EXIF_TAG_CALIBRATION_ILLUMINANT_1,
    466                    EXIF_TAG_CALIBRATION_ILLUMINANT_2,
    467                    EXIF_TAG_BEST_QUALITY_SCALE,
    468                    EXIF_TAG_RAW_DATA_UNIQUE_ID,
    469                    EXIF_TAG_ORIGINAL_RAW_FILE_NAME,
    470                    EXIF_TAG_ORIGINAL_RAW_FILE_DATA,
    471                    EXIF_TAG_ACTIVE_AREA,
    472                    EXIF_TAG_MASKED_AREAS,
    473                    EXIF_TAG_AS_SHOT_ICCPROFILE,
    474                    EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX,
    475                    EXIF_TAG_CURRENT_ICCPROFILE,
    476                    EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX,
    477                    EXIF_TAG_COLORIMETRIC_REFERENCE,
    478                    EXIF_TAG_CAMERA_CALIBRATION_SIGNATURE,
    479                    EXIF_TAG_PROFILE_CALIBRATION_SIGNATURE,
    480                    EXIF_TAG_EXTRA_CAMERA_PROFILES,
    481                    EXIF_TAG_AS_SHOT_PROFILE_NAME,
    482                    EXIF_TAG_NOISE_REDUCTION_APPLIED,
    483                    EXIF_TAG_PROFILE_NAME,
    484                    EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS,
    485                    EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1,
    486                    EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2,
    487                    EXIF_TAG_PROFILE_TONE_CURVE,
    488                    EXIF_TAG_PROFILE_EMBED_POLICY,
    489                    EXIF_TAG_PROFILE_COPYRIGHT,
    490                    EXIF_TAG_FORWARD_MATRIX1,
    491                    EXIF_TAG_FORWARD_MATRIX2,
    492                    EXIF_TAG_PREVIEW_APPLICATION_NAME,
    493                    EXIF_TAG_PREVIEW_APPLICATION_VERSION,
    494                    EXIF_TAG_PREVIEW_SETTINGS_NAME,
    495                    EXIF_TAG_PREVIEW_SETTINGS_DIGEST,
    496                    EXIF_TAG_PREVIEW_COLORSPACE,
    497                    EXIF_TAG_PREVIEW_DATE_TIME,
    498                    EXIF_TAG_RAW_IMAGE_DIGEST,
    499                    EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST,
    500                    EXIF_TAG_SUB_TILE_BLOCK_SIZE,
    501                    EXIF_TAG_ROW_INTERLEAVE_FACTOR,
    502                    EXIF_TAG_PROFILE_LOOK_TABLE_DIMS,
    503                    EXIF_TAG_PROFILE_LOOK_TABLE_DATA,
    504                    EXIF_TAG_OPCODE_LIST_1,
    505                    EXIF_TAG_OPCODE_LIST_2,
    506                    EXIF_TAG_OPCODE_LIST_3,
    507                    EXIF_TAG_NOISE_PROFILE));
    508
    509    private DngTagConstants() {
    510    }
    511}