OLD | NEW |
| (Empty) |
1 #ifndef QCMS_H | |
2 #define QCMS_H | |
3 | |
4 #ifdef __cplusplus | |
5 extern "C" { | |
6 #endif | |
7 | |
8 /* if we've already got an ICC_H header we can ignore the following */ | |
9 #ifndef ICC_H | |
10 /* icc34 defines */ | |
11 | |
12 /***************************************************************** | |
13 Copyright (c) 1994-1996 SunSoft, Inc. | |
14 | |
15 Rights Reserved | |
16 | |
17 Permission is hereby granted, free of charge, to any person | |
18 obtaining a copy of this software and associated documentation | |
19 files (the "Software"), to deal in the Software without restrict- | |
20 ion, including without limitation the rights to use, copy, modify, | |
21 merge, publish distribute, sublicense, and/or sell copies of the | |
22 Software, and to permit persons to whom the Software is furnished | |
23 to do so, subject to the following conditions: | |
24 | |
25 The above copyright notice and this permission notice shall be | |
26 included in all copies or substantial portions of the Software. | |
27 | |
28 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
29 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
30 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON- | |
31 INFRINGEMENT. IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT | |
32 COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
33 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
34 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
35 OTHER DEALINGS IN THE SOFTWARE. | |
36 | |
37 Except as contained in this notice, the name of SunSoft, Inc. | |
38 shall not be used in advertising or otherwise to promote the | |
39 sale, use or other dealings in this Software without written | |
40 authorization from SunSoft Inc. | |
41 ******************************************************************/ | |
42 | |
43 /* | |
44 * Color Space Signatures | |
45 * Note that only icSigXYZData and icSigLabData are valid | |
46 * Profile Connection Spaces (PCSs) | |
47 */ | |
48 typedef enum { | |
49 icSigXYZData = 0x58595A20L, /* 'XYZ ' */ | |
50 icSigLabData = 0x4C616220L, /* 'Lab ' */ | |
51 icSigLuvData = 0x4C757620L, /* 'Luv ' */ | |
52 icSigYCbCrData = 0x59436272L, /* 'YCbr' */ | |
53 icSigYxyData = 0x59787920L, /* 'Yxy ' */ | |
54 icSigRgbData = 0x52474220L, /* 'RGB ' */ | |
55 icSigGrayData = 0x47524159L, /* 'GRAY' */ | |
56 icSigHsvData = 0x48535620L, /* 'HSV ' */ | |
57 icSigHlsData = 0x484C5320L, /* 'HLS ' */ | |
58 icSigCmykData = 0x434D594BL, /* 'CMYK' */ | |
59 icSigCmyData = 0x434D5920L, /* 'CMY ' */ | |
60 icSig2colorData = 0x32434C52L, /* '2CLR' */ | |
61 icSig3colorData = 0x33434C52L, /* '3CLR' */ | |
62 icSig4colorData = 0x34434C52L, /* '4CLR' */ | |
63 icSig5colorData = 0x35434C52L, /* '5CLR' */ | |
64 icSig6colorData = 0x36434C52L, /* '6CLR' */ | |
65 icSig7colorData = 0x37434C52L, /* '7CLR' */ | |
66 icSig8colorData = 0x38434C52L, /* '8CLR' */ | |
67 icSig9colorData = 0x39434C52L, /* '9CLR' */ | |
68 icSig10colorData = 0x41434C52L, /* 'ACLR' */ | |
69 icSig11colorData = 0x42434C52L, /* 'BCLR' */ | |
70 icSig12colorData = 0x43434C52L, /* 'CCLR' */ | |
71 icSig13colorData = 0x44434C52L, /* 'DCLR' */ | |
72 icSig14colorData = 0x45434C52L, /* 'ECLR' */ | |
73 icSig15colorData = 0x46434C52L, /* 'FCLR' */ | |
74 icMaxEnumData = 0xFFFFFFFFL | |
75 } icColorSpaceSignature; | |
76 #endif | |
77 | |
78 #include <stdio.h> | |
79 | |
80 typedef int qcms_bool; | |
81 | |
82 struct _qcms_transform; | |
83 typedef struct _qcms_transform qcms_transform; | |
84 | |
85 struct _qcms_profile; | |
86 typedef struct _qcms_profile qcms_profile; | |
87 | |
88 /* these values match the Rendering Intent values from the ICC spec */ | |
89 typedef enum { | |
90 QCMS_INTENT_DEFAULT = 0, | |
91 QCMS_INTENT_PERCEPTUAL = 0, | |
92 QCMS_INTENT_RELATIVE_COLORIMETRIC = 1, | |
93 QCMS_INTENT_SATURATION = 2, | |
94 QCMS_INTENT_ABSOLUTE_COLORIMETRIC = 3 | |
95 } qcms_intent; | |
96 | |
97 //XXX: I don't really like the _DATA_ prefix | |
98 typedef enum { | |
99 QCMS_DATA_RGB_8, | |
100 QCMS_DATA_RGBA_8, | |
101 QCMS_DATA_GRAY_8, | |
102 QCMS_DATA_GRAYA_8 | |
103 } qcms_data_type; | |
104 | |
105 /* the names for the following two types are sort of ugly */ | |
106 typedef struct | |
107 { | |
108 double x; | |
109 double y; | |
110 double Y; | |
111 } qcms_CIE_xyY; | |
112 | |
113 typedef struct | |
114 { | |
115 qcms_CIE_xyY red; | |
116 qcms_CIE_xyY green; | |
117 qcms_CIE_xyY blue; | |
118 } qcms_CIE_xyYTRIPLE; | |
119 | |
120 qcms_profile* qcms_profile_create_rgb_with_gamma( | |
121 qcms_CIE_xyY white_point, | |
122 qcms_CIE_xyYTRIPLE primaries, | |
123 float gamma); | |
124 | |
125 qcms_profile* qcms_profile_from_memory(const void *mem, size_t size); | |
126 | |
127 qcms_profile* qcms_profile_from_file(FILE *file); | |
128 qcms_profile* qcms_profile_from_path(const char *path); | |
129 qcms_profile* qcms_profile_sRGB(void); | |
130 void qcms_profile_release(qcms_profile *profile); | |
131 | |
132 qcms_bool qcms_profile_is_bogus(qcms_profile *profile); | |
133 qcms_intent qcms_profile_get_rendering_intent(qcms_profile *profile); | |
134 icColorSpaceSignature qcms_profile_get_color_space(qcms_profile *profile); | |
135 | |
136 void qcms_profile_precache_output_transform(qcms_profile *profile); | |
137 | |
138 qcms_transform* qcms_transform_create( | |
139 qcms_profile *in, qcms_data_type in_type, | |
140 qcms_profile* out, qcms_data_type out_type, | |
141 qcms_intent intent); | |
142 | |
143 void qcms_transform_release(qcms_transform *); | |
144 | |
145 void qcms_transform_data(qcms_transform *transform, void *src, void *dest, size_
t length); | |
146 | |
147 | |
148 | |
149 #ifdef __cplusplus | |
150 } | |
151 #endif | |
152 | |
153 #endif | |
OLD | NEW |