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.icc; 018 019public enum IccTagTypes implements IccTagType { 020 A_TO_B0_TAG("AToB0Tag", 021 "lut8Type or lut16Type or lutAtoBType", 0x41324230 022 // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing mechanisms are described in lut8Type or lut16Type or lutAtoBType."); 023 ), 024 025 // public static final IccTagType AToB0Tag = new IccTagType( 026 // "AToB0Tag", 027 // "lut8Type or lut16Type or lutAtoBType", 028 // "�A2B0� (41324230h)", 029 // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing", 030 // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.", 031 // ); 032 033 A_TO_B1_TAG("AToB1Tag", 034 "lut8Type or lut16Type or lutAtoBType", 0x41324231 035 // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing", 036 // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.", 037 ), 038 039 A_TO_B2_TAG("AToB2Tag", 040 "lut8Type or lut16Type or lutAtoBType", 0x41324232 041 // "This tag defines a color transform from Device to PCS using lookup table tag element structures. The processing", 042 // "mechanisms are described in lut8Type or lut16Type or lutAtoBType.", 043 ), 044 045 BLUE_MATRIX_COLUMN_TAG( 046 "blueMatrixColumnTag", "XYZType", 0x6258595A 047 // "The third column in the matrix used in TRC/matrix transforms.", 048 ), 049 050 BLUE_TRC_TAG("blueTRCTag", 051 "curveType or parametricCurveType", 0x62545243 052 // "Blue channel tone reproduction curve. The first element represents no colorant (white) or phosphors", 053 // "(black) and the last element represents 100 percent colorant (blue) or 100 percent phosphor (blue).", 054 ), 055 056 B_TO_A0_TAG("BToA0Tag", 057 "lut8Type or lut16Type or lutBtoAType", 0x42324130 058 // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The", 059 // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.", 060 ), 061 062 B_TO_A1_TAG("BToA1Tag", 063 "lut8Type or lut16Type or lutBtoAType", 0x42324131 064 // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The", 065 // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.", 066 ), 067 068 B_TO_A2_TAG("BToA2Tag", 069 "lut8Type or lut16Type or lutBtoAType", 0x42324132 070 // "This tag defines a color transform from PCS to Device using the lookup table tag element structures. The", 071 // "processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.", 072 ), 073 074 CALIBRATION_DATE_TIME_TAG( 075 "calibrationDateTimeTag", "dateTimeType", 0x63616C74 076 // "Profile calibration date and time. Initially, this tag matches the contents of the profile header�s creation", 077 // "date/time field. This allows applications and utilities to verify if this profile matches a vendor�s profile and", 078 // "how recently calibration has been performed.", 079 ), 080 081 CHAR_TARGET_TAG( 082 "charTargetTag", "textType", 0x74617267 083 // "This tag contains the name of the registered characterization data set, or it contains the measurement data", 084 // "for a characterization target. This tag is provided so that distributed utilities can identify the underlying", 085 // "characterization data, create transforms \"on the fly\" or check the current performance against the original", 086 // "device performance.", 087 // "The first seven characters of the text shall identify the nature of the characterization data.", 088 // "If the first seven characters are \"ICCHDAT\", then the remainder of the text shall be a single space followed", 089 // "by the Reference Name of a characterization data set in the ICC Characterization Data Registry and terminated", 090 // "with a NULL byte (00h). The Reference Name in the text must match exactly (including case) the", 091 // "Reference Name in the registry.", 092 // "If the first seven characters match one of the identifiers defined in an ANSI or ISO standard, then the tag", 093 // "embeds the exact data file format defined in that standard. Each of these file formats contains an identifying", 094 // "character string as the first seven characters of the format, allowing an external parser to determine", 095 // "which data file format is being used. This provides the facilities to include a wide range of targets using a", 096 // "variety of measurement specifications in a standard manner.", 097 // "NOTE: It is highly recommended that the profileDescriptionTag also include an identification of the characterization", 098 // "data that was used in the creation of the profile (e.g. \"Based on CGATS TR 001\").", 099 ), 100 101 CHROMATIC_ADAPTATION_TAG( 102 "chromaticAdaptationTag", "s15Fixed16ArrayType", 0x63686164 103 // "This tag converts an XYZ color, measured at a device's specific illumination conditions, to an XYZ color in", 104 // "the PCS illumination conditions after complete adaptation.", 105 // "The tag reflects a survey of the currently used methods of conversion, all of which can be formulated as a", 106 // "matrix transformation (see Annex E). Such a 3 by 3 chromatic adaptation matrix is organized as a 9-element", 107 // "array of signed 15.16 numbers (s15Fixed16ArrayType tag). Similarly as in the other occurrences of a", 108 // "3 by 3 matrix in the ICC tags, the dimension corresponding to the matrix rows varies least rapidly while the", 109 // "one corresponding to the matrix columns varies most rapidly.", 110 // "(19)", 111 // "(20)", 112 // "array a0 a1 a2 a3 a4 a5 a6 a7 a8 =", 113 // "Xpcs", 114 // "Ypcs", 115 // "Zpcs", 116 // "a0 a1 a2", 117 // "a3 a4 a5", 118 // "a6 a7 a8", 119 // "Xsrc", 120 // "Ysrc", 121 // "Zsrc", 122 // "=", 123 // "Where XYZsrc represents the measured value in the actual device viewing condition and XYZpcs represents", 124 // "the chromatically adapted value in the PCS.", 125 // "The chromatic adaptation matrix is a combination of three separate conversions:", 126 // "1) Conversion of source CIE XYZ tristimulus values to cone response tristimulus values.", 127 // "2) Adjustment of the cone response values for an observer�s chromatic adaptation.", 128 // "3) Conversion of the adjusted cone response tristimulus back to CIE XYZ values.", 129 ), 130 131 CHROMATICITY_TAG( 132 "chromaticityTag", "chromaticityType", 0x6368726D 133 // "The data and type of phosphor/colorant chromaticity set.", 134 ), 135 136 COLORANT_ORDER_TAG( 137 "colorantOrderTag", "colorantOrderType", 0x636C726F 138 // "This tag specifies the laydown order of colorants.", 139 ), 140 141 COLORANT_TABLE_TAG( 142 "colorantTableTag", "colorantTableType", 0x636C7274 143 // "This tag identifies the colorants used in the profile by a unique name and an XYZ or L*a*b* value.", 144 // "This is a required tag for profiles where the color space defined in the header is xCLR, where x is one of", 145 // "the allowed numbers from 2 through Fh, per Table 13. See Section 6.3.3.2, Section 6.3.4.1.", 146 ), 147 148 COPYRIGHT_TAG( 149 "copyrightTag", "multiLocalizedUnicodeType", 0x63707274 150 // "This tag contains the text copyright information for the profile.", 151 ), 152 153 DEVICE_MFG_DESC_TAG( 154 "deviceMfgDescTag", "multiLocalizedUnicodeType", 0x646D6E64 155 // "Structure containing invariant and localizable versions of the device manufacturer for display. The content", 156 // "of this structure is described in 6.5.12.", 157 ), 158 159 DEVICE_MODEL_DESC_TAG( 160 "deviceModelDescTag", "multiLocalizedUnicodeType", 0x646D6464 161 // "Structure containing invariant and localizable versions of the device model for display. The content of this", 162 // "structure is described in 6.5.12.", 163 ), 164 165 GAMUT_TAG("gamutTag", 166 "lut8Type or lut16Type or lutBtoAType", 0x67616D74 167 // "Out of gamut tag. The processing mechanisms are described in lut8Type or lut16Type or lutBtoAType.", 168 // "This tag takes PCS values as its input and produces a single channel of output. If the output value is 0, the", 169 // "PCS color is in-gamut. If the output is non-zero, the PCS color is out-of-gamut, with the output value �n+1�", 170 // "being at least as far out of gamut as the output value �n�.", 171 ), 172 173 GRAY_TRC_TAG("grayTRCTag", 174 "curveType or parametricCurveType", 0x6B545243 175 // "Gray tone reproduction curve. The tone reproduction curve provides the necessary information to convert", 176 // "between a single device channel and the CIEXYZ encoding of the profile connection space. The first element", 177 // "represents black and the last element represents white.", 178 ), 179 180 GREEN_MATRIX_COLUMN_TAG( 181 "greenMatrixColumnTag", "XYZType", 0x6758595A 182 // "The second column in the matrix used in TRC/matrix transforms.", 183 ), 184 185 GREEN_TRC_TAG( 186 // "6.4.21 ", 187 "greenTRCTag", "curveType or parametricCurveType", 0x67545243 188 // "Green channel tone reproduction curve. The first element represents no colorant (white) or phosphors", 189 // "(black) and the last element represents 100 percent colorant (green) or 100 percent phosphor (green).", 190 ), 191 192 LUMINANCE_TAG( 193 // "6.4.22 ", 194 "luminanceTag", "XYZType", 0x6C756D69 195 // "Absolute luminance of emissive devices in candelas per square meter as described by the Y channel. The", 196 // "X and Z channels are ignored in all cases.", 197 ), 198 199 MEASUREMENT_TAG( 200 // "6.4.23 ", 201 "measurementTag", "measurementType", 0x6D656173 202 // "Alternative measurement specification such as a D65 illuminant instead of the default D50.", 203 ), 204 205 MEDIA_BLACK_POINT_TAG( 206 // "6.4.24 ", 207 "mediaBlackPointTag", "XYZType", 0x626B7074 208 // "This tag specifies the media black point and contains the CIE 1931 XYZ colorimetry of the black point of", 209 // "the actual medium.", 210 // "NOTE Previous revisions of this specification contained an error indicating that this tag is used to calculate", 211 // "ICC-absolute colorimetry. This is not the case.", 212 ), 213 214 MEDIA_WHITE_POINT_TAG( 215 // "6.4.25 ", 216 "mediaWhitePointTag", "XYZType", 0x77747074 217 // "This tag, which is used for generating ICC-absolute colorimetric intent, specifies the XYZ tristimulus values", 218 // "of the media white point. If the media is measured under an illumination source which has a chromaticity", 219 // "other than D50, the measured values must be adjusted to D50 using the chromaticAdaptationTag matrix", 220 // "before recording in the tag. For reflecting and transmitting media, the tag values are specified relative to", 221 // "the perfect diffuser (which is normalized to a Y value of 1,0) for illuminant D50. For displays, the values", 222 // "specified must be those of D50 (i.e. 0,9642, 1,0 0,8249) normalized such that Y = 1,0.", 223 // "See Annex A for a more complete description of the use of the media white point.", 224 ), 225 226 NAMED_COLOR_2_TAG( 227 // "6.4.26 ", 228 "namedColor2Tag", "namedColor2Type", 0x6E636C32 229 // "Named color information providing a PCS and optional device representation for a list of named colors.", 230 ), 231 232 OUTPUT_RESPONSE_TAG( 233 // "6.4.27 ", 234 "outputResponseTag", "responseCurveSet16Type", 0x72657370 235 // "Structure containing a description of the device response for which the profile is intended. The content of", 236 // "this structure is described in 6.5.16.", 237 // "NOTE The user�s attention is called to the possibility that the use of this tag for device calibration may", 238 // "require use of an invention covered by patent rights. By publication of this specification, no position is", 239 // "taken with respect to the validity of this claim or of any patent rights in connection therewith. The patent", 240 // "holder has, however, filed a statement of willingness to grant a license under these rights on reasonable", 241 // "and nondiscriminatory terms and conditions to applicants desiring to obtain such a license. Details may be", 242 // "obtained from the publisher.", 243 ), 244 245 PREVIEW_0_TAG( 246 // "6.4.28 ", 247 "preview0Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726530 248 // "Preview transformation from PCS to device space and back to the PCS. The processing mechanisms are", 249 // "described in lut8Type or lut16Type or lutBtoAType.", 250 // "This tag contains the combination of tag B2A0 and tag A2B1.", 251 ), 252 253 PREVIEW_1_TAG( 254 // "6.4.29 ", 255 "preview1Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726531 256 // "Preview transformation from the PCS to device space and back to the PCS. The processing mechanisms", 257 // "are described in lut8Type or lut16Type or lutBtoAType.", 258 // "This tag contains the combination of tag B2A1 and tag A2B1.", 259 ), 260 261 PREVIEW_2_TAG( 262 // "6.4.30 ", 263 "preview2Tag", "lut8Type or lut16Type or lutBtoAType", 0x70726532 264 // "Preview transformation from PCS to device space and back to the PCS. The processing mechanisms are", 265 // "described in lut8Type or lut16Type or lutBtoAType.", 266 // "This tag contains the combination of tag B2A2 and tag A2B1.", 267 ), 268 269 PROFILE_DESCRIPTION_TAG( 270 // "6.4.31 ", 271 "profileDescriptionTag", "multiLocalizedUnicodeType", 0x64657363 272 // "Structure containing invariant and localizable versions of the profile description for display. The content of", 273 // "this structure is described in 6.5.12. This invariant description has no fixed relationship to the actual profile", 274 // "disk file name.", 275 ), 276 277 PROFILE_SEQUENCE_DESC_TAG( 278 // "6.4.32 ", 279 "profileSequenceDescTag", "profileSequenceDescType", 0x70736571 280 // "Structure containing a description of the profile sequence from source to destination, typically used with", 281 // "the DeviceLink profile. The content of this structure is described in 6.5.15.", 282 ), 283 284 RED_MATRIX_COLUMN_TAG( 285 // "6.4.33 ", 286 "redMatrixColumnTag", "XYZType", 0x7258595A 287 // "The first column in the matrix used in TRC/matrix transforms.", 288 ), 289 290 RED_TRC_TAG( 291 // "6.4.34 ", 292 "redTRCTag", "curveType or parametricCurveType", 0x72545243 293 // "Red channel tone reproduction curve. The first element represents no colorant (white) or phosphors", 294 // "(black) and the last element represents 100 percent colorant (red) or 100 percent phosphor (red).", 295 ), 296 297 TECHNOLOGY_TAG( 298 // "6.4.35 ", 299 "technologyTag", "signatureType", 0x74656368 300 // "Device technology information such as CRT, Dye Sublimation, etc. The encoding is such that:", 301 ), 302 303 VIEWING_COND_DESC_TAG( 304 // "6.4.36 ", 305 "viewingCondDescTag", "multiLocalizedUnicodeType", 0x76756564 306 // "Structure containing invariant and localizable versions of the viewing conditions. The content of this structure", 307 // "is described in 6.5.12.", 308 309 ), 310 311 VIEWING_CONDITIONS_TAG( 312 // "6.4.37 ", 313 "viewingConditionsTag", "viewingConditionsType", 0x76696577 314 // "Viewing conditions parameters. The content of this structure is described in 6.5.25.", 315 ); 316 317 public final String name; 318 public final String typeDescription; 319 public final int signature; 320 321 IccTagTypes(final String name, final String typeDescription, final int signature) { 322 this.name = name; 323 this.typeDescription = typeDescription; 324 this.signature = signature; 325 } 326 327 @Override 328 public String getName() { 329 return name; 330 } 331 332 @Override 333 public String getTypeDescription() { 334 return typeDescription; 335 } 336 337 @Override 338 public int getSignature() { 339 return signature; 340 } 341}