1*3ac0a46fSAndroid Build Coastguard Worker //--------------------------------------------------------------------------------- 2*3ac0a46fSAndroid Build Coastguard Worker // 3*3ac0a46fSAndroid Build Coastguard Worker // Little Color Management System 4*3ac0a46fSAndroid Build Coastguard Worker // Copyright (c) 1998-2023 Marti Maria Saguer 5*3ac0a46fSAndroid Build Coastguard Worker // 6*3ac0a46fSAndroid Build Coastguard Worker // Permission is hereby granted, free of charge, to any person obtaining 7*3ac0a46fSAndroid Build Coastguard Worker // a copy of this software and associated documentation files (the "Software"), 8*3ac0a46fSAndroid Build Coastguard Worker // to deal in the Software without restriction, including without limitation 9*3ac0a46fSAndroid Build Coastguard Worker // the rights to use, copy, modify, merge, publish, distribute, sublicense, 10*3ac0a46fSAndroid Build Coastguard Worker // and/or sell copies of the Software, and to permit persons to whom the Software 11*3ac0a46fSAndroid Build Coastguard Worker // is furnished to do so, subject to the following conditions: 12*3ac0a46fSAndroid Build Coastguard Worker // 13*3ac0a46fSAndroid Build Coastguard Worker // The above copyright notice and this permission notice shall be included in 14*3ac0a46fSAndroid Build Coastguard Worker // all copies or substantial portions of the Software. 15*3ac0a46fSAndroid Build Coastguard Worker // 16*3ac0a46fSAndroid Build Coastguard Worker // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17*3ac0a46fSAndroid Build Coastguard Worker // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 18*3ac0a46fSAndroid Build Coastguard Worker // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19*3ac0a46fSAndroid Build Coastguard Worker // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20*3ac0a46fSAndroid Build Coastguard Worker // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21*3ac0a46fSAndroid Build Coastguard Worker // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22*3ac0a46fSAndroid Build Coastguard Worker // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23*3ac0a46fSAndroid Build Coastguard Worker // 24*3ac0a46fSAndroid Build Coastguard Worker //--------------------------------------------------------------------------------- 25*3ac0a46fSAndroid Build Coastguard Worker // 26*3ac0a46fSAndroid Build Coastguard Worker // Version 2.15 27*3ac0a46fSAndroid Build Coastguard Worker // 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker #ifndef _lcms2_H 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker // ********** Configuration toggles **************************************** 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this one if you are using big endian machines 34*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_USE_BIG_ENDIAN 1 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this one if your compiler/machine does NOT support the 37*3ac0a46fSAndroid Build Coastguard Worker // "long long" type. 38*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_DONT_USE_INT64 1 39*3ac0a46fSAndroid Build Coastguard Worker 40*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this if your compiler doesn't work with fast floor function 41*3ac0a46fSAndroid Build Coastguard Worker #define CMS_DONT_USE_FAST_FLOOR 1 42*3ac0a46fSAndroid Build Coastguard Worker 43*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this line if you want lcms to use the black point tag in profile, 44*3ac0a46fSAndroid Build Coastguard Worker // if commented, lcms will compute the black point by its own. 45*3ac0a46fSAndroid Build Coastguard Worker // It is safer to leave it commented out 46*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_USE_PROFILE_BLACK_POINT_TAG 1 47*3ac0a46fSAndroid Build Coastguard Worker 48*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this line if you are compiling as C++ and want a C++ API 49*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_USE_CPP_API 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this line if you need strict CGATS syntax. Makes CGATS files to 52*3ac0a46fSAndroid Build Coastguard Worker // require "KEYWORD" on undefined identifiers, keep it commented out unless needed 53*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_STRICT_CGATS 1 54*3ac0a46fSAndroid Build Coastguard Worker 55*3ac0a46fSAndroid Build Coastguard Worker // Uncomment to get rid of the tables for "half" float support 56*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_NO_HALF_SUPPORT 1 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker // Uncomment to get rid of pthreads/windows dependency 59*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_NO_PTHREADS 1 60*3ac0a46fSAndroid Build Coastguard Worker 61*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this for special windows mutex initialization (see lcms2_internal.h) 62*3ac0a46fSAndroid Build Coastguard Worker // #define CMS_RELY_ON_WINDOWS_STATIC_MUTEX_INIT 63*3ac0a46fSAndroid Build Coastguard Worker 64*3ac0a46fSAndroid Build Coastguard Worker // Uncomment this to remove the "register" storage class 65*3ac0a46fSAndroid Build Coastguard Worker #define CMS_NO_REGISTER_KEYWORD 1 66*3ac0a46fSAndroid Build Coastguard Worker 67*3ac0a46fSAndroid Build Coastguard Worker // ********** End of configuration toggles ****************************** 68*3ac0a46fSAndroid Build Coastguard Worker 69*3ac0a46fSAndroid Build Coastguard Worker // Needed for streams 70*3ac0a46fSAndroid Build Coastguard Worker #include <stdio.h> 71*3ac0a46fSAndroid Build Coastguard Worker 72*3ac0a46fSAndroid Build Coastguard Worker // Needed for portability (C99 per 7.1.2) 73*3ac0a46fSAndroid Build Coastguard Worker #include <limits.h> 74*3ac0a46fSAndroid Build Coastguard Worker #include <time.h> 75*3ac0a46fSAndroid Build Coastguard Worker #include <stddef.h> 76*3ac0a46fSAndroid Build Coastguard Worker 77*3ac0a46fSAndroid Build Coastguard Worker #ifndef CMS_USE_CPP_API 78*3ac0a46fSAndroid Build Coastguard Worker # ifdef __cplusplus 79*3ac0a46fSAndroid Build Coastguard Worker extern "C" { 80*3ac0a46fSAndroid Build Coastguard Worker # endif 81*3ac0a46fSAndroid Build Coastguard Worker #endif 82*3ac0a46fSAndroid Build Coastguard Worker 83*3ac0a46fSAndroid Build Coastguard Worker // Version/release 84*3ac0a46fSAndroid Build Coastguard Worker #define LCMS_VERSION 2150 85*3ac0a46fSAndroid Build Coastguard Worker 86*3ac0a46fSAndroid Build Coastguard Worker // I will give the chance of redefining basic types for compilers that are not fully C99 compliant 87*3ac0a46fSAndroid Build Coastguard Worker #ifndef CMS_BASIC_TYPES_ALREADY_DEFINED 88*3ac0a46fSAndroid Build Coastguard Worker 89*3ac0a46fSAndroid Build Coastguard Worker // Base types 90*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned char cmsUInt8Number; // That is guaranteed by the C99 spec 91*3ac0a46fSAndroid Build Coastguard Worker typedef signed char cmsInt8Number; // That is guaranteed by the C99 spec 92*3ac0a46fSAndroid Build Coastguard Worker 93*3ac0a46fSAndroid Build Coastguard Worker #if CHAR_BIT != 8 94*3ac0a46fSAndroid Build Coastguard Worker # error "Unable to find 8 bit type, unsupported compiler" 95*3ac0a46fSAndroid Build Coastguard Worker #endif 96*3ac0a46fSAndroid Build Coastguard Worker 97*3ac0a46fSAndroid Build Coastguard Worker // IEEE float storage numbers 98*3ac0a46fSAndroid Build Coastguard Worker typedef float cmsFloat32Number; 99*3ac0a46fSAndroid Build Coastguard Worker typedef double cmsFloat64Number; 100*3ac0a46fSAndroid Build Coastguard Worker 101*3ac0a46fSAndroid Build Coastguard Worker // 16-bit base types 102*3ac0a46fSAndroid Build Coastguard Worker #if (USHRT_MAX == 65535U) 103*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned short cmsUInt16Number; 104*3ac0a46fSAndroid Build Coastguard Worker #elif (UINT_MAX == 65535U) 105*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned int cmsUInt16Number; 106*3ac0a46fSAndroid Build Coastguard Worker #else 107*3ac0a46fSAndroid Build Coastguard Worker # error "Unable to find 16 bits unsigned type, unsupported compiler" 108*3ac0a46fSAndroid Build Coastguard Worker #endif 109*3ac0a46fSAndroid Build Coastguard Worker 110*3ac0a46fSAndroid Build Coastguard Worker #if (SHRT_MAX == 32767) 111*3ac0a46fSAndroid Build Coastguard Worker typedef short cmsInt16Number; 112*3ac0a46fSAndroid Build Coastguard Worker #elif (INT_MAX == 32767) 113*3ac0a46fSAndroid Build Coastguard Worker typedef int cmsInt16Number; 114*3ac0a46fSAndroid Build Coastguard Worker #else 115*3ac0a46fSAndroid Build Coastguard Worker # error "Unable to find 16 bits signed type, unsupported compiler" 116*3ac0a46fSAndroid Build Coastguard Worker #endif 117*3ac0a46fSAndroid Build Coastguard Worker 118*3ac0a46fSAndroid Build Coastguard Worker // 32-bit base type 119*3ac0a46fSAndroid Build Coastguard Worker #if (UINT_MAX == 4294967295U) 120*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned int cmsUInt32Number; 121*3ac0a46fSAndroid Build Coastguard Worker #elif (ULONG_MAX == 4294967295U) 122*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned long cmsUInt32Number; 123*3ac0a46fSAndroid Build Coastguard Worker #else 124*3ac0a46fSAndroid Build Coastguard Worker # error "Unable to find 32 bit unsigned type, unsupported compiler" 125*3ac0a46fSAndroid Build Coastguard Worker #endif 126*3ac0a46fSAndroid Build Coastguard Worker 127*3ac0a46fSAndroid Build Coastguard Worker #if (INT_MAX == +2147483647) 128*3ac0a46fSAndroid Build Coastguard Worker typedef int cmsInt32Number; 129*3ac0a46fSAndroid Build Coastguard Worker #elif (LONG_MAX == +2147483647) 130*3ac0a46fSAndroid Build Coastguard Worker typedef long cmsInt32Number; 131*3ac0a46fSAndroid Build Coastguard Worker #else 132*3ac0a46fSAndroid Build Coastguard Worker # error "Unable to find 32 bit signed type, unsupported compiler" 133*3ac0a46fSAndroid Build Coastguard Worker #endif 134*3ac0a46fSAndroid Build Coastguard Worker 135*3ac0a46fSAndroid Build Coastguard Worker // 64-bit base types 136*3ac0a46fSAndroid Build Coastguard Worker #ifndef CMS_DONT_USE_INT64 137*3ac0a46fSAndroid Build Coastguard Worker # if (ULONG_MAX == 18446744073709551615U) 138*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned long cmsUInt64Number; 139*3ac0a46fSAndroid Build Coastguard Worker # elif (ULLONG_MAX == 18446744073709551615U) 140*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned long long cmsUInt64Number; 141*3ac0a46fSAndroid Build Coastguard Worker # else 142*3ac0a46fSAndroid Build Coastguard Worker # define CMS_DONT_USE_INT64 1 143*3ac0a46fSAndroid Build Coastguard Worker # endif 144*3ac0a46fSAndroid Build Coastguard Worker # if (LONG_MAX == +9223372036854775807) 145*3ac0a46fSAndroid Build Coastguard Worker typedef long cmsInt64Number; 146*3ac0a46fSAndroid Build Coastguard Worker # elif (LLONG_MAX == +9223372036854775807) 147*3ac0a46fSAndroid Build Coastguard Worker typedef long long cmsInt64Number; 148*3ac0a46fSAndroid Build Coastguard Worker # else 149*3ac0a46fSAndroid Build Coastguard Worker # define CMS_DONT_USE_INT64 1 150*3ac0a46fSAndroid Build Coastguard Worker # endif 151*3ac0a46fSAndroid Build Coastguard Worker #endif 152*3ac0a46fSAndroid Build Coastguard Worker #endif 153*3ac0a46fSAndroid Build Coastguard Worker 154*3ac0a46fSAndroid Build Coastguard Worker // Handle "register" keyword 155*3ac0a46fSAndroid Build Coastguard Worker #if defined(CMS_NO_REGISTER_KEYWORD) 156*3ac0a46fSAndroid Build Coastguard Worker # define CMSREGISTER 157*3ac0a46fSAndroid Build Coastguard Worker #else 158*3ac0a46fSAndroid Build Coastguard Worker # define CMSREGISTER register 159*3ac0a46fSAndroid Build Coastguard Worker #endif 160*3ac0a46fSAndroid Build Coastguard Worker 161*3ac0a46fSAndroid Build Coastguard Worker // In the case 64 bit numbers are not supported by the compiler 162*3ac0a46fSAndroid Build Coastguard Worker #ifdef CMS_DONT_USE_INT64 163*3ac0a46fSAndroid Build Coastguard Worker typedef cmsUInt32Number cmsUInt64Number[2]; 164*3ac0a46fSAndroid Build Coastguard Worker typedef cmsInt32Number cmsInt64Number[2]; 165*3ac0a46fSAndroid Build Coastguard Worker #endif 166*3ac0a46fSAndroid Build Coastguard Worker 167*3ac0a46fSAndroid Build Coastguard Worker // Derivative types 168*3ac0a46fSAndroid Build Coastguard Worker typedef cmsUInt32Number cmsSignature; 169*3ac0a46fSAndroid Build Coastguard Worker typedef cmsUInt16Number cmsU8Fixed8Number; 170*3ac0a46fSAndroid Build Coastguard Worker typedef cmsInt32Number cmsS15Fixed16Number; 171*3ac0a46fSAndroid Build Coastguard Worker typedef cmsUInt32Number cmsU16Fixed16Number; 172*3ac0a46fSAndroid Build Coastguard Worker 173*3ac0a46fSAndroid Build Coastguard Worker // Boolean type, which will be using the native integer 174*3ac0a46fSAndroid Build Coastguard Worker typedef int cmsBool; 175*3ac0a46fSAndroid Build Coastguard Worker 176*3ac0a46fSAndroid Build Coastguard Worker // Try to detect windows 177*3ac0a46fSAndroid Build Coastguard Worker #if defined (_WIN32) || defined(_WIN64) || defined(WIN32) || defined(_WIN32_) 178*3ac0a46fSAndroid Build Coastguard Worker # define CMS_IS_WINDOWS_ 1 179*3ac0a46fSAndroid Build Coastguard Worker #endif 180*3ac0a46fSAndroid Build Coastguard Worker 181*3ac0a46fSAndroid Build Coastguard Worker #ifdef _MSC_VER 182*3ac0a46fSAndroid Build Coastguard Worker # define CMS_IS_WINDOWS_ 1 183*3ac0a46fSAndroid Build Coastguard Worker #endif 184*3ac0a46fSAndroid Build Coastguard Worker 185*3ac0a46fSAndroid Build Coastguard Worker #ifdef __BORLANDC__ 186*3ac0a46fSAndroid Build Coastguard Worker # define CMS_IS_WINDOWS_ 1 187*3ac0a46fSAndroid Build Coastguard Worker #endif 188*3ac0a46fSAndroid Build Coastguard Worker 189*3ac0a46fSAndroid Build Coastguard Worker // Try to detect big endian platforms. This list can be endless, so primarily rely on the configure script 190*3ac0a46fSAndroid Build Coastguard Worker // on Unix-like systems, and allow it to be set on the compiler command line using 191*3ac0a46fSAndroid Build Coastguard Worker // -DCMS_USE_BIG_ENDIAN or something similar 192*3ac0a46fSAndroid Build Coastguard Worker #ifdef CMS_USE_BIG_ENDIAN // set at compiler command line takes overall precedence 193*3ac0a46fSAndroid Build Coastguard Worker 194*3ac0a46fSAndroid Build Coastguard Worker # if CMS_USE_BIG_ENDIAN == 0 195*3ac0a46fSAndroid Build Coastguard Worker # undef CMS_USE_BIG_ENDIAN 196*3ac0a46fSAndroid Build Coastguard Worker # endif 197*3ac0a46fSAndroid Build Coastguard Worker 198*3ac0a46fSAndroid Build Coastguard Worker #else // CMS_USE_BIG_ENDIAN 199*3ac0a46fSAndroid Build Coastguard Worker 200*3ac0a46fSAndroid Build Coastguard Worker # ifdef WORDS_BIGENDIAN // set by configure (or explicitly on compiler command line) 201*3ac0a46fSAndroid Build Coastguard Worker # define CMS_USE_BIG_ENDIAN 1 202*3ac0a46fSAndroid Build Coastguard Worker # else // WORDS_BIGENDIAN 203*3ac0a46fSAndroid Build Coastguard Worker // Fall back to platform/compiler specific tests 204*3ac0a46fSAndroid Build Coastguard Worker # if defined(__sgi__) || defined(__sgi) || defined(sparc) 205*3ac0a46fSAndroid Build Coastguard Worker # define CMS_USE_BIG_ENDIAN 1 206*3ac0a46fSAndroid Build Coastguard Worker # endif 207*3ac0a46fSAndroid Build Coastguard Worker 208*3ac0a46fSAndroid Build Coastguard Worker # if defined(__s390__) || defined(__s390x__) 209*3ac0a46fSAndroid Build Coastguard Worker # define CMS_USE_BIG_ENDIAN 1 210*3ac0a46fSAndroid Build Coastguard Worker # endif 211*3ac0a46fSAndroid Build Coastguard Worker 212*3ac0a46fSAndroid Build Coastguard Worker # ifdef macintosh 213*3ac0a46fSAndroid Build Coastguard Worker # ifdef __BIG_ENDIAN__ 214*3ac0a46fSAndroid Build Coastguard Worker # define CMS_USE_BIG_ENDIAN 1 215*3ac0a46fSAndroid Build Coastguard Worker # endif 216*3ac0a46fSAndroid Build Coastguard Worker # ifdef __LITTLE_ENDIAN__ 217*3ac0a46fSAndroid Build Coastguard Worker # undef CMS_USE_BIG_ENDIAN 218*3ac0a46fSAndroid Build Coastguard Worker # endif 219*3ac0a46fSAndroid Build Coastguard Worker # endif 220*3ac0a46fSAndroid Build Coastguard Worker # endif // WORDS_BIGENDIAN 221*3ac0a46fSAndroid Build Coastguard Worker 222*3ac0a46fSAndroid Build Coastguard Worker # if defined(_HOST_BIG_ENDIAN) || defined(__BIG_ENDIAN__) 223*3ac0a46fSAndroid Build Coastguard Worker # define CMS_USE_BIG_ENDIAN 1 224*3ac0a46fSAndroid Build Coastguard Worker # endif 225*3ac0a46fSAndroid Build Coastguard Worker 226*3ac0a46fSAndroid Build Coastguard Worker #endif // CMS_USE_BIG_ENDIAN 227*3ac0a46fSAndroid Build Coastguard Worker 228*3ac0a46fSAndroid Build Coastguard Worker 229*3ac0a46fSAndroid Build Coastguard Worker // Calling convention -- this is hardly platform and compiler dependent 230*3ac0a46fSAndroid Build Coastguard Worker #if defined(CMS_IS_WINDOWS_) && !defined(__GNUC__) 231*3ac0a46fSAndroid Build Coastguard Worker # if defined(CMS_DLL) || defined(CMS_DLL_BUILD) 232*3ac0a46fSAndroid Build Coastguard Worker # ifdef __BORLANDC__ 233*3ac0a46fSAndroid Build Coastguard Worker # define CMSEXPORT __stdcall _export 234*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI 235*3ac0a46fSAndroid Build Coastguard Worker # else 236*3ac0a46fSAndroid Build Coastguard Worker # define CMSEXPORT __stdcall 237*3ac0a46fSAndroid Build Coastguard Worker # ifdef CMS_DLL_BUILD 238*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI __declspec(dllexport) 239*3ac0a46fSAndroid Build Coastguard Worker # else 240*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI __declspec(dllimport) 241*3ac0a46fSAndroid Build Coastguard Worker # endif 242*3ac0a46fSAndroid Build Coastguard Worker # endif 243*3ac0a46fSAndroid Build Coastguard Worker # else 244*3ac0a46fSAndroid Build Coastguard Worker # define CMSEXPORT 245*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI 246*3ac0a46fSAndroid Build Coastguard Worker # endif 247*3ac0a46fSAndroid Build Coastguard Worker #else // not Windows 248*3ac0a46fSAndroid Build Coastguard Worker # ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY 249*3ac0a46fSAndroid Build Coastguard Worker # define CMSEXPORT 250*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI __attribute__((visibility("default"))) 251*3ac0a46fSAndroid Build Coastguard Worker # else 252*3ac0a46fSAndroid Build Coastguard Worker # define CMSEXPORT 253*3ac0a46fSAndroid Build Coastguard Worker # define CMSAPI 254*3ac0a46fSAndroid Build Coastguard Worker # endif 255*3ac0a46fSAndroid Build Coastguard Worker #endif // CMS_IS_WINDOWS_ 256*3ac0a46fSAndroid Build Coastguard Worker 257*3ac0a46fSAndroid Build Coastguard Worker #ifdef HasTHREADS 258*3ac0a46fSAndroid Build Coastguard Worker # if HasTHREADS == 1 259*3ac0a46fSAndroid Build Coastguard Worker # undef CMS_NO_PTHREADS 260*3ac0a46fSAndroid Build Coastguard Worker # else 261*3ac0a46fSAndroid Build Coastguard Worker # define CMS_NO_PTHREADS 1 262*3ac0a46fSAndroid Build Coastguard Worker # endif 263*3ac0a46fSAndroid Build Coastguard Worker #endif 264*3ac0a46fSAndroid Build Coastguard Worker 265*3ac0a46fSAndroid Build Coastguard Worker // Some common definitions 266*3ac0a46fSAndroid Build Coastguard Worker #define cmsMAX_PATH 256 267*3ac0a46fSAndroid Build Coastguard Worker 268*3ac0a46fSAndroid Build Coastguard Worker #ifndef FALSE 269*3ac0a46fSAndroid Build Coastguard Worker # define FALSE 0 270*3ac0a46fSAndroid Build Coastguard Worker #endif 271*3ac0a46fSAndroid Build Coastguard Worker #ifndef TRUE 272*3ac0a46fSAndroid Build Coastguard Worker # define TRUE 1 273*3ac0a46fSAndroid Build Coastguard Worker #endif 274*3ac0a46fSAndroid Build Coastguard Worker 275*3ac0a46fSAndroid Build Coastguard Worker // D50 XYZ normalized to Y=1.0 276*3ac0a46fSAndroid Build Coastguard Worker #define cmsD50X 0.9642 277*3ac0a46fSAndroid Build Coastguard Worker #define cmsD50Y 1.0 278*3ac0a46fSAndroid Build Coastguard Worker #define cmsD50Z 0.8249 279*3ac0a46fSAndroid Build Coastguard Worker 280*3ac0a46fSAndroid Build Coastguard Worker // V4 perceptual black 281*3ac0a46fSAndroid Build Coastguard Worker #define cmsPERCEPTUAL_BLACK_X 0.00336 282*3ac0a46fSAndroid Build Coastguard Worker #define cmsPERCEPTUAL_BLACK_Y 0.0034731 283*3ac0a46fSAndroid Build Coastguard Worker #define cmsPERCEPTUAL_BLACK_Z 0.00287 284*3ac0a46fSAndroid Build Coastguard Worker 285*3ac0a46fSAndroid Build Coastguard Worker // Definitions in ICC spec 286*3ac0a46fSAndroid Build Coastguard Worker #define cmsMagicNumber 0x61637370 // 'acsp' 287*3ac0a46fSAndroid Build Coastguard Worker #define lcmsSignature 0x6c636d73 // 'lcms' 288*3ac0a46fSAndroid Build Coastguard Worker 289*3ac0a46fSAndroid Build Coastguard Worker 290*3ac0a46fSAndroid Build Coastguard Worker // Base ICC type definitions 291*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 292*3ac0a46fSAndroid Build Coastguard Worker cmsSigChromaticityType = 0x6368726D, // 'chrm' 293*3ac0a46fSAndroid Build Coastguard Worker cmsSigcicpType = 0x63696370, // 'cicp' 294*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorantOrderType = 0x636C726F, // 'clro' 295*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorantTableType = 0x636C7274, // 'clrt' 296*3ac0a46fSAndroid Build Coastguard Worker cmsSigCrdInfoType = 0x63726469, // 'crdi' 297*3ac0a46fSAndroid Build Coastguard Worker cmsSigCurveType = 0x63757276, // 'curv' 298*3ac0a46fSAndroid Build Coastguard Worker cmsSigDataType = 0x64617461, // 'data' 299*3ac0a46fSAndroid Build Coastguard Worker cmsSigDictType = 0x64696374, // 'dict' 300*3ac0a46fSAndroid Build Coastguard Worker cmsSigDateTimeType = 0x6474696D, // 'dtim' 301*3ac0a46fSAndroid Build Coastguard Worker cmsSigDeviceSettingsType = 0x64657673, // 'devs' 302*3ac0a46fSAndroid Build Coastguard Worker cmsSigLut16Type = 0x6d667432, // 'mft2' 303*3ac0a46fSAndroid Build Coastguard Worker cmsSigLut8Type = 0x6d667431, // 'mft1' 304*3ac0a46fSAndroid Build Coastguard Worker cmsSigLutAtoBType = 0x6d414220, // 'mAB ' 305*3ac0a46fSAndroid Build Coastguard Worker cmsSigLutBtoAType = 0x6d424120, // 'mBA ' 306*3ac0a46fSAndroid Build Coastguard Worker cmsSigMeasurementType = 0x6D656173, // 'meas' 307*3ac0a46fSAndroid Build Coastguard Worker cmsSigMultiLocalizedUnicodeType = 0x6D6C7563, // 'mluc' 308*3ac0a46fSAndroid Build Coastguard Worker cmsSigMultiProcessElementType = 0x6D706574, // 'mpet' 309*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColorType = 0x6E636f6C, // 'ncol' -- DEPRECATED! 310*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColor2Type = 0x6E636C32, // 'ncl2' 311*3ac0a46fSAndroid Build Coastguard Worker cmsSigParametricCurveType = 0x70617261, // 'para' 312*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileSequenceDescType = 0x70736571, // 'pseq' 313*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileSequenceIdType = 0x70736964, // 'psid' 314*3ac0a46fSAndroid Build Coastguard Worker cmsSigResponseCurveSet16Type = 0x72637332, // 'rcs2' 315*3ac0a46fSAndroid Build Coastguard Worker cmsSigS15Fixed16ArrayType = 0x73663332, // 'sf32' 316*3ac0a46fSAndroid Build Coastguard Worker cmsSigScreeningType = 0x7363726E, // 'scrn' 317*3ac0a46fSAndroid Build Coastguard Worker cmsSigSignatureType = 0x73696720, // 'sig ' 318*3ac0a46fSAndroid Build Coastguard Worker cmsSigTextType = 0x74657874, // 'text' 319*3ac0a46fSAndroid Build Coastguard Worker cmsSigTextDescriptionType = 0x64657363, // 'desc' 320*3ac0a46fSAndroid Build Coastguard Worker cmsSigU16Fixed16ArrayType = 0x75663332, // 'uf32' 321*3ac0a46fSAndroid Build Coastguard Worker cmsSigUcrBgType = 0x62666420, // 'bfd ' 322*3ac0a46fSAndroid Build Coastguard Worker cmsSigUInt16ArrayType = 0x75693136, // 'ui16' 323*3ac0a46fSAndroid Build Coastguard Worker cmsSigUInt32ArrayType = 0x75693332, // 'ui32' 324*3ac0a46fSAndroid Build Coastguard Worker cmsSigUInt64ArrayType = 0x75693634, // 'ui64' 325*3ac0a46fSAndroid Build Coastguard Worker cmsSigUInt8ArrayType = 0x75693038, // 'ui08' 326*3ac0a46fSAndroid Build Coastguard Worker cmsSigVcgtType = 0x76636774, // 'vcgt' 327*3ac0a46fSAndroid Build Coastguard Worker cmsSigViewingConditionsType = 0x76696577, // 'view' 328*3ac0a46fSAndroid Build Coastguard Worker cmsSigXYZType = 0x58595A20 // 'XYZ ' 329*3ac0a46fSAndroid Build Coastguard Worker 330*3ac0a46fSAndroid Build Coastguard Worker 331*3ac0a46fSAndroid Build Coastguard Worker } cmsTagTypeSignature; 332*3ac0a46fSAndroid Build Coastguard Worker 333*3ac0a46fSAndroid Build Coastguard Worker // Base ICC tag definitions 334*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 335*3ac0a46fSAndroid Build Coastguard Worker cmsSigAToB0Tag = 0x41324230, // 'A2B0' 336*3ac0a46fSAndroid Build Coastguard Worker cmsSigAToB1Tag = 0x41324231, // 'A2B1' 337*3ac0a46fSAndroid Build Coastguard Worker cmsSigAToB2Tag = 0x41324232, // 'A2B2' 338*3ac0a46fSAndroid Build Coastguard Worker cmsSigBlueColorantTag = 0x6258595A, // 'bXYZ' 339*3ac0a46fSAndroid Build Coastguard Worker cmsSigBlueMatrixColumnTag = 0x6258595A, // 'bXYZ' 340*3ac0a46fSAndroid Build Coastguard Worker cmsSigBlueTRCTag = 0x62545243, // 'bTRC' 341*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToA0Tag = 0x42324130, // 'B2A0' 342*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToA1Tag = 0x42324131, // 'B2A1' 343*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToA2Tag = 0x42324132, // 'B2A2' 344*3ac0a46fSAndroid Build Coastguard Worker cmsSigCalibrationDateTimeTag = 0x63616C74, // 'calt' 345*3ac0a46fSAndroid Build Coastguard Worker cmsSigCharTargetTag = 0x74617267, // 'targ' 346*3ac0a46fSAndroid Build Coastguard Worker cmsSigChromaticAdaptationTag = 0x63686164, // 'chad' 347*3ac0a46fSAndroid Build Coastguard Worker cmsSigChromaticityTag = 0x6368726D, // 'chrm' 348*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorantOrderTag = 0x636C726F, // 'clro' 349*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorantTableTag = 0x636C7274, // 'clrt' 350*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorantTableOutTag = 0x636C6F74, // 'clot' 351*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorimetricIntentImageStateTag = 0x63696973, // 'ciis' 352*3ac0a46fSAndroid Build Coastguard Worker cmsSigCopyrightTag = 0x63707274, // 'cprt' 353*3ac0a46fSAndroid Build Coastguard Worker cmsSigCrdInfoTag = 0x63726469, // 'crdi' 354*3ac0a46fSAndroid Build Coastguard Worker cmsSigDataTag = 0x64617461, // 'data' 355*3ac0a46fSAndroid Build Coastguard Worker cmsSigDateTimeTag = 0x6474696D, // 'dtim' 356*3ac0a46fSAndroid Build Coastguard Worker cmsSigDeviceMfgDescTag = 0x646D6E64, // 'dmnd' 357*3ac0a46fSAndroid Build Coastguard Worker cmsSigDeviceModelDescTag = 0x646D6464, // 'dmdd' 358*3ac0a46fSAndroid Build Coastguard Worker cmsSigDeviceSettingsTag = 0x64657673, // 'devs' 359*3ac0a46fSAndroid Build Coastguard Worker cmsSigDToB0Tag = 0x44324230, // 'D2B0' 360*3ac0a46fSAndroid Build Coastguard Worker cmsSigDToB1Tag = 0x44324231, // 'D2B1' 361*3ac0a46fSAndroid Build Coastguard Worker cmsSigDToB2Tag = 0x44324232, // 'D2B2' 362*3ac0a46fSAndroid Build Coastguard Worker cmsSigDToB3Tag = 0x44324233, // 'D2B3' 363*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToD0Tag = 0x42324430, // 'B2D0' 364*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToD1Tag = 0x42324431, // 'B2D1' 365*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToD2Tag = 0x42324432, // 'B2D2' 366*3ac0a46fSAndroid Build Coastguard Worker cmsSigBToD3Tag = 0x42324433, // 'B2D3' 367*3ac0a46fSAndroid Build Coastguard Worker cmsSigGamutTag = 0x67616D74, // 'gamt' 368*3ac0a46fSAndroid Build Coastguard Worker cmsSigGrayTRCTag = 0x6b545243, // 'kTRC' 369*3ac0a46fSAndroid Build Coastguard Worker cmsSigGreenColorantTag = 0x6758595A, // 'gXYZ' 370*3ac0a46fSAndroid Build Coastguard Worker cmsSigGreenMatrixColumnTag = 0x6758595A, // 'gXYZ' 371*3ac0a46fSAndroid Build Coastguard Worker cmsSigGreenTRCTag = 0x67545243, // 'gTRC' 372*3ac0a46fSAndroid Build Coastguard Worker cmsSigLuminanceTag = 0x6C756d69, // 'lumi' 373*3ac0a46fSAndroid Build Coastguard Worker cmsSigMeasurementTag = 0x6D656173, // 'meas' 374*3ac0a46fSAndroid Build Coastguard Worker cmsSigMediaBlackPointTag = 0x626B7074, // 'bkpt' 375*3ac0a46fSAndroid Build Coastguard Worker cmsSigMediaWhitePointTag = 0x77747074, // 'wtpt' 376*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColorTag = 0x6E636f6C, // 'ncol' // Deprecated by the ICC 377*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColor2Tag = 0x6E636C32, // 'ncl2' 378*3ac0a46fSAndroid Build Coastguard Worker cmsSigOutputResponseTag = 0x72657370, // 'resp' 379*3ac0a46fSAndroid Build Coastguard Worker cmsSigPerceptualRenderingIntentGamutTag = 0x72696730, // 'rig0' 380*3ac0a46fSAndroid Build Coastguard Worker cmsSigPreview0Tag = 0x70726530, // 'pre0' 381*3ac0a46fSAndroid Build Coastguard Worker cmsSigPreview1Tag = 0x70726531, // 'pre1' 382*3ac0a46fSAndroid Build Coastguard Worker cmsSigPreview2Tag = 0x70726532, // 'pre2' 383*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileDescriptionTag = 0x64657363, // 'desc' 384*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileDescriptionMLTag = 0x6473636d, // 'dscm' 385*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileSequenceDescTag = 0x70736571, // 'pseq' 386*3ac0a46fSAndroid Build Coastguard Worker cmsSigProfileSequenceIdTag = 0x70736964, // 'psid' 387*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2CRD0Tag = 0x70736430, // 'psd0' 388*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2CRD1Tag = 0x70736431, // 'psd1' 389*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2CRD2Tag = 0x70736432, // 'psd2' 390*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2CRD3Tag = 0x70736433, // 'psd3' 391*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2CSATag = 0x70733273, // 'ps2s' 392*3ac0a46fSAndroid Build Coastguard Worker cmsSigPs2RenderingIntentTag = 0x70733269, // 'ps2i' 393*3ac0a46fSAndroid Build Coastguard Worker cmsSigRedColorantTag = 0x7258595A, // 'rXYZ' 394*3ac0a46fSAndroid Build Coastguard Worker cmsSigRedMatrixColumnTag = 0x7258595A, // 'rXYZ' 395*3ac0a46fSAndroid Build Coastguard Worker cmsSigRedTRCTag = 0x72545243, // 'rTRC' 396*3ac0a46fSAndroid Build Coastguard Worker cmsSigSaturationRenderingIntentGamutTag = 0x72696732, // 'rig2' 397*3ac0a46fSAndroid Build Coastguard Worker cmsSigScreeningDescTag = 0x73637264, // 'scrd' 398*3ac0a46fSAndroid Build Coastguard Worker cmsSigScreeningTag = 0x7363726E, // 'scrn' 399*3ac0a46fSAndroid Build Coastguard Worker cmsSigTechnologyTag = 0x74656368, // 'tech' 400*3ac0a46fSAndroid Build Coastguard Worker cmsSigUcrBgTag = 0x62666420, // 'bfd ' 401*3ac0a46fSAndroid Build Coastguard Worker cmsSigViewingCondDescTag = 0x76756564, // 'vued' 402*3ac0a46fSAndroid Build Coastguard Worker cmsSigViewingConditionsTag = 0x76696577, // 'view' 403*3ac0a46fSAndroid Build Coastguard Worker cmsSigVcgtTag = 0x76636774, // 'vcgt' 404*3ac0a46fSAndroid Build Coastguard Worker cmsSigMetaTag = 0x6D657461, // 'meta' 405*3ac0a46fSAndroid Build Coastguard Worker cmsSigcicpTag = 0x63696370, // 'cicp' 406*3ac0a46fSAndroid Build Coastguard Worker cmsSigArgyllArtsTag = 0x61727473 // 'arts' 407*3ac0a46fSAndroid Build Coastguard Worker 408*3ac0a46fSAndroid Build Coastguard Worker } cmsTagSignature; 409*3ac0a46fSAndroid Build Coastguard Worker 410*3ac0a46fSAndroid Build Coastguard Worker 411*3ac0a46fSAndroid Build Coastguard Worker // ICC Technology tag 412*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 413*3ac0a46fSAndroid Build Coastguard Worker cmsSigDigitalCamera = 0x6463616D, // 'dcam' 414*3ac0a46fSAndroid Build Coastguard Worker cmsSigFilmScanner = 0x6673636E, // 'fscn' 415*3ac0a46fSAndroid Build Coastguard Worker cmsSigReflectiveScanner = 0x7273636E, // 'rscn' 416*3ac0a46fSAndroid Build Coastguard Worker cmsSigInkJetPrinter = 0x696A6574, // 'ijet' 417*3ac0a46fSAndroid Build Coastguard Worker cmsSigThermalWaxPrinter = 0x74776178, // 'twax' 418*3ac0a46fSAndroid Build Coastguard Worker cmsSigElectrophotographicPrinter = 0x6570686F, // 'epho' 419*3ac0a46fSAndroid Build Coastguard Worker cmsSigElectrostaticPrinter = 0x65737461, // 'esta' 420*3ac0a46fSAndroid Build Coastguard Worker cmsSigDyeSublimationPrinter = 0x64737562, // 'dsub' 421*3ac0a46fSAndroid Build Coastguard Worker cmsSigPhotographicPaperPrinter = 0x7270686F, // 'rpho' 422*3ac0a46fSAndroid Build Coastguard Worker cmsSigFilmWriter = 0x6670726E, // 'fprn' 423*3ac0a46fSAndroid Build Coastguard Worker cmsSigVideoMonitor = 0x7669646D, // 'vidm' 424*3ac0a46fSAndroid Build Coastguard Worker cmsSigVideoCamera = 0x76696463, // 'vidc' 425*3ac0a46fSAndroid Build Coastguard Worker cmsSigProjectionTelevision = 0x706A7476, // 'pjtv' 426*3ac0a46fSAndroid Build Coastguard Worker cmsSigCRTDisplay = 0x43525420, // 'CRT ' 427*3ac0a46fSAndroid Build Coastguard Worker cmsSigPMDisplay = 0x504D4420, // 'PMD ' 428*3ac0a46fSAndroid Build Coastguard Worker cmsSigAMDisplay = 0x414D4420, // 'AMD ' 429*3ac0a46fSAndroid Build Coastguard Worker cmsSigPhotoCD = 0x4B504344, // 'KPCD' 430*3ac0a46fSAndroid Build Coastguard Worker cmsSigPhotoImageSetter = 0x696D6773, // 'imgs' 431*3ac0a46fSAndroid Build Coastguard Worker cmsSigGravure = 0x67726176, // 'grav' 432*3ac0a46fSAndroid Build Coastguard Worker cmsSigOffsetLithography = 0x6F666673, // 'offs' 433*3ac0a46fSAndroid Build Coastguard Worker cmsSigSilkscreen = 0x73696C6B, // 'silk' 434*3ac0a46fSAndroid Build Coastguard Worker cmsSigFlexography = 0x666C6578, // 'flex' 435*3ac0a46fSAndroid Build Coastguard Worker cmsSigMotionPictureFilmScanner = 0x6D706673, // 'mpfs' 436*3ac0a46fSAndroid Build Coastguard Worker cmsSigMotionPictureFilmRecorder = 0x6D706672, // 'mpfr' 437*3ac0a46fSAndroid Build Coastguard Worker cmsSigDigitalMotionPictureCamera = 0x646D7063, // 'dmpc' 438*3ac0a46fSAndroid Build Coastguard Worker cmsSigDigitalCinemaProjector = 0x64636A70 // 'dcpj' 439*3ac0a46fSAndroid Build Coastguard Worker 440*3ac0a46fSAndroid Build Coastguard Worker } cmsTechnologySignature; 441*3ac0a46fSAndroid Build Coastguard Worker 442*3ac0a46fSAndroid Build Coastguard Worker 443*3ac0a46fSAndroid Build Coastguard Worker // ICC Color spaces 444*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 445*3ac0a46fSAndroid Build Coastguard Worker cmsSigXYZData = 0x58595A20, // 'XYZ ' 446*3ac0a46fSAndroid Build Coastguard Worker cmsSigLabData = 0x4C616220, // 'Lab ' 447*3ac0a46fSAndroid Build Coastguard Worker cmsSigLuvData = 0x4C757620, // 'Luv ' 448*3ac0a46fSAndroid Build Coastguard Worker cmsSigYCbCrData = 0x59436272, // 'YCbr' 449*3ac0a46fSAndroid Build Coastguard Worker cmsSigYxyData = 0x59787920, // 'Yxy ' 450*3ac0a46fSAndroid Build Coastguard Worker cmsSigRgbData = 0x52474220, // 'RGB ' 451*3ac0a46fSAndroid Build Coastguard Worker cmsSigGrayData = 0x47524159, // 'GRAY' 452*3ac0a46fSAndroid Build Coastguard Worker cmsSigHsvData = 0x48535620, // 'HSV ' 453*3ac0a46fSAndroid Build Coastguard Worker cmsSigHlsData = 0x484C5320, // 'HLS ' 454*3ac0a46fSAndroid Build Coastguard Worker cmsSigCmykData = 0x434D594B, // 'CMYK' 455*3ac0a46fSAndroid Build Coastguard Worker cmsSigCmyData = 0x434D5920, // 'CMY ' 456*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH1Data = 0x4D434831, // 'MCH1' 457*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH2Data = 0x4D434832, // 'MCH2' 458*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH3Data = 0x4D434833, // 'MCH3' 459*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH4Data = 0x4D434834, // 'MCH4' 460*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH5Data = 0x4D434835, // 'MCH5' 461*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH6Data = 0x4D434836, // 'MCH6' 462*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH7Data = 0x4D434837, // 'MCH7' 463*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH8Data = 0x4D434838, // 'MCH8' 464*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCH9Data = 0x4D434839, // 'MCH9' 465*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHAData = 0x4D434841, // 'MCHA' 466*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHBData = 0x4D434842, // 'MCHB' 467*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHCData = 0x4D434843, // 'MCHC' 468*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHDData = 0x4D434844, // 'MCHD' 469*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHEData = 0x4D434845, // 'MCHE' 470*3ac0a46fSAndroid Build Coastguard Worker cmsSigMCHFData = 0x4D434846, // 'MCHF' 471*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedData = 0x6e6d636c, // 'nmcl' 472*3ac0a46fSAndroid Build Coastguard Worker cmsSig1colorData = 0x31434C52, // '1CLR' 473*3ac0a46fSAndroid Build Coastguard Worker cmsSig2colorData = 0x32434C52, // '2CLR' 474*3ac0a46fSAndroid Build Coastguard Worker cmsSig3colorData = 0x33434C52, // '3CLR' 475*3ac0a46fSAndroid Build Coastguard Worker cmsSig4colorData = 0x34434C52, // '4CLR' 476*3ac0a46fSAndroid Build Coastguard Worker cmsSig5colorData = 0x35434C52, // '5CLR' 477*3ac0a46fSAndroid Build Coastguard Worker cmsSig6colorData = 0x36434C52, // '6CLR' 478*3ac0a46fSAndroid Build Coastguard Worker cmsSig7colorData = 0x37434C52, // '7CLR' 479*3ac0a46fSAndroid Build Coastguard Worker cmsSig8colorData = 0x38434C52, // '8CLR' 480*3ac0a46fSAndroid Build Coastguard Worker cmsSig9colorData = 0x39434C52, // '9CLR' 481*3ac0a46fSAndroid Build Coastguard Worker cmsSig10colorData = 0x41434C52, // 'ACLR' 482*3ac0a46fSAndroid Build Coastguard Worker cmsSig11colorData = 0x42434C52, // 'BCLR' 483*3ac0a46fSAndroid Build Coastguard Worker cmsSig12colorData = 0x43434C52, // 'CCLR' 484*3ac0a46fSAndroid Build Coastguard Worker cmsSig13colorData = 0x44434C52, // 'DCLR' 485*3ac0a46fSAndroid Build Coastguard Worker cmsSig14colorData = 0x45434C52, // 'ECLR' 486*3ac0a46fSAndroid Build Coastguard Worker cmsSig15colorData = 0x46434C52, // 'FCLR' 487*3ac0a46fSAndroid Build Coastguard Worker cmsSigLuvKData = 0x4C75764B // 'LuvK' 488*3ac0a46fSAndroid Build Coastguard Worker 489*3ac0a46fSAndroid Build Coastguard Worker } cmsColorSpaceSignature; 490*3ac0a46fSAndroid Build Coastguard Worker 491*3ac0a46fSAndroid Build Coastguard Worker // ICC Profile Class 492*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 493*3ac0a46fSAndroid Build Coastguard Worker cmsSigInputClass = 0x73636E72, // 'scnr' 494*3ac0a46fSAndroid Build Coastguard Worker cmsSigDisplayClass = 0x6D6E7472, // 'mntr' 495*3ac0a46fSAndroid Build Coastguard Worker cmsSigOutputClass = 0x70727472, // 'prtr' 496*3ac0a46fSAndroid Build Coastguard Worker cmsSigLinkClass = 0x6C696E6B, // 'link' 497*3ac0a46fSAndroid Build Coastguard Worker cmsSigAbstractClass = 0x61627374, // 'abst' 498*3ac0a46fSAndroid Build Coastguard Worker cmsSigColorSpaceClass = 0x73706163, // 'spac' 499*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColorClass = 0x6e6d636c // 'nmcl' 500*3ac0a46fSAndroid Build Coastguard Worker 501*3ac0a46fSAndroid Build Coastguard Worker } cmsProfileClassSignature; 502*3ac0a46fSAndroid Build Coastguard Worker 503*3ac0a46fSAndroid Build Coastguard Worker // ICC Platforms 504*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 505*3ac0a46fSAndroid Build Coastguard Worker cmsSigMacintosh = 0x4150504C, // 'APPL' 506*3ac0a46fSAndroid Build Coastguard Worker cmsSigMicrosoft = 0x4D534654, // 'MSFT' 507*3ac0a46fSAndroid Build Coastguard Worker cmsSigSolaris = 0x53554E57, // 'SUNW' 508*3ac0a46fSAndroid Build Coastguard Worker cmsSigSGI = 0x53474920, // 'SGI ' 509*3ac0a46fSAndroid Build Coastguard Worker cmsSigTaligent = 0x54474E54, // 'TGNT' 510*3ac0a46fSAndroid Build Coastguard Worker cmsSigUnices = 0x2A6E6978 // '*nix' // From argyll -- Not official 511*3ac0a46fSAndroid Build Coastguard Worker 512*3ac0a46fSAndroid Build Coastguard Worker } cmsPlatformSignature; 513*3ac0a46fSAndroid Build Coastguard Worker 514*3ac0a46fSAndroid Build Coastguard Worker // Reference gamut 515*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigPerceptualReferenceMediumGamut 0x70726d67 //'prmg' 516*3ac0a46fSAndroid Build Coastguard Worker 517*3ac0a46fSAndroid Build Coastguard Worker // For cmsSigColorimetricIntentImageStateTag 518*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigSceneColorimetryEstimates 0x73636F65 //'scoe' 519*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigSceneAppearanceEstimates 0x73617065 //'sape' 520*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigFocalPlaneColorimetryEstimates 0x66706365 //'fpce' 521*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigReflectionHardcopyOriginalColorimetry 0x72686F63 //'rhoc' 522*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigReflectionPrintOutputColorimetry 0x72706F63 //'rpoc' 523*3ac0a46fSAndroid Build Coastguard Worker 524*3ac0a46fSAndroid Build Coastguard Worker // Multi process elements types 525*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 526*3ac0a46fSAndroid Build Coastguard Worker cmsSigCurveSetElemType = 0x63767374, //'cvst' 527*3ac0a46fSAndroid Build Coastguard Worker cmsSigMatrixElemType = 0x6D617466, //'matf' 528*3ac0a46fSAndroid Build Coastguard Worker cmsSigCLutElemType = 0x636C7574, //'clut' 529*3ac0a46fSAndroid Build Coastguard Worker 530*3ac0a46fSAndroid Build Coastguard Worker cmsSigBAcsElemType = 0x62414353, // 'bACS' 531*3ac0a46fSAndroid Build Coastguard Worker cmsSigEAcsElemType = 0x65414353, // 'eACS' 532*3ac0a46fSAndroid Build Coastguard Worker 533*3ac0a46fSAndroid Build Coastguard Worker // Custom from here, not in the ICC Spec 534*3ac0a46fSAndroid Build Coastguard Worker cmsSigXYZ2LabElemType = 0x6C327820, // 'l2x ' 535*3ac0a46fSAndroid Build Coastguard Worker cmsSigLab2XYZElemType = 0x78326C20, // 'x2l ' 536*3ac0a46fSAndroid Build Coastguard Worker cmsSigNamedColorElemType = 0x6E636C20, // 'ncl ' 537*3ac0a46fSAndroid Build Coastguard Worker cmsSigLabV2toV4 = 0x32203420, // '2 4 ' 538*3ac0a46fSAndroid Build Coastguard Worker cmsSigLabV4toV2 = 0x34203220, // '4 2 ' 539*3ac0a46fSAndroid Build Coastguard Worker 540*3ac0a46fSAndroid Build Coastguard Worker // Identities 541*3ac0a46fSAndroid Build Coastguard Worker cmsSigIdentityElemType = 0x69646E20, // 'idn ' 542*3ac0a46fSAndroid Build Coastguard Worker 543*3ac0a46fSAndroid Build Coastguard Worker // Float to floatPCS 544*3ac0a46fSAndroid Build Coastguard Worker cmsSigLab2FloatPCS = 0x64326C20, // 'd2l ' 545*3ac0a46fSAndroid Build Coastguard Worker cmsSigFloatPCS2Lab = 0x6C326420, // 'l2d ' 546*3ac0a46fSAndroid Build Coastguard Worker cmsSigXYZ2FloatPCS = 0x64327820, // 'd2x ' 547*3ac0a46fSAndroid Build Coastguard Worker cmsSigFloatPCS2XYZ = 0x78326420, // 'x2d ' 548*3ac0a46fSAndroid Build Coastguard Worker cmsSigClipNegativesElemType = 0x636c7020 // 'clp ' 549*3ac0a46fSAndroid Build Coastguard Worker 550*3ac0a46fSAndroid Build Coastguard Worker } cmsStageSignature; 551*3ac0a46fSAndroid Build Coastguard Worker 552*3ac0a46fSAndroid Build Coastguard Worker // Types of CurveElements 553*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 554*3ac0a46fSAndroid Build Coastguard Worker 555*3ac0a46fSAndroid Build Coastguard Worker cmsSigFormulaCurveSeg = 0x70617266, // 'parf' 556*3ac0a46fSAndroid Build Coastguard Worker cmsSigSampledCurveSeg = 0x73616D66, // 'samf' 557*3ac0a46fSAndroid Build Coastguard Worker cmsSigSegmentedCurve = 0x63757266 // 'curf' 558*3ac0a46fSAndroid Build Coastguard Worker 559*3ac0a46fSAndroid Build Coastguard Worker } cmsCurveSegSignature; 560*3ac0a46fSAndroid Build Coastguard Worker 561*3ac0a46fSAndroid Build Coastguard Worker // Used in ResponseCurveType 562*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigStatusA 0x53746141 //'StaA' 563*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigStatusE 0x53746145 //'StaE' 564*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigStatusI 0x53746149 //'StaI' 565*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigStatusT 0x53746154 //'StaT' 566*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigStatusM 0x5374614D //'StaM' 567*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigDN 0x444E2020 //'DN ' 568*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigDNP 0x444E2050 //'DN P' 569*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigDNN 0x444E4E20 //'DNN ' 570*3ac0a46fSAndroid Build Coastguard Worker #define cmsSigDNNP 0x444E4E50 //'DNNP' 571*3ac0a46fSAndroid Build Coastguard Worker 572*3ac0a46fSAndroid Build Coastguard Worker // Device attributes, currently defined values correspond to the low 4 bytes 573*3ac0a46fSAndroid Build Coastguard Worker // of the 8 byte attribute quantity 574*3ac0a46fSAndroid Build Coastguard Worker #define cmsReflective 0 575*3ac0a46fSAndroid Build Coastguard Worker #define cmsTransparency 1 576*3ac0a46fSAndroid Build Coastguard Worker #define cmsGlossy 0 577*3ac0a46fSAndroid Build Coastguard Worker #define cmsMatte 2 578*3ac0a46fSAndroid Build Coastguard Worker 579*3ac0a46fSAndroid Build Coastguard Worker // Common structures in ICC tags 580*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 581*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number len; 582*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number flag; 583*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number data[1]; 584*3ac0a46fSAndroid Build Coastguard Worker 585*3ac0a46fSAndroid Build Coastguard Worker } cmsICCData; 586*3ac0a46fSAndroid Build Coastguard Worker 587*3ac0a46fSAndroid Build Coastguard Worker // ICC date time 588*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 589*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number year; 590*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number month; 591*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number day; 592*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number hours; 593*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number minutes; 594*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number seconds; 595*3ac0a46fSAndroid Build Coastguard Worker 596*3ac0a46fSAndroid Build Coastguard Worker } cmsDateTimeNumber; 597*3ac0a46fSAndroid Build Coastguard Worker 598*3ac0a46fSAndroid Build Coastguard Worker // ICC XYZ 599*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 600*3ac0a46fSAndroid Build Coastguard Worker cmsS15Fixed16Number X; 601*3ac0a46fSAndroid Build Coastguard Worker cmsS15Fixed16Number Y; 602*3ac0a46fSAndroid Build Coastguard Worker cmsS15Fixed16Number Z; 603*3ac0a46fSAndroid Build Coastguard Worker 604*3ac0a46fSAndroid Build Coastguard Worker } cmsEncodedXYZNumber; 605*3ac0a46fSAndroid Build Coastguard Worker 606*3ac0a46fSAndroid Build Coastguard Worker 607*3ac0a46fSAndroid Build Coastguard Worker // Profile ID as computed by MD5 algorithm 608*3ac0a46fSAndroid Build Coastguard Worker typedef union { 609*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number ID8[16]; 610*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number ID16[8]; 611*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number ID32[4]; 612*3ac0a46fSAndroid Build Coastguard Worker 613*3ac0a46fSAndroid Build Coastguard Worker } cmsProfileID; 614*3ac0a46fSAndroid Build Coastguard Worker 615*3ac0a46fSAndroid Build Coastguard Worker 616*3ac0a46fSAndroid Build Coastguard Worker // ---------------------------------------------------------------------------------------------- 617*3ac0a46fSAndroid Build Coastguard Worker // ICC profile internal base types. Strictly, shouldn't be declared in this header, but maybe 618*3ac0a46fSAndroid Build Coastguard Worker // somebody want to use this info for accessing profile header directly, so here it is. 619*3ac0a46fSAndroid Build Coastguard Worker 620*3ac0a46fSAndroid Build Coastguard Worker // Profile header -- it is 32-bit aligned, so no issues are expected on alignment 621*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 622*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number size; // Profile size in bytes 623*3ac0a46fSAndroid Build Coastguard Worker cmsSignature cmmId; // CMM for this profile 624*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number version; // Format version number 625*3ac0a46fSAndroid Build Coastguard Worker cmsProfileClassSignature deviceClass; // Type of profile 626*3ac0a46fSAndroid Build Coastguard Worker cmsColorSpaceSignature colorSpace; // Color space of data 627*3ac0a46fSAndroid Build Coastguard Worker cmsColorSpaceSignature pcs; // PCS, XYZ or Lab only 628*3ac0a46fSAndroid Build Coastguard Worker cmsDateTimeNumber date; // Date profile was created 629*3ac0a46fSAndroid Build Coastguard Worker cmsSignature magic; // Magic Number to identify an ICC profile 630*3ac0a46fSAndroid Build Coastguard Worker cmsPlatformSignature platform; // Primary Platform 631*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number flags; // Various bit settings 632*3ac0a46fSAndroid Build Coastguard Worker cmsSignature manufacturer; // Device manufacturer 633*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number model; // Device model number 634*3ac0a46fSAndroid Build Coastguard Worker cmsUInt64Number attributes; // Device attributes 635*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number renderingIntent;// Rendering intent 636*3ac0a46fSAndroid Build Coastguard Worker cmsEncodedXYZNumber illuminant; // Profile illuminant 637*3ac0a46fSAndroid Build Coastguard Worker cmsSignature creator; // Profile creator 638*3ac0a46fSAndroid Build Coastguard Worker cmsProfileID profileID; // Profile ID using MD5 639*3ac0a46fSAndroid Build Coastguard Worker cmsInt8Number reserved[28]; // Reserved for future use 640*3ac0a46fSAndroid Build Coastguard Worker 641*3ac0a46fSAndroid Build Coastguard Worker } cmsICCHeader; 642*3ac0a46fSAndroid Build Coastguard Worker 643*3ac0a46fSAndroid Build Coastguard Worker // ICC base tag 644*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 645*3ac0a46fSAndroid Build Coastguard Worker cmsTagTypeSignature sig; 646*3ac0a46fSAndroid Build Coastguard Worker cmsInt8Number reserved[4]; 647*3ac0a46fSAndroid Build Coastguard Worker 648*3ac0a46fSAndroid Build Coastguard Worker } cmsTagBase; 649*3ac0a46fSAndroid Build Coastguard Worker 650*3ac0a46fSAndroid Build Coastguard Worker // A tag entry in directory 651*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 652*3ac0a46fSAndroid Build Coastguard Worker cmsTagSignature sig; // The tag signature 653*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number offset; // Start of tag 654*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number size; // Size in bytes 655*3ac0a46fSAndroid Build Coastguard Worker 656*3ac0a46fSAndroid Build Coastguard Worker } cmsTagEntry; 657*3ac0a46fSAndroid Build Coastguard Worker 658*3ac0a46fSAndroid Build Coastguard Worker // ---------------------------------------------------------------------------------------------- 659*3ac0a46fSAndroid Build Coastguard Worker 660*3ac0a46fSAndroid Build Coastguard Worker // Little CMS specific typedefs 661*3ac0a46fSAndroid Build Coastguard Worker 662*3ac0a46fSAndroid Build Coastguard Worker typedef void* cmsHANDLE ; // Generic handle 663*3ac0a46fSAndroid Build Coastguard Worker typedef void* cmsHPROFILE; // Opaque typedefs to hide internals 664*3ac0a46fSAndroid Build Coastguard Worker typedef void* cmsHTRANSFORM; 665*3ac0a46fSAndroid Build Coastguard Worker 666*3ac0a46fSAndroid Build Coastguard Worker #define cmsMAXCHANNELS 16 // Maximum number of channels in ICC profiles 667*3ac0a46fSAndroid Build Coastguard Worker 668*3ac0a46fSAndroid Build Coastguard Worker // Format of pixel is defined by one cmsUInt32Number, using bit fields as follows 669*3ac0a46fSAndroid Build Coastguard Worker // 670*3ac0a46fSAndroid Build Coastguard Worker // 2 1 0 671*3ac0a46fSAndroid Build Coastguard Worker // 4 3 2 10987 6 5 4 3 2 1 098 7654 321 672*3ac0a46fSAndroid Build Coastguard Worker // M A O TTTTT U Y F P X S EEE CCCC BBB 673*3ac0a46fSAndroid Build Coastguard Worker // 674*3ac0a46fSAndroid Build Coastguard Worker // M: Premultiplied alpha (only works when extra samples is 1) 675*3ac0a46fSAndroid Build Coastguard Worker // A: Floating point -- With this flag we can differentiate 16 bits as float and as int 676*3ac0a46fSAndroid Build Coastguard Worker // O: Optimized -- previous optimization already returns the final 8-bit value 677*3ac0a46fSAndroid Build Coastguard Worker // T: Pixeltype 678*3ac0a46fSAndroid Build Coastguard Worker // F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla) 679*3ac0a46fSAndroid Build Coastguard Worker // P: Planar? 0=Chunky, 1=Planar 680*3ac0a46fSAndroid Build Coastguard Worker // X: swap 16 bps endianness? 681*3ac0a46fSAndroid Build Coastguard Worker // S: Do swap? ie, BGR, KYMC 682*3ac0a46fSAndroid Build Coastguard Worker // E: Extra samples 683*3ac0a46fSAndroid Build Coastguard Worker // C: Channels (Samples per pixel) 684*3ac0a46fSAndroid Build Coastguard Worker // B: bytes per sample 685*3ac0a46fSAndroid Build Coastguard Worker // Y: Swap first - changes ABGR to BGRA and KCMY to CMYK 686*3ac0a46fSAndroid Build Coastguard Worker 687*3ac0a46fSAndroid Build Coastguard Worker #define PREMUL_SH(m) ((m) << 23) 688*3ac0a46fSAndroid Build Coastguard Worker #define FLOAT_SH(a) ((a) << 22) 689*3ac0a46fSAndroid Build Coastguard Worker #define OPTIMIZED_SH(s) ((s) << 21) 690*3ac0a46fSAndroid Build Coastguard Worker #define COLORSPACE_SH(s) ((s) << 16) 691*3ac0a46fSAndroid Build Coastguard Worker #define SWAPFIRST_SH(s) ((s) << 14) 692*3ac0a46fSAndroid Build Coastguard Worker #define FLAVOR_SH(s) ((s) << 13) 693*3ac0a46fSAndroid Build Coastguard Worker #define PLANAR_SH(p) ((p) << 12) 694*3ac0a46fSAndroid Build Coastguard Worker #define ENDIAN16_SH(e) ((e) << 11) 695*3ac0a46fSAndroid Build Coastguard Worker #define DOSWAP_SH(e) ((e) << 10) 696*3ac0a46fSAndroid Build Coastguard Worker #define EXTRA_SH(e) ((e) << 7) 697*3ac0a46fSAndroid Build Coastguard Worker #define CHANNELS_SH(c) ((c) << 3) 698*3ac0a46fSAndroid Build Coastguard Worker #define BYTES_SH(b) (b) 699*3ac0a46fSAndroid Build Coastguard Worker 700*3ac0a46fSAndroid Build Coastguard Worker // These macros unpack format specifiers into integers 701*3ac0a46fSAndroid Build Coastguard Worker #define T_PREMUL(m) (((m)>>23)&1) 702*3ac0a46fSAndroid Build Coastguard Worker #define T_FLOAT(a) (((a)>>22)&1) 703*3ac0a46fSAndroid Build Coastguard Worker #define T_OPTIMIZED(o) (((o)>>21)&1) 704*3ac0a46fSAndroid Build Coastguard Worker #define T_COLORSPACE(s) (((s)>>16)&31) 705*3ac0a46fSAndroid Build Coastguard Worker #define T_SWAPFIRST(s) (((s)>>14)&1) 706*3ac0a46fSAndroid Build Coastguard Worker #define T_FLAVOR(s) (((s)>>13)&1) 707*3ac0a46fSAndroid Build Coastguard Worker #define T_PLANAR(p) (((p)>>12)&1) 708*3ac0a46fSAndroid Build Coastguard Worker #define T_ENDIAN16(e) (((e)>>11)&1) 709*3ac0a46fSAndroid Build Coastguard Worker #define T_DOSWAP(e) (((e)>>10)&1) 710*3ac0a46fSAndroid Build Coastguard Worker #define T_EXTRA(e) (((e)>>7)&7) 711*3ac0a46fSAndroid Build Coastguard Worker #define T_CHANNELS(c) (((c)>>3)&15) 712*3ac0a46fSAndroid Build Coastguard Worker #define T_BYTES(b) ((b)&7) 713*3ac0a46fSAndroid Build Coastguard Worker 714*3ac0a46fSAndroid Build Coastguard Worker 715*3ac0a46fSAndroid Build Coastguard Worker // Pixel types 716*3ac0a46fSAndroid Build Coastguard Worker #define PT_ANY 0 // Don't check colorspace 717*3ac0a46fSAndroid Build Coastguard Worker // 1 & 2 are reserved 718*3ac0a46fSAndroid Build Coastguard Worker #define PT_GRAY 3 719*3ac0a46fSAndroid Build Coastguard Worker #define PT_RGB 4 720*3ac0a46fSAndroid Build Coastguard Worker #define PT_CMY 5 721*3ac0a46fSAndroid Build Coastguard Worker #define PT_CMYK 6 722*3ac0a46fSAndroid Build Coastguard Worker #define PT_YCbCr 7 723*3ac0a46fSAndroid Build Coastguard Worker #define PT_YUV 8 // Lu'v' 724*3ac0a46fSAndroid Build Coastguard Worker #define PT_XYZ 9 725*3ac0a46fSAndroid Build Coastguard Worker #define PT_Lab 10 726*3ac0a46fSAndroid Build Coastguard Worker #define PT_YUVK 11 // Lu'v'K 727*3ac0a46fSAndroid Build Coastguard Worker #define PT_HSV 12 728*3ac0a46fSAndroid Build Coastguard Worker #define PT_HLS 13 729*3ac0a46fSAndroid Build Coastguard Worker #define PT_Yxy 14 730*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH1 15 731*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH2 16 732*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH3 17 733*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH4 18 734*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH5 19 735*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH6 20 736*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH7 21 737*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH8 22 738*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH9 23 739*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH10 24 740*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH11 25 741*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH12 26 742*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH13 27 743*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH14 28 744*3ac0a46fSAndroid Build Coastguard Worker #define PT_MCH15 29 745*3ac0a46fSAndroid Build Coastguard Worker #define PT_LabV2 30 // Identical to PT_Lab, but using the V2 old encoding 746*3ac0a46fSAndroid Build Coastguard Worker 747*3ac0a46fSAndroid Build Coastguard Worker // Some (not all!) representations 748*3ac0a46fSAndroid Build Coastguard Worker 749*3ac0a46fSAndroid Build Coastguard Worker #ifndef TYPE_RGB_8 // TYPE_RGB_8 is a very common identifier, so don't include ours 750*3ac0a46fSAndroid Build Coastguard Worker // if user has it already defined. 751*3ac0a46fSAndroid Build Coastguard Worker 752*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_8 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)) 753*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_8_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1)) 754*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_16 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) 755*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_16_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1)) 756*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_16_SE (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) 757*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_8 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)) 758*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_8_PREMUL (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PREMUL_SH(1)) 759*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_16 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)) 760*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_16_PREMUL (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PREMUL_SH(1)) 761*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_16_SE (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) 762*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_8_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PLANAR_SH(1)) 763*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_16_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PLANAR_SH(1)) 764*3ac0a46fSAndroid Build Coastguard Worker 765*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)) 766*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 767*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) 768*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) 769*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) 770*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 771*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 772*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) 773*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) 774*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 775*3ac0a46fSAndroid Build Coastguard Worker 776*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)) 777*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PREMUL_SH(1)) 778*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 779*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) 780*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PREMUL_SH(1)) 781*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 782*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 783*3ac0a46fSAndroid Build Coastguard Worker 784*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)) 785*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 786*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) 787*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) 788*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 789*3ac0a46fSAndroid Build Coastguard Worker 790*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) 791*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PREMUL_SH(1)) 792*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) 793*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) 794*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PREMUL_SH(1)) 795*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) 796*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 797*3ac0a46fSAndroid Build Coastguard Worker 798*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) 799*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 800*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) 801*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) 802*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 803*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) 804*3ac0a46fSAndroid Build Coastguard Worker 805*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMY_8 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)) 806*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMY_8_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 807*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMY_16 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)) 808*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMY_16_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 809*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMY_16_SE (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 810*3ac0a46fSAndroid Build Coastguard Worker 811*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)) 812*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYKA_8 (COLORSPACE_SH(PT_CMYK)|EXTRA_SH(1)|CHANNELS_SH(4)|BYTES_SH(1)) 813*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)) 814*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUVK_8 TYPE_CMYK_8_REV 815*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_8_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|PLANAR_SH(1)) 816*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) 817*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)) 818*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUVK_16 TYPE_CMYK_16_REV 819*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_16_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|PLANAR_SH(1)) 820*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)) 821*3ac0a46fSAndroid Build Coastguard Worker 822*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)) 823*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)) 824*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 825*3ac0a46fSAndroid Build Coastguard Worker 826*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KCMY_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1)) 827*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KCMY_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) 828*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KCMY_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1)) 829*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KCMY_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) 830*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KCMY_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1)) 831*3ac0a46fSAndroid Build Coastguard Worker 832*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)) 833*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)) 834*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|ENDIAN16_SH(1)) 835*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)|DOSWAP_SH(1)) 836*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)) 837*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 838*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK6_8 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)) 839*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK6_8_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)|PLANAR_SH(1)) 840*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK6_16 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)) 841*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK6_16_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|PLANAR_SH(1)) 842*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK6_16_SE (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|ENDIAN16_SH(1)) 843*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)) 844*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)) 845*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|ENDIAN16_SH(1)) 846*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)|DOSWAP_SH(1)) 847*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)) 848*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 849*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)) 850*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)) 851*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|ENDIAN16_SH(1)) 852*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)|DOSWAP_SH(1)) 853*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)) 854*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 855*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)) 856*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)) 857*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|ENDIAN16_SH(1)) 858*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)|DOSWAP_SH(1)) 859*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)) 860*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 861*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)) 862*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)) 863*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|ENDIAN16_SH(1)) 864*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)|DOSWAP_SH(1)) 865*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)) 866*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 867*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)) 868*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)) 869*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|ENDIAN16_SH(1)) 870*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)|DOSWAP_SH(1)) 871*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)) 872*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 873*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)) 874*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)) 875*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|ENDIAN16_SH(1)) 876*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)|DOSWAP_SH(1)) 877*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)) 878*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_KYMC12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) 879*3ac0a46fSAndroid Build Coastguard Worker 880*3ac0a46fSAndroid Build Coastguard Worker // Colorimetric 881*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_XYZ_16 (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(2)) 882*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_Lab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)) 883*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_LabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)) 884*3ac0a46fSAndroid Build Coastguard Worker 885*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ALab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) 886*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ALabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) 887*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_Lab_16 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(2)) 888*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_LabV2_16 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(2)) 889*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_Yxy_16 (COLORSPACE_SH(PT_Yxy)|CHANNELS_SH(3)|BYTES_SH(2)) 890*3ac0a46fSAndroid Build Coastguard Worker 891*3ac0a46fSAndroid Build Coastguard Worker // YCbCr 892*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YCbCr_8 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)) 893*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YCbCr_8_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 894*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YCbCr_16 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)) 895*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YCbCr_16_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 896*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YCbCr_16_SE (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 897*3ac0a46fSAndroid Build Coastguard Worker 898*3ac0a46fSAndroid Build Coastguard Worker // YUV 899*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUV_8 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)) 900*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUV_8_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 901*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUV_16 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)) 902*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUV_16_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 903*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_YUV_16_SE (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 904*3ac0a46fSAndroid Build Coastguard Worker 905*3ac0a46fSAndroid Build Coastguard Worker // HLS 906*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HLS_8 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)) 907*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HLS_8_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 908*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HLS_16 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)) 909*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HLS_16_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 910*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HLS_16_SE (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 911*3ac0a46fSAndroid Build Coastguard Worker 912*3ac0a46fSAndroid Build Coastguard Worker // HSV 913*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HSV_8 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)) 914*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HSV_8_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) 915*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HSV_16 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)) 916*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HSV_16_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) 917*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_HSV_16_SE (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) 918*3ac0a46fSAndroid Build Coastguard Worker 919*3ac0a46fSAndroid Build Coastguard Worker // Named color index. Only 16 bits is allowed (don't check colorspace) 920*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_NAMED_COLOR_INDEX (CHANNELS_SH(1)|BYTES_SH(2)) 921*3ac0a46fSAndroid Build Coastguard Worker 922*3ac0a46fSAndroid Build Coastguard Worker // Float formatters. 923*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_XYZ_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(4)) 924*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_Lab_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(4)) 925*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_LabA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) 926*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)) 927*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1)) 928*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAYA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1)|PREMUL_SH(1)) 929*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)) 930*3ac0a46fSAndroid Build Coastguard Worker 931*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) 932*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|PREMUL_SH(1)) 933*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)) 934*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 935*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) 936*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) 937*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) 938*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) 939*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|PREMUL_SH(1)) 940*3ac0a46fSAndroid Build Coastguard Worker 941*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(4)) 942*3ac0a46fSAndroid Build Coastguard Worker 943*3ac0a46fSAndroid Build Coastguard Worker // Floating point formatters. 944*3ac0a46fSAndroid Build Coastguard Worker // NOTE THAT 'BYTES' FIELD IS SET TO ZERO ON DLB because 8 bytes overflows the bitfield 945*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_XYZ_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(0)) 946*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_Lab_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(0)) 947*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(0)) 948*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)) 949*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)|DOSWAP_SH(1)) 950*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(0)) 951*3ac0a46fSAndroid Build Coastguard Worker 952*3ac0a46fSAndroid Build Coastguard Worker // IEEE 754-2008 "half" 953*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_GRAY_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) 954*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) 955*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) 956*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_CMYK_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) 957*3ac0a46fSAndroid Build Coastguard Worker 958*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) 959*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ARGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) 960*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) 961*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_BGRA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) 962*3ac0a46fSAndroid Build Coastguard Worker #define TYPE_ABGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) 963*3ac0a46fSAndroid Build Coastguard Worker 964*3ac0a46fSAndroid Build Coastguard Worker #endif 965*3ac0a46fSAndroid Build Coastguard Worker 966*3ac0a46fSAndroid Build Coastguard Worker // Colorspaces 967*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 968*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number X; 969*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Y; 970*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Z; 971*3ac0a46fSAndroid Build Coastguard Worker 972*3ac0a46fSAndroid Build Coastguard Worker } cmsCIEXYZ; 973*3ac0a46fSAndroid Build Coastguard Worker 974*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 975*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number x; 976*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number y; 977*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Y; 978*3ac0a46fSAndroid Build Coastguard Worker 979*3ac0a46fSAndroid Build Coastguard Worker } cmsCIExyY; 980*3ac0a46fSAndroid Build Coastguard Worker 981*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 982*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number L; 983*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number a; 984*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number b; 985*3ac0a46fSAndroid Build Coastguard Worker 986*3ac0a46fSAndroid Build Coastguard Worker } cmsCIELab; 987*3ac0a46fSAndroid Build Coastguard Worker 988*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 989*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number L; 990*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number C; 991*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number h; 992*3ac0a46fSAndroid Build Coastguard Worker 993*3ac0a46fSAndroid Build Coastguard Worker } cmsCIELCh; 994*3ac0a46fSAndroid Build Coastguard Worker 995*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 996*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number J; 997*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number C; 998*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number h; 999*3ac0a46fSAndroid Build Coastguard Worker 1000*3ac0a46fSAndroid Build Coastguard Worker } cmsJCh; 1001*3ac0a46fSAndroid Build Coastguard Worker 1002*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1003*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ Red; 1004*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ Green; 1005*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ Blue; 1006*3ac0a46fSAndroid Build Coastguard Worker 1007*3ac0a46fSAndroid Build Coastguard Worker } cmsCIEXYZTRIPLE; 1008*3ac0a46fSAndroid Build Coastguard Worker 1009*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1010*3ac0a46fSAndroid Build Coastguard Worker cmsCIExyY Red; 1011*3ac0a46fSAndroid Build Coastguard Worker cmsCIExyY Green; 1012*3ac0a46fSAndroid Build Coastguard Worker cmsCIExyY Blue; 1013*3ac0a46fSAndroid Build Coastguard Worker 1014*3ac0a46fSAndroid Build Coastguard Worker } cmsCIExyYTRIPLE; 1015*3ac0a46fSAndroid Build Coastguard Worker 1016*3ac0a46fSAndroid Build Coastguard Worker // Illuminant types for structs below 1017*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_UNKNOWN 0x0000000 1018*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_D50 0x0000001 1019*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_D65 0x0000002 1020*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_D93 0x0000003 1021*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_F2 0x0000004 1022*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_D55 0x0000005 1023*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_A 0x0000006 1024*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_E 0x0000007 1025*3ac0a46fSAndroid Build Coastguard Worker #define cmsILLUMINANT_TYPE_F8 0x0000008 1026*3ac0a46fSAndroid Build Coastguard Worker 1027*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1028*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Observer; // 0 = unknown, 1=CIE 1931, 2=CIE 1964 1029*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ Backing; // Value of backing 1030*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Geometry; // 0=unknown, 1=45/0, 0/45 2=0d, d/0 1031*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Flare; // 0..1.0 1032*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number IlluminantType; 1033*3ac0a46fSAndroid Build Coastguard Worker 1034*3ac0a46fSAndroid Build Coastguard Worker } cmsICCMeasurementConditions; 1035*3ac0a46fSAndroid Build Coastguard Worker 1036*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1037*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ IlluminantXYZ; // Not the same struct as CAM02, 1038*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ SurroundXYZ; // This is for storing the tag 1039*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number IlluminantType; // viewing condition 1040*3ac0a46fSAndroid Build Coastguard Worker 1041*3ac0a46fSAndroid Build Coastguard Worker } cmsICCViewingConditions; 1042*3ac0a46fSAndroid Build Coastguard Worker 1043*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1044*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number ColourPrimaries; // Recommendation ITU-T H.273 1045*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number TransferCharacteristics; // (ISO/IEC 23091-2) 1046*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number MatrixCoefficients; 1047*3ac0a46fSAndroid Build Coastguard Worker cmsUInt8Number VideoFullRangeFlag; 1048*3ac0a46fSAndroid Build Coastguard Worker 1049*3ac0a46fSAndroid Build Coastguard Worker } cmsVideoSignalType; 1050*3ac0a46fSAndroid Build Coastguard Worker 1051*3ac0a46fSAndroid Build Coastguard Worker 1052*3ac0a46fSAndroid Build Coastguard Worker 1053*3ac0a46fSAndroid Build Coastguard Worker // Get LittleCMS version (for shared objects) ----------------------------------------------------------------------------- 1054*3ac0a46fSAndroid Build Coastguard Worker 1055*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsGetEncodedCMMversion(void); 1056*3ac0a46fSAndroid Build Coastguard Worker 1057*3ac0a46fSAndroid Build Coastguard Worker // Support of non-standard functions -------------------------------------------------------------------------------------- 1058*3ac0a46fSAndroid Build Coastguard Worker 1059*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsstrcasecmp(const char* s1, const char* s2); 1060*3ac0a46fSAndroid Build Coastguard Worker CMSAPI long int CMSEXPORT cmsfilelength(FILE* f); 1061*3ac0a46fSAndroid Build Coastguard Worker 1062*3ac0a46fSAndroid Build Coastguard Worker 1063*3ac0a46fSAndroid Build Coastguard Worker // Context handling -------------------------------------------------------------------------------------------------------- 1064*3ac0a46fSAndroid Build Coastguard Worker 1065*3ac0a46fSAndroid Build Coastguard Worker // Each context holds its owns globals and its own plug-ins. There is a global context with the id = 0 for lecacy compatibility 1066*3ac0a46fSAndroid Build Coastguard Worker // though using the global context is not recommended. Proper context handling makes lcms more thread-safe. 1067*3ac0a46fSAndroid Build Coastguard Worker 1068*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cmsContext_struct* cmsContext; 1069*3ac0a46fSAndroid Build Coastguard Worker 1070*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsCreateContext(void* Plugin, void* UserData); 1071*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDeleteContext(cmsContext ContextID); 1072*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsDupContext(cmsContext ContextID, void* NewUserData); 1073*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void* CMSEXPORT cmsGetContextUserData(cmsContext ContextID); 1074*3ac0a46fSAndroid Build Coastguard Worker 1075*3ac0a46fSAndroid Build Coastguard Worker // Plug-In registering -------------------------------------------------------------------------------------------------- 1076*3ac0a46fSAndroid Build Coastguard Worker 1077*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPlugin(void* Plugin); 1078*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPluginTHR(cmsContext ContextID, void* Plugin); 1079*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsUnregisterPlugins(void); 1080*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsUnregisterPluginsTHR(cmsContext ContextID); 1081*3ac0a46fSAndroid Build Coastguard Worker 1082*3ac0a46fSAndroid Build Coastguard Worker // Error logging ---------------------------------------------------------------------------------------------------------- 1083*3ac0a46fSAndroid Build Coastguard Worker 1084*3ac0a46fSAndroid Build Coastguard Worker // There is no error handling at all. When a function fails, it returns proper value. 1085*3ac0a46fSAndroid Build Coastguard Worker // For example, all create functions does return NULL on failure. Other may return FALSE. 1086*3ac0a46fSAndroid Build Coastguard Worker // It may be interesting, for the developer, to know why the function is failing. 1087*3ac0a46fSAndroid Build Coastguard Worker // for that reason, lcms2 does offer a logging function. This function will get 1088*3ac0a46fSAndroid Build Coastguard Worker // an ENGLISH string with some clues on what is going wrong. You can show this 1089*3ac0a46fSAndroid Build Coastguard Worker // info to the end user if you wish, or just create some sort of log on disk. 1090*3ac0a46fSAndroid Build Coastguard Worker // The logging function should NOT terminate the program, as this obviously can leave 1091*3ac0a46fSAndroid Build Coastguard Worker // unfreed resources. It is the programmer's responsibility to check each function 1092*3ac0a46fSAndroid Build Coastguard Worker // return code to make sure it didn't fail. 1093*3ac0a46fSAndroid Build Coastguard Worker 1094*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_UNDEFINED 0 1095*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_FILE 1 1096*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_RANGE 2 1097*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_INTERNAL 3 1098*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_NULL 4 1099*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_READ 5 1100*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_SEEK 6 1101*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_WRITE 7 1102*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_UNKNOWN_EXTENSION 8 1103*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_COLORSPACE_CHECK 9 1104*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_ALREADY_DEFINED 10 1105*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_BAD_SIGNATURE 11 1106*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_CORRUPTION_DETECTED 12 1107*3ac0a46fSAndroid Build Coastguard Worker #define cmsERROR_NOT_SUITABLE 13 1108*3ac0a46fSAndroid Build Coastguard Worker 1109*3ac0a46fSAndroid Build Coastguard Worker // Error logger is called with the ContextID when a message is raised. This gives the 1110*3ac0a46fSAndroid Build Coastguard Worker // chance to know which thread is responsible of the warning and any environment associated 1111*3ac0a46fSAndroid Build Coastguard Worker // with it. Non-multithreading applications may safely ignore this parameter. 1112*3ac0a46fSAndroid Build Coastguard Worker // Note that under certain special circumstances, ContextID may be NULL. 1113*3ac0a46fSAndroid Build Coastguard Worker typedef void (* cmsLogErrorHandlerFunction)(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text); 1114*3ac0a46fSAndroid Build Coastguard Worker 1115*3ac0a46fSAndroid Build Coastguard Worker // Allows user to set any specific logger 1116*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetLogErrorHandler(cmsLogErrorHandlerFunction Fn); 1117*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetLogErrorHandlerTHR(cmsContext ContextID, cmsLogErrorHandlerFunction Fn); 1118*3ac0a46fSAndroid Build Coastguard Worker 1119*3ac0a46fSAndroid Build Coastguard Worker // Conversions -------------------------------------------------------------------------------------------------------------- 1120*3ac0a46fSAndroid Build Coastguard Worker 1121*3ac0a46fSAndroid Build Coastguard Worker // Returns pointers to constant structs 1122*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const cmsCIEXYZ* CMSEXPORT cmsD50_XYZ(void); 1123*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const cmsCIExyY* CMSEXPORT cmsD50_xyY(void); 1124*3ac0a46fSAndroid Build Coastguard Worker 1125*3ac0a46fSAndroid Build Coastguard Worker // Colorimetric space conversions 1126*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsXYZ2xyY(cmsCIExyY* Dest, const cmsCIEXYZ* Source); 1127*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsxyY2XYZ(cmsCIEXYZ* Dest, const cmsCIExyY* Source); 1128*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsXYZ2Lab(const cmsCIEXYZ* WhitePoint, cmsCIELab* Lab, const cmsCIEXYZ* xyz); 1129*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsLab2XYZ(const cmsCIEXYZ* WhitePoint, cmsCIEXYZ* xyz, const cmsCIELab* Lab); 1130*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsLab2LCh(cmsCIELCh*LCh, const cmsCIELab* Lab); 1131*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsLCh2Lab(cmsCIELab* Lab, const cmsCIELCh* LCh); 1132*3ac0a46fSAndroid Build Coastguard Worker 1133*3ac0a46fSAndroid Build Coastguard Worker // Encoding /Decoding on PCS 1134*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsLabEncoded2Float(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); 1135*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsLabEncoded2FloatV2(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); 1136*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFloat2LabEncoded(cmsUInt16Number wLab[3], const cmsCIELab* Lab); 1137*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFloat2LabEncodedV2(cmsUInt16Number wLab[3], const cmsCIELab* Lab); 1138*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsXYZEncoded2Float(cmsCIEXYZ* fxyz, const cmsUInt16Number XYZ[3]); 1139*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFloat2XYZEncoded(cmsUInt16Number XYZ[3], const cmsCIEXYZ* fXYZ); 1140*3ac0a46fSAndroid Build Coastguard Worker 1141*3ac0a46fSAndroid Build Coastguard Worker // DeltaE metrics 1142*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsDeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); 1143*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsCIE94DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); 1144*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsBFDdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); 1145*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsCMCdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number l, cmsFloat64Number c); 1146*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsCIE2000DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number Kl, cmsFloat64Number Kc, cmsFloat64Number Kh); 1147*3ac0a46fSAndroid Build Coastguard Worker 1148*3ac0a46fSAndroid Build Coastguard Worker // Temperature <-> Chromaticity (Black body) 1149*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsWhitePointFromTemp(cmsCIExyY* WhitePoint, cmsFloat64Number TempK); 1150*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsTempFromWhitePoint(cmsFloat64Number* TempK, const cmsCIExyY* WhitePoint); 1151*3ac0a46fSAndroid Build Coastguard Worker 1152*3ac0a46fSAndroid Build Coastguard Worker // Chromatic adaptation 1153*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result, const cmsCIEXYZ* SourceWhitePt, 1154*3ac0a46fSAndroid Build Coastguard Worker const cmsCIEXYZ* Illuminant, 1155*3ac0a46fSAndroid Build Coastguard Worker const cmsCIEXYZ* Value); 1156*3ac0a46fSAndroid Build Coastguard Worker 1157*3ac0a46fSAndroid Build Coastguard Worker // CIECAM02 --------------------------------------------------------------------------------------------------- 1158*3ac0a46fSAndroid Build Coastguard Worker 1159*3ac0a46fSAndroid Build Coastguard Worker // Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing 1160*3ac0a46fSAndroid Build Coastguard Worker // conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag 1161*3ac0a46fSAndroid Build Coastguard Worker // cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions. 1162*3ac0a46fSAndroid Build Coastguard Worker 1163*3ac0a46fSAndroid Build Coastguard Worker 1164*3ac0a46fSAndroid Build Coastguard Worker #define AVG_SURROUND 1 1165*3ac0a46fSAndroid Build Coastguard Worker #define DIM_SURROUND 2 1166*3ac0a46fSAndroid Build Coastguard Worker #define DARK_SURROUND 3 1167*3ac0a46fSAndroid Build Coastguard Worker #define CUTSHEET_SURROUND 4 1168*3ac0a46fSAndroid Build Coastguard Worker 1169*3ac0a46fSAndroid Build Coastguard Worker #define D_CALCULATE (-1) 1170*3ac0a46fSAndroid Build Coastguard Worker 1171*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1172*3ac0a46fSAndroid Build Coastguard Worker cmsCIEXYZ whitePoint; 1173*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Yb; 1174*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number La; 1175*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number surround; 1176*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number D_value; 1177*3ac0a46fSAndroid Build Coastguard Worker 1178*3ac0a46fSAndroid Build Coastguard Worker } cmsViewingConditions; 1179*3ac0a46fSAndroid Build Coastguard Worker 1180*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsCIECAM02Init(cmsContext ContextID, const cmsViewingConditions* pVC); 1181*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsCIECAM02Done(cmsHANDLE hModel); 1182*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsCIECAM02Forward(cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut); 1183*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsCIECAM02Reverse(cmsHANDLE hModel, const cmsJCh* pIn, cmsCIEXYZ* pOut); 1184*3ac0a46fSAndroid Build Coastguard Worker 1185*3ac0a46fSAndroid Build Coastguard Worker 1186*3ac0a46fSAndroid Build Coastguard Worker // Tone curves ----------------------------------------------------------------------------------------- 1187*3ac0a46fSAndroid Build Coastguard Worker 1188*3ac0a46fSAndroid Build Coastguard Worker // This describes a curve segment. For a table of supported types, see the manual. User can increase the number of 1189*3ac0a46fSAndroid Build Coastguard Worker // available types by using a proper plug-in. Parametric segments allow 10 parameters at most 1190*3ac0a46fSAndroid Build Coastguard Worker 1191*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1192*3ac0a46fSAndroid Build Coastguard Worker cmsFloat32Number x0, x1; // Domain; for x0 < x <= x1 1193*3ac0a46fSAndroid Build Coastguard Worker cmsInt32Number Type; // Parametric type, Type == 0 means sampled segment. Negative values are reserved 1194*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Params[10]; // Parameters if Type != 0 1195*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nGridPoints; // Number of grid points if Type == 0 1196*3ac0a46fSAndroid Build Coastguard Worker cmsFloat32Number* SampledPoints; // Points to an array of floats if Type == 0 1197*3ac0a46fSAndroid Build Coastguard Worker 1198*3ac0a46fSAndroid Build Coastguard Worker } cmsCurveSegment; 1199*3ac0a46fSAndroid Build Coastguard Worker 1200*3ac0a46fSAndroid Build Coastguard Worker // The internal representation is none of your business. 1201*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cms_curve_struct cmsToneCurve; 1202*3ac0a46fSAndroid Build Coastguard Worker 1203*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsBuildSegmentedToneCurve(cmsContext ContextID, cmsUInt32Number nSegments, const cmsCurveSegment Segments[]); 1204*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsBuildParametricToneCurve(cmsContext ContextID, cmsInt32Number Type, const cmsFloat64Number Params[]); 1205*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsBuildGamma(cmsContext ContextID, cmsFloat64Number Gamma); 1206*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurve16(cmsContext ContextID, cmsUInt32Number nEntries, const cmsUInt16Number values[]); 1207*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurveFloat(cmsContext ContextID, cmsUInt32Number nEntries, const cmsFloat32Number values[]); 1208*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve); 1209*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]); 1210*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* Src); 1211*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurve(const cmsToneCurve* InGamma); 1212*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurveEx(cmsUInt32Number nResultSamples, const cmsToneCurve* InGamma); 1213*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsToneCurve* CMSEXPORT cmsJoinToneCurve(cmsContext ContextID, const cmsToneCurve* X, const cmsToneCurve* Y, cmsUInt32Number nPoints); 1214*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSmoothToneCurve(cmsToneCurve* Tab, cmsFloat64Number lambda); 1215*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat32Number CMSEXPORT cmsEvalToneCurveFloat(const cmsToneCurve* Curve, cmsFloat32Number v); 1216*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt16Number CMSEXPORT cmsEvalToneCurve16(const cmsToneCurve* Curve, cmsUInt16Number v); 1217*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMultisegment(const cmsToneCurve* InGamma); 1218*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsToneCurveLinear(const cmsToneCurve* Curve); 1219*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMonotonic(const cmsToneCurve* t); 1220*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsToneCurveDescending(const cmsToneCurve* t); 1221*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsInt32Number CMSEXPORT cmsGetToneCurveParametricType(const cmsToneCurve* t); 1222*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsEstimateGamma(const cmsToneCurve* t, cmsFloat64Number Precision); 1223*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number* CMSEXPORT cmsGetToneCurveParams(const cmsToneCurve* t); 1224*3ac0a46fSAndroid Build Coastguard Worker 1225*3ac0a46fSAndroid Build Coastguard Worker // Tone curve tabular estimation 1226*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetToneCurveEstimatedTableEntries(const cmsToneCurve* t); 1227*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const cmsUInt16Number* CMSEXPORT cmsGetToneCurveEstimatedTable(const cmsToneCurve* t); 1228*3ac0a46fSAndroid Build Coastguard Worker 1229*3ac0a46fSAndroid Build Coastguard Worker 1230*3ac0a46fSAndroid Build Coastguard Worker // Implements pipelines of multi-processing elements ------------------------------------------------------------- 1231*3ac0a46fSAndroid Build Coastguard Worker 1232*3ac0a46fSAndroid Build Coastguard Worker // Nothing to see here, move along 1233*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cmsPipeline_struct cmsPipeline; 1234*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cmsStage_struct cmsStage; 1235*3ac0a46fSAndroid Build Coastguard Worker 1236*3ac0a46fSAndroid Build Coastguard Worker // Those are hi-level pipelines 1237*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsPipeline* CMSEXPORT cmsPipelineAlloc(cmsContext ContextID, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels); 1238*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsPipelineFree(cmsPipeline* lut); 1239*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsPipeline* CMSEXPORT cmsPipelineDup(const cmsPipeline* Orig); 1240*3ac0a46fSAndroid Build Coastguard Worker 1241*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsGetPipelineContextID(const cmsPipeline* lut); 1242*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineInputChannels(const cmsPipeline* lut); 1243*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineOutputChannels(const cmsPipeline* lut); 1244*3ac0a46fSAndroid Build Coastguard Worker 1245*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineStageCount(const cmsPipeline* lut); 1246*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToFirstStage(const cmsPipeline* lut); 1247*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToLastStage(const cmsPipeline* lut); 1248*3ac0a46fSAndroid Build Coastguard Worker 1249*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsPipelineEval16(const cmsUInt16Number In[], cmsUInt16Number Out[], const cmsPipeline* lut); 1250*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsPipelineEvalFloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsPipeline* lut); 1251*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[], cmsFloat32Number Result[], cmsFloat32Number Hint[], const cmsPipeline* lut); 1252*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPipelineCat(cmsPipeline* l1, const cmsPipeline* l2); 1253*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPipelineSetSaveAs8bitsFlag(cmsPipeline* lut, cmsBool On); 1254*3ac0a46fSAndroid Build Coastguard Worker 1255*3ac0a46fSAndroid Build Coastguard Worker // Where to place/locate the stages in the pipeline chain 1256*3ac0a46fSAndroid Build Coastguard Worker typedef enum { cmsAT_BEGIN, cmsAT_END } cmsStageLoc; 1257*3ac0a46fSAndroid Build Coastguard Worker 1258*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPipelineInsertStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage* mpe); 1259*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsPipelineUnlinkStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage** mpe); 1260*3ac0a46fSAndroid Build Coastguard Worker 1261*3ac0a46fSAndroid Build Coastguard Worker // This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements 1262*3ac0a46fSAndroid Build Coastguard Worker // that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and 1263*3ac0a46fSAndroid Build Coastguard Worker // then a list of expected types followed with a list of double pointers to Stage elements. If 1264*3ac0a46fSAndroid Build Coastguard Worker // the function founds a match with current pipeline, it fills the pointers and returns TRUE 1265*3ac0a46fSAndroid Build Coastguard Worker // if not, returns FALSE without touching anything. 1266*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, cmsUInt32Number n, ...); 1267*3ac0a46fSAndroid Build Coastguard Worker 1268*3ac0a46fSAndroid Build Coastguard Worker // Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode 1269*3ac0a46fSAndroid Build Coastguard Worker // matrices with far more precision that CLUTS 1270*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, cmsUInt32Number nChannels); 1271*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]); 1272*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset); 1273*3ac0a46fSAndroid Build Coastguard Worker 1274*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); 1275*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); 1276*3ac0a46fSAndroid Build Coastguard Worker 1277*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); 1278*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); 1279*3ac0a46fSAndroid Build Coastguard Worker 1280*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe); 1281*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsStageFree(cmsStage* mpe); 1282*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStage* CMSEXPORT cmsStageNext(const cmsStage* mpe); 1283*3ac0a46fSAndroid Build Coastguard Worker 1284*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsStageInputChannels(const cmsStage* mpe); 1285*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsStageOutputChannels(const cmsStage* mpe); 1286*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsStageSignature CMSEXPORT cmsStageType(const cmsStage* mpe); 1287*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void* CMSEXPORT cmsStageData(const cmsStage* mpe); 1288*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsGetStageContextID(const cmsStage* mpe); 1289*3ac0a46fSAndroid Build Coastguard Worker 1290*3ac0a46fSAndroid Build Coastguard Worker // Sampling 1291*3ac0a46fSAndroid Build Coastguard Worker typedef cmsInt32Number (* cmsSAMPLER16) (CMSREGISTER const cmsUInt16Number In[], 1292*3ac0a46fSAndroid Build Coastguard Worker CMSREGISTER cmsUInt16Number Out[], 1293*3ac0a46fSAndroid Build Coastguard Worker CMSREGISTER void * Cargo); 1294*3ac0a46fSAndroid Build Coastguard Worker 1295*3ac0a46fSAndroid Build Coastguard Worker typedef cmsInt32Number (* cmsSAMPLERFLOAT)(CMSREGISTER const cmsFloat32Number In[], 1296*3ac0a46fSAndroid Build Coastguard Worker CMSREGISTER cmsFloat32Number Out[], 1297*3ac0a46fSAndroid Build Coastguard Worker CMSREGISTER void * Cargo); 1298*3ac0a46fSAndroid Build Coastguard Worker 1299*3ac0a46fSAndroid Build Coastguard Worker // Use this flag to prevent changes being written to destination 1300*3ac0a46fSAndroid Build Coastguard Worker #define SAMPLER_INSPECT 0x01000000 1301*3ac0a46fSAndroid Build Coastguard Worker 1302*3ac0a46fSAndroid Build Coastguard Worker // For CLUT only 1303*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsStageSampleCLut16bit(cmsStage* mpe, cmsSAMPLER16 Sampler, void* Cargo, cmsUInt32Number dwFlags); 1304*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsStageSampleCLutFloat(cmsStage* mpe, cmsSAMPLERFLOAT Sampler, void* Cargo, cmsUInt32Number dwFlags); 1305*3ac0a46fSAndroid Build Coastguard Worker 1306*3ac0a46fSAndroid Build Coastguard Worker // Slicers 1307*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSliceSpace16(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], 1308*3ac0a46fSAndroid Build Coastguard Worker cmsSAMPLER16 Sampler, void * Cargo); 1309*3ac0a46fSAndroid Build Coastguard Worker 1310*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSliceSpaceFloat(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], 1311*3ac0a46fSAndroid Build Coastguard Worker cmsSAMPLERFLOAT Sampler, void * Cargo); 1312*3ac0a46fSAndroid Build Coastguard Worker 1313*3ac0a46fSAndroid Build Coastguard Worker // Multilocalized Unicode management --------------------------------------------------------------------------------------- 1314*3ac0a46fSAndroid Build Coastguard Worker 1315*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cms_MLU_struct cmsMLU; 1316*3ac0a46fSAndroid Build Coastguard Worker 1317*3ac0a46fSAndroid Build Coastguard Worker #define cmsNoLanguage "\0\0" 1318*3ac0a46fSAndroid Build Coastguard Worker #define cmsNoCountry "\0\0" 1319*3ac0a46fSAndroid Build Coastguard Worker 1320*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsMLU* CMSEXPORT cmsMLUalloc(cmsContext ContextID, cmsUInt32Number nItems); 1321*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsMLUfree(cmsMLU* mlu); 1322*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsMLU* CMSEXPORT cmsMLUdup(const cmsMLU* mlu); 1323*3ac0a46fSAndroid Build Coastguard Worker 1324*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsMLUsetASCII(cmsMLU* mlu, 1325*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1326*3ac0a46fSAndroid Build Coastguard Worker const char* ASCIIString); 1327*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsMLUsetWide(cmsMLU* mlu, 1328*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1329*3ac0a46fSAndroid Build Coastguard Worker const wchar_t* WideString); 1330*3ac0a46fSAndroid Build Coastguard Worker 1331*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetASCII(const cmsMLU* mlu, 1332*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1333*3ac0a46fSAndroid Build Coastguard Worker char* Buffer, cmsUInt32Number BufferSize); 1334*3ac0a46fSAndroid Build Coastguard Worker 1335*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetWide(const cmsMLU* mlu, 1336*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1337*3ac0a46fSAndroid Build Coastguard Worker wchar_t* Buffer, cmsUInt32Number BufferSize); 1338*3ac0a46fSAndroid Build Coastguard Worker 1339*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsMLUgetTranslation(const cmsMLU* mlu, 1340*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1341*3ac0a46fSAndroid Build Coastguard Worker char ObtainedLanguage[3], char ObtainedCountry[3]); 1342*3ac0a46fSAndroid Build Coastguard Worker 1343*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsMLUtranslationsCount(const cmsMLU* mlu); 1344*3ac0a46fSAndroid Build Coastguard Worker 1345*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsMLUtranslationsCodes(const cmsMLU* mlu, 1346*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number idx, 1347*3ac0a46fSAndroid Build Coastguard Worker char LanguageCode[3], 1348*3ac0a46fSAndroid Build Coastguard Worker char CountryCode[3]); 1349*3ac0a46fSAndroid Build Coastguard Worker 1350*3ac0a46fSAndroid Build Coastguard Worker // Undercolorremoval & black generation ------------------------------------------------------------------------------------- 1351*3ac0a46fSAndroid Build Coastguard Worker 1352*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1353*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* Ucr; 1354*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* Bg; 1355*3ac0a46fSAndroid Build Coastguard Worker cmsMLU* Desc; 1356*3ac0a46fSAndroid Build Coastguard Worker 1357*3ac0a46fSAndroid Build Coastguard Worker } cmsUcrBg; 1358*3ac0a46fSAndroid Build Coastguard Worker 1359*3ac0a46fSAndroid Build Coastguard Worker // Screening ---------------------------------------------------------------------------------------------------------------- 1360*3ac0a46fSAndroid Build Coastguard Worker 1361*3ac0a46fSAndroid Build Coastguard Worker #define cmsPRINTER_DEFAULT_SCREENS 0x0001 1362*3ac0a46fSAndroid Build Coastguard Worker #define cmsFREQUENCE_UNITS_LINES_CM 0x0000 1363*3ac0a46fSAndroid Build Coastguard Worker #define cmsFREQUENCE_UNITS_LINES_INCH 0x0002 1364*3ac0a46fSAndroid Build Coastguard Worker 1365*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_UNKNOWN 0 1366*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_PRINTER_DEFAULT 1 1367*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_ROUND 2 1368*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_DIAMOND 3 1369*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_ELLIPSE 4 1370*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_LINE 5 1371*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_SQUARE 6 1372*3ac0a46fSAndroid Build Coastguard Worker #define cmsSPOT_CROSS 7 1373*3ac0a46fSAndroid Build Coastguard Worker 1374*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1375*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Frequency; 1376*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number ScreenAngle; 1377*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number SpotShape; 1378*3ac0a46fSAndroid Build Coastguard Worker 1379*3ac0a46fSAndroid Build Coastguard Worker } cmsScreeningChannel; 1380*3ac0a46fSAndroid Build Coastguard Worker 1381*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1382*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Flag; 1383*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nChannels; 1384*3ac0a46fSAndroid Build Coastguard Worker cmsScreeningChannel Channels[cmsMAXCHANNELS]; 1385*3ac0a46fSAndroid Build Coastguard Worker 1386*3ac0a46fSAndroid Build Coastguard Worker } cmsScreening; 1387*3ac0a46fSAndroid Build Coastguard Worker 1388*3ac0a46fSAndroid Build Coastguard Worker 1389*3ac0a46fSAndroid Build Coastguard Worker // Named color ----------------------------------------------------------------------------------------------------------------- 1390*3ac0a46fSAndroid Build Coastguard Worker 1391*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cms_NAMEDCOLORLIST_struct cmsNAMEDCOLORLIST; 1392*3ac0a46fSAndroid Build Coastguard Worker 1393*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsAllocNamedColorList(cmsContext ContextID, 1394*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number n, 1395*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number ColorantCount, 1396*3ac0a46fSAndroid Build Coastguard Worker const char* Prefix, const char* Suffix); 1397*3ac0a46fSAndroid Build Coastguard Worker 1398*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFreeNamedColorList(cmsNAMEDCOLORLIST* v); 1399*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsDupNamedColorList(const cmsNAMEDCOLORLIST* v); 1400*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsAppendNamedColor(cmsNAMEDCOLORLIST* v, const char* Name, 1401*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number PCS[3], 1402*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number Colorant[cmsMAXCHANNELS]); 1403*3ac0a46fSAndroid Build Coastguard Worker 1404*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsNamedColorCount(const cmsNAMEDCOLORLIST* v); 1405*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsInt32Number CMSEXPORT cmsNamedColorIndex(const cmsNAMEDCOLORLIST* v, const char* Name); 1406*3ac0a46fSAndroid Build Coastguard Worker 1407*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsNamedColorInfo(const cmsNAMEDCOLORLIST* NamedColorList, cmsUInt32Number nColor, 1408*3ac0a46fSAndroid Build Coastguard Worker char* Name, 1409*3ac0a46fSAndroid Build Coastguard Worker char* Prefix, 1410*3ac0a46fSAndroid Build Coastguard Worker char* Suffix, 1411*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number* PCS, 1412*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number* Colorant); 1413*3ac0a46fSAndroid Build Coastguard Worker 1414*3ac0a46fSAndroid Build Coastguard Worker // Retrieve named color list from transform 1415*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsGetNamedColorList(cmsHTRANSFORM xform); 1416*3ac0a46fSAndroid Build Coastguard Worker 1417*3ac0a46fSAndroid Build Coastguard Worker // Profile sequence ----------------------------------------------------------------------------------------------------- 1418*3ac0a46fSAndroid Build Coastguard Worker 1419*3ac0a46fSAndroid Build Coastguard Worker // Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others 1420*3ac0a46fSAndroid Build Coastguard Worker // come from Profile Sequence Identifier Tag 1421*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1422*3ac0a46fSAndroid Build Coastguard Worker 1423*3ac0a46fSAndroid Build Coastguard Worker cmsSignature deviceMfg; 1424*3ac0a46fSAndroid Build Coastguard Worker cmsSignature deviceModel; 1425*3ac0a46fSAndroid Build Coastguard Worker cmsUInt64Number attributes; 1426*3ac0a46fSAndroid Build Coastguard Worker cmsTechnologySignature technology; 1427*3ac0a46fSAndroid Build Coastguard Worker cmsProfileID ProfileID; 1428*3ac0a46fSAndroid Build Coastguard Worker cmsMLU* Manufacturer; 1429*3ac0a46fSAndroid Build Coastguard Worker cmsMLU* Model; 1430*3ac0a46fSAndroid Build Coastguard Worker cmsMLU* Description; 1431*3ac0a46fSAndroid Build Coastguard Worker 1432*3ac0a46fSAndroid Build Coastguard Worker } cmsPSEQDESC; 1433*3ac0a46fSAndroid Build Coastguard Worker 1434*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 1435*3ac0a46fSAndroid Build Coastguard Worker 1436*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number n; 1437*3ac0a46fSAndroid Build Coastguard Worker cmsContext ContextID; 1438*3ac0a46fSAndroid Build Coastguard Worker cmsPSEQDESC* seq; 1439*3ac0a46fSAndroid Build Coastguard Worker 1440*3ac0a46fSAndroid Build Coastguard Worker } cmsSEQ; 1441*3ac0a46fSAndroid Build Coastguard Worker 1442*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsSEQ* CMSEXPORT cmsAllocProfileSequenceDescription(cmsContext ContextID, cmsUInt32Number n); 1443*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsSEQ* CMSEXPORT cmsDupProfileSequenceDescription(const cmsSEQ* pseq); 1444*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsFreeProfileSequenceDescription(cmsSEQ* pseq); 1445*3ac0a46fSAndroid Build Coastguard Worker 1446*3ac0a46fSAndroid Build Coastguard Worker // Dictionaries -------------------------------------------------------------------------------------------------------- 1447*3ac0a46fSAndroid Build Coastguard Worker 1448*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cmsDICTentry_struct { 1449*3ac0a46fSAndroid Build Coastguard Worker 1450*3ac0a46fSAndroid Build Coastguard Worker struct _cmsDICTentry_struct* Next; 1451*3ac0a46fSAndroid Build Coastguard Worker 1452*3ac0a46fSAndroid Build Coastguard Worker cmsMLU *DisplayName; 1453*3ac0a46fSAndroid Build Coastguard Worker cmsMLU *DisplayValue; 1454*3ac0a46fSAndroid Build Coastguard Worker wchar_t* Name; 1455*3ac0a46fSAndroid Build Coastguard Worker wchar_t* Value; 1456*3ac0a46fSAndroid Build Coastguard Worker 1457*3ac0a46fSAndroid Build Coastguard Worker } cmsDICTentry; 1458*3ac0a46fSAndroid Build Coastguard Worker 1459*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsDictAlloc(cmsContext ContextID); 1460*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDictFree(cmsHANDLE hDict); 1461*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsDictDup(cmsHANDLE hDict); 1462*3ac0a46fSAndroid Build Coastguard Worker 1463*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsDictAddEntry(cmsHANDLE hDict, const wchar_t* Name, const wchar_t* Value, const cmsMLU *DisplayName, const cmsMLU *DisplayValue); 1464*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const cmsDICTentry* CMSEXPORT cmsDictGetEntryList(cmsHANDLE hDict); 1465*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const cmsDICTentry* CMSEXPORT cmsDictNextEntry(const cmsDICTentry* e); 1466*3ac0a46fSAndroid Build Coastguard Worker 1467*3ac0a46fSAndroid Build Coastguard Worker // Access to Profile data ---------------------------------------------------------------------------------------------- 1468*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID); 1469*3ac0a46fSAndroid Build Coastguard Worker 1470*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsGetProfileContextID(cmsHPROFILE hProfile); 1471*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsInt32Number CMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile); 1472*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsTagSignature CMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, cmsUInt32Number n); 1473*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsTag(cmsHPROFILE hProfile, cmsTagSignature sig); 1474*3ac0a46fSAndroid Build Coastguard Worker 1475*3ac0a46fSAndroid Build Coastguard Worker // Read and write pre-formatted data 1476*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void* CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, cmsTagSignature sig); 1477*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data); 1478*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsLinkTag(cmsHPROFILE hProfile, cmsTagSignature sig, cmsTagSignature dest); 1479*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsTagSignature CMSEXPORT cmsTagLinkedTo(cmsHPROFILE hProfile, cmsTagSignature sig); 1480*3ac0a46fSAndroid Build Coastguard Worker 1481*3ac0a46fSAndroid Build Coastguard Worker // Read and write raw data 1482*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, void* Buffer, cmsUInt32Number BufferSize); 1483*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsWriteRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data, cmsUInt32Number Size); 1484*3ac0a46fSAndroid Build Coastguard Worker 1485*3ac0a46fSAndroid Build Coastguard Worker // Access header data 1486*3ac0a46fSAndroid Build Coastguard Worker #define cmsEmbeddedProfileFalse 0x00000000 1487*3ac0a46fSAndroid Build Coastguard Worker #define cmsEmbeddedProfileTrue 0x00000001 1488*3ac0a46fSAndroid Build Coastguard Worker #define cmsUseAnywhere 0x00000000 1489*3ac0a46fSAndroid Build Coastguard Worker #define cmsUseWithEmbeddedDataOnly 0x00000002 1490*3ac0a46fSAndroid Build Coastguard Worker 1491*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderFlags(cmsHPROFILE hProfile); 1492*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsGetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number* Flags); 1493*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsGetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); 1494*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsGetHeaderCreationDateTime(cmsHPROFILE hProfile, struct tm *Dest); 1495*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderRenderingIntent(cmsHPROFILE hProfile); 1496*3ac0a46fSAndroid Build Coastguard Worker 1497*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, cmsUInt32Number Flags); 1498*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderManufacturer(cmsHPROFILE hProfile); 1499*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderManufacturer(cmsHPROFILE hProfile, cmsUInt32Number manufacturer); 1500*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderCreator(cmsHPROFILE hProfile); 1501*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderModel(cmsHPROFILE hProfile); 1502*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderModel(cmsHPROFILE hProfile, cmsUInt32Number model); 1503*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number Flags); 1504*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); 1505*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetHeaderRenderingIntent(cmsHPROFILE hProfile, cmsUInt32Number RenderingIntent); 1506*3ac0a46fSAndroid Build Coastguard Worker 1507*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsColorSpaceSignature 1508*3ac0a46fSAndroid Build Coastguard Worker CMSEXPORT cmsGetPCS(cmsHPROFILE hProfile); 1509*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, cmsColorSpaceSignature pcs); 1510*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsColorSpaceSignature 1511*3ac0a46fSAndroid Build Coastguard Worker CMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile); 1512*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, cmsColorSpaceSignature sig); 1513*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsProfileClassSignature 1514*3ac0a46fSAndroid Build Coastguard Worker CMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile); 1515*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, cmsProfileClassSignature sig); 1516*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetProfileVersion(cmsHPROFILE hProfile, cmsFloat64Number Version); 1517*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsGetProfileVersion(cmsHPROFILE hProfile); 1518*3ac0a46fSAndroid Build Coastguard Worker 1519*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetEncodedICCversion(cmsHPROFILE hProfile); 1520*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetEncodedICCversion(cmsHPROFILE hProfile, cmsUInt32Number Version); 1521*3ac0a46fSAndroid Build Coastguard Worker 1522*3ac0a46fSAndroid Build Coastguard Worker // How profiles may be used 1523*3ac0a46fSAndroid Build Coastguard Worker #define LCMS_USED_AS_INPUT 0 1524*3ac0a46fSAndroid Build Coastguard Worker #define LCMS_USED_AS_OUTPUT 1 1525*3ac0a46fSAndroid Build Coastguard Worker #define LCMS_USED_AS_PROOF 2 1526*3ac0a46fSAndroid Build Coastguard Worker 1527*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); 1528*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsMatrixShaper(cmsHPROFILE hProfile); 1529*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIsCLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); 1530*3ac0a46fSAndroid Build Coastguard Worker 1531*3ac0a46fSAndroid Build Coastguard Worker // Translate form/to our notation to ICC 1532*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsColorSpaceSignature CMSEXPORT _cmsICCcolorSpace(int OurNotation); 1533*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT _cmsLCMScolorSpace(cmsColorSpaceSignature ProfileSpace); 1534*3ac0a46fSAndroid Build Coastguard Worker 1535*3ac0a46fSAndroid Build Coastguard Worker // Deprecated, use cmsChannelsOfColorSpace instead 1536*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsChannelsOf(cmsColorSpaceSignature ColorSpace); 1537*3ac0a46fSAndroid Build Coastguard Worker 1538*3ac0a46fSAndroid Build Coastguard Worker // Get number of channels of color space or -1 if color space is not listed/supported 1539*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsInt32Number CMSEXPORT cmsChannelsOfColorSpace(cmsColorSpaceSignature ColorSpace); 1540*3ac0a46fSAndroid Build Coastguard Worker 1541*3ac0a46fSAndroid Build Coastguard Worker // Build a suitable formatter for the colorspace of this profile. nBytes=1 means 8 bits, nBytes=2 means 16 bits. 1542*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForColorspaceOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); 1543*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForPCSOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); 1544*3ac0a46fSAndroid Build Coastguard Worker 1545*3ac0a46fSAndroid Build Coastguard Worker 1546*3ac0a46fSAndroid Build Coastguard Worker // Localized info 1547*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 1548*3ac0a46fSAndroid Build Coastguard Worker cmsInfoDescription = 0, 1549*3ac0a46fSAndroid Build Coastguard Worker cmsInfoManufacturer = 1, 1550*3ac0a46fSAndroid Build Coastguard Worker cmsInfoModel = 2, 1551*3ac0a46fSAndroid Build Coastguard Worker cmsInfoCopyright = 3 1552*3ac0a46fSAndroid Build Coastguard Worker } cmsInfoType; 1553*3ac0a46fSAndroid Build Coastguard Worker 1554*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfo(cmsHPROFILE hProfile, cmsInfoType Info, 1555*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1556*3ac0a46fSAndroid Build Coastguard Worker wchar_t* Buffer, cmsUInt32Number BufferSize); 1557*3ac0a46fSAndroid Build Coastguard Worker 1558*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfoASCII(cmsHPROFILE hProfile, cmsInfoType Info, 1559*3ac0a46fSAndroid Build Coastguard Worker const char LanguageCode[3], const char CountryCode[3], 1560*3ac0a46fSAndroid Build Coastguard Worker char* Buffer, cmsUInt32Number BufferSize); 1561*3ac0a46fSAndroid Build Coastguard Worker 1562*3ac0a46fSAndroid Build Coastguard Worker // IO handlers ---------------------------------------------------------------------------------------------------------- 1563*3ac0a46fSAndroid Build Coastguard Worker 1564*3ac0a46fSAndroid Build Coastguard Worker typedef struct _cms_io_handler cmsIOHANDLER; 1565*3ac0a46fSAndroid Build Coastguard Worker 1566*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const char* FileName, const char* AccessMode); 1567*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* Stream); 1568*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromMem(cmsContext ContextID, void *Buffer, cmsUInt32Number size, const char* AccessMode); 1569*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromNULL(cmsContext ContextID); 1570*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsIOHANDLER* CMSEXPORT cmsGetProfileIOhandler(cmsHPROFILE hProfile); 1571*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsCloseIOhandler(cmsIOHANDLER* io); 1572*3ac0a46fSAndroid Build Coastguard Worker 1573*3ac0a46fSAndroid Build Coastguard Worker // MD5 message digest -------------------------------------------------------------------------------------------------- 1574*3ac0a46fSAndroid Build Coastguard Worker 1575*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsMD5computeID(cmsHPROFILE hProfile); 1576*3ac0a46fSAndroid Build Coastguard Worker 1577*3ac0a46fSAndroid Build Coastguard Worker // Profile high level functions ------------------------------------------------------------------------------------------ 1578*3ac0a46fSAndroid Build Coastguard Worker 1579*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess); 1580*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *ICCProfile, const char *sAccess); 1581*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess); 1582*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStreamTHR(cmsContext ContextID, FILE* ICCProfile, const char* sAccess); 1583*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void * MemPtr, cmsUInt32Number dwSize); 1584*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMemTHR(cmsContext ContextID, const void * MemPtr, cmsUInt32Number dwSize); 1585*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandlerTHR(cmsContext ContextID, cmsIOHANDLER* io); 1586*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandler2THR(cmsContext ContextID, cmsIOHANDLER* io, cmsBool write); 1587*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile); 1588*3ac0a46fSAndroid Build Coastguard Worker 1589*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName); 1590*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSaveProfileToStream(cmsHPROFILE hProfile, FILE* Stream); 1591*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUInt32Number* BytesNeeded); 1592*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOHANDLER* io); 1593*3ac0a46fSAndroid Build Coastguard Worker 1594*3ac0a46fSAndroid Build Coastguard Worker // Predefined virtual profiles ------------------------------------------------------------------------------------------ 1595*3ac0a46fSAndroid Build Coastguard Worker 1596*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID, 1597*3ac0a46fSAndroid Build Coastguard Worker const cmsCIExyY* WhitePoint, 1598*3ac0a46fSAndroid Build Coastguard Worker const cmsCIExyYTRIPLE* Primaries, 1599*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* const TransferFunction[3]); 1600*3ac0a46fSAndroid Build Coastguard Worker 1601*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfile(const cmsCIExyY* WhitePoint, 1602*3ac0a46fSAndroid Build Coastguard Worker const cmsCIExyYTRIPLE* Primaries, 1603*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* const TransferFunction[3]); 1604*3ac0a46fSAndroid Build Coastguard Worker 1605*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfileTHR(cmsContext ContextID, 1606*3ac0a46fSAndroid Build Coastguard Worker const cmsCIExyY* WhitePoint, 1607*3ac0a46fSAndroid Build Coastguard Worker const cmsToneCurve* TransferFunction); 1608*3ac0a46fSAndroid Build Coastguard Worker 1609*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfile(const cmsCIExyY* WhitePoint, 1610*3ac0a46fSAndroid Build Coastguard Worker const cmsToneCurve* TransferFunction); 1611*3ac0a46fSAndroid Build Coastguard Worker 1612*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLinkTHR(cmsContext ContextID, 1613*3ac0a46fSAndroid Build Coastguard Worker cmsColorSpaceSignature ColorSpace, 1614*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* const TransferFunctions[]); 1615*3ac0a46fSAndroid Build Coastguard Worker 1616*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLink(cmsColorSpaceSignature ColorSpace, 1617*3ac0a46fSAndroid Build Coastguard Worker cmsToneCurve* const TransferFunctions[]); 1618*3ac0a46fSAndroid Build Coastguard Worker 1619*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID, 1620*3ac0a46fSAndroid Build Coastguard Worker cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); 1621*3ac0a46fSAndroid Build Coastguard Worker 1622*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLink(cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); 1623*3ac0a46fSAndroid Build Coastguard Worker 1624*3ac0a46fSAndroid Build Coastguard Worker 1625*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); 1626*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2Profile(const cmsCIExyY* WhitePoint); 1627*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); 1628*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4Profile(const cmsCIExyY* WhitePoint); 1629*3ac0a46fSAndroid Build Coastguard Worker 1630*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfileTHR(cmsContext ContextID); 1631*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfile(void); 1632*3ac0a46fSAndroid Build Coastguard Worker 1633*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfileTHR(cmsContext ContextID); 1634*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfile(void); 1635*3ac0a46fSAndroid Build Coastguard Worker 1636*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID, 1637*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nLUTPoints, 1638*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Bright, 1639*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Contrast, 1640*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Hue, 1641*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Saturation, 1642*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number TempSrc, 1643*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number TempDest); 1644*3ac0a46fSAndroid Build Coastguard Worker 1645*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfile(cmsUInt32Number nLUTPoints, 1646*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Bright, 1647*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Contrast, 1648*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Hue, 1649*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Saturation, 1650*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number TempSrc, 1651*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number TempDest); 1652*3ac0a46fSAndroid Build Coastguard Worker 1653*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID); 1654*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfile(void); 1655*3ac0a46fSAndroid Build Coastguard Worker 1656*3ac0a46fSAndroid Build Coastguard Worker // Converts a transform to a devicelink profile 1657*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHPROFILE CMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, cmsFloat64Number Version, cmsUInt32Number dwFlags); 1658*3ac0a46fSAndroid Build Coastguard Worker 1659*3ac0a46fSAndroid Build Coastguard Worker // Intents ---------------------------------------------------------------------------------------------- 1660*3ac0a46fSAndroid Build Coastguard Worker 1661*3ac0a46fSAndroid Build Coastguard Worker // ICC Intents 1662*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PERCEPTUAL 0 1663*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_RELATIVE_COLORIMETRIC 1 1664*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_SATURATION 2 1665*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_ABSOLUTE_COLORIMETRIC 3 1666*3ac0a46fSAndroid Build Coastguard Worker 1667*3ac0a46fSAndroid Build Coastguard Worker // Non-ICC intents 1668*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_ONLY_PERCEPTUAL 10 1669*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC 11 1670*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_ONLY_SATURATION 12 1671*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_PLANE_PERCEPTUAL 13 1672*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC 14 1673*3ac0a46fSAndroid Build Coastguard Worker #define INTENT_PRESERVE_K_PLANE_SATURATION 15 1674*3ac0a46fSAndroid Build Coastguard Worker 1675*3ac0a46fSAndroid Build Coastguard Worker // Call with NULL as parameters to get the intent count 1676*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetSupportedIntents(cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions); 1677*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetSupportedIntentsTHR(cmsContext ContextID, cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions); 1678*3ac0a46fSAndroid Build Coastguard Worker 1679*3ac0a46fSAndroid Build Coastguard Worker // Flags 1680*3ac0a46fSAndroid Build Coastguard Worker 1681*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NOCACHE 0x0040 // Inhibit 1-pixel cache 1682*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NOOPTIMIZE 0x0100 // Inhibit optimizations 1683*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NULLTRANSFORM 0x0200 // Don't transform anyway 1684*3ac0a46fSAndroid Build Coastguard Worker 1685*3ac0a46fSAndroid Build Coastguard Worker // Proofing flags 1686*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_GAMUTCHECK 0x1000 // Out of Gamut alarm 1687*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_SOFTPROOFING 0x4000 // Do softproofing 1688*3ac0a46fSAndroid Build Coastguard Worker 1689*3ac0a46fSAndroid Build Coastguard Worker // Misc 1690*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_BLACKPOINTCOMPENSATION 0x2000 1691*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NOWHITEONWHITEFIXUP 0x0004 // Don't fix scum dot 1692*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_HIGHRESPRECALC 0x0400 // Use more memory to give better accuracy 1693*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_LOWRESPRECALC 0x0800 // Use less memory to minimize resources 1694*3ac0a46fSAndroid Build Coastguard Worker 1695*3ac0a46fSAndroid Build Coastguard Worker // For devicelink creation 1696*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_8BITS_DEVICELINK 0x0008 // Create 8 bits devicelinks 1697*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_GUESSDEVICECLASS 0x0020 // Guess device class (for transform2devicelink) 1698*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_KEEP_SEQUENCE 0x0080 // Keep profile sequence for devicelink creation 1699*3ac0a46fSAndroid Build Coastguard Worker 1700*3ac0a46fSAndroid Build Coastguard Worker // Specific to a particular optimizations 1701*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_FORCE_CLUT 0x0002 // Force CLUT optimization 1702*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_CLUT_POST_LINEARIZATION 0x0001 // create postlinearization tables if possible 1703*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_CLUT_PRE_LINEARIZATION 0x0010 // create prelinearization tables if possible 1704*3ac0a46fSAndroid Build Coastguard Worker 1705*3ac0a46fSAndroid Build Coastguard Worker // Specific to unbounded mode 1706*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NONEGATIVES 0x8000 // Prevent negative numbers in floating point transforms 1707*3ac0a46fSAndroid Build Coastguard Worker 1708*3ac0a46fSAndroid Build Coastguard Worker // Copy alpha channels when transforming 1709*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_COPY_ALPHA 0x04000000 // Alpha channels are copied on cmsDoTransform() 1710*3ac0a46fSAndroid Build Coastguard Worker 1711*3ac0a46fSAndroid Build Coastguard Worker // Fine-tune control over number of gridpoints 1712*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_GRIDPOINTS(n) (((n) & 0xFF) << 16) 1713*3ac0a46fSAndroid Build Coastguard Worker 1714*3ac0a46fSAndroid Build Coastguard Worker // CRD special 1715*3ac0a46fSAndroid Build Coastguard Worker #define cmsFLAGS_NODEFAULTRESOURCEDEF 0x01000000 1716*3ac0a46fSAndroid Build Coastguard Worker 1717*3ac0a46fSAndroid Build Coastguard Worker // Transforms --------------------------------------------------------------------------------------------------- 1718*3ac0a46fSAndroid Build Coastguard Worker 1719*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransformTHR(cmsContext ContextID, 1720*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Input, 1721*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1722*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Output, 1723*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1724*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1725*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1726*3ac0a46fSAndroid Build Coastguard Worker 1727*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransform(cmsHPROFILE Input, 1728*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1729*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Output, 1730*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1731*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1732*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1733*3ac0a46fSAndroid Build Coastguard Worker 1734*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransformTHR(cmsContext ContextID, 1735*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Input, 1736*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1737*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Output, 1738*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1739*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Proofing, 1740*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1741*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number ProofingIntent, 1742*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1743*3ac0a46fSAndroid Build Coastguard Worker 1744*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input, 1745*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1746*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Output, 1747*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1748*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE Proofing, 1749*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1750*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number ProofingIntent, 1751*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1752*3ac0a46fSAndroid Build Coastguard Worker 1753*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransformTHR(cmsContext ContextID, 1754*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE hProfiles[], 1755*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nProfiles, 1756*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1757*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1758*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1759*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1760*3ac0a46fSAndroid Build Coastguard Worker 1761*3ac0a46fSAndroid Build Coastguard Worker 1762*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], 1763*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nProfiles, 1764*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1765*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1766*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1767*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1768*3ac0a46fSAndroid Build Coastguard Worker 1769*3ac0a46fSAndroid Build Coastguard Worker 1770*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateExtendedTransform(cmsContext ContextID, 1771*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[], 1772*3ac0a46fSAndroid Build Coastguard Worker cmsBool BPC[], 1773*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intents[], 1774*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number AdaptationStates[], 1775*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE hGamutProfile, 1776*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number nGamutPCSposition, 1777*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1778*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat, 1779*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags); 1780*3ac0a46fSAndroid Build Coastguard Worker 1781*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform); 1782*3ac0a46fSAndroid Build Coastguard Worker 1783*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, 1784*3ac0a46fSAndroid Build Coastguard Worker const void * InputBuffer, 1785*3ac0a46fSAndroid Build Coastguard Worker void * OutputBuffer, 1786*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Size); 1787*3ac0a46fSAndroid Build Coastguard Worker 1788*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDoTransformStride(cmsHTRANSFORM Transform, // Deprecated 1789*3ac0a46fSAndroid Build Coastguard Worker const void * InputBuffer, 1790*3ac0a46fSAndroid Build Coastguard Worker void * OutputBuffer, 1791*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Size, 1792*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Stride); 1793*3ac0a46fSAndroid Build Coastguard Worker 1794*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsDoTransformLineStride(cmsHTRANSFORM Transform, 1795*3ac0a46fSAndroid Build Coastguard Worker const void* InputBuffer, 1796*3ac0a46fSAndroid Build Coastguard Worker void* OutputBuffer, 1797*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number PixelsPerLine, 1798*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number LineCount, 1799*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number BytesPerLineIn, 1800*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number BytesPerLineOut, 1801*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number BytesPerPlaneIn, 1802*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number BytesPerPlaneOut); 1803*3ac0a46fSAndroid Build Coastguard Worker 1804*3ac0a46fSAndroid Build Coastguard Worker 1805*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetAlarmCodes(const cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); 1806*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsGetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); 1807*3ac0a46fSAndroid Build Coastguard Worker 1808*3ac0a46fSAndroid Build Coastguard Worker 1809*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsSetAlarmCodesTHR(cmsContext ContextID, 1810*3ac0a46fSAndroid Build Coastguard Worker const cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]); 1811*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsGetAlarmCodesTHR(cmsContext ContextID, 1812*3ac0a46fSAndroid Build Coastguard Worker cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]); 1813*3ac0a46fSAndroid Build Coastguard Worker 1814*3ac0a46fSAndroid Build Coastguard Worker 1815*3ac0a46fSAndroid Build Coastguard Worker 1816*3ac0a46fSAndroid Build Coastguard Worker // Adaptation state for absolute colorimetric intent 1817*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationState(cmsFloat64Number d); 1818*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationStateTHR(cmsContext ContextID, cmsFloat64Number d); 1819*3ac0a46fSAndroid Build Coastguard Worker 1820*3ac0a46fSAndroid Build Coastguard Worker 1821*3ac0a46fSAndroid Build Coastguard Worker 1822*3ac0a46fSAndroid Build Coastguard Worker // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed 1823*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsContext CMSEXPORT cmsGetTransformContextID(cmsHTRANSFORM hTransform); 1824*3ac0a46fSAndroid Build Coastguard Worker 1825*3ac0a46fSAndroid Build Coastguard Worker // Grab the input/output formats 1826*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformInputFormat(cmsHTRANSFORM hTransform); 1827*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformOutputFormat(cmsHTRANSFORM hTransform); 1828*3ac0a46fSAndroid Build Coastguard Worker 1829*3ac0a46fSAndroid Build Coastguard Worker // For backwards compatibility 1830*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, 1831*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number InputFormat, 1832*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number OutputFormat); 1833*3ac0a46fSAndroid Build Coastguard Worker 1834*3ac0a46fSAndroid Build Coastguard Worker 1835*3ac0a46fSAndroid Build Coastguard Worker 1836*3ac0a46fSAndroid Build Coastguard Worker // PostScript ColorRenderingDictionary and ColorSpaceArray ---------------------------------------------------- 1837*3ac0a46fSAndroid Build Coastguard Worker 1838*3ac0a46fSAndroid Build Coastguard Worker typedef enum { cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD } cmsPSResourceType; 1839*3ac0a46fSAndroid Build Coastguard Worker 1840*3ac0a46fSAndroid Build Coastguard Worker // lcms2 unified method to access postscript color resources 1841*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptColorResource(cmsContext ContextID, 1842*3ac0a46fSAndroid Build Coastguard Worker cmsPSResourceType Type, 1843*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE hProfile, 1844*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number Intent, 1845*3ac0a46fSAndroid Build Coastguard Worker cmsUInt32Number dwFlags, 1846*3ac0a46fSAndroid Build Coastguard Worker cmsIOHANDLER* io); 1847*3ac0a46fSAndroid Build Coastguard Worker 1848*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); 1849*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); 1850*3ac0a46fSAndroid Build Coastguard Worker 1851*3ac0a46fSAndroid Build Coastguard Worker 1852*3ac0a46fSAndroid Build Coastguard Worker // IT8.7 / CGATS.17-200x handling ----------------------------------------------------------------------------- 1853*3ac0a46fSAndroid Build Coastguard Worker 1854*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsIT8Alloc(cmsContext ContextID); 1855*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsIT8Free(cmsHANDLE hIT8); 1856*3ac0a46fSAndroid Build Coastguard Worker 1857*3ac0a46fSAndroid Build Coastguard Worker // Tables 1858*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsIT8TableCount(cmsHANDLE hIT8); 1859*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsInt32Number CMSEXPORT cmsIT8SetTable(cmsHANDLE hIT8, cmsUInt32Number nTable); 1860*3ac0a46fSAndroid Build Coastguard Worker 1861*3ac0a46fSAndroid Build Coastguard Worker // Persistence 1862*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName); 1863*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromMem(cmsContext ContextID, const void *Ptr, cmsUInt32Number len); 1864*3ac0a46fSAndroid Build Coastguard Worker // CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromIOhandler(cmsContext ContextID, cmsIOHANDLER* io); 1865*3ac0a46fSAndroid Build Coastguard Worker 1866*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName); 1867*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded); 1868*3ac0a46fSAndroid Build Coastguard Worker 1869*3ac0a46fSAndroid Build Coastguard Worker // Properties 1870*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetSheetType(cmsHANDLE hIT8); 1871*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetSheetType(cmsHANDLE hIT8, const char* Type); 1872*3ac0a46fSAndroid Build Coastguard Worker 1873*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetComment(cmsHANDLE hIT8, const char* cComment); 1874*3ac0a46fSAndroid Build Coastguard Worker 1875*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* cProp, const char *Str); 1876*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char* cProp, cmsFloat64Number Val); 1877*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char* cProp, cmsUInt32Number Val); 1878*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer); 1879*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char* Key, const char* Buffer); 1880*3ac0a46fSAndroid Build Coastguard Worker 1881*3ac0a46fSAndroid Build Coastguard Worker 1882*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* cProp); 1883*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char* cProp); 1884*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey); 1885*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames); 1886*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames); 1887*3ac0a46fSAndroid Build Coastguard Worker 1888*3ac0a46fSAndroid Build Coastguard Worker // Datasets 1889*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col); 1890*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col); 1891*3ac0a46fSAndroid Build Coastguard Worker 1892*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col, 1893*3ac0a46fSAndroid Build Coastguard Worker const char* Val); 1894*3ac0a46fSAndroid Build Coastguard Worker 1895*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col, 1896*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Val); 1897*3ac0a46fSAndroid Build Coastguard Worker 1898*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample); 1899*3ac0a46fSAndroid Build Coastguard Worker 1900*3ac0a46fSAndroid Build Coastguard Worker 1901*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample); 1902*3ac0a46fSAndroid Build Coastguard Worker 1903*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch, 1904*3ac0a46fSAndroid Build Coastguard Worker const char* cSample, 1905*3ac0a46fSAndroid Build Coastguard Worker const char *Val); 1906*3ac0a46fSAndroid Build Coastguard Worker 1907*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch, 1908*3ac0a46fSAndroid Build Coastguard Worker const char* cSample, 1909*3ac0a46fSAndroid Build Coastguard Worker cmsFloat64Number Val); 1910*3ac0a46fSAndroid Build Coastguard Worker 1911*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample); 1912*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetDataFormat(cmsHANDLE hIT8, int n, const char *Sample); 1913*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames); 1914*3ac0a46fSAndroid Build Coastguard Worker 1915*3ac0a46fSAndroid Build Coastguard Worker CMSAPI const char* CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer); 1916*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch); 1917*3ac0a46fSAndroid Build Coastguard Worker 1918*3ac0a46fSAndroid Build Coastguard Worker // The LABEL extension 1919*3ac0a46fSAndroid Build Coastguard Worker CMSAPI int CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType); 1920*3ac0a46fSAndroid Build Coastguard Worker 1921*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char* cSample); 1922*3ac0a46fSAndroid Build Coastguard Worker 1923*3ac0a46fSAndroid Build Coastguard Worker // Formatter for double 1924*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter); 1925*3ac0a46fSAndroid Build Coastguard Worker 1926*3ac0a46fSAndroid Build Coastguard Worker // Gamut boundary description routines ------------------------------------------------------------------------------ 1927*3ac0a46fSAndroid Build Coastguard Worker 1928*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsHANDLE CMSEXPORT cmsGBDAlloc(cmsContext ContextID); 1929*3ac0a46fSAndroid Build Coastguard Worker CMSAPI void CMSEXPORT cmsGBDFree(cmsHANDLE hGBD); 1930*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsGDBAddPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); 1931*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsGDBCompute(cmsHANDLE hGDB, cmsUInt32Number dwFlags); 1932*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsGDBCheckPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); 1933*3ac0a46fSAndroid Build Coastguard Worker 1934*3ac0a46fSAndroid Build Coastguard Worker // Feature detection ---------------------------------------------------------------------------------------------- 1935*3ac0a46fSAndroid Build Coastguard Worker 1936*3ac0a46fSAndroid Build Coastguard Worker // Estimate the black point 1937*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsDetectBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); 1938*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsDetectDestinationBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); 1939*3ac0a46fSAndroid Build Coastguard Worker 1940*3ac0a46fSAndroid Build Coastguard Worker // Estimate total area coverage 1941*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsDetectTAC(cmsHPROFILE hProfile); 1942*3ac0a46fSAndroid Build Coastguard Worker 1943*3ac0a46fSAndroid Build Coastguard Worker // Estimate gamma space, always positive. Returns -1 on error. 1944*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsFloat64Number CMSEXPORT cmsDetectRGBProfileGamma(cmsHPROFILE hProfile, cmsFloat64Number threshold); 1945*3ac0a46fSAndroid Build Coastguard Worker 1946*3ac0a46fSAndroid Build Coastguard Worker // Poor man's gamut mapping 1947*3ac0a46fSAndroid Build Coastguard Worker CMSAPI cmsBool CMSEXPORT cmsDesaturateLab(cmsCIELab* Lab, 1948*3ac0a46fSAndroid Build Coastguard Worker double amax, double amin, 1949*3ac0a46fSAndroid Build Coastguard Worker double bmax, double bmin); 1950*3ac0a46fSAndroid Build Coastguard Worker 1951*3ac0a46fSAndroid Build Coastguard Worker #ifndef CMS_USE_CPP_API 1952*3ac0a46fSAndroid Build Coastguard Worker # ifdef __cplusplus 1953*3ac0a46fSAndroid Build Coastguard Worker } 1954*3ac0a46fSAndroid Build Coastguard Worker # endif 1955*3ac0a46fSAndroid Build Coastguard Worker #endif 1956*3ac0a46fSAndroid Build Coastguard Worker 1957*3ac0a46fSAndroid Build Coastguard Worker #define _lcms2_H 1958*3ac0a46fSAndroid Build Coastguard Worker #endif 1959