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 }