    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}