19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  this work for additional information regarding copyright ownership.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  the License.  You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Oleg V. Khaschansky
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt.color;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileInputStream;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileOutputStream;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.ObjectInputStream;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.ObjectOutputStream;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.ObjectStreamException;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.OutputStream;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Serializable;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.security.AccessController;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.security.PrivilegedAction;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.StringTokenizer;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.color.ICC_ProfileHelper;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.color.NativeCMM;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.internal.nls.Messages;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ICC_Profile class represents a color profile data for color spaces based
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the International Color Consortium Specification ICC.1:2001-12, File
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Format for Color Profiles.
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ICC_Profile implements Serializable {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant serialVersionUID.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final long serialVersionUID = -3938515861990936766L;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // NOTE: Constant field values are noted in 1.5 specification.
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_INPUT indicates that profile class is input.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_INPUT = 0;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_DISPLAY indicates that profile class is display.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_DISPLAY = 1;
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_OUTPUT indicates that profile class is output.
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_OUTPUT = 2;
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_DEVICELINK indicates that profile class is device
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * link.
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_DEVICELINK = 3;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_COLORSPACECONVERSION indicates that profile class is
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * color space conversion.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_COLORSPACECONVERSION = 4;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_ABSTRACT indicates that profile class is abstract.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_ABSTRACT = 5;
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CLASS_NAMEDCOLOR indicates that profile class is named
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * color.
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int CLASS_NAMEDCOLOR = 6;
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigXYZData - ICC Profile Color Space Type Signature.
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigXYZData = 1482250784;
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigLabData - ICC Profile Color Space Type Signature.
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigLabData = 1281450528;
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigLuvData - ICC Profile Color Space Type Signature.
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigLuvData = 1282766368;
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigYCbCrData - ICC Profile Color Space Type Signature.
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigYCbCrData = 1497588338;
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigYxyData - ICC Profile Color Space Type Signature.
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigYxyData = 1501067552;
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigRgbData - ICC Profile Color Space Type Signature.
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigRgbData = 1380401696;
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGrayData - ICC Profile Color Space Type Signature.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGrayData = 1196573017;
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigHsvData - ICC Profile Color Space Type Signature.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigHsvData = 1213421088;
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigHlsData - ICC Profile Color Space Type Signature.
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigHlsData = 1212961568;
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCmykData - ICC Profile Color Space Type Signature.
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCmykData = 1129142603;
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCmyData - ICC Profile Color Space Type Signature.
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCmyData = 1129142560;
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace2CLR - ICC Profile Color Space Type Signature.
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace2CLR = 843271250;
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace3CLR - ICC Profile Color Space Type Signature.
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace3CLR = 860048466;
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace4CLR - ICC Profile Color Space Type Signature.
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace4CLR = 876825682;
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace5CLR - ICC Profile Color Space Type Signature.
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace5CLR = 893602898;
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace6CLR - ICC Profile Color Space Type Signature.
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace6CLR = 910380114;
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace7CLR - ICC Profile Color Space Type Signature.
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace7CLR = 927157330;
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace8CLR - ICC Profile Color Space Type Signature.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace8CLR = 943934546;
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpace9CLR - ICC Profile Color Space Type Signature.
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpace9CLR = 960711762;
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceACLR - ICC Profile Color Space Type Signature.
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceACLR = 1094929490;
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceBCLR - ICC Profile Color Space Type Signature.
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceBCLR = 1111706706;
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceCCLR - ICC Profile Color Space Type Signature.
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceCCLR = 1128483922;
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceDCLR - ICC Profile Color Space Type Signature.
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceDCLR = 1145261138;
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceECLR - ICC Profile Color Space Type Signature.
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceECLR = 1162038354;
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigSpaceFCLR - ICC Profile Color Space Type Signature.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigSpaceFCLR = 1178815570;
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigInputClass - ICC Profile Class Signature.
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigInputClass = 1935896178;
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigDisplayClass - ICC Profile Class Signature.
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigDisplayClass = 1835955314;
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigOutputClass - ICC Profile Class Signature.
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigOutputClass = 1886549106;
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigLinkClass - ICC Profile Class Signature.
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigLinkClass = 1818848875;
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigAbstractClass - ICC Profile Class Signature.
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigAbstractClass = 1633842036;
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigColorantOrderTag - ICC Profile Tag Signature.
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigColorantOrderTag = 1668051567;
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigColorantTableTag - ICC Profile Tag Signature.
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigColorantTableTag = 1668051572;
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigColorSpaceClass - ICC Profile Tag Signature.
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigColorSpaceClass = 1936744803;
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigNamedColorClass - ICC Profile Tag Signature.
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigNamedColorClass = 1852662636;
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icPerceptual - ICC Profile Rendering Intent.
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icPerceptual = 0;
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icRelativeColorimetric - ICC Profile Rendering Intent.
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icRelativeColorimetric = 1;
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSaturation - ICC Profile Rendering Intent.
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSaturation = 2;
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icAbsoluteColorimetric - ICC Profile Rendering Intent.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icAbsoluteColorimetric = 3;
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigHead - ICC Profile Tag Signature.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigHead = 1751474532;
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigAToB0Tag - ICC Profile Tag Signature.
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigAToB0Tag = 1093812784;
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigAToB1Tag - ICC Profile Tag Signature.
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigAToB1Tag = 1093812785;
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigAToB2Tag - ICC Profile Tag Signature.
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigAToB2Tag = 1093812786;
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBlueColorantTag - ICC Profile Tag Signature.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBlueColorantTag = 1649957210;
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBlueMatrixColumnTag - ICC Profile Tag Signature.
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBlueMatrixColumnTag = 1649957210;
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBlueTRCTag - ICC Profile Tag Signature.
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBlueTRCTag = 1649693251;
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBToA0Tag - ICC Profile Tag Signature.
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBToA0Tag = 1110589744;
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBToA1Tag - ICC Profile Tag Signature.
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBToA1Tag = 1110589745;
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigBToA2Tag - ICC Profile Tag Signature.
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigBToA2Tag = 1110589746;
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCalibrationDateTimeTag - ICC Profile Tag Signature.
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCalibrationDateTimeTag = 1667329140;
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCharTargetTag - ICC Profile Tag Signature.
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCharTargetTag = 1952543335;
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCopyrightTag - ICC Profile Tag Signature.
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCopyrightTag = 1668313716;
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigCrdInfoTag - ICC Profile Tag Signature.
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigCrdInfoTag = 1668441193;
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigDeviceMfgDescTag - ICC Profile Tag Signature.
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigDeviceMfgDescTag = 1684893284;
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigDeviceModelDescTag - ICC Profile Tag Signature.
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigDeviceModelDescTag = 1684890724;
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigDeviceSettingsTag - ICC Profile Tag Signature.
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigDeviceSettingsTag = 1684371059;
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGamutTag - ICC Profile Tag Signature.
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGamutTag = 1734438260;
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGrayTRCTag - ICC Profile Tag Signature.
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGrayTRCTag = 1800688195;
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGreenColorantTag - ICC Profile Tag Signature.
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGreenColorantTag = 1733843290;
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGreenMatrixColumnTag - ICC Profile Tag Signature.
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGreenMatrixColumnTag = 1733843290;
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigGreenTRCTag - ICC Profile Tag Signature.
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigGreenTRCTag = 1733579331;
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigLuminanceTag - ICC Profile Tag Signature.
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigLuminanceTag = 1819635049;
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigMeasurementTag - ICC Profile Tag Signature.
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigMeasurementTag = 1835360627;
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigMediaBlackPointTag - ICC Profile Tag Signature.
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigMediaBlackPointTag = 1651208308;
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigMediaWhitePointTag - ICC Profile Tag Signature.
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigMediaWhitePointTag = 2004119668;
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigNamedColor2Tag - ICC Profile Tag Signature.
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigNamedColor2Tag = 1852009522;
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigOutputResponseTag - ICC Profile Tag Signature.
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigOutputResponseTag = 1919251312;
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPreview0Tag - ICC Profile Tag Signature.
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPreview0Tag = 1886545200;
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPreview1Tag - ICC Profile Tag Signature.
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPreview1Tag = 1886545201;
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPreview2Tag - ICC Profile Tag Signature.
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPreview2Tag = 1886545202;
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigProfileDescriptionTag - ICC Profile Tag Signature.
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigProfileDescriptionTag = 1684370275;
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigProfileSequenceDescTag - ICC Profile Tag Signature.
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigProfileSequenceDescTag = 1886610801;
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2CRD0Tag - ICC Profile Tag Signature.
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2CRD0Tag = 1886610480;
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2CRD1Tag - ICC Profile Tag Signature.
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2CRD1Tag = 1886610481;
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2CRD2Tag - ICC Profile Tag Signature.
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2CRD2Tag = 1886610482;
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2CRD3Tag - ICC Profile Tag Signature.
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2CRD3Tag = 1886610483;
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2CSATag - ICC Profile Tag Signature.
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2CSATag = 1886597747;
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigPs2RenderingIntentTag - ICC Profile Tag Signature.
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigPs2RenderingIntentTag = 1886597737;
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigRedColorantTag - ICC Profile Tag Signature.
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigRedColorantTag = 1918392666;
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigRedMatrixColumnTag - ICC Profile Tag Signature.
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigRedMatrixColumnTag = 1918392666;
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigRedTRCTag - ICC Profile Tag Signature.
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigRedTRCTag = 1918128707;
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigScreeningDescTag - ICC Profile Tag Signature.
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigScreeningDescTag = 1935897188;
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigScreeningTag - ICC Profile Tag Signature.
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigScreeningTag = 1935897198;
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigTechnologyTag - ICC Profile Tag Signature.
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigTechnologyTag = 1952801640;
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigUcrBgTag - ICC Profile Tag Signature.
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigUcrBgTag = 1650877472;
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigViewingCondDescTag - ICC Profile Tag Signature.
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigViewingCondDescTag = 1987405156;
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigViewingConditionsTag - ICC Profile Tag Signature.
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigViewingConditionsTag = 1986618743;
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigChromaticAdaptationTag - ICC Profile Tag Signature.
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigChromaticAdaptationTag = 1667785060;
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icSigChromaticityTag - ICC Profile Tag Signature.
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icSigChromaticityTag = 1667789421;
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrSize - ICC Profile Header Location.
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrSize = 0;
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrCmmId - ICC Profile Header Location.
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrCmmId = 4;
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrVersion - ICC Profile Header Location.
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrVersion = 8;
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrDeviceClass - ICC Profile Header Location.
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrDeviceClass = 12;
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrColorSpace - ICC Profile Header Location.
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrColorSpace = 16;
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrPcs - ICC Profile Header Location.
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrPcs = 20;
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrDate - ICC Profile Header Location.
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrDate = 24;
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrMagic - ICC Profile Header Location.
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrMagic = 36;
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrPlatform - ICC Profile Header Location.
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrPlatform = 40;
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrProfileID - ICC Profile Header Location.
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrProfileID = 84;
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrFlags - ICC Profile Header Location.
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrFlags = 44;
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrManufacturer - ICC Profile Header Location.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrManufacturer = 48;
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrModel - ICC Profile Header Location.
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrModel = 52;
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrAttributes - ICC Profile Header Location.
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrAttributes = 56;
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrRenderingIntent - ICC Profile Header Location.
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrRenderingIntent = 64;
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrIlluminant - ICC Profile Header Location.
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrIlluminant = 68;
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icHdrCreator - ICC Profile Header Location.
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icHdrCreator = 80;
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icICCAbsoluteColorimetric - ICC Profile Rendering Intent.
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icICCAbsoluteColorimetric = 3;
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icMediaRelativeColorimetric - ICC Profile Rendering Intent.
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icMediaRelativeColorimetric = 1;
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icTagType - ICC Profile Constant.
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icTagType = 0;
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icTagReserved - ICC Profile Constant.
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icTagReserved = 4;
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icCurveCount - ICC Profile Constant.
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icCurveCount = 8;
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icCurveData - ICC Profile Constant.
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icCurveData = 12;
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant icXYZNumberX - ICC Profile Constant.
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int icXYZNumberX = 8;
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Size of a profile header.
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int headerSize = 128;
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * header magic number.
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final int headerMagicNumber = 0x61637370;
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Cache of predefined profiles
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The s rgb profile.
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static ICC_Profile sRGBProfile;
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The xyz profile.
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static ICC_Profile xyzProfile;
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The gray profile.
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static ICC_Profile grayProfile;
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The pycc profile.
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static ICC_Profile pyccProfile;
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The linear rgb profile.
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static ICC_Profile linearRGBProfile;
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Handle to the current profile.
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private transient long profileHandle = 0;
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If handle is used by another class this object is not responsible for
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * closing profile.
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private transient boolean handleStolen = false;
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Cached header data.
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private transient byte[] headerData = null;
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Serialization support.
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private transient ICC_Profile openedProfileObject;
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new ICC profile with the given data.
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param data
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the data.
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ICC_Profile(byte[] data) {
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        profileHandle = NativeCMM.cmmOpenProfile(data);
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.addHandle(this, profileHandle);
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Used to instantiate dummy ICC_ProfileStub objects.
7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ICC_Profile() {
7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Used to instantiate subclasses (ICC_ProfileGrey and ICC_ProfileRGB).
7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param profileHandle
7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            - should be valid handle to opened color profile
7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ICC_Profile(long profileHandle) {
7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.profileHandle = profileHandle;
7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // A new object reference, need to add it.
7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.addHandle(this, profileHandle);
7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Writes the ICC_Profile to a file with the specified name.
7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param fileName
7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the file name.
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             if an I/O exception has occurred during writing or opening
7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             the file.
7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void write(String fileName) throws IOException {
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        FileOutputStream oStream = new FileOutputStream(fileName);
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        oStream.write(getData());
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        oStream.close();
7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Serializable implementation.
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param s
7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the s
7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             Signals that an I/O exception has occurred.
7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void writeObject(ObjectOutputStream s) throws IOException {
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        s.defaultWriteObject();
7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        s.writeObject(null);
7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        s.writeObject(getData());
7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Serializable implementation.
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param s
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the s
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             Signals that an I/O exception has occurred.
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws ClassNotFoundException
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             the class not found exception
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        s.defaultReadObject();
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String colorSpaceStr = (String)s.readObject();
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] data = (byte[])s.readObject();
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (colorSpaceStr != null) {
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (colorSpaceStr.equals("CS_sRGB")) { //$NON-NLS-1$
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = getInstance(ColorSpace.CS_sRGB);
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else if (colorSpaceStr.equals("CS_GRAY")) { //$NON-NLS-1$
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = getInstance(ColorSpace.CS_GRAY);
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else if (colorSpaceStr.equals("CS_LINEAR_RGB")) { //$NON-NLS-1$
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = getInstance(ColorSpace.CS_LINEAR_RGB);
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else if (colorSpaceStr.equals("CS_CIEXYZ")) { //$NON-NLS-1$
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = getInstance(ColorSpace.CS_CIEXYZ);
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else if (colorSpaceStr.equals("CS_PYCC")) { //$NON-NLS-1$
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = getInstance(ColorSpace.CS_PYCC);
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else {
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                openedProfileObject = ICC_Profile.getInstance(data);
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            openedProfileObject = ICC_Profile.getInstance(data);
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Resolves instances being deserialized into instances registered with CMM.
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return ICC_Profile object for profile registered with CMM.
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws ObjectStreamException
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             if there is an error in the serialized files or during the
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             process of reading them.
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected Object readResolve() throws ObjectStreamException {
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return openedProfileObject;
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Writes the ICC_Profile to an OutputStream.
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param s
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the OutputStream.
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             signals that an I/O exception has occurred during writing or
8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             opening OutputStream.
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void write(OutputStream s) throws IOException {
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        s.write(getData());
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets a tagged data element in the profile from a byte array.
8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ICC tag signature for the data element to be set.
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagData
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the data to be set for the specified tag signature.
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setData(int tagSignature, byte[] tagData) {
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.cmmSetProfileElement(profileHandle, tagSignature, tagData);
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Remove cached header data if header is modified
8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (tagSignature == icSigHead) {
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            headerData = null;
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets a tagged data element from the profile as a byte array. Elements are
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * identified by tag signatures as defined in the ICC specification.
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ICC tag signature for the data element to get.
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a byte array that contains the tagged data element.
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getData(int tagSignature) {
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int tagSize = 0;
8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            tagSize = NativeCMM.cmmGetProfileElementSize(profileHandle, tagSignature);
8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (CMMException e) {
8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // We'll get this exception if there's no element with
8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // the specified tag signature
8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] data = new byte[tagSize];
8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.cmmGetProfileElement(profileHandle, tagSignature, data);
8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return data;
8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets a data byte array of this ICC_Profile.
8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a byte array that contains the ICC Profile data.
8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getData() {
8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int profileSize = NativeCMM.cmmGetProfileSize(profileHandle);
8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] data = new byte[profileSize];
8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.cmmGetProfile(profileHandle, data);
8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return data;
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Frees the resources associated with an ICC_Profile object.
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void finalize() {
8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (profileHandle != 0 && !handleStolen) {
8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            NativeCMM.cmmCloseProfile(profileHandle);
8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Always remove because key no more exist
8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // when object is destroyed
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NativeCMM.removeHandle(this);
8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the profile class.
8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the profile class constant.
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getProfileClass() {
9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int deviceClassSignature = getIntFromHeader(icHdrDeviceClass);
9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        switch (deviceClassSignature) {
9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigColorSpaceClass:
9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_COLORSPACECONVERSION;
9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigDisplayClass:
9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_DISPLAY;
9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigOutputClass:
9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_OUTPUT;
9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigInputClass:
9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_INPUT;
9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigLinkClass:
9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_DEVICELINK;
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigAbstractClass:
9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_ABSTRACT;
9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigNamedColorClass:
9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return CLASS_NAMEDCOLOR;
9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            default:
9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Not an ICC profile class
9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.15F=Profile class does not comply with ICC specification
9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new IllegalArgumentException(Messages.getString("awt.15F")); //$NON-NLS-1$
9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the color space type of the Profile Connection Space (PCS).
9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the PCS type.
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getPCSType() {
9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return csFromSignature(getIntFromHeader(icHdrPcs));
9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the number of components of this ICC Profile.
9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the number of components of this ICC Profile.
9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getNumComponents() {
9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        switch (getIntFromHeader(icHdrColorSpace)) {
9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // The most common cases go first to increase speed
9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigRgbData:
9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigXYZData:
9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigLabData:
9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 3;
9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigCmykData:
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 4;
9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                // Then all other
9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigGrayData:
9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 1;
9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace2CLR:
9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 2;
9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigYCbCrData:
9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigLuvData:
9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigYxyData:
9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigHlsData:
9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigHsvData:
9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigCmyData:
9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace3CLR:
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 3;
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace4CLR:
9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 4;
9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace5CLR:
9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 5;
9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace6CLR:
9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 6;
9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace7CLR:
9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 7;
9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace8CLR:
9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 8;
9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace9CLR:
9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 9;
9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceACLR:
9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 10;
9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceBCLR:
9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 11;
9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceCCLR:
9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 12;
9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceDCLR:
9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 13;
9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceECLR:
9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 14;
9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceFCLR:
9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return 15;
9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            default:
9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.160=Color space doesn't comply with ICC specification
9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new ProfileDataException(Messages.getString("awt.160") //$NON-NLS-1$
9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        );
9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the minor version of this ICC profile.
9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the minor version of this ICC profile.
10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getMinorVersion() {
10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getByteFromHeader(icHdrVersion + 1);
10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the major version of this ICC profile.
10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the major version of this ICC profile.
10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getMajorVersion() {
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getByteFromHeader(icHdrVersion);
10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the color space type of this ICC_Profile.
10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the color space type.
10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getColorSpaceType() {
10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return csFromSignature(getIntFromHeader(icHdrColorSpace));
10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Tries to open the file at the specified path. Path entries can be divided
10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by a separator character.
10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param path
10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the path to the file.
10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param fileName
10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the file name.
10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the input stream to read the file.
10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static FileInputStream tryPath(String path, String fileName) {
10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        FileInputStream fiStream = null;
10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (path == null) {
10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        StringTokenizer st = new StringTokenizer(path, File.pathSeparator);
10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        while (st.hasMoreTokens()) {
10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String pathEntry = st.nextToken();
10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            try {
10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                fiStream = new FileInputStream(pathEntry + File.separatorChar + fileName);
10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                if (fiStream != null) {
10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return fiStream;
10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (FileNotFoundException e) {
10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return fiStream;
10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the single instance of ICC_Profile from data in the specified file.
10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param fileName
10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the specified name of file with ICC profile data.
10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return single instance of ICC_Profile.
10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             signals that an I/O error occurred while reading the file or
10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             the file does not exist.
10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ICC_Profile getInstance(String fileName) throws IOException {
10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final String fName = fileName; // to use in the privileged block
10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        FileInputStream fiStream = (FileInputStream)AccessController
10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                .doPrivileged(new PrivilegedAction<FileInputStream>() {
10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    public FileInputStream run() {
10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        FileInputStream fiStream = null;
10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        // Open absolute path
10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        try {
10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            fiStream = new FileInputStream(fName);
10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            if (fiStream != null) {
10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                return fiStream;
10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            }
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        } catch (FileNotFoundException e) {
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        }
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        // Check java.iccprofile.path entries
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        fiStream = tryPath(System.getProperty("java.iccprofile.path"), fName); //$NON-NLS-1$
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        if (fiStream != null) {
10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            return fiStream;
10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        }
10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        // Check java.class.path entries
10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        fiStream = tryPath(System.getProperty("java.class.path"), fName); //$NON-NLS-1$
10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        if (fiStream != null) {
10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            return fiStream;
10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        }
10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        // Check directory with java sample profiles
10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        String home = System.getProperty("java.home"); //$NON-NLS-1$
10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        if (home != null) {
10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            fiStream = tryPath(home + File.separatorChar
10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    + "lib" + File.separatorChar + "cmm", fName //$NON-NLS-1$ //$NON-NLS-2$
11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            );
11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        }
11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        return fiStream;
11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                });
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (fiStream == null) {
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.161=Unable to open file {0}
11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IOException(Messages.getString("awt.161", fileName)); //$NON-NLS-1$
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ICC_Profile pf = getInstance(fiStream);
11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fiStream.close();
11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return pf;
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the single instance of ICC_Profile with data in the specified
11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * InputStream.
11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param s
11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the InputStream with ICC profile data.
11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return single instance of ICC_Profile.
11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IOException
11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             if an I/O exception has occurred during reading from
11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             InputStream.
11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IllegalArgumentException
11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             if the file does not contain valid ICC Profile data.
11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ICC_Profile getInstance(InputStream s) throws IOException {
11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] header = new byte[headerSize];
11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.162=Invalid ICC Profile Data
11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String invalidDataMessage = Messages.getString("awt.162"); //$NON-NLS-1$
11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Get header from the input stream
11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (s.read(header) != headerSize) {
11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(invalidDataMessage);
11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Check the profile data for consistency
11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (ICC_ProfileHelper.getBigEndianFromByteArray(header, icHdrMagic) != headerMagicNumber) {
11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(invalidDataMessage);
11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Get profile size from header, create an array for profile data
11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int profileSize = ICC_ProfileHelper.getBigEndianFromByteArray(header, icHdrSize);
11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] profileData = new byte[profileSize];
11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Copy header into it
11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        System.arraycopy(header, 0, profileData, 0, headerSize);
11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Read the profile itself
11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (s.read(profileData, headerSize, profileSize - headerSize) != profileSize - headerSize) {
11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(invalidDataMessage);
11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getInstance(profileData);
11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the single instance of ICC_Profile from the specified data in a byte
11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * array.
11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param data
11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the byte array of ICC profile.
11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return single instance of ICC_Profile from the specified data in a byte
11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         array.
11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IllegalArgumentException
11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             if the file does not contain valid ICC Profile data.
11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ICC_Profile getInstance(byte[] data) {
11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ICC_Profile res = null;
11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            res = new ICC_Profile(data);
11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (CMMException e) {
11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.162=Invalid ICC Profile Data
11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(Messages.getString("awt.162")); //$NON-NLS-1$
11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0) { //$NON-NLS-1$ //$NON-NLS-2$
11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            try {
11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                if (res.getColorSpaceType() == ColorSpace.TYPE_RGB
11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigMediaWhitePointTag) > 0
11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigRedColorantTag) > 0
11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigGreenColorantTag) > 0
11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigBlueColorantTag) > 0
11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigRedTRCTag) > 0
11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigGreenTRCTag) > 0
11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigBlueTRCTag) > 0) {
11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    res = new ICC_ProfileRGB(res.getProfileHandle());
11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                } else if (res.getColorSpaceType() == ColorSpace.TYPE_GRAY
11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigMediaWhitePointTag) > 0
11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        && res.getDataSize(icSigGrayTRCTag) > 0) {
11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    res = new ICC_ProfileGray(res.getProfileHandle());
11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (CMMException e) { /* return res in this case */
11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return res;
12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the single instance of ICC_Profile with the specific color space
12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * defined by the ColorSpace class: CS_sRGB, CS_LINEAR_RGB, CS_CIEXYZ,
12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * CS_PYCC, CS_GRAY.
12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cspace
12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the type of color space defined in the ColorSpace class.
12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return single instance of ICC_Profile.
12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IllegalArgumentException
12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *             is not one of the defined color space types.
12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ICC_Profile getInstance(int cspace) {
12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            switch (cspace) {
12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case ColorSpace.CS_sRGB:
12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    if (sRGBProfile == null) {
12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        sRGBProfile = getInstance("sRGB.pf"); //$NON-NLS-1$
12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return sRGBProfile;
12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case ColorSpace.CS_CIEXYZ:
12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    if (xyzProfile == null) {
12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        xyzProfile = getInstance("CIEXYZ.pf"); //$NON-NLS-1$
12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return xyzProfile;
12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case ColorSpace.CS_GRAY:
12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    if (grayProfile == null) {
12349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        grayProfile = getInstance("GRAY.pf"); //$NON-NLS-1$
12359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
12369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return grayProfile;
12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case ColorSpace.CS_PYCC:
12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    if (pyccProfile == null) {
12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        pyccProfile = getInstance("PYCC.pf"); //$NON-NLS-1$
12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return pyccProfile;
12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case ColorSpace.CS_LINEAR_RGB:
12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    if (linearRGBProfile == null) {
12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        linearRGBProfile = getInstance("LINEAR_RGB.pf"); //$NON-NLS-1$
12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    }
12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return linearRGBProfile;
12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (IOException e) {
12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.163=Can't open color profile
12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(Messages.getString("Can't open color profile")); //$NON-NLS-1$
12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.164=Not a predefined color space
12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new IllegalArgumentException(Messages.getString("Not a predefined color space")); //$NON-NLS-1$
12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Reads an integer from the profile header at the specified position.
12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param idx
12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            - offset in bytes from the beginning of the header
12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the integer value from header
12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int getIntFromHeader(int idx) {
12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (headerData == null) {
12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            headerData = getData(icSigHead);
12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ((headerData[idx] & 0xFF) << 24) | ((headerData[idx + 1] & 0xFF) << 16)
12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                | ((headerData[idx + 2] & 0xFF) << 8) | ((headerData[idx + 3] & 0xFF));
12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Reads byte from the profile header at the specified position.
12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param idx
12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            - offset in bytes from the beginning of the header
12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the byte from header
12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private byte getByteFromHeader(int idx) {
12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (headerData == null) {
12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            headerData = getData(icSigHead);
12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return headerData[idx];
12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Converts ICC color space signature to the java predefined color space
12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * type.
12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param signature
12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the signature
12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the int
12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int csFromSignature(int signature) {
13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        switch (signature) {
13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigRgbData:
13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_RGB;
13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigXYZData:
13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_XYZ;
13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigCmykData:
13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_CMYK;
13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigLabData:
13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_Lab;
13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigGrayData:
13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_GRAY;
13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigHlsData:
13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_HLS;
13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigLuvData:
13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_Luv;
13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigYCbCrData:
13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_YCbCr;
13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigYxyData:
13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_Yxy;
13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigHsvData:
13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_HSV;
13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigCmyData:
13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_CMY;
13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace2CLR:
13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_2CLR;
13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace3CLR:
13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_3CLR;
13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace4CLR:
13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_4CLR;
13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace5CLR:
13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_5CLR;
13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace6CLR:
13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_6CLR;
13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace7CLR:
13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_7CLR;
13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace8CLR:
13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_8CLR;
13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpace9CLR:
13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_9CLR;
13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceACLR:
13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_ACLR;
13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceBCLR:
13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_BCLR;
13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceCCLR:
13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_CCLR;
13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceDCLR:
13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_DCLR;
13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceECLR:
13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_ECLR;
13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            case icSigSpaceFCLR:
13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return ColorSpace.TYPE_FCLR;
13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            default:
13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.165=Color space doesn't comply with ICC specification
13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new IllegalArgumentException(Messages.getString("awt.165")); //$NON-NLS-1$
13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the profile handle.
13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the profile handle
13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private long getProfileHandle() {
13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        handleStolen = true;
13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return profileHandle;
13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the data size.
13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the tag signature
13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the data size
13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int getDataSize(int tagSignature) {
13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return NativeCMM.cmmGetProfileElementSize(profileHandle, tagSignature);
13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Reads XYZ value from the tag data.
13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the tag signature
13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the XYZ value
13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float[] getXYZValue(int tagSignature) {
13879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        float[] res = new float[3];
13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] data = getData(tagSignature);
13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Convert from ICC s15Fixed16Number type
13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // 1 (float) = 0x10000 (s15Fixed16Number),
13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // hence dividing by 0x10000
13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        res[0] = ICC_ProfileHelper.getIntFromByteArray(data, 0) / 65536.f;
13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        res[1] = ICC_ProfileHelper.getIntFromByteArray(data, 4) / 65536.f;
13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        res[2] = ICC_ProfileHelper.getIntFromByteArray(data, 8) / 65536.f;
13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return res;
13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the media white point.
14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the media white point.
14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float[] getMediaWhitePoint() {
14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getXYZValue(icSigMediaWhitePointTag);
14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If TRC is not a table returns gamma via return value and sets dataTRC to
14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * null. If TRC is a table returns 0 and fills dataTRC with values.
14129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
14149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the tag signature
14159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dataTRC
14169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the data trc
14179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return - gamma or zero if TRC is a table
14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float getGammaOrTRC(int tagSignature, short[] dataTRC) {
14209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] data = getData(tagSignature);
14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int trcSize = ICC_ProfileHelper.getIntFromByteArray(data, icCurveCount);
14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dataTRC = null;
14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (trcSize == 0) {
14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return 1.0f;
14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
14289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (trcSize == 1) {
14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // Cast from ICC u8Fixed8Number to float
14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return ICC_ProfileHelper.getShortFromByteArray(data, icCurveData) / 256.f;
14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // TRC is a table
14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dataTRC = new short[trcSize];
14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (int i = 0, pos = icCurveData; i < trcSize; i++, pos += 2) {
14379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dataTRC[i] = ICC_ProfileHelper.getShortFromByteArray(data, pos);
14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the gamma.
14449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the tag signature
14479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the gamma
14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getGamma(int tagSignature) {
14509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        short[] dataTRC = null;
14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        float gamma = getGammaOrTRC(tagSignature, dataTRC);
14529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (dataTRC == null) {
14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return gamma;
14559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // awt.166=TRC is not a simple gamma value.
14579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new ProfileDataException(Messages.getString("awt.166")); //$NON-NLS-1$
14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the TRC.
14629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
14639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param tagSignature
14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the tag signature
14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the tRC
14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    short[] getTRC(int tagSignature) {
14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        short[] dataTRC = null;
14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        getGammaOrTRC(tagSignature, dataTRC);
14709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (dataTRC == null) {
14729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.167=TRC is a gamma value, not a table.
14739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new ProfileDataException(Messages.getString("awt.167")); //$NON-NLS-1$
14749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
14759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return dataTRC;
14769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
14779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1478