xref: /aosp_15_r20/external/pdfium/third_party/lcms/include/lcms2.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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