View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.imaging.icc;
18  
19  public enum IccTagTypes implements IccTagType {
20      A_TO_B0_TAG("AToB0Tag", "lut8Type or lut16Type or lutAtoBType", 0x41324230
21      // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing mechanisms are described in lut8Type or
22      // lut16Type or lutAtoBType.");
23      ),
24  
25      // public static final IccTagType AToB0Tag = new IccTagType(
26      // "AToB0Tag",
27      // "lut8Type or lut16Type or lutAtoBType",
28      // "�A2B0� (41324230h)",
29      // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing",
30      // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.",
31      // );
32  
33      A_TO_B1_TAG("AToB1Tag", "lut8Type or lut16Type or lutAtoBType", 0x41324231
34      // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing",
35      // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.",
36      ),
37  
38      A_TO_B2_TAG("AToB2Tag", "lut8Type or lut16Type or lutAtoBType", 0x41324232
39      // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing",
40      // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.",
41      ),
42  
43      BLUE_MATRIX_COLUMN_TAG("blueMatrixColumnTag", "XYZType", 0x6258595A
44      // "The third column in the matrix used in TRC/matrix transforms.",
45      ),
46  
47      BLUE_TRC_TAG("blueTRCTag", "curveType or parametricCurveType", 0x62545243
48      // "Blue channel tone reproduction curve. The first element represents no colorant (white) or phosphors",
49      // "(black) and the last element represents 100 percent colorant (blue) or 100 percent phosphor (blue).",
50      ),
51  
52      B_TO_A0_TAG("BToA0Tag", "lut8Type or lut16Type or lutBtoAType", 0x42324130
53      // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The",
54      // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.",
55      ),
56  
57      B_TO_A1_TAG("BToA1Tag", "lut8Type or lut16Type or lutBtoAType", 0x42324131
58      // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The",
59      // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.",
60      ),
61  
62      B_TO_A2_TAG("BToA2Tag", "lut8Type or lut16Type or lutBtoAType", 0x42324132
63      // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The",
64      // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.",
65      ),
66  
67      CALIBRATION_DATE_TIME_TAG("calibrationDateTimeTag", "dateTimeType", 0x63616C74
68      // "Profile calibration date and time. Initially, this tag matches the contents of the profile header�s creation",
69      // "date/time field. This allows applications and utilities to verify if this profile matches a vendor�s profile and",
70      // "how recently calibration has been performed.",
71      ),
72  
73      CHAR_TARGET_TAG("charTargetTag", "textType", 0x74617267
74      // "This tag contains the name of the registered characterization data set, or it contains the measurement data",
75      // "for a characterization target. This tag is provided so that distributed utilities can identify the underlying",
76      // "characterization data, create transforms \"on the fly\" or check the current performance against the original",
77      // "device performance.",
78      // "The first seven characters of the text shall identify the nature of the characterization data.",
79      // "If the first seven characters are \"ICCHDAT\", then the remainder of the text shall be a single space followed",
80      // "by the Reference Name of a characterization data set in the ICC Characterization Data Registry and terminated",
81      // "with a NULL byte (00h). The Reference Name in the text must match exactly (including case) the",
82      // "Reference Name in the registry.",
83      // "If the first seven characters match one of the identifiers defined in an ANSI or ISO standard, then the tag",
84      // "embeds the exact data file format defined in that standard. Each of these file formats contains an identifying",
85      // "character string as the first seven characters of the format, allowing an external parser to determine",
86      // "which data file format is being used. This provides the facilities to include a wide range of targets using a",
87      // "variety of measurement specifications in a standard manner.",
88      // "NOTE: It is highly recommended that the profileDescriptionTag also include an identification of the characterization",
89      // "data that was used in the creation of the profile (e.g. \"Based on CGATS TR 001\").",
90      ),
91  
92      CHROMATIC_ADAPTATION_TAG("chromaticAdaptationTag", "s15Fixed16ArrayType", 0x63686164
93      // "This tag converts an XYZ color, measured at a device's specific illumination conditions, to an XYZ color in",
94      // "the PCS illumination conditions after complete adaptation.",
95      // "The tag reflects a survey of the currently used methods of conversion, all of which can be formulated as a",
96      // "matrix transformation (see Annex E). Such a 3 by 3 chromatic adaptation matrix is organized as a 9-element",
97      // "array of signed 15.16 numbers (s15Fixed16ArrayType tag). Similarly as in the other occurrences of a",
98      // "3 by 3 matrix in the ICC tags, the dimension corresponding to the matrix rows varies least rapidly while the",
99      // "one corresponding to the matrix columns varies most rapidly.",
100     // "(19)",
101     // "(20)",
102     // "array a0 a1 a2 a3 a4 a5 a6 a7 a8 =",
103     // "Xpcs",
104     // "Ypcs",
105     // "Zpcs",
106     // "a0 a1 a2",
107     // "a3 a4 a5",
108     // "a6 a7 a8",
109     // "Xsrc",
110     // "Ysrc",
111     // "Zsrc",
112     // "=",
113     // "Where XYZsrc represents the measured value in the actual device viewing condition and XYZpcs represents",
114     // "the chromatically adapted value in the PCS.",
115     // "The chromatic adaptation matrix is a combination of three separate conversions:",
116     // "1) Conversion of source CIE XYZ tristimulus values to cone response tristimulus values.",
117     // "2) Adjustment of the cone response values for an observer�s chromatic adaptation.",
118     // "3) Conversion of the adjusted cone response tristimulus back to CIE XYZ values.",
119     ),
120 
121     CHROMATICITY_TAG("chromaticityTag", "chromaticityType", 0x6368726D
122     // "The data and type of phosphor/colorant chromaticity set.",
123     ),
124 
125     COLORANT_ORDER_TAG("colorantOrderTag", "colorantOrderType", 0x636C726F
126     // "This tag specifies the laydown order of colorants.",
127     ),
128 
129     COLORANT_TABLE_TAG("colorantTableTag", "colorantTableType", 0x636C7274
130     // "This tag identifies the colorants used in the profile by a unique name and an XYZ or L*a*b* value.",
131     // "This is a required tag for profiles where the color space defined in the header is xCLR, where x is one of",
132     // "the allowed numbers from 2 through Fh, per Table 13. See Section 6.3.3.2, Section 6.3.4.1.",
133     ),
134 
135     COPYRIGHT_TAG("copyrightTag", "multiLocalizedUnicodeType", 0x63707274
136     // "This tag contains the text copyright information for the profile.",
137     ),
138 
139     DEVICE_MFG_DESC_TAG("deviceMfgDescTag", "multiLocalizedUnicodeType", 0x646D6E64
140     // "Structure containing invariant and localizable versions of the device manufacturer for display. The content",
141     // "of this structure is described in 6.5.12.",
142     ),
143 
144     DEVICE_MODEL_DESC_TAG("deviceModelDescTag", "multiLocalizedUnicodeType", 0x646D6464
145     // "Structure containing invariant and localizable versions of the device model for display. The content of this",
146     // "structure is described in 6.5.12.",
147     ),
148 
149     GAMUT_TAG("gamutTag", "lut8Type or lut16Type or lutBtoAType", 0x67616D74
150     // "Out of gamut tag. The processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.",
151     // "This tag takes PCS values as its input and produces a single channel of output. If the output value is 0, the",
152     // "PCS color is in-gamut. If the output is non-zero, the PCS color is out-of-gamut, with the output value �n+1�",
153     // "being at least as far out of gamut as the output value �n�.",
154     ),
155 
156     GRAY_TRC_TAG("grayTRCTag", "curveType or parametricCurveType", 0x6B545243
157     // "Gray tone reproduction curve. The tone reproduction curve provides the necessary information to convert",
158     // "between a single device channel and the CIEXYZ encoding of the profile connection space. The first element",
159     // "represents black and the last element represents white.",
160     ),
161 
162     GREEN_MATRIX_COLUMN_TAG("greenMatrixColumnTag", "XYZType", 0x6758595A
163     // "The second column in the matrix used in TRC/matrix transforms.",
164     ),
165 
166     GREEN_TRC_TAG(
167             // "6.4.21 ",
168             "greenTRCTag", "curveType or parametricCurveType", 0x67545243
169     // "Green channel tone reproduction curve. The first element represents no colorant (white) or phosphors",
170     // "(black) and the last element represents 100 percent colorant (green) or 100 percent phosphor (green).",
171     ),
172 
173     LUMINANCE_TAG(
174             // "6.4.22 ",
175             "luminanceTag", "XYZType", 0x6C756D69
176     // "Absolute luminance of emissive devices in candelas per square meter as described by the Y channel. The",
177     // "X and Z channels are ignored in all cases.",
178     ),
179 
180     MEASUREMENT_TAG(
181             // "6.4.23 ",
182             "measurementTag", "measurementType", 0x6D656173
183     // "Alternative measurement specification such as a D65 illuminant instead of the default D50.",
184     ),
185 
186     MEDIA_BLACK_POINT_TAG(
187             // "6.4.24 ",
188             "mediaBlackPointTag", "XYZType", 0x626B7074
189     // "This tag specifies the media black point and contains the CIE 1931 XYZ colorimetry of the black point of",
190     // "the actual medium.",
191     // "NOTE Previous revisions of this specification contained an error indicating that this tag is used to calculate",
192     // "ICC-absolute colorimetry. This is not the case.",
193     ),
194 
195     MEDIA_WHITE_POINT_TAG(
196             // "6.4.25 ",
197             "mediaWhitePointTag", "XYZType", 0x77747074
198     // "This tag, which is used for generating ICC-absolute colorimetric intent, specifies the XYZ tristimulus values",
199     // "of the media white point. If the media is measured under an illumination source which has a chromaticity",
200     // "other than D50, the measured values must be adjusted to D50 using the chromaticAdaptationTag matrix",
201     // "before recording in the tag. For reflecting and transmitting media, the tag values are specified relative to",
202     // "the perfect diffuser (which is normalized to a Y value of 1,0) for illuminant D50. For displays, the values",
203     // "specified must be those of D50 (i.e. 0,9642, 1,0 0,8249) normalized such that Y = 1,0.",
204     // "See Annex A for a more complete description of the use of the media white point.",
205     ),
206 
207     NAMED_COLOR_2_TAG(
208             // "6.4.26 ",
209             "namedColor2Tag", "namedColor2Type", 0x6E636C32
210     // "Named color information providing a PCS and optional device representation for a list of named colors.",
211     ),
212 
213     OUTPUT_RESPONSE_TAG(
214             // "6.4.27 ",
215             "outputResponseTag", "responseCurveSet16Type", 0x72657370
216     // "Structure containing a description of the device response for which the profile is intended. The content of",
217     // "this structure is described in 6.5.16.",
218     // "NOTE The user�s attention is called to the possibility that the use of this tag for device calibration may",
219     // "require use of an invention covered by patent rights. By publication of this specification, no position is",
220     // "taken with respect to the validity of this claim or of any patent rights in connection therewith. The patent",
221     // "holder has, however, filed a statement of willingness to grant a license under these rights on reasonable",
222     // "and nondiscriminatory terms and conditions to applicants desiring to obtain such a license. Details may be",
223     // "obtained from the publisher.",
224     ),
225 
226     PREVIEW_0_TAG(
227             // "6.4.28 ",
228             "preview0Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726530
229     // "Preview transformation from PCS to device space and back to the PCS. The processing mechanisms are",
230     // "described in lut8Type or lut16Type or lutBtoAType.",
231     // "This tag contains the combination of tag B2A0 and tag A2B1.",
232     ),
233 
234     PREVIEW_1_TAG(
235             // "6.4.29 ",
236             "preview1Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726531
237     // "Preview transformation from the PCS to device space and back to the PCS. The processing mechanisms",
238     // "are described in lut8Type or lut16Type or lutBtoAType.",
239     // "This tag contains the combination of tag B2A1 and tag A2B1.",
240     ),
241 
242     PREVIEW_2_TAG(
243             // "6.4.30 ",
244             "preview2Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726532
245     // "Preview transformation from PCS to device space and back to the PCS. The processing mechanisms are",
246     // "described in lut8Type or lut16Type or lutBtoAType.",
247     // "This tag contains the combination of tag B2A2 and tag A2B1.",
248     ),
249 
250     PROFILE_DESCRIPTION_TAG(
251             // "6.4.31 ",
252             "profileDescriptionTag", "multiLocalizedUnicodeType", 0x64657363
253     // "Structure containing invariant and localizable versions of the profile description for display. The content of",
254     // "this structure is described in 6.5.12. This invariant description has no fixed relationship to the actual profile",
255     // "disk file name.",
256     ),
257 
258     PROFILE_SEQUENCE_DESC_TAG(
259             // "6.4.32 ",
260             "profileSequenceDescTag", "profileSequenceDescType", 0x70736571
261     // "Structure containing a description of the profile sequence from source to destination, typically used with",
262     // "the DeviceLink profile. The content of this structure is described in 6.5.15.",
263     ),
264 
265     RED_MATRIX_COLUMN_TAG(
266             // "6.4.33 ",
267             "redMatrixColumnTag", "XYZType", 0x7258595A
268     // "The first column in the matrix used in TRC/matrix transforms.",
269     ),
270 
271     RED_TRC_TAG(
272             // "6.4.34 ",
273             "redTRCTag", "curveType or parametricCurveType", 0x72545243
274     // "Red channel tone reproduction curve. The first element represents no colorant (white) or phosphors",
275     // "(black) and the last element represents 100 percent colorant (red) or 100 percent phosphor (red).",
276     ),
277 
278     TECHNOLOGY_TAG(
279             // "6.4.35 ",
280             "technologyTag", "signatureType", 0x74656368
281     // "Device technology information such as CRT, Dye Sublimation, etc. The encoding is such that:",
282     ),
283 
284     VIEWING_COND_DESC_TAG(
285             // "6.4.36 ",
286             "viewingCondDescTag", "multiLocalizedUnicodeType", 0x76756564
287     // "Structure containing invariant and localizable versions of the viewing conditions. The content of this structure",
288     // "is described in 6.5.12.",
289 
290     ),
291 
292     VIEWING_CONDITIONS_TAG(
293             // "6.4.37 ",
294             "viewingConditionsTag", "viewingConditionsType", 0x76696577
295     // "Viewing conditions parameters. The content of this structure is described in 6.5.25.",
296     );
297 
298     public final String name;
299     public final String typeDescription;
300     public final int signature;
301 
302     IccTagTypes(final String name, final String typeDescription, final int signature) {
303         this.name = name;
304         this.typeDescription = typeDescription;
305         this.signature = signature;
306     }
307 
308     @Override
309     public String getName() {
310         return name;
311     }
312 
313     @Override
314     public int getSignature() {
315         return signature;
316     }
317 
318     @Override
319     public String getTypeDescription() {
320         return typeDescription;
321     }
322 }