src/java.desktop/share/classes/java/awt/color/ICC_Profile.java
author prr
Fri, 25 Oct 2019 13:32:01 -0700
changeset 59172 6654f5611420
parent 52524 add2ef6e79c4
permissions -rw-r--r--
8175984: ICC_Profile has un-needed, not-empty finalize method Reviewed-by: jdv, serb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     1
/*
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
     2
 * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     4
 *
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4238
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4238
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    10
 *
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    15
 * accompanied this code).
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    16
 *
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4238
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4238
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4238
diff changeset
    23
 * questions.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    24
 */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    25
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    26
/* ********************************************************************
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    27
 **********************************************************************
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    28
 **********************************************************************
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    29
 *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    30
 *** As  an unpublished  work pursuant to Title 17 of the United    ***
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    31
 *** States Code.  All rights reserved.                             ***
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    32
 **********************************************************************
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    33
 **********************************************************************
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    34
 **********************************************************************/
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    35
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    36
package java.awt.color;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    37
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    38
import java.io.File;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    39
import java.io.FileInputStream;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    40
import java.io.FileOutputStream;
27276
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
    41
import java.io.FilePermission;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    42
import java.io.IOException;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    43
import java.io.InputStream;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    44
import java.io.ObjectInputStream;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    45
import java.io.ObjectOutputStream;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    46
import java.io.ObjectStreamException;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    47
import java.io.OutputStream;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    48
import java.io.Serializable;
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    49
import java.security.AccessController;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    50
import java.security.PrivilegedAction;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    51
import java.util.StringTokenizer;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    52
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    53
import sun.java2d.cmm.CMSManager;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    54
import sun.java2d.cmm.PCMM;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    55
import sun.java2d.cmm.Profile;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    56
import sun.java2d.cmm.ProfileActivator;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    57
import sun.java2d.cmm.ProfileDataVerifier;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    58
import sun.java2d.cmm.ProfileDeferralInfo;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    59
import sun.java2d.cmm.ProfileDeferralMgr;
3958
b8acd5ee4f4f 6612680: Remove classloader dependency on jkernel
mchung
parents: 3288
diff changeset
    60
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    61
/**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    62
 * A representation of color profile data for device independent and device
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    63
 * dependent color spaces based on the International Color Consortium
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    64
 * Specification ICC.1:2001-12, File Format for Color Profiles, (see
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    65
 * <a href="http://www.color.org"> http://www.color.org</a>).
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    66
 * <p>
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    67
 * An {@code ICC_ColorSpace} object can be constructed from an appropriate
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    68
 * {@code ICC_Profile}. Typically, an {@code ICC_ColorSpace} would be associated
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    69
 * with an ICC Profile which is either an input, display, or output profile (see
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    70
 * the ICC specification). There are also device link, abstract, color space
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    71
 * conversion, and named color profiles. These are less useful for tagging a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    72
 * color or image, but are useful for other purposes (in particular device link
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    73
 * profiles can provide improved performance for converting from one device's
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    74
 * color space to another's).
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    75
 * <p>
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    76
 * ICC Profiles represent transformations from the color space of the profile
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    77
 * (e.g. a monitor) to a Profile Connection Space (PCS). Profiles of interest
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    78
 * for tagging images or colors have a PCS which is one of the two specific
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    79
 * device independent spaces (one CIEXYZ space and one CIELab space) defined in
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    80
 * the ICC Profile Format Specification. Most profiles of interest either have
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    81
 * invertible transformations or explicitly specify transformations going both
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    82
 * directions.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
    83
 *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    84
 * @see ICC_ColorSpace
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    85
 */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    86
public class ICC_Profile implements Serializable {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    87
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    88
    private static final long serialVersionUID = -3938515861990936766L;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    89
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
    90
    private transient Profile cmmProfile;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    91
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    92
    private transient ProfileDeferralInfo deferralInfo;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    93
    private transient ProfileActivator profileActivator;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    94
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    95
    // Registry of singleton profile objects for specific color spaces
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    96
    // defined in the ColorSpace class (e.g. CS_sRGB), see
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    97
    // getInstance(int cspace) factory method.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    98
    private static ICC_Profile sRGBprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
    99
    private static ICC_Profile XYZprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   100
    private static ICC_Profile PYCCprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   101
    private static ICC_Profile GRAYprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   102
    private static ICC_Profile LINEAR_RGBprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   103
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   104
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   105
     * Profile class is input.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   106
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   107
    public static final int CLASS_INPUT = 0;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   108
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   109
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   110
     * Profile class is display.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   111
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   112
    public static final int CLASS_DISPLAY = 1;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   113
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   114
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   115
     * Profile class is output.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   116
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   117
    public static final int CLASS_OUTPUT = 2;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   118
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   119
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   120
     * Profile class is device link.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   121
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   122
    public static final int CLASS_DEVICELINK = 3;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   123
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   124
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   125
     * Profile class is color space conversion.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   126
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   127
    public static final int CLASS_COLORSPACECONVERSION = 4;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   128
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   129
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   130
     * Profile class is abstract.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   131
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   132
    public static final int CLASS_ABSTRACT = 5;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   133
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   134
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   135
     * Profile class is named color.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   136
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   137
    public static final int CLASS_NAMEDCOLOR = 6;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   138
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   139
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   140
     * ICC Profile Color Space Type Signature: 'XYZ '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   141
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   142
    public static final int icSigXYZData        = 0x58595A20;    /* 'XYZ ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   143
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   144
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   145
     * ICC Profile Color Space Type Signature: 'Lab '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   146
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   147
    public static final int icSigLabData        = 0x4C616220;    /* 'Lab ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   148
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   149
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   150
     * ICC Profile Color Space Type Signature: 'Luv '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   151
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   152
    public static final int icSigLuvData        = 0x4C757620;    /* 'Luv ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   153
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   154
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   155
     * ICC Profile Color Space Type Signature: 'YCbr'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   156
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   157
    public static final int icSigYCbCrData        = 0x59436272;    /* 'YCbr' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   158
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   159
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   160
     * ICC Profile Color Space Type Signature: 'Yxy '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   161
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   162
    public static final int icSigYxyData        = 0x59787920;    /* 'Yxy ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   163
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   164
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   165
     * ICC Profile Color Space Type Signature: 'RGB '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   166
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   167
    public static final int icSigRgbData        = 0x52474220;    /* 'RGB ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   168
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   169
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   170
     * ICC Profile Color Space Type Signature: 'GRAY'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   171
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   172
    public static final int icSigGrayData        = 0x47524159;    /* 'GRAY' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   173
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   174
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   175
     * ICC Profile Color Space Type Signature: 'HSV'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   176
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   177
    public static final int icSigHsvData        = 0x48535620;    /* 'HSV ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   178
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   179
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   180
     * ICC Profile Color Space Type Signature: 'HLS'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   181
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   182
    public static final int icSigHlsData        = 0x484C5320;    /* 'HLS ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   183
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   184
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   185
     * ICC Profile Color Space Type Signature: 'CMYK'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   186
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   187
    public static final int icSigCmykData        = 0x434D594B;    /* 'CMYK' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   188
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   189
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   190
     * ICC Profile Color Space Type Signature: 'CMY '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   191
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   192
    public static final int icSigCmyData        = 0x434D5920;    /* 'CMY ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   193
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   194
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   195
     * ICC Profile Color Space Type Signature: '2CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   196
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   197
    public static final int icSigSpace2CLR        = 0x32434C52;    /* '2CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   198
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   199
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   200
     * ICC Profile Color Space Type Signature: '3CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   201
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   202
    public static final int icSigSpace3CLR        = 0x33434C52;    /* '3CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   203
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   204
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   205
     * ICC Profile Color Space Type Signature: '4CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   206
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   207
    public static final int icSigSpace4CLR        = 0x34434C52;    /* '4CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   208
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   209
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   210
     * ICC Profile Color Space Type Signature: '5CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   211
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   212
    public static final int icSigSpace5CLR        = 0x35434C52;    /* '5CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   213
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   214
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   215
     * ICC Profile Color Space Type Signature: '6CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   216
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   217
    public static final int icSigSpace6CLR        = 0x36434C52;    /* '6CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   218
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   219
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   220
     * ICC Profile Color Space Type Signature: '7CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   221
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   222
    public static final int icSigSpace7CLR        = 0x37434C52;    /* '7CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   223
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   224
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   225
     * ICC Profile Color Space Type Signature: '8CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   226
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   227
    public static final int icSigSpace8CLR        = 0x38434C52;    /* '8CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   228
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   229
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   230
     * ICC Profile Color Space Type Signature: '9CLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   231
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   232
    public static final int icSigSpace9CLR        = 0x39434C52;    /* '9CLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   233
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   234
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   235
     * ICC Profile Color Space Type Signature: 'ACLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   236
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   237
    public static final int icSigSpaceACLR        = 0x41434C52;    /* 'ACLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   238
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   239
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   240
     * ICC Profile Color Space Type Signature: 'BCLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   241
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   242
    public static final int icSigSpaceBCLR        = 0x42434C52;    /* 'BCLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   243
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   244
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   245
     * ICC Profile Color Space Type Signature: 'CCLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   246
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   247
    public static final int icSigSpaceCCLR        = 0x43434C52;    /* 'CCLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   248
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   249
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   250
     * ICC Profile Color Space Type Signature: 'DCLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   251
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   252
    public static final int icSigSpaceDCLR        = 0x44434C52;    /* 'DCLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   253
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   254
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   255
     * ICC Profile Color Space Type Signature: 'ECLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   256
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   257
    public static final int icSigSpaceECLR        = 0x45434C52;    /* 'ECLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   258
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   259
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   260
     * ICC Profile Color Space Type Signature: 'FCLR'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   261
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   262
    public static final int icSigSpaceFCLR        = 0x46434C52;    /* 'FCLR' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   263
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   264
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   265
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   266
     * ICC Profile Class Signature: 'scnr'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   267
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   268
    public static final int icSigInputClass       = 0x73636E72;    /* 'scnr' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   269
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   270
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   271
     * ICC Profile Class Signature: 'mntr'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   272
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   273
    public static final int icSigDisplayClass     = 0x6D6E7472;    /* 'mntr' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   274
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   275
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   276
     * ICC Profile Class Signature: 'prtr'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   277
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   278
    public static final int icSigOutputClass      = 0x70727472;    /* 'prtr' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   279
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   280
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   281
     * ICC Profile Class Signature: 'link'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   282
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   283
    public static final int icSigLinkClass        = 0x6C696E6B;    /* 'link' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   284
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   285
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   286
     * ICC Profile Class Signature: 'abst'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   287
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   288
    public static final int icSigAbstractClass    = 0x61627374;    /* 'abst' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   289
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   290
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   291
     * ICC Profile Class Signature: 'spac'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   292
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   293
    public static final int icSigColorSpaceClass  = 0x73706163;    /* 'spac' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   294
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   295
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   296
     * ICC Profile Class Signature: 'nmcl'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   297
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   298
    public static final int icSigNamedColorClass  = 0x6e6d636c;    /* 'nmcl' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   299
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   300
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   301
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   302
     * ICC Profile Rendering Intent: Perceptual.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   303
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   304
    public static final int icPerceptual            = 0;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   305
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   306
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   307
     * ICC Profile Rendering Intent: RelativeColorimetric.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   308
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   309
    public static final int icRelativeColorimetric    = 1;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   310
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   311
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   312
     * ICC Profile Rendering Intent: Media-RelativeColorimetric.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   313
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   314
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   315
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   316
    public static final int icMediaRelativeColorimetric = 1;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   317
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   318
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   319
     * ICC Profile Rendering Intent: Saturation.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   320
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   321
    public static final int icSaturation            = 2;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   322
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   323
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   324
     * ICC Profile Rendering Intent: AbsoluteColorimetric.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   325
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   326
    public static final int icAbsoluteColorimetric    = 3;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   327
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   328
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   329
     * ICC Profile Rendering Intent: ICC-AbsoluteColorimetric.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   330
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   331
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   332
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   333
    public static final int icICCAbsoluteColorimetric = 3;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   334
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   335
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   336
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   337
     * ICC Profile Tag Signature: 'head' - special.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   338
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   339
    public static final int icSigHead      = 0x68656164; /* 'head' - special */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   340
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   341
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   342
     * ICC Profile Tag Signature: 'A2B0'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   343
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   344
    public static final int icSigAToB0Tag         = 0x41324230;    /* 'A2B0' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   345
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   346
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   347
     * ICC Profile Tag Signature: 'A2B1'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   348
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   349
    public static final int icSigAToB1Tag         = 0x41324231;    /* 'A2B1' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   350
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   351
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   352
     * ICC Profile Tag Signature: 'A2B2'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   353
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   354
    public static final int icSigAToB2Tag         = 0x41324232;    /* 'A2B2' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   355
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   356
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   357
     * ICC Profile Tag Signature: 'bXYZ'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   358
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   359
    public static final int icSigBlueColorantTag  = 0x6258595A;    /* 'bXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   360
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   361
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   362
     * ICC Profile Tag Signature: 'bXYZ'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   363
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   364
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   365
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   366
    public static final int icSigBlueMatrixColumnTag = 0x6258595A; /* 'bXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   367
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   368
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   369
     * ICC Profile Tag Signature: 'bTRC'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   370
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   371
    public static final int icSigBlueTRCTag       = 0x62545243;    /* 'bTRC' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   372
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   373
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   374
     * ICC Profile Tag Signature: 'B2A0'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   375
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   376
    public static final int icSigBToA0Tag         = 0x42324130;    /* 'B2A0' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   377
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   378
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   379
     * ICC Profile Tag Signature: 'B2A1'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   380
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   381
    public static final int icSigBToA1Tag         = 0x42324131;    /* 'B2A1' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   382
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   383
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   384
     * ICC Profile Tag Signature: 'B2A2'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   385
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   386
    public static final int icSigBToA2Tag         = 0x42324132;    /* 'B2A2' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   387
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   388
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   389
     * ICC Profile Tag Signature: 'calt'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   390
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   391
    public static final int icSigCalibrationDateTimeTag = 0x63616C74;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   392
                                                                   /* 'calt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   393
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   394
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   395
     * ICC Profile Tag Signature: 'targ'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   396
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   397
    public static final int icSigCharTargetTag    = 0x74617267;    /* 'targ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   398
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   399
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   400
     * ICC Profile Tag Signature: 'cprt'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   401
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   402
    public static final int icSigCopyrightTag     = 0x63707274;    /* 'cprt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   403
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   404
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   405
     * ICC Profile Tag Signature: 'crdi'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   406
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   407
    public static final int icSigCrdInfoTag       = 0x63726469;    /* 'crdi' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   408
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   409
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   410
     * ICC Profile Tag Signature: 'dmnd'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   411
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   412
    public static final int icSigDeviceMfgDescTag = 0x646D6E64;    /* 'dmnd' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   413
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   414
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   415
     * ICC Profile Tag Signature: 'dmdd'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   416
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   417
    public static final int icSigDeviceModelDescTag = 0x646D6464;  /* 'dmdd' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   418
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   419
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   420
     * ICC Profile Tag Signature: 'devs'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   421
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   422
    public static final int icSigDeviceSettingsTag =  0x64657673;  /* 'devs' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   423
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   424
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   425
     * ICC Profile Tag Signature: 'gamt'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   426
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   427
    public static final int icSigGamutTag         = 0x67616D74;    /* 'gamt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   428
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   429
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   430
     * ICC Profile Tag Signature: 'kTRC'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   431
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   432
    public static final int icSigGrayTRCTag       = 0x6b545243;    /* 'kTRC' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   433
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   434
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   435
     * ICC Profile Tag Signature: 'gXYZ'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   436
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   437
    public static final int icSigGreenColorantTag = 0x6758595A;    /* 'gXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   438
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   439
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   440
     * ICC Profile Tag Signature: 'gXYZ'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   441
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   442
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   443
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   444
    public static final int icSigGreenMatrixColumnTag = 0x6758595A;/* 'gXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   445
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   446
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   447
     * ICC Profile Tag Signature: 'gTRC'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   448
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   449
    public static final int icSigGreenTRCTag      = 0x67545243;    /* 'gTRC' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   450
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   451
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   452
     * ICC Profile Tag Signature: 'lumi'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   453
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   454
    public static final int icSigLuminanceTag     = 0x6C756d69;    /* 'lumi' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   455
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   456
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   457
     * ICC Profile Tag Signature: 'meas'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   458
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   459
    public static final int icSigMeasurementTag   = 0x6D656173;    /* 'meas' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   460
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   461
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   462
     * ICC Profile Tag Signature: 'bkpt'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   463
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   464
    public static final int icSigMediaBlackPointTag = 0x626B7074;  /* 'bkpt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   465
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   466
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   467
     * ICC Profile Tag Signature: 'wtpt'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   468
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   469
    public static final int icSigMediaWhitePointTag = 0x77747074;  /* 'wtpt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   470
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   471
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   472
     * ICC Profile Tag Signature: 'ncl2'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   473
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   474
    public static final int icSigNamedColor2Tag   = 0x6E636C32;    /* 'ncl2' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   475
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   476
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   477
     * ICC Profile Tag Signature: 'resp'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   478
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   479
    public static final int icSigOutputResponseTag = 0x72657370;   /* 'resp' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   480
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   481
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   482
     * ICC Profile Tag Signature: 'pre0'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   483
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   484
    public static final int icSigPreview0Tag      = 0x70726530;    /* 'pre0' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   485
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   486
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   487
     * ICC Profile Tag Signature: 'pre1'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   488
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   489
    public static final int icSigPreview1Tag      = 0x70726531;    /* 'pre1' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   490
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   491
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   492
     * ICC Profile Tag Signature: 'pre2'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   493
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   494
    public static final int icSigPreview2Tag      = 0x70726532;    /* 'pre2' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   495
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   496
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   497
     * ICC Profile Tag Signature: 'desc'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   498
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   499
    public static final int icSigProfileDescriptionTag = 0x64657363;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   500
                                                                   /* 'desc' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   501
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   502
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   503
     * ICC Profile Tag Signature: 'pseq'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   504
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   505
    public static final int icSigProfileSequenceDescTag = 0x70736571;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   506
                                                                   /* 'pseq' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   507
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   508
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   509
     * ICC Profile Tag Signature: 'psd0'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   510
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   511
    public static final int icSigPs2CRD0Tag       = 0x70736430;    /* 'psd0' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   512
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   513
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   514
     * ICC Profile Tag Signature: 'psd1'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   515
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   516
    public static final int icSigPs2CRD1Tag       = 0x70736431;    /* 'psd1' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   517
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   518
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   519
     * ICC Profile Tag Signature: 'psd2'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   520
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   521
    public static final int icSigPs2CRD2Tag       = 0x70736432;    /* 'psd2' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   522
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   523
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   524
     * ICC Profile Tag Signature: 'psd3'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   525
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   526
    public static final int icSigPs2CRD3Tag       = 0x70736433;    /* 'psd3' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   527
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   528
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   529
     * ICC Profile Tag Signature: 'ps2s'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   530
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   531
    public static final int icSigPs2CSATag        = 0x70733273;    /* 'ps2s' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   532
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   533
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   534
     * ICC Profile Tag Signature: 'ps2i'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   535
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   536
    public static final int icSigPs2RenderingIntentTag = 0x70733269;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   537
                                                                   /* 'ps2i' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   538
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   539
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   540
     * ICC Profile Tag Signature: 'rXYZ'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   541
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   542
    public static final int icSigRedColorantTag   = 0x7258595A;    /* 'rXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   543
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   544
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   545
     * ICC Profile Tag Signature: 'rXYZ'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   546
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   547
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   548
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   549
    public static final int icSigRedMatrixColumnTag = 0x7258595A;  /* 'rXYZ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   550
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   551
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   552
     * ICC Profile Tag Signature: 'rTRC'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   553
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   554
    public static final int icSigRedTRCTag        = 0x72545243;    /* 'rTRC' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   555
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   556
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   557
     * ICC Profile Tag Signature: 'scrd'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   558
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   559
    public static final int icSigScreeningDescTag = 0x73637264;    /* 'scrd' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   560
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   561
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   562
     * ICC Profile Tag Signature: 'scrn'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   563
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   564
    public static final int icSigScreeningTag     = 0x7363726E;    /* 'scrn' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   565
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   566
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   567
     * ICC Profile Tag Signature: 'tech'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   568
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   569
    public static final int icSigTechnologyTag    = 0x74656368;    /* 'tech' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   570
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   571
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   572
     * ICC Profile Tag Signature: 'bfd '.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   573
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   574
    public static final int icSigUcrBgTag         = 0x62666420;    /* 'bfd ' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   575
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   576
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   577
     * ICC Profile Tag Signature: 'vued'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   578
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   579
    public static final int icSigViewingCondDescTag = 0x76756564;  /* 'vued' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   580
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   581
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   582
     * ICC Profile Tag Signature: 'view'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   583
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   584
    public static final int icSigViewingConditionsTag = 0x76696577;/* 'view' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   585
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   586
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   587
     * ICC Profile Tag Signature: 'chrm'.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   588
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   589
    public static final int icSigChromaticityTag  = 0x6368726d;    /* 'chrm' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   590
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   591
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   592
     * ICC Profile Tag Signature: 'chad'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   593
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   594
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   595
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   596
    public static final int icSigChromaticAdaptationTag = 0x63686164;/* 'chad' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   597
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   598
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   599
     * ICC Profile Tag Signature: 'clro'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   600
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   601
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   602
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   603
    public static final int icSigColorantOrderTag = 0x636C726F;    /* 'clro' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   604
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   605
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   606
     * ICC Profile Tag Signature: 'clrt'.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   607
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   608
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   609
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   610
    public static final int icSigColorantTableTag = 0x636C7274;    /* 'clrt' */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   611
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   612
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   613
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   614
     * ICC Profile Header Location: profile size in bytes.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   615
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   616
    public static final int icHdrSize         = 0;  /* Profile size in bytes */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   617
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   618
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   619
     * ICC Profile Header Location: CMM for this profile.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   620
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   621
    public static final int icHdrCmmId        = 4;  /* CMM for this profile */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   622
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   623
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   624
     * ICC Profile Header Location: format version number.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   625
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   626
    public static final int icHdrVersion      = 8;  /* Format version number */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   627
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   628
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   629
     * ICC Profile Header Location: type of profile.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   630
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   631
    public static final int icHdrDeviceClass  = 12; /* Type of profile */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   632
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   633
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   634
     * ICC Profile Header Location: color space of data.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   635
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   636
    public static final int icHdrColorSpace   = 16; /* Color space of data */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   637
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   638
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   639
     * ICC Profile Header Location: PCS - XYZ or Lab only.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   640
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   641
    public static final int icHdrPcs          = 20; /* PCS - XYZ or Lab only */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   642
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   643
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   644
     * ICC Profile Header Location: date profile was created.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   645
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   646
    public static final int icHdrDate       = 24; /* Date profile was created */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   647
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   648
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   649
     * ICC Profile Header Location: icMagicNumber.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   650
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   651
    public static final int icHdrMagic        = 36; /* icMagicNumber */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   652
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   653
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   654
     * ICC Profile Header Location: primary platform.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   655
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   656
    public static final int icHdrPlatform     = 40; /* Primary Platform */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   657
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   658
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   659
     * ICC Profile Header Location: various bit settings.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   660
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   661
    public static final int icHdrFlags        = 44; /* Various bit settings */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   662
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   663
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   664
     * ICC Profile Header Location: device manufacturer.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   665
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   666
    public static final int icHdrManufacturer = 48; /* Device manufacturer */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   667
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   668
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   669
     * ICC Profile Header Location: device model number.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   670
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   671
    public static final int icHdrModel        = 52; /* Device model number */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   672
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   673
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   674
     * ICC Profile Header Location: device attributes.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   675
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   676
    public static final int icHdrAttributes   = 56; /* Device attributes */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   677
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   678
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   679
     * ICC Profile Header Location: rendering intent.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   680
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   681
    public static final int icHdrRenderingIntent = 64; /* Rendering intent */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   682
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   683
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   684
     * ICC Profile Header Location: profile illuminant.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   685
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   686
    public static final int icHdrIlluminant   = 68; /* Profile illuminant */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   687
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   688
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   689
     * ICC Profile Header Location: profile creator.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   690
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   691
    public static final int icHdrCreator      = 80; /* Profile creator */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   692
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   693
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   694
     * ICC Profile Header Location: profile's ID.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   695
     *
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   696
     * @since 1.5
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   697
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   698
    public static final int icHdrProfileID = 84; /* Profile's ID */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   699
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   700
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   701
    /**
26749
b6598aa90114 8055326: Fix typos in client-related packages
serb
parents: 26357
diff changeset
   702
     * ICC Profile Constant: tag type signature.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   703
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   704
    public static final int icTagType          = 0;    /* tag type signature */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   705
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   706
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   707
     * ICC Profile Constant: reserved.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   708
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   709
    public static final int icTagReserved      = 4;    /* reserved */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   710
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   711
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   712
     * ICC Profile Constant: curveType count.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   713
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   714
    public static final int icCurveCount       = 8;    /* curveType count */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   715
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   716
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   717
     * ICC Profile Constant: curveType data.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   718
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   719
    public static final int icCurveData        = 12;   /* curveType data */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   720
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   721
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   722
     * ICC Profile Constant: XYZNumber X.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   723
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   724
    public static final int icXYZNumberX       = 8;    /* XYZNumber X */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   725
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   726
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   727
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   728
     * Constructs an {@code ICC_Profile} object with a given ID.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   729
     */
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   730
    ICC_Profile(Profile p) {
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   731
        this.cmmProfile = p;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   732
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   733
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   734
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   735
     * Constructs an {@code ICC_Profile} object whose loading will be deferred.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   736
     * The ID will be 0 until the profile is loaded.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   737
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   738
    ICC_Profile(ProfileDeferralInfo pdi) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   739
        this.deferralInfo = pdi;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   740
        this.profileActivator = new ProfileActivator() {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   741
            public void activate() throws ProfileDataException {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   742
                activateDeferredProfile();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   743
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   744
        };
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   745
        ProfileDeferralMgr.registerDeferral(this.profileActivator);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   746
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   747
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   748
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   749
     * Frees the resources associated with an {@code ICC_Profile} object.
44534
a076dffbc2c1 8165641: Deprecate Object.finalize
rriggs
parents: 35667
diff changeset
   750
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   751
     * @deprecated The {@code finalize} method has been deprecated. Subclasses
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   752
     *         that override {@code finalize} in order to perform cleanup should
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   753
     *         be modified to use alternative cleanup mechanisms and to remove
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   754
     *         the overriding {@code finalize} method. When overriding the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   755
     *         {@code finalize} method, its implementation must explicitly
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   756
     *         ensure that {@code super.finalize()} is invoked as described in
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   757
     *         {@link Object#finalize}. See the specification for {@link
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   758
     *         Object#finalize()} for further information about migration
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   759
     *         options.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   760
     */
44534
a076dffbc2c1 8165641: Deprecate Object.finalize
rriggs
parents: 35667
diff changeset
   761
    @Deprecated(since="9")
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   762
    protected void finalize () {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   763
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   764
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   765
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   766
     * Constructs an {@code ICC_Profile} object corresponding to the data in a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   767
     * byte array. Throws an {@code IllegalArgumentException} if the data does
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   768
     * not correspond to a valid ICC Profile.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   769
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   770
     * @param  data the specified ICC Profile data
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   771
     * @return an {@code ICC_Profile} object corresponding to the data in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   772
     *         specified {@code data} array
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   773
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   774
    public static ICC_Profile getInstance(byte[] data) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   775
    ICC_Profile thisProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   776
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   777
        Profile p = null;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   778
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   779
        if (ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   780
            ProfileDeferralMgr.activateProfiles();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   781
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   782
18113
acd987685b67 8013430: REGRESSION: closed/java/awt/color/ICC_Profile/LoadProfileTest/LoadProfileTest.java fails with java.io.StreamCorruptedException: invalid type code: EE since 8b87
bae
parents: 16734
diff changeset
   783
        ProfileDataVerifier.verify(data);
acd987685b67 8013430: REGRESSION: closed/java/awt/color/ICC_Profile/LoadProfileTest/LoadProfileTest.java fails with java.io.StreamCorruptedException: invalid type code: EE since 8b87
bae
parents: 16734
diff changeset
   784
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   785
        try {
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   786
            p = CMSManager.getModule().loadProfile(data);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   787
        } catch (CMMException c) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   788
            throw new IllegalArgumentException("Invalid ICC Profile Data");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   789
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   790
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   791
        try {
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   792
            if ((getColorSpaceType (p) == ColorSpace.TYPE_GRAY) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   793
                (getData (p, icSigMediaWhitePointTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   794
                (getData (p, icSigGrayTRCTag) != null)) {
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   795
                thisProfile = new ICC_ProfileGray (p);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   796
            }
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   797
            else if ((getColorSpaceType (p) == ColorSpace.TYPE_RGB) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   798
                (getData (p, icSigMediaWhitePointTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   799
                (getData (p, icSigRedColorantTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   800
                (getData (p, icSigGreenColorantTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   801
                (getData (p, icSigBlueColorantTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   802
                (getData (p, icSigRedTRCTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   803
                (getData (p, icSigGreenTRCTag) != null) &&
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   804
                (getData (p, icSigBlueTRCTag) != null)) {
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   805
                thisProfile = new ICC_ProfileRGB (p);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   806
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   807
            else {
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   808
                thisProfile = new ICC_Profile (p);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   809
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   810
        } catch (CMMException c) {
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
   811
            thisProfile = new ICC_Profile (p);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   812
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   813
        return thisProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   814
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   815
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   816
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   817
     * Constructs an {@code ICC_Profile} corresponding to one of the specific
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   818
     * color spaces defined by the {@code ColorSpace} class (for example
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   819
     * {@code CS_sRGB}). Throws an {@code IllegalArgumentException} if cspace is
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   820
     * not one of the defined color spaces.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   821
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   822
     * @param  cspace the type of color space to create a profile for. The
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   823
     *         specified type is one of the color space constants defined in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   824
     *         {@code ColorSpace} class.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   825
     * @return an {@code ICC_Profile} object corresponding to the specified
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   826
     *         {@code ColorSpace} type
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   827
     * @throws IllegalArgumentException If {@code cspace} is not one of the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   828
     *         predefined color space types
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   829
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   830
    public static ICC_Profile getInstance (int cspace) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   831
        ICC_Profile thisProfile = null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   832
        String fileName;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   833
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   834
        switch (cspace) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   835
        case ColorSpace.CS_sRGB:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   836
            synchronized(ICC_Profile.class) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   837
                if (sRGBprofile == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   838
                    /*
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   839
                     * Deferral is only used for standard profiles.
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   840
                     * Enabling the appropriate access privileges is handled
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   841
                     * at a lower level.
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   842
                     */
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   843
                    ProfileDeferralInfo pInfo =
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   844
                        new ProfileDeferralInfo("sRGB.pf",
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   845
                                                ColorSpace.TYPE_RGB, 3,
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   846
                                                CLASS_DISPLAY);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   847
                    sRGBprofile = getDeferredInstance(pInfo);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   848
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   849
                thisProfile = sRGBprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   850
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   851
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   852
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   853
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   854
        case ColorSpace.CS_CIEXYZ:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   855
            synchronized(ICC_Profile.class) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   856
                if (XYZprofile == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   857
                    ProfileDeferralInfo pInfo =
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   858
                        new ProfileDeferralInfo("CIEXYZ.pf",
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   859
                                                ColorSpace.TYPE_XYZ, 3,
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   860
                                                CLASS_DISPLAY);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   861
                    XYZprofile = getDeferredInstance(pInfo);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   862
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   863
                thisProfile = XYZprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   864
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   865
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   866
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   867
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   868
        case ColorSpace.CS_PYCC:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   869
            synchronized(ICC_Profile.class) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   870
                if (PYCCprofile == null) {
8552
f36470084574 7016707: Remove the BootClassLoaderHook for jkernel support
mchung
parents: 8197
diff changeset
   871
                    if (standardProfileExists("PYCC.pf"))
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
   872
                    {
3009
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   873
                        ProfileDeferralInfo pInfo =
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   874
                            new ProfileDeferralInfo("PYCC.pf",
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   875
                                                    ColorSpace.TYPE_3CLR, 3,
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   876
                                                    CLASS_DISPLAY);
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   877
                        PYCCprofile = getDeferredInstance(pInfo);
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   878
                    } else {
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   879
                        throw new IllegalArgumentException(
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   880
                                "Can't load standard profile: PYCC.pf");
de653b2cab31 4893408: JPEGReader throws IllegalArgException when setting the destination to BYTE_GRAY
bae
parents: 2379
diff changeset
   881
                    }
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   882
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   883
                thisProfile = PYCCprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   884
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   885
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   886
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   887
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   888
        case ColorSpace.CS_GRAY:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   889
            synchronized(ICC_Profile.class) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   890
                if (GRAYprofile == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   891
                    ProfileDeferralInfo pInfo =
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   892
                        new ProfileDeferralInfo("GRAY.pf",
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   893
                                                ColorSpace.TYPE_GRAY, 1,
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   894
                                                CLASS_DISPLAY);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   895
                    GRAYprofile = getDeferredInstance(pInfo);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   896
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   897
                thisProfile = GRAYprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   898
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   899
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   900
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   901
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   902
        case ColorSpace.CS_LINEAR_RGB:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   903
            synchronized(ICC_Profile.class) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   904
                if (LINEAR_RGBprofile == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   905
                    ProfileDeferralInfo pInfo =
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   906
                        new ProfileDeferralInfo("LINEAR_RGB.pf",
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   907
                                                ColorSpace.TYPE_RGB, 3,
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   908
                                                CLASS_DISPLAY);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
   909
                    LINEAR_RGBprofile = getDeferredInstance(pInfo);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   910
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   911
                thisProfile = LINEAR_RGBprofile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   912
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   913
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   914
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   915
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   916
        default:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   917
            throw new IllegalArgumentException("Unknown color space");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   918
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   919
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   920
        return thisProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   921
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   922
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   923
    /**
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   924
     * This method asserts system privileges, so is used only for the standard
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   925
     * profiles.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   926
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   927
    private static ICC_Profile getStandardProfile(final String name) {
11813
643f5bef6ab4 7144475: fix some warnings in java.awt, javax.print.attribute.standard, and sun.beans.infos
chegar
parents: 9784
diff changeset
   928
        return AccessController.doPrivileged(
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   929
                new PrivilegedAction<ICC_Profile>() {
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   930
                    public ICC_Profile run() {
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   931
                        ICC_Profile p = null;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   932
                        try {
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   933
                            p = getInstance(name);
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   934
                        } catch (IOException ex) {
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   935
                            throw new IllegalArgumentException(
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   936
                                    "Can't load standard profile: " + name);
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   937
                        }
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   938
                        return p;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   939
                    }
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   940
                });
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   941
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   942
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   943
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   944
     * Constructs an {@code ICC_Profile} corresponding to the data in a file.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   945
     * {@code fileName} may be an absolute or a relative file specification.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   946
     * Relative file names are looked for in several places: first, relative to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   947
     * any directories specified by the {@code java.iccprofile.path} property;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   948
     * second, relative to any directories specified by the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   949
     * {@code java.class.path} property; finally, in a directory used to store
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   950
     * profiles always available, such as the profile for sRGB. Built-in
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   951
     * profiles use {@code .pf} as the file name extension for profiles, e.g.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   952
     * {@code sRGB.pf}. This method throws an {@code IOException} if the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   953
     * specified file cannot be opened or if an I/O error occurs while reading
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   954
     * the file. It throws an {@code IllegalArgumentException} if the file does
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   955
     * not contain valid ICC Profile data.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   956
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   957
     * @param  fileName the file that contains the data for the profile
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   958
     * @return an {@code ICC_Profile} object corresponding to the data in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   959
     *         specified file
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   960
     * @throws IOException If the specified file cannot be opened or an I/O
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   961
     *         error occurs while reading the file
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   962
     * @throws IllegalArgumentException If the file does not contain valid ICC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   963
     *         Profile data
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   964
     * @throws SecurityException If a security manager is installed and it does
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   965
     *         not permit read access to the given file
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   966
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   967
    public static ICC_Profile getInstance(String fileName) throws IOException {
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
   968
        ICC_Profile thisProfile;
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   969
        InputStream is = null;
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
   970
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   971
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
   972
        File f = getProfileFile(fileName);
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
   973
        if (f != null) {
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   974
            is = new FileInputStream(f);
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   975
        } else {
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   976
            is = getStandardProfileInputStream(fileName);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   977
        }
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   978
        if (is == null) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   979
            throw new IOException("Cannot open file " + fileName);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   980
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   981
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   982
        thisProfile = getInstance(is);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   983
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
   984
        is.close();    /* close the file */
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   985
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   986
        return thisProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   987
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   988
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   989
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   990
     * Constructs an {@code ICC_Profile} corresponding to the data in an
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   991
     * {@code InputStream}. This method throws an
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   992
     * {@code IllegalArgumentException} if the stream does not contain valid ICC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   993
     * Profile data. It throws an {@code IOException} if an I/O error occurs
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   994
     * while reading the stream.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
   995
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   996
     * @param  s the input stream from which to read the profile data
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   997
     * @return an {@code ICC_Profile} object corresponding to the data in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   998
     *         specified {@code InputStream}
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
   999
     * @throws IOException If an I/O error occurs while reading the stream
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1000
     * @throws IllegalArgumentException If the stream does not contain valid ICC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1001
     *         Profile data
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1002
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1003
    public static ICC_Profile getInstance(InputStream s) throws IOException {
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1004
    byte[] profileData;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1005
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1006
        if (s instanceof ProfileDeferralInfo) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1007
            /* hack to detect profiles whose loading can be deferred */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1008
            return getDeferredInstance((ProfileDeferralInfo) s);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1009
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1010
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1011
        if ((profileData = getProfileDataFromStream(s)) == null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1012
            throw new IllegalArgumentException("Invalid ICC Profile Data");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1013
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1014
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1015
        return getInstance(profileData);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1016
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1017
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1018
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1019
    static byte[] getProfileDataFromStream(InputStream s) throws IOException {
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1020
    byte[] profileData;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1021
    int profileSize;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1022
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1023
        byte[] header = new byte[128];
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1024
        int bytestoread = 128;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1025
        int bytesread = 0;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1026
        int n;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1027
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1028
        while (bytestoread != 0) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1029
            if ((n = s.read(header, bytesread, bytestoread)) < 0) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1030
                return null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1031
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1032
            bytesread += n;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1033
            bytestoread -= n;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1034
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1035
        if (header[36] != 0x61 || header[37] != 0x63 ||
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1036
            header[38] != 0x73 || header[39] != 0x70) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1037
            return null;   /* not a valid profile */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1038
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1039
        profileSize = ((header[0] & 0xff) << 24) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1040
                      ((header[1] & 0xff) << 16) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1041
                      ((header[2] & 0xff) <<  8) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1042
                       (header[3] & 0xff);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1043
        profileData = new byte[profileSize];
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1044
        System.arraycopy(header, 0, profileData, 0, 128);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1045
        bytestoread = profileSize - 128;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1046
        bytesread = 128;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1047
        while (bytestoread != 0) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1048
            if ((n = s.read(profileData, bytesread, bytestoread)) < 0) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1049
                return null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1050
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1051
            bytesread += n;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1052
            bytestoread -= n;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1053
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1054
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1055
        return profileData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1056
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1057
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1058
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1059
     * Constructs an {@code ICC_Profile} for which the actual loading of the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1060
     * profile data from a file and the initialization of the CMM should be
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1061
     * deferred as long as possible. Deferral is only used for standard
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1062
     * profiles. If deferring is disabled, then getStandardProfile() ensures
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1063
     * that all of the appropriate access privileges are granted when loading
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1064
     * this profile. If deferring is enabled, then the deferred activation code
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1065
     * will take care of access privileges.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1066
     *
44655
06871a50a4b5 8177461: Wrong references are used in the javadoc in the java.desktop module
serb
parents: 35667
diff changeset
  1067
     * @see #activateDeferredProfile()
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1068
     */
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1069
    static ICC_Profile getDeferredInstance(ProfileDeferralInfo pdi) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1070
        if (!ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1071
            return getStandardProfile(pdi.filename);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1072
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1073
        if (pdi.colorSpaceType == ColorSpace.TYPE_RGB) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1074
            return new ICC_ProfileRGB(pdi);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1075
        } else if (pdi.colorSpaceType == ColorSpace.TYPE_GRAY) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1076
            return new ICC_ProfileGray(pdi);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1077
        } else {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1078
            return new ICC_Profile(pdi);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1079
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1080
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1081
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1082
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1083
    void activateDeferredProfile() throws ProfileDataException {
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1084
        byte[] profileData;
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1085
        final String fileName = deferralInfo.filename;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1086
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1087
        profileActivator = null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1088
        deferralInfo = null;
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1089
        InputStream is = getStandardProfileInputStream(fileName);
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1090
        if (is == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1091
            throw new ProfileDataException("Cannot open file " + fileName);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1092
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1093
        try {
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1094
            profileData = getProfileDataFromStream(is);
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1095
            is.close();    /* close the file */
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1096
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1097
        catch (IOException e) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1098
            ProfileDataException pde = new
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1099
                ProfileDataException("Invalid ICC Profile Data" + fileName);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1100
            pde.initCause(e);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1101
            throw pde;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1102
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1103
        if (profileData == null) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1104
            throw new ProfileDataException("Invalid ICC Profile Data" +
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1105
                fileName);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1106
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1107
        try {
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1108
            cmmProfile = CMSManager.getModule().loadProfile(profileData);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1109
        } catch (CMMException c) {
2379
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1110
            ProfileDataException pde = new
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1111
                ProfileDataException("Invalid ICC Profile Data" + fileName);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1112
            pde.initCause(c);
544856cfd82f 6793818: JpegImageReader is too greedy creating color profiles
bae
parents: 715
diff changeset
  1113
            throw pde;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1114
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1115
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1116
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1117
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1118
     * Returns profile major version.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1119
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1120
     * @return the major version of the profile
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1121
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1122
    public int getMajorVersion() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1123
    byte[] theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1124
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1125
        theHeader = getData(icSigHead); /* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1126
                                           profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1127
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1128
        return (int) theHeader[8];
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1129
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1130
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1131
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1132
     * Returns profile minor version.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1133
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1134
     * @return the minor version of the profile
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1135
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1136
    public int getMinorVersion() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1137
    byte[] theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1138
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1139
        theHeader = getData(icSigHead); /* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1140
                                           profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1141
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1142
        return (int) theHeader[9];
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1143
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1144
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1145
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1146
     * Returns the profile class.
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1147
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1148
     * @return one of the predefined profile class constants
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1149
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1150
    public int getProfileClass() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1151
    byte[] theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1152
    int theClassSig, theClass;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1153
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1154
        if (deferralInfo != null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1155
            return deferralInfo.profileClass; /* Need to have this info for
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1156
                                                 ICC_ColorSpace without
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1157
                                                 causing a deferred profile
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1158
                                                 to be loaded */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1159
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1160
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1161
        theHeader = getData(icSigHead);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1162
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1163
        theClassSig = intFromBigEndian (theHeader, icHdrDeviceClass);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1164
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1165
        switch (theClassSig) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1166
        case icSigInputClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1167
            theClass = CLASS_INPUT;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1168
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1169
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1170
        case icSigDisplayClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1171
            theClass = CLASS_DISPLAY;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1172
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1173
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1174
        case icSigOutputClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1175
            theClass = CLASS_OUTPUT;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1176
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1177
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1178
        case icSigLinkClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1179
            theClass = CLASS_DEVICELINK;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1180
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1181
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1182
        case icSigColorSpaceClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1183
            theClass = CLASS_COLORSPACECONVERSION;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1184
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1185
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1186
        case icSigAbstractClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1187
            theClass = CLASS_ABSTRACT;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1188
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1189
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1190
        case icSigNamedColorClass:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1191
            theClass = CLASS_NAMEDCOLOR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1192
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1193
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1194
        default:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1195
            throw new IllegalArgumentException("Unknown profile class");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1196
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1197
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1198
        return theClass;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1199
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1200
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1201
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1202
     * Returns the color space type. Returns one of the color space type
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1203
     * constants defined by the {@code ColorSpace} class. This is the "input"
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1204
     * color space of the profile. The type defines the number of components of
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1205
     * the color space and the interpretation, e.g. {@code TYPE_RGB} identifies
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1206
     * a color space with three components - red, green, and blue. It does not
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1207
     * define the particular color characteristics of the space, e.g. the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1208
     * chromaticities of the primaries.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1209
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1210
     * @return one of the color space type constants defined in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1211
     *         {@code ColorSpace} class
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1212
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1213
    public int getColorSpaceType() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1214
        if (deferralInfo != null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1215
            return deferralInfo.colorSpaceType; /* Need to have this info for
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1216
                                                   ICC_ColorSpace without
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1217
                                                   causing a deferred profile
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1218
                                                   to be loaded */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1219
        }
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1220
        return    getColorSpaceType(cmmProfile);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1221
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1222
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1223
    static int getColorSpaceType(Profile p) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1224
    byte[] theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1225
    int theColorSpaceSig, theColorSpace;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1226
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1227
        theHeader = getData(p, icSigHead);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1228
        theColorSpaceSig = intFromBigEndian(theHeader, icHdrColorSpace);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1229
        theColorSpace = iccCStoJCS (theColorSpaceSig);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1230
        return theColorSpace;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1231
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1232
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1233
    /**
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1234
     * Returns the color space type of the Profile Connection Space (PCS).
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1235
     * Returns one of the color space type constants defined by the ColorSpace
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1236
     * class. This is the "output" color space of the profile. For an input,
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1237
     * display, or output profile useful for tagging colors or images, this will
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1238
     * be either {@code TYPE_XYZ} or {@code TYPE_Lab} and should be interpreted
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1239
     * as the corresponding specific color space defined in the ICC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1240
     * specification. For a device link profile, this could be any of the color
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1241
     * space type constants.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1242
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1243
     * @return one of the color space type constants defined in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1244
     *         {@code ColorSpace} class
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1245
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1246
    public int getPCSType() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1247
        if (ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1248
            ProfileDeferralMgr.activateProfiles();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1249
        }
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1250
        return getPCSType(cmmProfile);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1251
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1252
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1253
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1254
    static int getPCSType(Profile p) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1255
    byte[] theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1256
    int thePCSSig, thePCS;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1257
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1258
        theHeader = getData(p, icSigHead);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1259
        thePCSSig = intFromBigEndian(theHeader, icHdrPcs);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1260
        thePCS = iccCStoJCS(thePCSSig);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1261
        return thePCS;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1262
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1263
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1264
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1265
     * Write this {@code ICC_Profile} to a file.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1266
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1267
     * @param  fileName the file to write the profile data to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1268
     * @throws IOException If the file cannot be opened for writing or an I/O
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1269
     *         error occurs while writing to the file
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1270
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1271
    public void write(String fileName) throws IOException {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1272
    FileOutputStream outputFile;
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1273
    byte[] profileData;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1274
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1275
        profileData = getData(); /* this will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1276
                                    profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1277
        outputFile = new FileOutputStream(fileName);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1278
        outputFile.write(profileData);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1279
        outputFile.close ();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1280
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1281
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1282
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1283
     * Write this {@code ICC_Profile} to an {@code OutputStream}.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1284
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1285
     * @param  s the stream to write the profile data to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1286
     * @throws IOException If an I/O error occurs while writing to the stream
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1287
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1288
    public void write(OutputStream s) throws IOException {
52248
2e330da7cbf4 8211300: Convert C-style array declarations in JDK client code
tvaleev
parents: 47216
diff changeset
  1289
    byte[] profileData;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1290
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1291
        profileData = getData(); /* this will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1292
                                    profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1293
        s.write(profileData);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1294
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1295
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1296
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1297
     * Returns a byte array corresponding to the data of this
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1298
     * {@code ICC_Profile}.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1299
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1300
     * @return a byte array that contains the profile data
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1301
     * @see #setData(int, byte[])
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1302
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1303
    public byte[] getData() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1304
    int profileSize;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1305
    byte[] profileData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1306
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1307
        if (ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1308
            ProfileDeferralMgr.activateProfiles();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1309
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1310
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1311
        PCMM mdl = CMSManager.getModule();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1312
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1313
        /* get the number of bytes needed for this profile */
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1314
        profileSize = mdl.getProfileSize(cmmProfile);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1315
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1316
        profileData = new byte [profileSize];
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1317
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1318
        /* get the data for the profile */
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1319
        mdl.getProfileData(cmmProfile, profileData);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1320
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1321
        return profileData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1322
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1323
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1324
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1325
     * Returns a particular tagged data element from the profile as a byte
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1326
     * array. Elements are identified by signatures as defined in the ICC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1327
     * specification. The signature icSigHead can be used to get the header.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1328
     * This method is useful for advanced applets or applications which need to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1329
     * access profile data directly.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1330
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1331
     * @param  tagSignature the ICC tag signature for the data element you want
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1332
     *         to get
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1333
     * @return a byte array that contains the tagged data element. Returns
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1334
     *         {@code null} if the specified tag doesn't exist.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1335
     * @see #setData(int, byte[])
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1336
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1337
    public byte[] getData(int tagSignature) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1338
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1339
        if (ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1340
            ProfileDeferralMgr.activateProfiles();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1341
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1342
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1343
        return getData(cmmProfile, tagSignature);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1344
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1345
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1346
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1347
    static byte[] getData(Profile p, int tagSignature) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1348
    int tagSize;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1349
    byte[] tagData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1350
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1351
        try {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1352
            PCMM mdl = CMSManager.getModule();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1353
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1354
            /* get the number of bytes needed for this tag */
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1355
            tagSize = mdl.getTagSize(p, tagSignature);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1356
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1357
            tagData = new byte[tagSize]; /* get an array for the tag */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1358
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1359
            /* get the tag's data */
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1360
            mdl.getTagData(p, tagSignature, tagData);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1361
        } catch(CMMException c) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1362
            tagData = null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1363
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1364
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1365
        return tagData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1366
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1367
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1368
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1369
     * Sets a particular tagged data element in the profile from a byte array.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1370
     * The array should contain data in a format, corresponded to the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1371
     * {@code tagSignature} as defined in the ICC specification, section 10.
9784
3a0ebf0b855d 7042594: 3 testis api/java_awt/Color/ICC_ProfileRGB/index.html fail against RI b138 OEL6x64.
bae
parents: 9035
diff changeset
  1372
     * This method is useful for advanced applets or applications which need to
3a0ebf0b855d 7042594: 3 testis api/java_awt/Color/ICC_ProfileRGB/index.html fail against RI b138 OEL6x64.
bae
parents: 9035
diff changeset
  1373
     * access profile data directly.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1374
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1375
     * @param  tagSignature the ICC tag signature for the data element you want
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1376
     *         to set
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1377
     * @param  tagData the data to set for the specified tag signature
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1378
     * @throws IllegalArgumentException if {@code tagSignature} is not a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1379
     *         signature as defined in the ICC specification.
9784
3a0ebf0b855d 7042594: 3 testis api/java_awt/Color/ICC_ProfileRGB/index.html fail against RI b138 OEL6x64.
bae
parents: 9035
diff changeset
  1380
     * @throws IllegalArgumentException if a content of the {@code tagData}
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1381
     *         array can not be interpreted as valid tag data, corresponding to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1382
     *         the {@code tagSignature}
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1383
     * @see #getData
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1384
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1385
    public void setData(int tagSignature, byte[] tagData) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1386
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1387
        if (ProfileDeferralMgr.deferring) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1388
            ProfileDeferralMgr.activateProfiles();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1389
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1390
19783
88ce9a76c992 7043064: sun/java2d/cmm/ tests failed against RI b141 & b138-nightly
bae
parents: 18113
diff changeset
  1391
        CMSManager.getModule().setTagData(cmmProfile, tagSignature, tagData);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1392
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1393
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1394
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1395
     * Sets the rendering intent of the profile. This is used to select the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1396
     * proper transform from a profile that has multiple transforms.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1397
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1398
    void setRenderingIntent(int renderingIntent) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1399
        byte[] theHeader = getData(icSigHead);/* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1400
                                                 profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1401
        intToBigEndian (renderingIntent, theHeader, icHdrRenderingIntent);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1402
                                                 /* set the rendering intent */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1403
        setData (icSigHead, theHeader);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1404
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1405
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1406
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1407
     * Returns the rendering intent of the profile. This is used to select the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1408
     * proper transform from a profile that has multiple transforms. It is
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1409
     * typically set in a source profile to select a transform from an output
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1410
     * profile.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1411
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1412
    int getRenderingIntent() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1413
        byte[] theHeader = getData(icSigHead);/* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1414
                                                 profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1415
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1416
        int renderingIntent = intFromBigEndian(theHeader, icHdrRenderingIntent);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1417
                                                 /* set the rendering intent */
14643
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1418
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1419
        /* According to ICC spec, only the least-significant 16 bits shall be
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1420
         * used to encode the rendering intent. The most significant 16 bits
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1421
         * shall be set to zero. Thus, we are ignoring two most significant
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1422
         * bytes here.
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1423
         *
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1424
         *  See http://www.color.org/ICC1v42_2006-05.pdf, section 7.2.15.
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1425
         */
be37da9c57d7 7064516: ImageIO.read() fails to load an image
bae
parents: 12813
diff changeset
  1426
        return (0xffff & renderingIntent);
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1427
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1428
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1429
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1430
     * Returns the number of color components in the "input" color space of this
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1431
     * profile. For example if the color space type of this profile is
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1432
     * {@code TYPE_RGB}, then this method will return 3.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1433
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1434
     * @return the number of color components in the profile's input color space
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1435
     * @throws ProfileDataException if color space is in the profile is invalid
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1436
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1437
    public int getNumComponents() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1438
    byte[]    theHeader;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1439
    int    theColorSpaceSig, theNumComponents;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1440
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1441
        if (deferralInfo != null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1442
            return deferralInfo.numComponents; /* Need to have this info for
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1443
                                                  ICC_ColorSpace without
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1444
                                                  causing a deferred profile
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1445
                                                  to be loaded */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1446
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1447
        theHeader = getData(icSigHead);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1448
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1449
        theColorSpaceSig = intFromBigEndian (theHeader, icHdrColorSpace);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1450
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1451
        switch (theColorSpaceSig) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1452
        case icSigGrayData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1453
            theNumComponents = 1;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1454
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1455
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1456
        case icSigSpace2CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1457
            theNumComponents = 2;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1458
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1459
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1460
        case icSigXYZData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1461
        case icSigLabData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1462
        case icSigLuvData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1463
        case icSigYCbCrData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1464
        case icSigYxyData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1465
        case icSigRgbData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1466
        case icSigHsvData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1467
        case icSigHlsData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1468
        case icSigCmyData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1469
        case icSigSpace3CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1470
            theNumComponents = 3;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1471
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1472
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1473
        case icSigCmykData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1474
        case icSigSpace4CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1475
            theNumComponents = 4;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1476
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1477
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1478
        case icSigSpace5CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1479
            theNumComponents = 5;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1480
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1481
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1482
        case icSigSpace6CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1483
            theNumComponents = 6;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1484
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1485
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1486
        case icSigSpace7CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1487
            theNumComponents = 7;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1488
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1489
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1490
        case icSigSpace8CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1491
            theNumComponents = 8;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1492
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1493
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1494
        case icSigSpace9CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1495
            theNumComponents = 9;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1496
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1497
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1498
        case icSigSpaceACLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1499
            theNumComponents = 10;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1500
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1501
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1502
        case icSigSpaceBCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1503
            theNumComponents = 11;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1504
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1505
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1506
        case icSigSpaceCCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1507
            theNumComponents = 12;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1508
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1509
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1510
        case icSigSpaceDCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1511
            theNumComponents = 13;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1512
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1513
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1514
        case icSigSpaceECLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1515
            theNumComponents = 14;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1516
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1517
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1518
        case icSigSpaceFCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1519
            theNumComponents = 15;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1520
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1521
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1522
        default:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1523
            throw new ProfileDataException ("invalid ICC color space");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1524
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1525
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1526
        return theNumComponents;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1527
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1528
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1529
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1530
     * Returns a float array of length 3 containing the X, Y, and Z components
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1531
     * of the mediaWhitePointTag in the ICC profile.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1532
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1533
    float[] getMediaWhitePoint() {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1534
        return getXYZTag(icSigMediaWhitePointTag);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1535
                                           /* get the media white point tag */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1536
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1537
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1538
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1539
     * Returns a float array of length 3 containing the X, Y, and Z components
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1540
     * encoded in an XYZType tag.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1541
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1542
    float[] getXYZTag(int theTagSignature) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1543
    byte[] theData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1544
    float[] theXYZNumber;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1545
    int i1, i2, theS15Fixed16;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1546
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1547
        theData = getData(theTagSignature); /* get the tag data */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1548
                                            /* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1549
                                               profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1550
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1551
        theXYZNumber = new float [3];        /* array to return */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1552
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1553
        /* convert s15Fixed16Number to float */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1554
        for (i1 = 0, i2 = icXYZNumberX; i1 < 3; i1++, i2 += 4) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1555
            theS15Fixed16 = intFromBigEndian(theData, i2);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1556
            theXYZNumber [i1] = ((float) theS15Fixed16) / 65536.0f;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1557
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1558
        return theXYZNumber;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1559
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1560
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1561
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1562
     * Returns a gamma value representing a tone reproduction curve (TRC). If
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1563
     * the profile represents the TRC as a table rather than a single gamma
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1564
     * value, then an exception is thrown. In this case the actual table can be
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1565
     * obtained via {@link #getTRC}. {@code theTagSignature} should be one of
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1566
     * {@code icSigGrayTRCTag}, {@code icSigRedTRCTag},
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1567
     * {@code icSigGreenTRCTag}, or {@code icSigBlueTRCTag}.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1568
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1569
     * @return the gamma value as a float
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1570
     * @throws ProfileDataException if the profile does not specify the TRC as a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1571
     *         single gamma value
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1572
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1573
    float getGamma(int theTagSignature) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1574
    byte[] theTRCData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1575
    float theGamma;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1576
    int theU8Fixed8;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1577
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1578
        theTRCData = getData(theTagSignature); /* get the TRC */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1579
                                               /* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1580
                                                  profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1581
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1582
        if (intFromBigEndian (theTRCData, icCurveCount) != 1) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1583
            throw new ProfileDataException ("TRC is not a gamma");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1584
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1585
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1586
        /* convert u8Fixed8 to float */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1587
        theU8Fixed8 = (shortFromBigEndian(theTRCData, icCurveData)) & 0xffff;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1588
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1589
        theGamma = ((float) theU8Fixed8) / 256.0f;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1590
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1591
        return theGamma;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1592
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1593
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1594
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1595
     * Returns the TRC as an array of shorts. If the profile has specified the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1596
     * TRC as linear (gamma = 1.0) or as a simple gamma value, this method
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1597
     * throws an exception, and the {@link #getGamma} method should be used to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1598
     * get the gamma value. Otherwise the short array returned here represents a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1599
     * lookup table where the input Gray value is conceptually in the range
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1600
     * [0.0, 1.0]. Value 0.0 maps to array index 0 and value 1.0 maps to array
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1601
     * index length-1. Interpolation may be used to generate output values for
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1602
     * input values which do not map exactly to an index in the array. Output
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1603
     * values also map linearly to the range [0.0, 1.0]. Value 0.0 is
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1604
     * represented by an array value of 0x0000 and value 1.0 by 0xFFFF, i.e. the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1605
     * values are really unsigned short values, although they are returned in a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1606
     * short array. {@code theTagSignature} should be one of
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1607
     * {@code icSigGrayTRCTag}, {@code icSigRedTRCTag},
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1608
     * {@code icSigGreenTRCTag}, or {@code icSigBlueTRCTag}.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1609
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1610
     * @return a short array representing the TRC
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1611
     * @throws ProfileDataException if the profile does not specify the TRC as a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1612
     *         table
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1613
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1614
    short[] getTRC(int theTagSignature) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1615
    byte[] theTRCData;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1616
    short[] theTRC;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1617
    int i1, i2, nElements, theU8Fixed8;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1618
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1619
        theTRCData = getData(theTagSignature); /* get the TRC */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1620
                                               /* getData will activate deferred
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1621
                                                  profiles if necessary */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1622
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1623
        nElements = intFromBigEndian(theTRCData, icCurveCount);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1624
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1625
        if (nElements == 1) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1626
            throw new ProfileDataException("TRC is not a table");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1627
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1628
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1629
        /* make the short array */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1630
        theTRC = new short [nElements];
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1631
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1632
        for (i1 = 0, i2 = icCurveData; i1 < nElements; i1++, i2 += 2) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1633
            theTRC[i1] = shortFromBigEndian(theTRCData, i2);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1634
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1635
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1636
        return theTRC;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1637
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1638
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1639
    /**
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1640
     * Convert an ICC color space signature into a Java color space type.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1641
     */
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1642
    static int iccCStoJCS(int theColorSpaceSig) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1643
    int theColorSpace;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1644
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1645
        switch (theColorSpaceSig) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1646
        case icSigXYZData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1647
            theColorSpace = ColorSpace.TYPE_XYZ;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1648
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1649
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1650
        case icSigLabData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1651
            theColorSpace = ColorSpace.TYPE_Lab;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1652
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1653
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1654
        case icSigLuvData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1655
            theColorSpace = ColorSpace.TYPE_Luv;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1656
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1657
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1658
        case icSigYCbCrData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1659
            theColorSpace = ColorSpace.TYPE_YCbCr;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1660
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1661
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1662
        case icSigYxyData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1663
            theColorSpace = ColorSpace.TYPE_Yxy;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1664
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1665
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1666
        case icSigRgbData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1667
            theColorSpace = ColorSpace.TYPE_RGB;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1668
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1669
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1670
        case icSigGrayData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1671
            theColorSpace = ColorSpace.TYPE_GRAY;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1672
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1673
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1674
        case icSigHsvData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1675
            theColorSpace = ColorSpace.TYPE_HSV;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1676
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1677
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1678
        case icSigHlsData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1679
            theColorSpace = ColorSpace.TYPE_HLS;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1680
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1681
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1682
        case icSigCmykData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1683
            theColorSpace = ColorSpace.TYPE_CMYK;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1684
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1685
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1686
        case icSigCmyData:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1687
            theColorSpace = ColorSpace.TYPE_CMY;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1688
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1689
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1690
        case icSigSpace2CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1691
            theColorSpace = ColorSpace.TYPE_2CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1692
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1693
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1694
        case icSigSpace3CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1695
            theColorSpace = ColorSpace.TYPE_3CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1696
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1697
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1698
        case icSigSpace4CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1699
            theColorSpace = ColorSpace.TYPE_4CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1700
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1701
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1702
        case icSigSpace5CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1703
            theColorSpace = ColorSpace.TYPE_5CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1704
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1705
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1706
        case icSigSpace6CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1707
            theColorSpace = ColorSpace.TYPE_6CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1708
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1709
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1710
        case icSigSpace7CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1711
            theColorSpace = ColorSpace.TYPE_7CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1712
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1713
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1714
        case icSigSpace8CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1715
            theColorSpace = ColorSpace.TYPE_8CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1716
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1717
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1718
        case icSigSpace9CLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1719
            theColorSpace = ColorSpace.TYPE_9CLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1720
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1721
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1722
        case icSigSpaceACLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1723
            theColorSpace = ColorSpace.TYPE_ACLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1724
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1725
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1726
        case icSigSpaceBCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1727
            theColorSpace = ColorSpace.TYPE_BCLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1728
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1729
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1730
        case icSigSpaceCCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1731
            theColorSpace = ColorSpace.TYPE_CCLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1732
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1733
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1734
        case icSigSpaceDCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1735
            theColorSpace = ColorSpace.TYPE_DCLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1736
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1737
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1738
        case icSigSpaceECLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1739
            theColorSpace = ColorSpace.TYPE_ECLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1740
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1741
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1742
        case icSigSpaceFCLR:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1743
            theColorSpace = ColorSpace.TYPE_FCLR;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1744
            break;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1745
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1746
        default:
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1747
            throw new IllegalArgumentException ("Unknown color space");
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1748
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1749
        return theColorSpace;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1750
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1751
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1752
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1753
    static int intFromBigEndian(byte[] array, int index) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1754
        return (((array[index]   & 0xff) << 24) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1755
                ((array[index+1] & 0xff) << 16) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1756
                ((array[index+2] & 0xff) <<  8) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1757
                 (array[index+3] & 0xff));
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1758
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1759
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1760
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1761
    static void intToBigEndian(int value, byte[] array, int index) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1762
            array[index]   = (byte) (value >> 24);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1763
            array[index+1] = (byte) (value >> 16);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1764
            array[index+2] = (byte) (value >>  8);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1765
            array[index+3] = (byte) (value);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1766
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1767
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1768
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1769
    static short shortFromBigEndian(byte[] array, int index) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1770
        return (short) (((array[index]   & 0xff) << 8) |
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1771
                         (array[index+1] & 0xff));
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1772
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1773
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1774
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1775
    static void shortToBigEndian(short value, byte[] array, int index) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1776
            array[index]   = (byte) (value >> 8);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1777
            array[index+1] = (byte) (value);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1778
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1779
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1780
    /**
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1781
     * {@code fileName} may be an absolute or a relative file specification.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1782
     * Relative file names are looked for in several places: first, relative to
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1783
     * any directories specified by the {@code java.iccprofile.path} property;
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1784
     * second, relative to any directories specified by the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1785
     * {@code java.class.path}. The built-in profile files are now loaded as
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1786
     * resources, since they may not be individual disk files, and so this
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1787
     * method will not find these and on a {@code null} return, the caller needs
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1788
     * to try as resources. Built-in profiles use {@code .pf} as the file name
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1789
     * extension for profiles, e.g. {@code sRGB.pf}.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1790
     */
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1791
    private static File getProfileFile(String fileName) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1792
        String path, dir, fullPath;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1793
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1794
        File f = new File(fileName); /* try absolute file name */
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1795
        if (f.isAbsolute()) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1796
            /* Rest of code has little sense for an absolute pathname,
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1797
               so return here. */
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1798
            return f.isFile() ? f : null;
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1799
        }
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1800
        if ((!f.isFile()) &&
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1801
                ((path = System.getProperty("java.iccprofile.path")) != null)){
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1802
                                    /* try relative to java.iccprofile.path */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1803
                StringTokenizer st =
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1804
                    new StringTokenizer(path, File.pathSeparator);
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1805
                while (st.hasMoreTokens() && ((f == null) || (!f.isFile()))) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1806
                    dir = st.nextToken();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1807
                        fullPath = dir + File.separatorChar + fileName;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1808
                    f = new File(fullPath);
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1809
                    if (!isChildOf(f, dir)) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1810
                        f = null;
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1811
                    }
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1812
                }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1813
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1814
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1815
        if (((f == null) || (!f.isFile())) &&
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1816
                ((path = System.getProperty("java.class.path")) != null)) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1817
                                    /* try relative to java.class.path */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1818
                StringTokenizer st =
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1819
                    new StringTokenizer(path, File.pathSeparator);
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1820
                while (st.hasMoreTokens() && ((f == null) || (!f.isFile()))) {
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1821
                    dir = st.nextToken();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1822
                        fullPath = dir + File.separatorChar + fileName;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1823
                    f = new File(fullPath);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1824
                }
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1825
        }
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1826
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1827
        if (f != null && !f.isFile()) {
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1828
            f = null;
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1829
        }
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1830
        return f;
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1831
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1832
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1833
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1834
     * Returns a stream corresponding to a built-in profile specified by
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1835
     * fileName. If there is no built-in profile with such name, then the method
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1836
     * returns {@code null}.
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1837
     */
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1838
    private static InputStream getStandardProfileInputStream(String fileName) {
27276
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1839
        return AccessController.doPrivileged(
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1840
            new PrivilegedAction<InputStream>() {
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1841
                public InputStream run () {
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1842
                    return
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1843
                        PCMM.class.getResourceAsStream("profiles/" + fileName);
86db3fc5e0ec 8058969: Test closed/sun/java2d/cmm/StubCMMShellTest.sh fails
prr
parents: 26749
diff changeset
  1844
                }
44771
2ae94a74c972 8178708: Regtest failure: java/awt/Color/LoadProfileWithSM.java
prr
parents: 44661
diff changeset
  1845
            }, null, new FilePermission("<<ALL FILES>>", "read"),
2ae94a74c972 8178708: Regtest failure: java/awt/Color/LoadProfileWithSM.java
prr
parents: 44661
diff changeset
  1846
                     new RuntimePermission("accessSystemModules"));
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1847
    }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1848
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1849
    /**
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1850
     * Checks whether given file resides inside give directory.
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1851
     */
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1852
    private static boolean isChildOf(File f, String dirName) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1853
        try {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1854
            File dir = new File(dirName);
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1855
            String canonicalDirName = dir.getCanonicalPath();
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1856
            if (!canonicalDirName.endsWith(File.separator)) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1857
                canonicalDirName += File.separator;
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1858
            }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1859
            String canonicalFileName = f.getCanonicalPath();
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1860
            return canonicalFileName.startsWith(canonicalDirName);
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1861
        } catch (IOException e) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1862
            /* we do not expect the IOException here, because invocation
26749
b6598aa90114 8055326: Fix typos in client-related packages
serb
parents: 26357
diff changeset
  1863
             * of this function is always preceded by isFile() call.
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1864
             */
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1865
            return false;
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1866
        }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1867
    }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1868
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1869
    /**
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1870
     * Checks whether built-in profile specified by fileName exists.
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1871
     */
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1872
    private static boolean standardProfileExists(final String fileName) {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1873
        return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1874
                public Boolean run() {
26357
bd702816164f 8039271: CMM profile files (cmm/*) should not be in ${java.home}/lib
prr
parents: 25859
diff changeset
  1875
                    return PCMM.class.getResource("profiles/"+fileName) != null;
4206
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1876
                }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1877
            });
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1878
    }
8925b5c1334b 6631533: ICC_Profile allows detecting if some files exist
bae
parents: 3288
diff changeset
  1879
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1880
    /*
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1881
     * Serialization support.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1882
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1883
     * Directly deserialized profiles are useless since they are not registered
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1884
     * with CMM. We don't allow constructor to be called directly and instead
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1885
     * have clients to call one of getInstance factory methods that will
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1886
     * register the profile with CMM. For deserialization we implement
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1887
     * readResolve method that will resolve the bogus deserialized profile
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1888
     * object with one obtained with getInstance as well.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1889
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1890
     * There are two primary factory methods for construction of ICC profiles:
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1891
     * getInstance(int cspace) and getInstance(byte[] data). This implementation
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1892
     * of ICC_Profile uses the former to return a cached singleton profile
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1893
     * object, other implementations will likely use this technique too. To
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1894
     * preserve the singleton pattern across serialization we serialize cached
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1895
     * singleton profiles in such a way that deserializing VM could call
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1896
     * getInstance(int cspace) method that will resolve deserialized object into
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1897
     * the corresponding singleton as well.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1898
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1899
     * Since the singletons are private to ICC_Profile the readResolve method
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1900
     * have to be `protected' instead of `private' so that singletons that are
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1901
     * instances of subclasses of ICC_Profile could be correctly deserialized.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1902
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1903
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1904
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1905
     * Version of the format of additional serialized data in the stream.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1906
     * Version&nbsp;{@code 1} corresponds to Java&nbsp;2 Platform,&nbsp;v1.3.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1907
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1908
     * @serial
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1909
     * @since 1.3
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1910
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1911
    private int iccProfileSerializedDataVersion = 1;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1912
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1913
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1914
     * Writes default serializable fields to the stream. Writes a string and an
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1915
     * array of bytes to the stream as additional data.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1916
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1917
     * @param  s stream used for serialization
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1918
     * @throws IOException thrown by {@code ObjectInputStream}
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1919
     * @serialData the {@code String} is the name of one of
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1920
     *         <code>CS_<var>*</var></code> constants defined in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1921
     *         {@link ColorSpace} class if the profile object is a profile for a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1922
     *         predefined color space (for example {@code "CS_sRGB"}). The
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1923
     *         string is {@code null} otherwise.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1924
     *         <p>
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1925
     *         The {@code byte[]} array is the profile data for the profile. For
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1926
     *         predefined color spaces {@code null} is written instead of the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1927
     *         profile data. If in the future versions of Java API new
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1928
     *         predefined color spaces will be added, future versions of this
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1929
     *         class may choose to write for new predefined color spaces not
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1930
     *         only the color space name, but the profile data as well so that
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1931
     *         older versions could still deserialize the object.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1932
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1933
    private void writeObject(ObjectOutputStream s)
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1934
      throws IOException
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1935
    {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1936
        s.defaultWriteObject();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1937
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1938
        String csName = null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1939
        if (this == sRGBprofile) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1940
            csName = "CS_sRGB";
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1941
        } else if (this == XYZprofile) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1942
            csName = "CS_CIEXYZ";
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1943
        } else if (this == PYCCprofile) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1944
            csName = "CS_PYCC";
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1945
        } else if (this == GRAYprofile) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1946
            csName = "CS_GRAY";
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1947
        } else if (this == LINEAR_RGBprofile) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1948
            csName = "CS_LINEAR_RGB";
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1949
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1950
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1951
        // Future versions may choose to write profile data for new
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1952
        // predefined color spaces as well, if any will be introduced,
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1953
        // so that old versions that don't recognize the new CS name
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1954
        // may fall back to constructing profile from the data.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1955
        byte[] data = null;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1956
        if (csName == null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1957
            // getData will activate deferred profile if necessary
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1958
            data = getData();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1959
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1960
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1961
        s.writeObject(csName);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1962
        s.writeObject(data);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1963
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1964
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1965
    // Temporary storage used by readObject to store resolved profile
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1966
    // (obtained with getInstance) for readResolve to return.
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1967
    private transient ICC_Profile resolvedDeserializedProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1968
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1969
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1970
     * Reads default serializable fields from the stream. Reads from the stream
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1971
     * a string and an array of bytes as additional data.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1972
     *
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1973
     * @param  s stream used for deserialization
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1974
     * @throws IOException thrown by {@code ObjectInputStream}
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1975
     * @throws ClassNotFoundException thrown by {@code
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1976
     *         ObjectInputStream}
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1977
     * @serialData the {@code String} is the name of one of
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1978
     *         <code>CS_<var>*</var></code> constants defined in the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1979
     *         {@link ColorSpace} class if the profile object is a profile for a
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1980
     *         predefined color space (for example {@code "CS_sRGB"}). The
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1981
     *         string is {@code null} otherwise.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1982
     *         <p>
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1983
     *         The {@code byte[]} array is the profile data for the profile. It
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1984
     *         will usually be {@code null} for the predefined profiles.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1985
     *         <p>
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1986
     *         If the string is recognized as a constant name for predefined
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1987
     *         color space the object will be resolved into profile obtained
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1988
     *         with
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1989
     *         <code>getInstance(int&nbsp;cspace)</code> and the profile data
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1990
     *         are
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1991
     *         ignored. Otherwise the object will be resolved into profile
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1992
     *         obtained with
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  1993
     *         <code>getInstance(byte[]&nbsp;data)</code>.
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1994
     * @see #readResolve()
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1995
     * @see #getInstance(int)
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1996
     * @see #getInstance(byte[])
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1997
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1998
    private void readObject(ObjectInputStream s)
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  1999
      throws IOException, ClassNotFoundException
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2000
    {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2001
        s.defaultReadObject();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2002
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2003
        String csName = (String)s.readObject();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2004
        byte[] data = (byte[])s.readObject();
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2005
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2006
        int cspace = 0;         // ColorSpace.CS_* constant if known
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2007
        boolean isKnownPredefinedCS = false;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2008
        if (csName != null) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2009
            isKnownPredefinedCS = true;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2010
            if (csName.equals("CS_sRGB")) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2011
                cspace = ColorSpace.CS_sRGB;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2012
            } else if (csName.equals("CS_CIEXYZ")) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2013
                cspace = ColorSpace.CS_CIEXYZ;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2014
            } else if (csName.equals("CS_PYCC")) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2015
                cspace = ColorSpace.CS_PYCC;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2016
            } else if (csName.equals("CS_GRAY")) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2017
                cspace = ColorSpace.CS_GRAY;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2018
            } else if (csName.equals("CS_LINEAR_RGB")) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2019
                cspace = ColorSpace.CS_LINEAR_RGB;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2020
            } else {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2021
                isKnownPredefinedCS = false;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2022
            }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2023
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2024
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2025
        if (isKnownPredefinedCS) {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2026
            resolvedDeserializedProfile = getInstance(cspace);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2027
        } else {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2028
            resolvedDeserializedProfile = getInstance(data);
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2029
        }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2030
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2031
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2032
    /**
52524
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  2033
     * Resolves instances being deserialized into instances registered with CMM.
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  2034
     *
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  2035
     * @return ICC_Profile object for profile registered with CMM
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  2036
     * @throws ObjectStreamException never thrown, but mandated by the
add2ef6e79c4 8212790: Javadoc cleanup of java.awt.color package
serb
parents: 52248
diff changeset
  2037
     *         serialization spec
539
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2038
     * @since 1.3
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2039
     */
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2040
    protected Object readResolve() throws ObjectStreamException {
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2041
        return resolvedDeserializedProfile;
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2042
    }
7952521a4ad3 6662775: Move imaging and color classes from closed to open
prr
parents:
diff changeset
  2043
}