--- a/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h Fri Sep 24 16:38:09 2010 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1023 +0,0 @@
-/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/* Header file guard bands */
-#ifndef ICC_H
-#define ICC_H
-
-/*
- * This version of the header file corresponds to the profile
- * specification version 3.4.
- *
- * All header file entries are pre-fixed with "ic" to help
- * avoid name space collisions. Signatures are pre-fixed with
- * icSig.
- *
- * The structures defined in this header file were created to
- * represent a description of an ICC profile on disk. Rather
- * than use pointers a technique is used where a single byte array
- * was placed at the end of each structure. This allows us in "C"
- * to extend the structure by allocating more data than is needed
- * to account for variable length structures.
- *
- * This also ensures that data following is allocated
- * contiguously and makes it easier to write and read data from
- * the file.
- *
- * For example to allocate space for a 256 count length UCR
- * and BG array, and fill the allocated data. Note strlen + 1
- * to remember NULL terminator.
- *
- icUcrBgCurve *ucrCurve, *bgCurve;
- int ucr_nbytes, bg_nbytes, string_bytes;
- icUcrBg *ucrBgWrite;
- char ucr_string[100], *ucr_char;
-
- strcpy(ucr_string, "Example ucrBG curves");
- ucr_nbytes = sizeof(icUInt32Number) +
- (UCR_CURVE_SIZE * sizeof(icUInt16Number));
- bg_nbytes = sizeof(icUInt32Number) +
- (BG_CURVE_SIZE * sizeof(icUInt16Number));
- string_bytes = strlen(ucr_string) + 1;
-
- ucrBgWrite = (icUcrBg *)malloc(
- (ucr_nbytes + bg_nbytes + string_bytes));
-
- ucrCurve = (icUcrBgCurve *)ucrBgWrite->data;
- ucrCurve->count = UCR_CURVE_SIZE;
- for (i=0; i<ucrCurve->count; i++)
- ucrCurve->curve[i] = (icUInt16Number)i;
-
- bgCurve = (icUcrBgCurve *)((char *)ucrCurve + ucr_nbytes);
- bgCurve->count = BG_CURVE_SIZE;
- for (i=0; i<bgCurve->count; i++)
- bgCurve->curve[i] = 255 - (icUInt16Number)i;
-
- ucr_char = (char *)((char *)bgCurve + bg_nbytes);
- memcpy(ucr_char, ucr_string, string_bytes);
- *
- */
-
-/*
- * Many of the structures contain variable length arrays. This
- * is represented by the use of the convention.
- *
- * type data[icAny];
- */
-
-/*------------------------------------------------------------------------*/
-/*
- * Defines used in the specification
- */
-#define icMagicNumber 0x61637370L /* 'acsp' */
-#define icVersionNumber 0x02100000L /* 2.1.0, BCD */
-
-/* Screening Encodings */
-#define icPrtrDefaultScreensFalse 0x00000000L /* Bit pos 0 */
-#define icPrtrDefaultScreensTrue 0x00000001L /* Bit pos 0 */
-#define icLinesPerInch 0x00000002L /* Bit pos 1 */
-#define icLinesPerCm 0x00000000L /* Bit pos 1 */
-
-/*
- * Device attributes, currently defined values correspond
- * to the low 4 bytes of the 8 byte attribute quantity, see
- * the header for their location.
- */
-#define icReflective 0x00000000L /* Bit pos 0 */
-#define icTransparency 0x00000001L /* Bit pos 0 */
-#define icGlossy 0x00000000L /* Bit pos 1 */
-#define icMatte 0x00000002L /* Bit pos 1 */
-
-/*
- * Profile header flags, the low 16 bits are reserved for consortium
- * use.
- */
-#define icEmbeddedProfileFalse 0x00000000L /* Bit pos 0 */
-#define icEmbeddedProfileTrue 0x00000001L /* Bit pos 0 */
-#define icUseAnywhere 0x00000000L /* Bit pos 1 */
-#define icUseWithEmbeddedDataOnly 0x00000002L /* Bit pos 1 */
-
-/* Ascii or Binary data */
-#define icAsciiData 0x00000000L
-#define icBinaryData 0x00000001L
-
-/*
- * Define used to indicate that this is a variable length array
- */
-#define icAny 1
-
-
-/*------------------------------------------------------------------------*/
-/*
- * Use this area to translate platform definitions of long
- * etc into icXXX form. The rest of the header uses the icXXX
- * typedefs. Signatures are 4 byte quantities.
- *
- */
-
-
-#ifdef PACKAGE_NAME
-/*
- June 9, 2003, Adapted for use with configure by Bob Friesenhahn
- Added the stupid check for autoconf by Marti Maria.
- PACKAGE_NAME is defined if autoconf is being used
-*/
-
-typedef @UINT8_T@ icUInt8Number;
-typedef @UINT16_T@ icUInt16Number;
-typedef @UINT32_T@ icUInt32Number;
-typedef @UINT32_T@ icUInt64Number[2];
-
-typedef @INT8_T@ icInt8Number;
-typedef @INT16_T@ icInt16Number;
-typedef @INT32_T@ icInt32Number;
-typedef @INT32_T@ icInt64Number[2];
-
-#else
-
-/*
- *Apr-17-2002: Modified by Marti Maria in order to provide wider portability.
- */
-
-#if defined (__digital__) && defined (__unix__)
-
-/* Tru64 */
-
-#include <inttypes.h>
-
-typedef uint8_t icUInt8Number;
-typedef uint16_t icUInt16Number;
-typedef uint32_t icUInt32Number;
-typedef uint32_t icUInt64Number[2];
-
-typedef int8_t icInt8Number;
-typedef int16_t icInt16Number;
-typedef int32_t icInt32Number;
-typedef int32_t icInt64Number[2];
-
-#else
-#ifdef __sgi
-#include "sgidefs.h"
-
-
-/*
- * Number definitions
- */
-
-/* Unsigned integer numbers */
-typedef unsigned char icUInt8Number;
-typedef unsigned short icUInt16Number;
-typedef __uint32_t icUInt32Number;
-typedef __uint32_t icUInt64Number[2];
-
-/* Signed numbers */
-typedef char icInt8Number;
-typedef short icInt16Number;
-typedef __int32_t icInt32Number;
-typedef __int32_t icInt64Number[2];
-
-
-#else
-#if defined(__GNUC__) || defined(__unix__) || defined(__unix)
-
-#include <sys/types.h>
-
-#if defined(__sun) || defined(__hpux) || defined (__MINGW) || defined(__MINGW32__)
-
-#if defined (__MINGW) || defined(__MINGW32__)
-#include <stdint.h>
-#endif
-
-
-typedef uint8_t icUInt8Number;
-typedef uint16_t icUInt16Number;
-typedef uint32_t icUInt32Number;
-typedef uint32_t icUInt64Number[2];
-
-#else
-
-/* Unsigned integer numbers */
-typedef u_int8_t icUInt8Number;
-typedef u_int16_t icUInt16Number;
-typedef u_int32_t icUInt32Number;
-typedef u_int32_t icUInt64Number[2];
-
-#endif
-
-
-/* Signed numbers */
-typedef int8_t icInt8Number;
-typedef int16_t icInt16Number;
-typedef int32_t icInt32Number;
-typedef int32_t icInt64Number[2];
-
-
-#else /* default definitions */
-
-/*
- * Number definitions
- */
-
-/* Unsigned integer numbers */
-typedef unsigned char icUInt8Number;
-typedef unsigned short icUInt16Number;
-typedef unsigned long icUInt32Number;
-typedef unsigned long icUInt64Number[2];
-
-/* Signed numbers */
-typedef char icInt8Number;
-typedef short icInt16Number;
-typedef long icInt32Number;
-typedef long icInt64Number[2];
-
-
-#endif /* default defs */
-#endif
-#endif
-#endif
-
-/* Base types */
-
-typedef icInt32Number icSignature;
-typedef icInt32Number icS15Fixed16Number;
-typedef icUInt32Number icU16Fixed16Number;
-
-
-/*------------------------------------------------------------------------*/
-/* public tags and sizes */
-typedef enum {
- icSigAToB0Tag = 0x41324230L, /* 'A2B0' */
- icSigAToB1Tag = 0x41324231L, /* 'A2B1' */
- icSigAToB2Tag = 0x41324232L, /* 'A2B2' */
- icSigBlueColorantTag = 0x6258595AL, /* 'bXYZ' */
- icSigBlueTRCTag = 0x62545243L, /* 'bTRC' */
- icSigBToA0Tag = 0x42324130L, /* 'B2A0' */
- icSigBToA1Tag = 0x42324131L, /* 'B2A1' */
- icSigBToA2Tag = 0x42324132L, /* 'B2A2' */
- icSigCalibrationDateTimeTag = 0x63616C74L, /* 'calt' */
- icSigCharTargetTag = 0x74617267L, /* 'targ' */
- icSigCopyrightTag = 0x63707274L, /* 'cprt' */
- icSigCrdInfoTag = 0x63726469L, /* 'crdi' */
- icSigDeviceMfgDescTag = 0x646D6E64L, /* 'dmnd' */
- icSigDeviceModelDescTag = 0x646D6464L, /* 'dmdd' */
- icSigGamutTag = 0x67616D74L, /* 'gamt ' */
- icSigGrayTRCTag = 0x6b545243L, /* 'kTRC' */
- icSigGreenColorantTag = 0x6758595AL, /* 'gXYZ' */
- icSigGreenTRCTag = 0x67545243L, /* 'gTRC' */
- icSigLuminanceTag = 0x6C756d69L, /* 'lumi' */
- icSigMeasurementTag = 0x6D656173L, /* 'meas' */
- icSigMediaBlackPointTag = 0x626B7074L, /* 'bkpt' */
- icSigMediaWhitePointTag = 0x77747074L, /* 'wtpt' */
- icSigNamedColorTag = 0x6E636f6CL, /* 'ncol'
- * OBSOLETE, use ncl2 */
- icSigNamedColor2Tag = 0x6E636C32L, /* 'ncl2' */
- icSigPreview0Tag = 0x70726530L, /* 'pre0' */
- icSigPreview1Tag = 0x70726531L, /* 'pre1' */
- icSigPreview2Tag = 0x70726532L, /* 'pre2' */
- icSigProfileDescriptionTag = 0x64657363L, /* 'desc' */
- icSigProfileSequenceDescTag = 0x70736571L, /* 'pseq' */
- icSigPs2CRD0Tag = 0x70736430L, /* 'psd0' */
- icSigPs2CRD1Tag = 0x70736431L, /* 'psd1' */
- icSigPs2CRD2Tag = 0x70736432L, /* 'psd2' */
- icSigPs2CRD3Tag = 0x70736433L, /* 'psd3' */
- icSigPs2CSATag = 0x70733273L, /* 'ps2s' */
- icSigPs2RenderingIntentTag = 0x70733269L, /* 'ps2i' */
- icSigRedColorantTag = 0x7258595AL, /* 'rXYZ' */
- icSigRedTRCTag = 0x72545243L, /* 'rTRC' */
- icSigScreeningDescTag = 0x73637264L, /* 'scrd' */
- icSigScreeningTag = 0x7363726EL, /* 'scrn' */
- icSigTechnologyTag = 0x74656368L, /* 'tech' */
- icSigUcrBgTag = 0x62666420L, /* 'bfd ' */
- icSigViewingCondDescTag = 0x76756564L, /* 'vued' */
- icSigViewingConditionsTag = 0x76696577L, /* 'view' */
- icMaxEnumTag = 0xFFFFFFFFL
-} icTagSignature;
-
-/* technology signature descriptions */
-typedef enum {
- icSigDigitalCamera = 0x6463616DL, /* 'dcam' */
- icSigFilmScanner = 0x6673636EL, /* 'fscn' */
- icSigReflectiveScanner = 0x7273636EL, /* 'rscn' */
- icSigInkJetPrinter = 0x696A6574L, /* 'ijet' */
- icSigThermalWaxPrinter = 0x74776178L, /* 'twax' */
- icSigElectrophotographicPrinter = 0x6570686FL, /* 'epho' */
- icSigElectrostaticPrinter = 0x65737461L, /* 'esta' */
- icSigDyeSublimationPrinter = 0x64737562L, /* 'dsub' */
- icSigPhotographicPaperPrinter = 0x7270686FL, /* 'rpho' */
- icSigFilmWriter = 0x6670726EL, /* 'fprn' */
- icSigVideoMonitor = 0x7669646DL, /* 'vidm' */
- icSigVideoCamera = 0x76696463L, /* 'vidc' */
- icSigProjectionTelevision = 0x706A7476L, /* 'pjtv' */
- icSigCRTDisplay = 0x43525420L, /* 'CRT ' */
- icSigPMDisplay = 0x504D4420L, /* 'PMD ' */
- icSigAMDisplay = 0x414D4420L, /* 'AMD ' */
- icSigPhotoCD = 0x4B504344L, /* 'KPCD' */
- icSigPhotoImageSetter = 0x696D6773L, /* 'imgs' */
- icSigGravure = 0x67726176L, /* 'grav' */
- icSigOffsetLithography = 0x6F666673L, /* 'offs' */
- icSigSilkscreen = 0x73696C6BL, /* 'silk' */
- icSigFlexography = 0x666C6578L, /* 'flex' */
- icMaxEnumTechnology = 0xFFFFFFFFL
-} icTechnologySignature;
-
-/* type signatures */
-typedef enum {
- icSigCurveType = 0x63757276L, /* 'curv' */
- icSigDataType = 0x64617461L, /* 'data' */
- icSigDateTimeType = 0x6474696DL, /* 'dtim' */
- icSigLut16Type = 0x6d667432L, /* 'mft2' */
- icSigLut8Type = 0x6d667431L, /* 'mft1' */
- icSigMeasurementType = 0x6D656173L, /* 'meas' */
- icSigNamedColorType = 0x6E636f6CL, /* 'ncol'
- * OBSOLETE, use ncl2 */
- icSigProfileSequenceDescType = 0x70736571L, /* 'pseq' */
- icSigS15Fixed16ArrayType = 0x73663332L, /* 'sf32' */
- icSigScreeningType = 0x7363726EL, /* 'scrn' */
- icSigSignatureType = 0x73696720L, /* 'sig ' */
- icSigTextType = 0x74657874L, /* 'text' */
- icSigTextDescriptionType = 0x64657363L, /* 'desc' */
- icSigU16Fixed16ArrayType = 0x75663332L, /* 'uf32' */
- icSigUcrBgType = 0x62666420L, /* 'bfd ' */
- icSigUInt16ArrayType = 0x75693136L, /* 'ui16' */
- icSigUInt32ArrayType = 0x75693332L, /* 'ui32' */
- icSigUInt64ArrayType = 0x75693634L, /* 'ui64' */
- icSigUInt8ArrayType = 0x75693038L, /* 'ui08' */
- icSigViewingConditionsType = 0x76696577L, /* 'view' */
- icSigXYZType = 0x58595A20L, /* 'XYZ ' */
- icSigXYZArrayType = 0x58595A20L, /* 'XYZ ' */
- icSigNamedColor2Type = 0x6E636C32L, /* 'ncl2' */
- icSigCrdInfoType = 0x63726469L, /* 'crdi' */
- icMaxEnumType = 0xFFFFFFFFL
-} icTagTypeSignature;
-
-/*
- * Color Space Signatures
- * Note that only icSigXYZData and icSigLabData are valid
- * Profile Connection Spaces (PCSs)
- */
-typedef enum {
- icSigXYZData = 0x58595A20L, /* 'XYZ ' */
- icSigLabData = 0x4C616220L, /* 'Lab ' */
- icSigLuvData = 0x4C757620L, /* 'Luv ' */
- icSigYCbCrData = 0x59436272L, /* 'YCbr' */
- icSigYxyData = 0x59787920L, /* 'Yxy ' */
- icSigRgbData = 0x52474220L, /* 'RGB ' */
- icSigGrayData = 0x47524159L, /* 'GRAY' */
- icSigHsvData = 0x48535620L, /* 'HSV ' */
- icSigHlsData = 0x484C5320L, /* 'HLS ' */
- icSigCmykData = 0x434D594BL, /* 'CMYK' */
- icSigCmyData = 0x434D5920L, /* 'CMY ' */
- icSig2colorData = 0x32434C52L, /* '2CLR' */
- icSig3colorData = 0x33434C52L, /* '3CLR' */
- icSig4colorData = 0x34434C52L, /* '4CLR' */
- icSig5colorData = 0x35434C52L, /* '5CLR' */
- icSig6colorData = 0x36434C52L, /* '6CLR' */
- icSig7colorData = 0x37434C52L, /* '7CLR' */
- icSig8colorData = 0x38434C52L, /* '8CLR' */
- icSig9colorData = 0x39434C52L, /* '9CLR' */
- icSig10colorData = 0x41434C52L, /* 'ACLR' */
- icSig11colorData = 0x42434C52L, /* 'BCLR' */
- icSig12colorData = 0x43434C52L, /* 'CCLR' */
- icSig13colorData = 0x44434C52L, /* 'DCLR' */
- icSig14colorData = 0x45434C52L, /* 'ECLR' */
- icSig15colorData = 0x46434C52L, /* 'FCLR' */
- icMaxEnumData = 0xFFFFFFFFL
-} icColorSpaceSignature;
-
-/* profileClass enumerations */
-typedef enum {
- icSigInputClass = 0x73636E72L, /* 'scnr' */
- icSigDisplayClass = 0x6D6E7472L, /* 'mntr' */
- icSigOutputClass = 0x70727472L, /* 'prtr' */
- icSigLinkClass = 0x6C696E6BL, /* 'link' */
- icSigAbstractClass = 0x61627374L, /* 'abst' */
- icSigColorSpaceClass = 0x73706163L, /* 'spac' */
- icSigNamedColorClass = 0x6e6d636cL, /* 'nmcl' */
- icMaxEnumClass = 0xFFFFFFFFL
-} icProfileClassSignature;
-
-/* Platform Signatures */
-typedef enum {
- icSigMacintosh = 0x4150504CL, /* 'APPL' */
- icSigMicrosoft = 0x4D534654L, /* 'MSFT' */
- icSigSolaris = 0x53554E57L, /* 'SUNW' */
- icSigSGI = 0x53474920L, /* 'SGI ' */
- icSigTaligent = 0x54474E54L, /* 'TGNT' */
- icMaxEnumPlatform = 0xFFFFFFFFL
-} icPlatformSignature;
-
-/*------------------------------------------------------------------------*/
-/*
- * Other enums
- */
-
-/* Measurement Flare, used in the measurmentType tag */
-typedef enum {
- icFlare0 = 0x00000000L, /* 0% flare */
- icFlare100 = 0x00000001L, /* 100% flare */
- icMaxFlare = 0xFFFFFFFFL
-} icMeasurementFlare;
-
-/* Measurement Geometry, used in the measurmentType tag */
-typedef enum {
- icGeometryUnknown = 0x00000000L, /* Unknown */
- icGeometry045or450 = 0x00000001L, /* 0/45, 45/0 */
- icGeometry0dord0 = 0x00000002L, /* 0/d or d/0 */
- icMaxGeometry = 0xFFFFFFFFL
-} icMeasurementGeometry;
-
-/* Rendering Intents, used in the profile header */
-typedef enum {
- icPerceptual = 0,
- icRelativeColorimetric = 1,
- icSaturation = 2,
- icAbsoluteColorimetric = 3,
- icMaxEnumIntent = 0xFFFFFFFFL
-} icRenderingIntent;
-
-/* Different Spot Shapes currently defined, used for screeningType */
-typedef enum {
- icSpotShapeUnknown = 0,
- icSpotShapePrinterDefault = 1,
- icSpotShapeRound = 2,
- icSpotShapeDiamond = 3,
- icSpotShapeEllipse = 4,
- icSpotShapeLine = 5,
- icSpotShapeSquare = 6,
- icSpotShapeCross = 7,
- icMaxEnumSpot = 0xFFFFFFFFL
-} icSpotShape;
-
-/* Standard Observer, used in the measurmentType tag */
-typedef enum {
- icStdObsUnknown = 0x00000000L, /* Unknown */
- icStdObs1931TwoDegrees = 0x00000001L, /* 2 deg */
- icStdObs1964TenDegrees = 0x00000002L, /* 10 deg */
- icMaxStdObs = 0xFFFFFFFFL
-} icStandardObserver;
-
-/* Pre-defined illuminants, used in measurement and viewing conditions type */
-typedef enum {
- icIlluminantUnknown = 0x00000000L,
- icIlluminantD50 = 0x00000001L,
- icIlluminantD65 = 0x00000002L,
- icIlluminantD93 = 0x00000003L,
- icIlluminantF2 = 0x00000004L,
- icIlluminantD55 = 0x00000005L,
- icIlluminantA = 0x00000006L,
- icIlluminantEquiPowerE = 0x00000007L,
- icIlluminantF8 = 0x00000008L,
- icMaxEnumIluminant = 0xFFFFFFFFL
-} icIlluminant;
-
-
-/*------------------------------------------------------------------------*/
-/*
- * Arrays of numbers
- */
-
-/* Int8 Array */
-typedef struct {
- icInt8Number data[icAny]; /* Variable array of values */
-} icInt8Array;
-
-/* UInt8 Array */
-typedef struct {
- icUInt8Number data[icAny]; /* Variable array of values */
-} icUInt8Array;
-
-/* uInt16 Array */
-typedef struct {
- icUInt16Number data[icAny]; /* Variable array of values */
-} icUInt16Array;
-
-/* Int16 Array */
-typedef struct {
- icInt16Number data[icAny]; /* Variable array of values */
-} icInt16Array;
-
-/* uInt32 Array */
-typedef struct {
- icUInt32Number data[icAny]; /* Variable array of values */
-} icUInt32Array;
-
-/* Int32 Array */
-typedef struct {
- icInt32Number data[icAny]; /* Variable array of values */
-} icInt32Array;
-
-/* UInt64 Array */
-typedef struct {
- icUInt64Number data[icAny]; /* Variable array of values */
-} icUInt64Array;
-
-/* Int64 Array */
-typedef struct {
- icInt64Number data[icAny]; /* Variable array of values */
-} icInt64Array;
-
-/* u16Fixed16 Array */
-typedef struct {
- icU16Fixed16Number data[icAny]; /* Variable array of values */
-} icU16Fixed16Array;
-
-/* s15Fixed16 Array */
-typedef struct {
- icS15Fixed16Number data[icAny]; /* Variable array of values */
-} icS15Fixed16Array;
-
-/* The base date time number */
-typedef struct {
- icUInt16Number year;
- icUInt16Number month;
- icUInt16Number day;
- icUInt16Number hours;
- icUInt16Number minutes;
- icUInt16Number seconds;
-} icDateTimeNumber;
-
-/* XYZ Number */
-typedef struct {
- icS15Fixed16Number X;
- icS15Fixed16Number Y;
- icS15Fixed16Number Z;
-} icXYZNumber;
-
-/* XYZ Array */
-typedef struct {
- icXYZNumber data[icAny]; /* Variable array of XYZ numbers */
-} icXYZArray;
-
-/* Curve */
-typedef struct {
- icUInt32Number count; /* Number of entries */
- icUInt16Number data[icAny]; /* The actual table data, real
- * number is determined by count
- * Interpretation depends on how
- * data is used with a given tag
- */
-} icCurve;
-
-/* Data */
-typedef struct {
- icUInt32Number dataFlag; /* 0 = ascii, 1 = binary */
- icInt8Number data[icAny]; /* Data, size from tag */
-} icData;
-
-/* lut16 */
-typedef struct {
- icUInt8Number inputChan; /* Number of input channels */
- icUInt8Number outputChan; /* Number of output channels */
- icUInt8Number clutPoints; /* Number of grid points */
- icInt8Number pad; /* Padding for byte alignment */
- icS15Fixed16Number e00; /* e00 in the 3 * 3 */
- icS15Fixed16Number e01; /* e01 in the 3 * 3 */
- icS15Fixed16Number e02; /* e02 in the 3 * 3 */
- icS15Fixed16Number e10; /* e10 in the 3 * 3 */
- icS15Fixed16Number e11; /* e11 in the 3 * 3 */
- icS15Fixed16Number e12; /* e12 in the 3 * 3 */
- icS15Fixed16Number e20; /* e20 in the 3 * 3 */
- icS15Fixed16Number e21; /* e21 in the 3 * 3 */
- icS15Fixed16Number e22; /* e22 in the 3 * 3 */
- icUInt16Number inputEnt; /* Num of in-table entries */
- icUInt16Number outputEnt; /* Num of out-table entries */
- icUInt16Number data[icAny]; /* Data follows see spec */
-/*
- * Data that follows is of this form
- *
- * icUInt16Number inputTable[inputChan][icAny]; * The in-table
- * icUInt16Number clutTable[icAny]; * The clut
- * icUInt16Number outputTable[outputChan][icAny]; * The out-table
- */
-} icLut16;
-
-/* lut8, input & output tables are always 256 bytes in length */
-typedef struct {
- icUInt8Number inputChan; /* Num of input channels */
- icUInt8Number outputChan; /* Num of output channels */
- icUInt8Number clutPoints; /* Num of grid points */
- icInt8Number pad;
- icS15Fixed16Number e00; /* e00 in the 3 * 3 */
- icS15Fixed16Number e01; /* e01 in the 3 * 3 */
- icS15Fixed16Number e02; /* e02 in the 3 * 3 */
- icS15Fixed16Number e10; /* e10 in the 3 * 3 */
- icS15Fixed16Number e11; /* e11 in the 3 * 3 */
- icS15Fixed16Number e12; /* e12 in the 3 * 3 */
- icS15Fixed16Number e20; /* e20 in the 3 * 3 */
- icS15Fixed16Number e21; /* e21 in the 3 * 3 */
- icS15Fixed16Number e22; /* e22 in the 3 * 3 */
- icUInt8Number data[icAny]; /* Data follows see spec */
-/*
- * Data that follows is of this form
- *
- * icUInt8Number inputTable[inputChan][256]; * The in-table
- * icUInt8Number clutTable[icAny]; * The clut
- * icUInt8Number outputTable[outputChan][256]; * The out-table
- */
-} icLut8;
-
-/* Measurement Data */
-typedef struct {
- icStandardObserver stdObserver; /* Standard observer */
- icXYZNumber backing; /* XYZ for backing */
- icMeasurementGeometry geometry; /* Meas. geometry */
- icMeasurementFlare flare; /* Measurement flare */
- icIlluminant illuminant; /* Illuminant */
-} icMeasurement;
-
-/* Named color */
-
-/*
- * icNamedColor2 takes the place of icNamedColor
- */
-typedef struct {
- icUInt32Number vendorFlag; /* Bottom 16 bits for IC use */
- icUInt32Number count; /* Count of named colors */
- icUInt32Number nDeviceCoords; /* Num of device coordinates */
- icInt8Number prefix[32]; /* Prefix for each color name */
- icInt8Number suffix[32]; /* Suffix for each color name */
- icInt8Number data[icAny]; /* Named color data follows */
-/*
- * Data that follows is of this form
- *
- * icInt8Number root1[32]; * Root name for 1st color
- * icUInt16Number pcsCoords1[icAny]; * PCS coords of 1st color
- * icUInt16Number deviceCoords1[icAny]; * Dev coords of 1st color
- * icInt8Number root2[32]; * Root name for 2nd color
- * icUInt16Number pcsCoords2[icAny]; * PCS coords of 2nd color
- * icUInt16Number deviceCoords2[icAny]; * Dev coords of 2nd color
- * :
- * :
- * Repeat for name and PCS and device color coordinates up to (count-1)
- *
- * NOTES:
- * PCS and device space can be determined from the header.
- *
- * PCS coordinates are icUInt16 numbers and are described in Annex A of
- * the ICC spec. Only 16 bit L*a*b* and XYZ are allowed. The number of
- * coordinates is consistent with the headers PCS.
- *
- * Device coordinates are icUInt16 numbers where 0x0000 represents
- * the minimum value and 0xFFFF represents the maximum value.
- * If the nDeviceCoords value is 0 this field is not given.
- */
-} icNamedColor2;
-
-/* Profile sequence structure */
-typedef struct {
- icSignature deviceMfg; /* Dev Manufacturer */
- icSignature deviceModel; /* Dev Model */
- icUInt64Number attributes; /* Dev attributes */
- icTechnologySignature technology; /* Technology sig */
- icInt8Number data[icAny]; /* Desc text follows */
-/*
- * Data that follows is of this form, this is an icInt8Number
- * to avoid problems with a compiler generating bad code as
- * these arrays are variable in length.
- *
- * icTextDescription deviceMfgDesc; * Manufacturer text
- * icTextDescription modelDesc; * Model text
- */
-} icDescStruct;
-
-/* Profile sequence description */
-typedef struct {
- icUInt32Number count; /* Number of descriptions */
- icUInt8Number data[icAny]; /* Array of desc structs */
-} icProfileSequenceDesc;
-
-/* textDescription */
-typedef struct {
- icUInt32Number count; /* Description length */
- icInt8Number data[icAny]; /* Descriptions follow */
-/*
- * Data that follows is of this form
- *
- * icInt8Number desc[count] * NULL terminated ascii string
- * icUInt32Number ucLangCode; * UniCode language code
- * icUInt32Number ucCount; * UniCode description length
- * icInt16Number ucDesc[ucCount];* The UniCode description
- * icUInt16Number scCode; * ScriptCode code
- * icUInt8Number scCount; * ScriptCode count
- * icInt8Number scDesc[67]; * ScriptCode Description
- */
-} icTextDescription;
-
-/* Screening Data */
-typedef struct {
- icS15Fixed16Number frequency; /* Frequency */
- icS15Fixed16Number angle; /* Screen angle */
- icSpotShape spotShape; /* Spot Shape encodings below */
-} icScreeningData;
-
-typedef struct {
- icUInt32Number screeningFlag; /* Screening flag */
- icUInt32Number channels; /* Number of channels */
- icScreeningData data[icAny]; /* Array of screening data */
-} icScreening;
-
-/* Text Data */
-typedef struct {
- icInt8Number data[icAny]; /* Variable array of chars */
-} icText;
-
-/* Structure describing either a UCR or BG curve */
-typedef struct {
- icUInt32Number count; /* Curve length */
- icUInt16Number curve[icAny]; /* The array of curve values */
-} icUcrBgCurve;
-
-/* Under color removal, black generation */
-typedef struct {
- icInt8Number data[icAny]; /* The Ucr BG data */
-/*
- * Data that follows is of this form, this is a icInt8Number
- * to avoid problems with a compiler generating bad code as
- * these arrays are variable in length.
- *
- * icUcrBgCurve ucr; * Ucr curve
- * icUcrBgCurve bg; * Bg curve
- * icInt8Number string; * UcrBg description
- */
-} icUcrBg;
-
-/* viewingConditionsType */
-typedef struct {
- icXYZNumber illuminant; /* In candelas per sq. meter */
- icXYZNumber surround; /* In candelas per sq. meter */
- icIlluminant stdIluminant; /* See icIlluminant defines */
-} icViewingCondition;
-
-/* CrdInfo type */
-typedef struct {
- icUInt32Number count; /* Char count includes NULL */
- icInt8Number desc[icAny]; /* Null terminated string */
-} icCrdInfo;
-
-/*------------------------------------------------------------------------*/
-/*
- * Tag Type definitions
- */
-
-/*
- * Many of the structures contain variable length arrays. This
- * is represented by the use of the convention.
- *
- * type data[icAny];
- */
-
-/* The base part of each tag */
-typedef struct {
- icTagTypeSignature sig; /* Signature */
- icInt8Number reserved[4]; /* Reserved, set to 0 */
-} icTagBase;
-
-/* curveType */
-typedef struct {
- icTagBase base; /* Signature, "curv" */
- icCurve curve; /* The curve data */
-} icCurveType;
-
-/* dataType */
-typedef struct {
- icTagBase base; /* Signature, "data" */
- icData data; /* The data structure */
-} icDataType;
-
-/* dateTimeType */
-typedef struct {
- icTagBase base; /* Signature, "dtim" */
- icDateTimeNumber date; /* The date */
-} icDateTimeType;
-
-/* lut16Type */
-typedef struct {
- icTagBase base; /* Signature, "mft2" */
- icLut16 lut; /* Lut16 data */
-} icLut16Type;
-
-/* lut8Type, input & output tables are always 256 bytes in length */
-typedef struct {
- icTagBase base; /* Signature, "mft1" */
- icLut8 lut; /* Lut8 data */
-} icLut8Type;
-
-/* Measurement Type */
-typedef struct {
- icTagBase base; /* Signature, "meas" */
- icMeasurement measurement; /* Measurement data */
-} icMeasurementType;
-
-/* Named color type */
-/* icNamedColor2Type, replaces icNamedColorType */
-typedef struct {
- icTagBase base; /* Signature, "ncl2" */
- icNamedColor2 ncolor; /* Named color data */
-} icNamedColor2Type;
-
-/* Profile sequence description type */
-typedef struct {
- icTagBase base; /* Signature, "pseq" */
- icProfileSequenceDesc desc; /* The seq description */
-} icProfileSequenceDescType;
-
-/* textDescriptionType */
-typedef struct {
- icTagBase base; /* Signature, "desc" */
- icTextDescription desc; /* The description */
-} icTextDescriptionType;
-
-/* s15Fixed16Type */
-typedef struct {
- icTagBase base; /* Signature, "sf32" */
- icS15Fixed16Array data; /* Array of values */
-} icS15Fixed16ArrayType;
-
-typedef struct {
- icTagBase base; /* Signature, "scrn" */
- icScreening screen; /* Screening structure */
-} icScreeningType;
-
-/* sigType */
-typedef struct {
- icTagBase base; /* Signature, "sig" */
- icSignature signature; /* The signature data */
-} icSignatureType;
-
-/* textType */
-typedef struct {
- icTagBase base; /* Signature, "text" */
- icText data; /* Variable array of chars */
-} icTextType;
-
-/* u16Fixed16Type */
-typedef struct {
- icTagBase base; /* Signature, "uf32" */
- icU16Fixed16Array data; /* Variable array of values */
-} icU16Fixed16ArrayType;
-
-/* Under color removal, black generation type */
-typedef struct {
- icTagBase base; /* Signature, "bfd " */
- icUcrBg data; /* ucrBg structure */
-} icUcrBgType;
-
-/* uInt16Type */
-typedef struct {
- icTagBase base; /* Signature, "ui16" */
- icUInt16Array data; /* Variable array of values */
-} icUInt16ArrayType;
-
-/* uInt32Type */
-typedef struct {
- icTagBase base; /* Signature, "ui32" */
- icUInt32Array data; /* Variable array of values */
-} icUInt32ArrayType;
-
-/* uInt64Type */
-typedef struct {
- icTagBase base; /* Signature, "ui64" */
- icUInt64Array data; /* Variable array of values */
-} icUInt64ArrayType;
-
-/* uInt8Type */
-typedef struct {
- icTagBase base; /* Signature, "ui08" */
- icUInt8Array data; /* Variable array of values */
-} icUInt8ArrayType;
-
-/* viewingConditionsType */
-typedef struct {
- icTagBase base; /* Signature, "view" */
- icViewingCondition view; /* Viewing conditions */
-} icViewingConditionType;
-
-/* XYZ Type */
-typedef struct {
- icTagBase base; /* Signature, "XYZ" */
- icXYZArray data; /* Variable array of XYZ nums */
-} icXYZType;
-
-/* CRDInfoType where [0] is the CRD product name count and string and
- * [1] -[5] are the rendering intents 0-4 counts and strings
- */
-typedef struct {
- icTagBase base; /* Signature, "crdi" */
- icCrdInfo info; /* 5 sets of counts & strings */
-}icCrdInfoType;
- /* icCrdInfo productName; PS product count/string */
- /* icCrdInfo CRDName0; CRD name for intent 0 */
- /* icCrdInfo CRDName1; CRD name for intent 1 */
- /* icCrdInfo CRDName2; CRD name for intent 2 */
- /* icCrdInfo CRDName3; CRD name for intent 3 */
-
-/*------------------------------------------------------------------------*/
-
-/*
- * Lists of tags, tags, profile header and profile structure
- */
-
-/* A tag */
-typedef struct {
- icTagSignature sig; /* The tag signature */
- icUInt32Number offset; /* Start of tag relative to
- * start of header, Spec
- * Clause 5 */
- icUInt32Number size; /* Size in bytes */
-} icTag;
-
-/* A Structure that may be used independently for a list of tags */
-typedef struct {
- icUInt32Number count; /* Num tags in the profile */
- icTag tags[icAny]; /* Variable array of tags */
-} icTagList;
-
-/* The Profile header */
-typedef struct {
- icUInt32Number size; /* Prof size in bytes */
- icSignature cmmId; /* CMM for profile */
- icUInt32Number version; /* Format version */
- icProfileClassSignature deviceClass; /* Type of profile */
- icColorSpaceSignature colorSpace; /* Clr space of data */
- icColorSpaceSignature pcs; /* PCS, XYZ or Lab */
- icDateTimeNumber date; /* Creation Date */
- icSignature magic; /* icMagicNumber */
- icPlatformSignature platform; /* Primary Platform */
- icUInt32Number flags; /* Various bits */
- icSignature manufacturer; /* Dev manufacturer */
- icUInt32Number model; /* Dev model number */
- icUInt64Number attributes; /* Device attributes */
- icUInt32Number renderingIntent;/* Rendering intent */
- icXYZNumber illuminant; /* Profile illuminant */
- icSignature creator; /* Profile creator */
- icInt8Number reserved[44]; /* Reserved */
-} icHeader;
-
-/*
- * A profile,
- * we can't use icTagList here because its not at the end of the structure
- */
-typedef struct {
- icHeader header; /* The header */
- icUInt32Number count; /* Num tags in the profile */
- icInt8Number data[icAny]; /* The tagTable and tagData */
-/*
- * Data that follows is of the form
- *
- * icTag tagTable[icAny]; * The tag table
- * icInt8Number tagData[icAny]; * The tag data
- */
-} icProfile;
-
-/*------------------------------------------------------------------------*/
-/* Obsolete entries */
-
-/* icNamedColor was replaced with icNamedColor2 */
-typedef struct {
- icUInt32Number vendorFlag; /* Bottom 16 bits for IC use */
- icUInt32Number count; /* Count of named colors */
- icInt8Number data[icAny]; /* Named color data follows */
-/*
- * Data that follows is of this form
- *
- * icInt8Number prefix[icAny]; * Prefix
- * icInt8Number suffix[icAny]; * Suffix
- * icInt8Number root1[icAny]; * Root name
- * icInt8Number coords1[icAny]; * Color coordinates
- * icInt8Number root2[icAny]; * Root name
- * icInt8Number coords2[icAny]; * Color coordinates
- * :
- * :
- * Repeat for root name and color coordinates up to (count-1)
- */
-} icNamedColor;
-
-/* icNamedColorType was replaced by icNamedColor2Type */
-typedef struct {
- icTagBase base; /* Signature, "ncol" */
- icNamedColor ncolor; /* Named color data */
-} icNamedColorType;
-
-#endif /* ICC_H */