    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 * <p>
    045 * http://www.adobe.com/products/dng/pdfs/dng_spec_1_3_0_0.pdf -&gt; https://helpx.adobe.com/camera-raw/digital-negative.html
    046 * </p>
    047 */
    048public final class DngTagConstants {
    049
    050    public static final TagInfoBytes EXIF_TAG_DNG_VERSION = new TagInfoBytes("DNGVersion", 0xc612, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    051
    052    public static final TagInfoBytes EXIF_TAG_DNG_BACKWARD_VERSION = new TagInfoBytes("DNGBackwardVersion", 0xc613, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    053
    054    public static final TagInfoAscii EXIF_TAG_UNIQUE_CAMERA_MODEL = new TagInfoAscii("UniqueCameraModel", 0xc614, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    055
    056    public static final TagInfoAsciiOrByte EXIF_TAG_LOCALIZED_CAMERA_MODEL = new TagInfoAsciiOrByte("LocalizedCameraModel", 0xc615, -1,
    057            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    058
    059    public static final TagInfoBytes EXIF_TAG_CFAPLANE_COLOR = new TagInfoBytes("CFAPlaneColor", 0xc616, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    060
    061    public static final TagInfoShort EXIF_TAG_CFALAYOUT = new TagInfoShort("CFALayout", 0xc617, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    062
    063    public static final int CFALAYOUT_VALUE_RECTANGULAR = 1;
    064    public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_DOWN_1_2_ROW = 2;
    065    public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_UP_1_2_ROW = 3;
    066    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_RIGHT_1_2_COLUMN = 4;
    067    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_LEFT_1_2_COLUMN = 5;
    068    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 6;
    069    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 7;
    070    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 8;
    071    public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 9;
    072
    073    public static final TagInfoShorts EXIF_TAG_LINEARIZATION_TABLE = new TagInfoShorts("LinearizationTable", 0xc618, -1,
    074            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    075
    076    public static final TagInfoShorts EXIF_TAG_BLACK_LEVEL_REPEAT_DIM = new TagInfoShorts("BlackLevelRepeatDim", 0xc619, 2,
    077            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    078
    079    public static final TagInfoShortOrLongOrRational EXIF_TAG_BLACK_LEVEL = new TagInfoShortOrLongOrRational("BlackLevel", 0xc61a, -1,
    080            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    081
    082    public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_H = new TagInfoSRationals("BlackLevelDeltaH", 0xc61b, -1,
    083            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    084
    085    public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_V = new TagInfoSRationals("BlackLevelDeltaV", 0xc61c, -1,
    086            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    087
    088    public static final TagInfoShortOrLong EXIF_TAG_WHITE_LEVEL = new TagInfoShortOrLong("WhiteLevel", 0xc61d, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    089
    090    public static final TagInfoRationals EXIF_TAG_DEFAULT_SCALE = new TagInfoRationals("DefaultScale", 0xc61e, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    091
    092    public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_ORIGIN = new TagInfoShortOrLongOrRational("DefaultCropOrigin", 0xc61f, 2,
    093            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    094
    095    public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_SIZE = new TagInfoShortOrLongOrRational("DefaultCropSize", 0xc620, 2,
    096            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    097
    098    public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_1 = new TagInfoSRationals("ColorMatrix1", 0xc621, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    099
    100    public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_2 = new TagInfoSRationals("ColorMatrix2", 0xc622, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    101
    102    public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_1 = new TagInfoSRationals("CameraCalibration1", 0xc623, -1,
    103            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    104
    105    public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_2 = new TagInfoSRationals("CameraCalibration2", 0xc624, -1,
    106            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    107
    108    public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_1 = new TagInfoSRationals("ReductionMatrix1", 0xc625, -1,
    109            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    110
    111    public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_2 = new TagInfoSRationals("ReductionMatrix2", 0xc626, -1,
    112            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    113
    114    public static final TagInfoRationals EXIF_TAG_ANALOG_BALANCE = new TagInfoRationals("AnalogBalance", 0xc627, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    115
    116    public static final TagInfoShortOrRational EXIF_TAG_AS_SHOT_NEUTRAL = new TagInfoShortOrRational("AsShotNeutral", 0xc628, -1,
    117            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    118
    119    public static final TagInfoRationals EXIF_TAG_AS_SHOT_WHITE_XY = new TagInfoRationals("AsShotWhiteXY", 0xc629, 2, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    120
    121    public static final TagInfoSRational EXIF_TAG_BASELINE_EXPOSURE = new TagInfoSRational("BaselineExposure", 0xc62a, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    122
    123    public static final TagInfoRational EXIF_TAG_BASELINE_NOISE = new TagInfoRational("BaselineNoise", 0xc62b, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    124
    125    public static final TagInfoRational EXIF_TAG_BASELINE_SHARPNESS = new TagInfoRational("BaselineSharpness", 0xc62c, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    126
    127    public static final TagInfoLong EXIF_TAG_BAYER_GREEN_SPLIT = new TagInfoLong("BayerGreenSplit", 0xc62d, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    128
    129    public static final TagInfoRational EXIF_TAG_LINEAR_RESPONSE_LIMIT = new TagInfoRational("LinearResponseLimit", 0xc62e,
    130            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    131
    132    public static final TagInfoAscii EXIF_TAG_CAMERA_SERIAL_NUMBER = new TagInfoAscii("CameraSerialNumber", 0xc62f, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    133
    134    public static final TagInfoRationals EXIF_TAG_DNG_LENS_INFO = new TagInfoRationals("DNGLensInfo", 0xc630, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    135
    136    public static final TagInfoRational EXIF_TAG_CHROMA_BLUR_RADIUS = new TagInfoRational("ChromaBlurRadius", 0xc631, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    137
    138    public static final TagInfoRational EXIF_TAG_ANTI_ALIAS_STRENGTH = new TagInfoRational("AntiAliasStrength", 0xc632,
    139            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    140
    141    public static final TagInfoRational EXIF_TAG_SHADOW_SCALE = new TagInfoRational("ShadowScale", 0xc633, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    142
    143    public static final TagInfoBytes EXIF_TAG_DNG_PRIVATE_DATA = new TagInfoBytes("DNGPrivateData", 0xc634, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    144
    145    public static final TagInfoShort EXIF_TAG_MAKER_NOTE_SAFETY = new TagInfoShort("MakerNoteSafety", 0xc635, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    146    public static final int MAKER_NOTE_SAFETY_VALUE_UNSAFE = 0;
    147    public static final int MAKER_NOTE_SAFETY_VALUE_SAFE = 1;
    148
    149    public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_1 = new TagInfoShort("CalibrationIlluminant1", 0xc65a,
    150            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    151    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAYLIGHT = 1;
    152    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FLUORESCENT = 2;
    153    public static final int CALIBRATION_ILLUMINANT_1_VALUE_TUNGSTEN = 3;
    154    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FLASH = 4;
    155    public static final int CALIBRATION_ILLUMINANT_1_VALUE_FINE_WEATHER = 9;
    156    public static final int CALIBRATION_ILLUMINANT_1_VALUE_CLOUDY = 10;
    157    public static final int CALIBRATION_ILLUMINANT_1_VALUE_SHADE = 11;
    158    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAYLIGHT_FLUORESCENT = 12;
    159    public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAY_WHITE_FLUORESCENT = 13;
    160    public static final int CALIBRATION_ILLUMINANT_1_VALUE_COOL_WHITE_FLUORESCENT = 14;
    161    public static final int CALIBRATION_ILLUMINANT_1_VALUE_WHITE_FLUORESCENT = 15;
    162    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_A = 17;
    163    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_B = 18;
    164    public static final int CALIBRATION_ILLUMINANT_1_VALUE_STANDARD_LIGHT_C = 19;
    165    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D55 = 20;
    166    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D65 = 21;
    167    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D75 = 22;
    168    public static final int CALIBRATION_ILLUMINANT_1_VALUE_D50 = 23;
    169    public static final int CALIBRATION_ILLUMINANT_1_VALUE_ISO_STUDIO_TUNGSTEN = 24;
    170    public static final int CALIBRATION_ILLUMINANT_1_VALUE_OTHER = 255;
    171
    172    public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_2 = new TagInfoShort("CalibrationIlluminant2", 0xc65b,
    173            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    174    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT = 1;
    175    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLUORESCENT = 2;
    176    public static final int CALIBRATION_ILLUMINANT_2_VALUE_TUNGSTEN = 3;
    177    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLASH = 4;
    178    public static final int CALIBRATION_ILLUMINANT_2_VALUE_FINE_WEATHER = 9;
    179    public static final int CALIBRATION_ILLUMINANT_2_VALUE_CLOUDY = 10;
    180    public static final int CALIBRATION_ILLUMINANT_2_VALUE_SHADE = 11;
    181    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT_FLUORESCENT = 12;
    182    public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAY_WHITE_FLUORESCENT = 13;
    183    public static final int CALIBRATION_ILLUMINANT_2_VALUE_COOL_WHITE_FLUORESCENT = 14;
    184    public static final int CALIBRATION_ILLUMINANT_2_VALUE_WHITE_FLUORESCENT = 15;
    185    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_A = 17;
    186    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_B = 18;
    187    public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_C = 19;
    188    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D55 = 20;
    189    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D65 = 21;
    190    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D75 = 22;
    191    public static final int CALIBRATION_ILLUMINANT_2_VALUE_D50 = 23;
    192    public static final int CALIBRATION_ILLUMINANT_2_VALUE_ISO_STUDIO_TUNGSTEN = 24;
    193    public static final int CALIBRATION_ILLUMINANT_2_VALUE_OTHER = 255;
    194
    195    public static final TagInfoRational EXIF_TAG_BEST_QUALITY_SCALE = new TagInfoRational("BestQualityScale", 0xc65c, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    196
    197    public static final TagInfoBytes EXIF_TAG_RAW_DATA_UNIQUE_ID = new TagInfoBytes("RawDataUniqueID", 0xc65d, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    198
    199    public static final TagInfoAsciiOrByte EXIF_TAG_ORIGINAL_RAW_FILE_NAME = new TagInfoAsciiOrByte("OriginalRawFileName", 0xc68b, -1,
    200            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    201
    202    public static final TagInfoUndefineds EXIF_TAG_ORIGINAL_RAW_FILE_DATA = new TagInfoUndefineds("OriginalRawFileData", 0xc68c, -1,
    203            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    204
    205    public static final TagInfoShortOrLong EXIF_TAG_ACTIVE_AREA = new TagInfoShortOrLong("ActiveArea", 0xc68d, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    206
    207    public static final TagInfoShortOrLong EXIF_TAG_MASKED_AREAS = new TagInfoShortOrLong("MaskedAreas", 0xc68e, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    208
    209    public static final TagInfoUndefineds EXIF_TAG_AS_SHOT_ICCPROFILE = new TagInfoUndefineds("AsShotICCProfile", 0xc68f, -1,
    210            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    211
    212    public static final TagInfoSRationals EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX = new TagInfoSRationals("AsShotPreProfileMatrix", 0xc690, -1,
    213            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    214
    215    public static final TagInfoUndefineds EXIF_TAG_CURRENT_ICCPROFILE = new TagInfoUndefineds("CurrentICCProfile", 0xc691, -1,
    216            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    217
    218    public static final TagInfoSRationals EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX = new TagInfoSRationals("CurrentPreProfileMatrix", 0xc692, -1,
    219            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    220
    221    public static final TagInfoShort EXIF_TAG_COLORIMETRIC_REFERENCE = new TagInfoShort("ColorimetricReference", 0xc6bf, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    222    public static final short COLORIMETRIC_REFERENCE_VALUE_SCENE_REFERRED = 0;
    223    public static final short COLORIMETRIC_REFERENCE_VALUE_OUTPUT_REFERRED = 1;
    224
    225    public static final TagInfoAsciiOrByte EXIF_TAG_CAMERA_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte("CameraCalibrationSignature", 0xc6f3, -1,
    226            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    227
    228    public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte("ProfileCalibrationSignature", 0xc6f4, -1,
    229            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    230
    231    public static final TagInfoLongs EXIF_TAG_EXTRA_CAMERA_PROFILES = new TagInfoLongs("ExtraCameraProfiles", 0xc6f5, -1,
    232            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    233
    234    public static final TagInfoAsciiOrByte EXIF_TAG_AS_SHOT_PROFILE_NAME = new TagInfoAsciiOrByte("AsShotProfileName", 0xc6f6, -1,
    235            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    236
    237    public static final TagInfoRational EXIF_TAG_NOISE_REDUCTION_APPLIED = new TagInfoRational("NoiseReductionApplied", 0xc6f7,
    238            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    239
    240    public static final TagInfoAscii EXIF_TAG_PROFILE_NAME = new TagInfoAscii("ProfileName", 0xc6f8, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    241
    242    public static final TagInfoLongs EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS = new TagInfoLongs("ProfileHueSatMapDims", 0xc6f9, 3,
    243            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    244
    245    public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1 = new TagInfoFloats("ProfileHueSatMapData1", 0xc6fa, -1,
    246            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    247
    248    public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2 = new TagInfoFloats("ProfileHueSatMapData2", 0xc6fb, -1,
    249            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    250
    251    public static final TagInfoFloats EXIF_TAG_PROFILE_TONE_CURVE = new TagInfoFloats("ProfileToneCurve", 0xc6fc, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    252
    253    public static final TagInfoLong EXIF_TAG_PROFILE_EMBED_POLICY = new TagInfoLong("ProfileEmbedPolicy", 0xc6fd, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    254    public static final int PROFILE_EMBED_POLICY_VALUE_ALLOW_COPYING = 0;
    255    public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_IF_USED = 1;
    256    public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_NEVER = 2;
    257    public static final int PROFILE_EMBED_POLICY_VALUE_NO_RESTRICTIONS = 3;
    258
    259    public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_COPYRIGHT = new TagInfoAsciiOrByte("ProfileCopyright", 0xc6fe, -1,
    260            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    261
    262    public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX1 = new TagInfoSRationals("ForwardMatrix1", 0xc714, -1,
    263            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    264
    265    public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX2 = new TagInfoSRationals("ForwardMatrix2", 0xc715, -1,
    266            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    267
    268    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_NAME = new TagInfoAsciiOrByte("PreviewApplicationName", 0xc716, -1,
    269            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    270
    271    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_VERSION = new TagInfoAsciiOrByte("PreviewApplicationVersion", 0xc717, -1,
    272            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    273
    274    public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_SETTINGS_NAME = new TagInfoAsciiOrByte("PreviewSettingsName", 0xc718, -1,
    275            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    276
    277    public static final TagInfoBytes EXIF_TAG_PREVIEW_SETTINGS_DIGEST = new TagInfoBytes("PreviewSettingsDigest", 0xc719, 16,
    278            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    279
    280    public static final TagInfoLong EXIF_TAG_PREVIEW_COLORSPACE = new TagInfoLong("PreviewColorspace", 0xc71a, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    281    public static final int PREVIEW_COLORSPACE_VALUE_UNKNOWN = 0;
    282    public static final int PREVIEW_COLORSPACE_VALUE_GRAY_GAMMA_2_2 = 1;
    283    public static final int PREVIEW_COLORSPACE_VALUE_sRGB = 2;
    284    public static final int PREVIEW_COLORSPACE_VALUE_ADOBE_RGB = 3;
    285    public static final int PREVIEW_COLORSPACE_VALUE_PROPHOTO_RGB = 4;
    286
    287    public static final TagInfoAscii EXIF_TAG_PREVIEW_DATE_TIME = new TagInfoAscii("PreviewDateTime", 0xc71b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    288
    289    public static final TagInfoBytes EXIF_TAG_RAW_IMAGE_DIGEST = new TagInfoBytes("RawImageDigest", 0xc71c, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    290
    291    public static final TagInfoBytes EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST = new TagInfoBytes("OriginalRawFileDigest", 0xc71d, 16,
    292            TiffDirectoryType.EXIF_DIRECTORY_IFD0);
    293
    294    public static final TagInfoShortOrLong EXIF_TAG_SUB_TILE_BLOCK_SIZE = new TagInfoShortOrLong("SubTileBlockSize", 0xc71e, 2,
    295            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    296
    297    public static final TagInfoShortOrLong EXIF_TAG_ROW_INTERLEAVE_FACTOR = new TagInfoShortOrLong("RowInterleaveFactor", 0xc71f, 1,
    298            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    299
    300    public static final TagInfoLongs EXIF_TAG_PROFILE_LOOK_TABLE_DIMS = new TagInfoLongs("ProfileLookTableDims", 0xc725, 3,
    301            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    302
    303    public static final TagInfoFloats EXIF_TAG_PROFILE_LOOK_TABLE_DATA = new TagInfoFloats("ProfileLookTableData", 0xc726, -1,
    304            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    305
    306    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_1 = new TagInfoUndefineds("OpcodeList1", 0xc740, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    307
    308    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_2 = new TagInfoUndefineds("OpcodeList2", 0xc741, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    309
    310    public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_3 = new TagInfoUndefineds("OpcodeList3", 0xc74E, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    311
    312    public static final TagInfoDoubles EXIF_TAG_NOISE_PROFILE = new TagInfoDoubles("NoiseProfile", 0xc761, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
    313
    314    public static final List<TagInfo> ALL_DNG_TAGS = Collections.unmodifiableList(Arrays.asList(EXIF_TAG_DNG_VERSION, EXIF_TAG_DNG_BACKWARD_VERSION,
    315            EXIF_TAG_UNIQUE_CAMERA_MODEL, EXIF_TAG_LOCALIZED_CAMERA_MODEL, EXIF_TAG_CFAPLANE_COLOR, EXIF_TAG_CFALAYOUT, EXIF_TAG_LINEARIZATION_TABLE,
    316            EXIF_TAG_BLACK_LEVEL_REPEAT_DIM, EXIF_TAG_BLACK_LEVEL, EXIF_TAG_BLACK_LEVEL_DELTA_H, EXIF_TAG_BLACK_LEVEL_DELTA_V, EXIF_TAG_WHITE_LEVEL,
    317            EXIF_TAG_DEFAULT_SCALE, EXIF_TAG_DEFAULT_CROP_ORIGIN, EXIF_TAG_DEFAULT_CROP_SIZE, EXIF_TAG_COLOR_MATRIX_1, EXIF_TAG_COLOR_MATRIX_2,
    318            EXIF_TAG_CAMERA_CALIBRATION_1, EXIF_TAG_CAMERA_CALIBRATION_2, EXIF_TAG_REDUCTION_MATRIX_1, EXIF_TAG_REDUCTION_MATRIX_2, EXIF_TAG_ANALOG_BALANCE,
    319            EXIF_TAG_AS_SHOT_NEUTRAL, EXIF_TAG_AS_SHOT_WHITE_XY, EXIF_TAG_BASELINE_EXPOSURE, EXIF_TAG_BASELINE_NOISE, EXIF_TAG_BASELINE_SHARPNESS,
    320            EXIF_TAG_BAYER_GREEN_SPLIT, EXIF_TAG_LINEAR_RESPONSE_LIMIT, EXIF_TAG_CAMERA_SERIAL_NUMBER, EXIF_TAG_DNG_LENS_INFO, EXIF_TAG_CHROMA_BLUR_RADIUS,
    321            EXIF_TAG_ANTI_ALIAS_STRENGTH, EXIF_TAG_SHADOW_SCALE, EXIF_TAG_DNG_PRIVATE_DATA, EXIF_TAG_MAKER_NOTE_SAFETY, EXIF_TAG_CALIBRATION_ILLUMINANT_1,
    322            EXIF_TAG_CALIBRATION_ILLUMINANT_2, EXIF_TAG_BEST_QUALITY_SCALE, EXIF_TAG_RAW_DATA_UNIQUE_ID, EXIF_TAG_ORIGINAL_RAW_FILE_NAME,
    323            EXIF_TAG_ORIGINAL_RAW_FILE_DATA, EXIF_TAG_ACTIVE_AREA, EXIF_TAG_MASKED_AREAS, EXIF_TAG_AS_SHOT_ICCPROFILE, EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX,
    324            EXIF_TAG_CURRENT_ICCPROFILE, EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX, EXIF_TAG_COLORIMETRIC_REFERENCE, EXIF_TAG_CAMERA_CALIBRATION_SIGNATURE,
    325            EXIF_TAG_PROFILE_CALIBRATION_SIGNATURE, EXIF_TAG_EXTRA_CAMERA_PROFILES, EXIF_TAG_AS_SHOT_PROFILE_NAME, EXIF_TAG_NOISE_REDUCTION_APPLIED,
    326            EXIF_TAG_PROFILE_NAME, EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS, EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1, EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2,
    327            EXIF_TAG_PROFILE_TONE_CURVE, EXIF_TAG_PROFILE_EMBED_POLICY, EXIF_TAG_PROFILE_COPYRIGHT, EXIF_TAG_FORWARD_MATRIX1, EXIF_TAG_FORWARD_MATRIX2,
    328            EXIF_TAG_PREVIEW_APPLICATION_NAME, EXIF_TAG_PREVIEW_APPLICATION_VERSION, EXIF_TAG_PREVIEW_SETTINGS_NAME, EXIF_TAG_PREVIEW_SETTINGS_DIGEST,
    329            EXIF_TAG_PREVIEW_COLORSPACE, EXIF_TAG_PREVIEW_DATE_TIME, EXIF_TAG_RAW_IMAGE_DIGEST, EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST, EXIF_TAG_SUB_TILE_BLOCK_SIZE,
    330            EXIF_TAG_ROW_INTERLEAVE_FACTOR, EXIF_TAG_PROFILE_LOOK_TABLE_DIMS, EXIF_TAG_PROFILE_LOOK_TABLE_DATA, EXIF_TAG_OPCODE_LIST_1, EXIF_TAG_OPCODE_LIST_2,
    331            EXIF_TAG_OPCODE_LIST_3, EXIF_TAG_NOISE_PROFILE));
    332
    333    private DngTagConstants() {
    334    }
    335}