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}