• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
4  * 	All Rights Reserved
5  *
6  * This file is a component of an X Window System-specific implementation
7  * of Xcms based on the TekColor Color Management System.  Permission is
8  * hereby granted to use, copy, modify, sell, and otherwise distribute this
9  * software and its documentation for any purpose and without fee, provided
10  * that this copyright, permission, and disclaimer notice is reproduced in
11  * all copies of this software and in supporting documentation.  TekColor
12  * is a trademark of Tektronix, Inc.
13  *
14  * Tektronix makes no representation about the suitability of this software
15  * for any purpose.  It is provided "as is" and with all faults.
16  *
17  * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
18  * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
19  * PARTICULAR PURPOSE.  IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
20  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
21  * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
22  * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
23  * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
24  *
25  *
26  *	DESCRIPTION
27  *		Public include file for X Color Management System
28  */
29 #ifndef _X11_XCMS_H_
30 #define _X11_XCMS_H_
31 
32 #include <X11/Xlib.h>
33 
34     /*
35      * XCMS Status Values
36      */
37 #define XcmsFailure			0
38 #define XcmsSuccess			1
39 #define XcmsSuccessWithCompression	2
40 
41     /*
42      * Color Space Format ID's
43      *    Color Space ID's are of XcmsColorFormat type.
44      *
45      *    bit 31
46      *	    0 == Device-Independent
47      *	    1 == Device-Dependent
48      *
49      *    bit 30:
50      *	    0 == Registered with X Consortium
51      *	    1 == Unregistered
52      */
53 #define XcmsUndefinedFormat	(XcmsColorFormat)0x00000000
54 #define XcmsCIEXYZFormat	(XcmsColorFormat)0x00000001
55 #define XcmsCIEuvYFormat	(XcmsColorFormat)0x00000002
56 #define XcmsCIExyYFormat	(XcmsColorFormat)0x00000003
57 #define XcmsCIELabFormat	(XcmsColorFormat)0x00000004
58 #define XcmsCIELuvFormat	(XcmsColorFormat)0x00000005
59 #define XcmsTekHVCFormat	(XcmsColorFormat)0x00000006
60 #define XcmsRGBFormat		(XcmsColorFormat)0x80000000
61 #define XcmsRGBiFormat		(XcmsColorFormat)0x80000001
62 
63     /*
64      * State of XcmsPerScrnInfo
65      */
66 #define XcmsInitNone		0x00	/* no initialization attempted */
67 #define XcmsInitSuccess		0x01	/* initialization successful */
68 #define XcmsInitFailure		0xff	/* failure, use defaults */
69 
70 #define DisplayOfCCC(ccc)		((ccc)->dpy)
71 #define ScreenNumberOfCCC(ccc)		((ccc)->screenNumber)
72 #define VisualOfCCC(ccc)		((ccc)->visual)
73 #define ClientWhitePointOfCCC(ccc)	(&(ccc)->clientWhitePt)
74 #define ScreenWhitePointOfCCC(ccc)	(&(ccc)->pPerScrnInfo->screenWhitePt)
75 #define FunctionSetOfCCC(ccc)		((ccc)->pPerScrnInfo->functionSet)
76 
77 typedef unsigned long XcmsColorFormat;	/* Color Space Format ID */
78 
79 typedef double XcmsFloat;
80 
81     /*
82      * Device RGB
83      */
84 typedef struct {
85     unsigned short red;		/* scaled from 0x0000 to 0xffff */
86     unsigned short green;	/* scaled from 0x0000 to 0xffff */
87     unsigned short blue;	/* scaled from 0x0000 to 0xffff */
88 } XcmsRGB;
89 
90     /*
91      * RGB Intensity
92      */
93 typedef struct {
94     XcmsFloat red;	/* 0.0 - 1.0 */
95     XcmsFloat green;	/* 0.0 - 1.0 */
96     XcmsFloat blue;	/* 0.0 - 1.0 */
97 } XcmsRGBi;
98 
99     /*
100      * CIE XYZ
101      */
102 typedef struct {
103     XcmsFloat X;
104     XcmsFloat Y;
105     XcmsFloat Z;
106 } XcmsCIEXYZ;
107 
108     /*
109      * CIE u'v'Y
110      */
111 typedef struct {
112     XcmsFloat u_prime;		/* 0.0 - 1.0 */
113     XcmsFloat v_prime;		/* 0.0 - 1.0 */
114     XcmsFloat Y;		/* 0.0 - 1.0 */
115 } XcmsCIEuvY;
116 
117     /*
118      * CIE xyY
119      */
120 typedef struct {
121     XcmsFloat x;		/* 0.0 - 1.0 */
122     XcmsFloat y;		/* 0.0 - 1.0 */
123     XcmsFloat Y;		/* 0.0 - 1.0 */
124 } XcmsCIExyY;
125 
126     /*
127      * CIE L*a*b*
128      */
129 typedef struct {
130     XcmsFloat L_star;		/* 0.0 - 100.0 */
131     XcmsFloat a_star;
132     XcmsFloat b_star;
133 } XcmsCIELab;
134 
135     /*
136      * CIE L*u*v*
137      */
138 typedef struct {
139     XcmsFloat L_star;		/* 0.0 - 100.0 */
140     XcmsFloat u_star;
141     XcmsFloat v_star;
142 } XcmsCIELuv;
143 
144     /*
145      * TekHVC
146      */
147 typedef struct {
148     XcmsFloat H;		/* 0.0 - 360.0 */
149     XcmsFloat V;		/* 0.0 - 100.0 */
150     XcmsFloat C;		/* 0.0 - 100.0 */
151 } XcmsTekHVC;
152 
153     /*
154      * PAD
155      */
156 typedef struct {
157     XcmsFloat pad0;
158     XcmsFloat pad1;
159     XcmsFloat pad2;
160     XcmsFloat pad3;
161 } XcmsPad;
162 
163 
164     /*
165      * XCMS Color Structure
166      */
167 typedef struct {
168     union {
169 	XcmsRGB RGB;
170 	XcmsRGBi RGBi;
171 	XcmsCIEXYZ CIEXYZ;
172 	XcmsCIEuvY CIEuvY;
173 	XcmsCIExyY CIExyY;
174 	XcmsCIELab CIELab;
175 	XcmsCIELuv CIELuv;
176 	XcmsTekHVC TekHVC;
177 	XcmsPad Pad;
178     } spec;			/* the color specification	*/
179     unsigned long pixel;	/* pixel value (as needed)	*/
180     XcmsColorFormat	format;		/* the specification format	*/
181 } XcmsColor;
182 
183 
184     /*
185      * XCMS Per Screen related data
186      */
187 
188 typedef struct _XcmsPerScrnInfo {
189     XcmsColor	screenWhitePt;	/* Screen White point */
190     XPointer	functionSet;	/* pointer to Screen Color Characterization */
191 				/*      Function Set structure		*/
192     XPointer	screenData;	/* pointer to corresponding Screen Color*/
193 				/*	Characterization Data		*/
194     unsigned char state;   /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */
195     char	pad[3];
196 } XcmsPerScrnInfo;
197 
198 typedef struct _XcmsCCC *XcmsCCC;
199 
200 typedef Status (*XcmsCompressionProc)(		/* Gamut Compression Proc */
201     XcmsCCC		/* ccc */,
202     XcmsColor*		/* colors_in_out */,
203     unsigned int	/* ncolors */,
204     unsigned int	/* index */,
205     Bool*		/* compression_flags_return */
206 );
207 
208 typedef Status (*XcmsWhiteAdjustProc)(	 	/* White Point Adjust Proc */
209     XcmsCCC		/* ccc */,
210     XcmsColor*		/* initial_white_point*/,
211     XcmsColor*		/* target_white_point*/,
212     XcmsColorFormat	/* target_format */,
213     XcmsColor*		/* colors_in_out */,
214     unsigned int	/* ncolors */,
215     Bool*		/* compression_flags_return */
216 );
217 
218     /*
219      * XCMS Color Conversion Context
220      */
221 typedef struct _XcmsCCC {
222     Display	*dpy;			/* X Display */
223     int		screenNumber;		/* X screen number */
224     Visual	*visual;		/* X Visual */
225     XcmsColor	clientWhitePt;		/* Client White Point */
226     XcmsCompressionProc	gamutCompProc;	/* Gamut Compression Function */
227     XPointer	gamutCompClientData;	/* Gamut Comp Func Client Data */
228     XcmsWhiteAdjustProc	whitePtAdjProc;	/* White Point Adjustment Function */
229     XPointer	whitePtAdjClientData;	/* White Pt Adj Func Client Data */
230     XcmsPerScrnInfo *pPerScrnInfo;	/* pointer to per screen information */
231 					/*  associated with the above display */
232 					/*  screenNumber */
233 } XcmsCCCRec;
234 
235 typedef Status (*XcmsScreenInitProc)(	/* Screen Initialization Proc */
236     Display*		/* dpy */,
237     int			/* screen_number */,
238     XcmsPerScrnInfo*	/* screen_info */
239 );
240 
241 typedef void (*XcmsScreenFreeProc)(
242     XPointer		/* screenData */
243 );
244 
245     /*
246      * Function List Pointer -- pointer to an array of function pointers.
247      *    The end of list is indicated by a NULL pointer.
248      */
249 /*
250  * XXX:  The use of the XcmsConversionProc type is broken.  The
251  *       device-independent colour conversion code uses it as:
252 
253 typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
254 				     unsigned int);
255 
256  *       while the device-dependent code uses it as:
257 
258 typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int,
259 				     Bool *);
260 
261  *       Until this is reworked, it's probably best to leave it unprotoized.
262  *       The code works regardless.
263  */
264 typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */
265     XcmsCCC             /* ccc */,
266     XcmsColor*          /* pcolors_in_out */,
267     unsigned int        /* ncolors */,
268     Bool*               /* pCompressed */
269     );
270 
271 typedef Status (*XcmsDIConversionProc)( /* using device-independent version */
272     XcmsCCC             /* ccc */,
273     XcmsColor*          /* white_point */,
274     XcmsColor*          /* pcolors_in_out */,
275     unsigned int        /* ncolors */
276     );
277 
278 typedef XcmsDIConversionProc XcmsConversionProc;
279 typedef XcmsConversionProc *XcmsFuncListPtr;
280 
281 typedef int (*XcmsParseStringProc)(	/* Color String Parsing Proc */
282     char*		/* color_string */,
283     XcmsColor*		/* color_return */
284 );
285 
286     /*
287      * Color Space -- per Color Space related data (Device-Independent
288      *    or Device-Dependent)
289      */
290 typedef struct _XcmsColorSpace {
291     const char *prefix;		/* Prefix of string format.		*/
292     XcmsColorFormat id;		/* Format ID number.			*/
293     XcmsParseStringProc parseString;
294 				/* String format parsing function	*/
295     XcmsFuncListPtr to_CIEXYZ;	/* Pointer to an array of function 	*/
296 				/*   pointers such that when the	*/
297 				/*   functions are executed in sequence	*/
298 				/*   will convert a XcmsColor structure	*/
299 				/*   from this color space to CIEXYZ	*/
300 				/*   space.				*/
301     XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function 	*/
302 				/*   pointers such that when the	*/
303 				/*   functions are executed in sequence	*/
304 				/*   will convert a XcmsColor structure	*/
305 				/*   from CIEXYZ space to this color	*/
306 				/*   space.				*/
307     int inverse_flag;		/* If 1, indicates that for 0 <= i < n	*/
308 				/*   where n is the number of function	*/
309 				/*   pointers in the lists to_CIEXYZ	*/
310 				/*   and from_CIEXYZ; for each function */
311 				/*   to_CIEXYZ[i] its inverse function	*/
312 				/*   is from_CIEXYZ[n - i].		*/
313 
314 } XcmsColorSpace;
315 
316     /*
317      * Screen Color Characterization Function Set -- per device class
318      *    color space conversion functions.
319      */
320 typedef struct _XcmsFunctionSet {
321     XcmsColorSpace **DDColorSpaces;
322 				/* Pointer to an array of pointers to	*/
323 				/*   Device-DEPENDENT color spaces	*/
324 				/*   understood by this SCCFuncSet.	*/
325     XcmsScreenInitProc screenInitProc;
326 				/* Screen initialization function that	*/
327 				/*   reads Screen Color Characterization*/
328 				/*   Data off properties on the screen's*/
329 				/*   root window.			*/
330     XcmsScreenFreeProc screenFreeProc;
331 				/* Function that frees the SCCData	*/
332 				/*   structures.			*/
333 } XcmsFunctionSet;
334 
335 _XFUNCPROTOBEGIN
336 
337 extern Status XcmsAddColorSpace (
338     XcmsColorSpace*	/* pColorSpace */
339 );
340 
341 extern Status XcmsAddFunctionSet (
342     XcmsFunctionSet*	/* functionSet */
343 );
344 
345 extern Status XcmsAllocColor (
346     Display*		/* dpy */,
347     Colormap		/* colormap */,
348     XcmsColor*		/* color_in_out */,
349     XcmsColorFormat		/* result_format */
350 );
351 
352 extern Status XcmsAllocNamedColor (
353     Display*		/* dpy */,
354     Colormap		/* colormap */,
355     _Xconst char*	/* color_string */,
356     XcmsColor*		/* color_scrn_return */,
357     XcmsColor*		/* color_exact_return */,
358     XcmsColorFormat		/* result_format */
359 );
360 
361 extern XcmsCCC XcmsCCCOfColormap (
362     Display*		/* dpy */,
363     Colormap		/* colormap */
364 );
365 
366 extern Status XcmsCIELabClipab(
367     XcmsCCC		/* ccc */,
368     XcmsColor*		/* colors_in_out */,
369     unsigned int	/* ncolors */,
370     unsigned int	/* index */,
371     Bool*		/* compression_flags_return */
372 );
373 
374 extern Status XcmsCIELabClipL(
375     XcmsCCC		/* ccc */,
376     XcmsColor*		/* colors_in_out */,
377     unsigned int	/* ncolors */,
378     unsigned int	/* index */,
379     Bool*		/* compression_flags_return */
380 );
381 
382 extern Status XcmsCIELabClipLab(
383     XcmsCCC		/* ccc */,
384     XcmsColor*		/* colors_in_out */,
385     unsigned int	/* ncolors */,
386     unsigned int	/* index */,
387     Bool*		/* compression_flags_return */
388 );
389 
390 extern Status XcmsCIELabQueryMaxC (
391     XcmsCCC		/* ccc */,
392     XcmsFloat		/* hue_angle */,
393     XcmsFloat		/* L_star */,
394     XcmsColor*		/* color_return */
395 );
396 
397 extern Status XcmsCIELabQueryMaxL (
398     XcmsCCC		/* ccc */,
399     XcmsFloat		/* hue_angle */,
400     XcmsFloat		/* chroma */,
401     XcmsColor*		/* color_return */
402 );
403 
404 extern Status XcmsCIELabQueryMaxLC (
405     XcmsCCC		/* ccc */,
406     XcmsFloat		/* hue_angle */,
407     XcmsColor*		/* color_return */
408 );
409 
410 extern Status XcmsCIELabQueryMinL (
411     XcmsCCC		/* ccc */,
412     XcmsFloat		/* hue_angle */,
413     XcmsFloat		/* chroma */,
414     XcmsColor*		/* color_return */
415 );
416 
417 extern Status XcmsCIELabToCIEXYZ (
418     XcmsCCC		/* ccc */,
419     XcmsColor*		/* white_point */,
420     XcmsColor*		/* colors */,
421     unsigned int	/* ncolors */
422 );
423 
424 extern Status XcmsCIELabWhiteShiftColors(
425     XcmsCCC		/* ccc */,
426     XcmsColor*		/* initial_white_point*/,
427     XcmsColor*		/* target_white_point*/,
428     XcmsColorFormat	/* target_format */,
429     XcmsColor*		/* colors_in_out */,
430     unsigned int	/* ncolors */,
431     Bool*		/* compression_flags_return */
432 );
433 
434 extern Status XcmsCIELuvClipL(
435     XcmsCCC		/* ccc */,
436     XcmsColor*		/* colors_in_out */,
437     unsigned int	/* ncolors */,
438     unsigned int	/* index */,
439     Bool*		/* compression_flags_return */
440 );
441 
442 extern Status XcmsCIELuvClipLuv(
443     XcmsCCC		/* ccc */,
444     XcmsColor*		/* colors_in_out */,
445     unsigned int	/* ncolors */,
446     unsigned int	/* index */,
447     Bool*		/* compression_flags_return */
448 );
449 
450 extern Status XcmsCIELuvClipuv(
451     XcmsCCC		/* ccc */,
452     XcmsColor*		/* colors_in_out */,
453     unsigned int	/* ncolors */,
454     unsigned int	/* index */,
455     Bool*		/* compression_flags_return */
456 );
457 
458 extern Status XcmsCIELuvQueryMaxC (
459     XcmsCCC		/* ccc */,
460     XcmsFloat		/* hue_angle */,
461     XcmsFloat		/* L_star */,
462     XcmsColor*		/* color_return */
463 );
464 
465 extern Status XcmsCIELuvQueryMaxL (
466     XcmsCCC		/* ccc */,
467     XcmsFloat		/* hue_angle */,
468     XcmsFloat		/* chroma */,
469     XcmsColor*		/* color_return */
470 );
471 
472 extern Status XcmsCIELuvQueryMaxLC (
473     XcmsCCC		/* ccc */,
474     XcmsFloat		/* hue_angle */,
475     XcmsColor*		/* color_return */
476 );
477 
478 extern Status XcmsCIELuvQueryMinL (
479     XcmsCCC		/* ccc */,
480     XcmsFloat		/* hue_angle */,
481     XcmsFloat		/* chroma */,
482     XcmsColor*		/* color_return */
483 );
484 
485 extern Status XcmsCIELuvToCIEuvY (
486     XcmsCCC		/* ccc */,
487     XcmsColor*		/* white_point */,
488     XcmsColor*		/* colors */,
489     unsigned int	/* ncolors */
490 );
491 
492 extern Status XcmsCIELuvWhiteShiftColors(
493     XcmsCCC		/* ccc */,
494     XcmsColor*		/* initial_white_point*/,
495     XcmsColor*		/* target_white_point*/,
496     XcmsColorFormat	/* target_format */,
497     XcmsColor*		/* colors_in_out */,
498     unsigned int	/* ncolors */,
499     Bool*		/* compression_flags_return */
500 );
501 
502 extern Status XcmsCIEXYZToCIELab (
503     XcmsCCC		/* ccc */,
504     XcmsColor*		/* white_point */,
505     XcmsColor*		/* colors */,
506     unsigned int	/* ncolors */
507 );
508 
509 extern Status XcmsCIEXYZToCIEuvY (
510     XcmsCCC		/* ccc */,
511     XcmsColor*		/* white_point */,
512     XcmsColor*		/* colors */,
513     unsigned int	/* ncolors */
514 );
515 
516 extern Status XcmsCIEXYZToCIExyY (
517     XcmsCCC		/* ccc */,
518     XcmsColor*		/* white_point */,
519     XcmsColor*		/* colors */,
520     unsigned int	/* ncolors */
521 );
522 
523 extern Status XcmsCIEXYZToRGBi (
524     XcmsCCC		/* ccc */,
525     XcmsColor*		/* colors */,
526     unsigned int	/* ncolors */,
527     Bool*		/* compression_flags_return */
528 );
529 
530 extern Status XcmsCIEuvYToCIELuv (
531     XcmsCCC		/* ccc */,
532     XcmsColor*		/* white_point */,
533     XcmsColor*		/* colors */,
534     unsigned int	/* ncolors */
535 );
536 
537 extern Status XcmsCIEuvYToCIEXYZ (
538     XcmsCCC		/* ccc */,
539     XcmsColor*		/* white_point */,
540     XcmsColor*		/* colors */,
541     unsigned int	/* ncolors */
542 );
543 
544 extern Status XcmsCIEuvYToTekHVC (
545     XcmsCCC		/* ccc */,
546     XcmsColor*		/* white_point */,
547     XcmsColor*		/* colors */,
548     unsigned int	/* ncolors */
549 );
550 
551 extern Status XcmsCIExyYToCIEXYZ (
552     XcmsCCC		/* ccc */,
553     XcmsColor*		/* white_point */,
554     XcmsColor*		/* colors */,
555     unsigned int	/* ncolors */
556 );
557 
558 extern XcmsColor *XcmsClientWhitePointOfCCC (
559     XcmsCCC		/* ccc */
560 );
561 
562 extern Status XcmsConvertColors (
563     XcmsCCC		/* ccc */,
564     XcmsColor*		/* colorArry_in_out */,
565     unsigned int	/* nColors */,
566     XcmsColorFormat		/* targetFormat */,
567     Bool*		/* compArry_return */
568 );
569 
570 extern XcmsCCC XcmsCreateCCC (
571     Display*		/* dpy */,
572     int			/* screenNumber */,
573     Visual*		/* visual */,
574     XcmsColor*		/* clientWhitePt */,
575     XcmsCompressionProc /* gamutCompProc */,
576     XPointer		/* gamutCompClientData */,
577     XcmsWhiteAdjustProc	/* whitePtAdjProc */,
578     XPointer		/* whitePtAdjClientData */
579 );
580 
581 extern XcmsCCC XcmsDefaultCCC (
582     Display*		/* dpy */,
583     int			/* screenNumber */
584 );
585 
586 extern Display *XcmsDisplayOfCCC (
587     XcmsCCC		/* ccc */
588 );
589 
590 extern XcmsColorFormat XcmsFormatOfPrefix (
591     char*		/* prefix */
592 );
593 
594 extern void XcmsFreeCCC (
595     XcmsCCC		/* ccc */
596 );
597 
598 extern Status XcmsLookupColor (
599     Display*		/* dpy */,
600     Colormap		/* colormap */,
601     _Xconst char*	/* color_string */,
602     XcmsColor*		/* pColor_exact_in_out */,
603     XcmsColor*		/* pColor_scrn_in_out */,
604     XcmsColorFormat		/* result_format */
605 );
606 
607 extern char *XcmsPrefixOfFormat (
608     XcmsColorFormat		/* id */
609 );
610 
611 extern Status XcmsQueryBlack (
612     XcmsCCC		/* ccc */,
613     XcmsColorFormat	/* target_format */,
614     XcmsColor*		/* color_return */
615 );
616 
617 extern Status XcmsQueryBlue (
618     XcmsCCC		/* ccc */,
619     XcmsColorFormat	/* target_format */,
620     XcmsColor*		/* color_return */
621 );
622 
623 extern Status XcmsQueryColor (
624     Display*		/* dpy */,
625     Colormap		/* colormap */,
626     XcmsColor*		/* pColor_in_out */,
627     XcmsColorFormat		/* result_format */
628 );
629 
630 extern Status XcmsQueryColors (
631     Display*		/* dpy */,
632     Colormap		/* colormap */,
633     XcmsColor*		/* colorArry_in_out */,
634     unsigned int	/* nColors */,
635     XcmsColorFormat	/* result_format */
636 );
637 
638 extern Status XcmsQueryGreen (
639     XcmsCCC		/* ccc */,
640     XcmsColorFormat	/* target_format */,
641     XcmsColor*		/* color_return */
642 );
643 
644 extern Status XcmsQueryRed (
645     XcmsCCC		/* ccc */,
646     XcmsColorFormat	/* target_format */,
647     XcmsColor*		/* color_return */
648 );
649 
650 extern Status XcmsQueryWhite (
651     XcmsCCC		/* ccc */,
652     XcmsColorFormat	/* target_format */,
653     XcmsColor*		/* color_return */
654 );
655 
656 extern Status XcmsRGBiToCIEXYZ (
657     XcmsCCC		/* ccc */,
658     XcmsColor*		/* colors */,
659     unsigned int	/* ncolors */,
660     Bool*		/* compression_flags_return */
661 );
662 
663 extern Status XcmsRGBiToRGB (
664     XcmsCCC		/* ccc */,
665     XcmsColor*		/* colors */,
666     unsigned int	/* ncolors */,
667     Bool*		/* compression_flags_return */
668 );
669 
670 extern Status XcmsRGBToRGBi (
671     XcmsCCC		/* ccc */,
672     XcmsColor*		/* colors */,
673     unsigned int	/* ncolors */,
674     Bool*		/* compression_flags_return */
675 );
676 
677 extern int XcmsScreenNumberOfCCC (
678     XcmsCCC		/* ccc */
679 );
680 
681 extern XcmsColor *XcmsScreenWhitePointOfCCC (
682     XcmsCCC		/* ccc */
683 );
684 
685 extern XcmsCCC XcmsSetCCCOfColormap(
686     Display*		/* dpy */,
687     Colormap		/* colormap */,
688     XcmsCCC		/* ccc */
689 );
690 
691 extern XcmsCompressionProc XcmsSetCompressionProc (
692     XcmsCCC		/* ccc */,
693     XcmsCompressionProc	/* compression_proc */,
694     XPointer		/* client_data */
695 );
696 
697 extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc (
698     XcmsCCC		/* ccc */,
699     XcmsWhiteAdjustProc	/* white_adjust_proc */,
700     XPointer		/* client_data */
701 );
702 
703 extern Status XcmsSetWhitePoint (
704     XcmsCCC		/* ccc */,
705     XcmsColor*		/* color */
706 );
707 
708 extern Status XcmsStoreColor (
709     Display*		/* dpy */,
710     Colormap		/* colormap */,
711     XcmsColor*		/* pColor_in */
712 );
713 
714 extern Status XcmsStoreColors (
715     Display*		/* dpy */,
716     Colormap		/* colormap */,
717     XcmsColor*		/* colorArry_in */,
718     unsigned int	/* nColors */,
719     Bool*		/* compArry_return */
720 );
721 
722 extern Status XcmsTekHVCClipC(
723     XcmsCCC		/* ccc */,
724     XcmsColor*		/* colors_in_out */,
725     unsigned int	/* ncolors */,
726     unsigned int	/* index */,
727     Bool*		/* compression_flags_return */
728 );
729 
730 extern Status XcmsTekHVCClipV(
731     XcmsCCC		/* ccc */,
732     XcmsColor*		/* colors_in_out */,
733     unsigned int	/* ncolors */,
734     unsigned int	/* index */,
735     Bool*		/* compression_flags_return */
736 );
737 
738 extern Status XcmsTekHVCClipVC(
739     XcmsCCC		/* ccc */,
740     XcmsColor*		/* colors_in_out */,
741     unsigned int	/* ncolors */,
742     unsigned int	/* index */,
743     Bool*		/* compression_flags_return */
744 );
745 
746 extern Status XcmsTekHVCQueryMaxC (
747     XcmsCCC		/* ccc */,
748     XcmsFloat		/* hue */,
749     XcmsFloat		/* value */,
750     XcmsColor*		/* color_return */
751 );
752 
753 extern Status XcmsTekHVCQueryMaxV (
754     XcmsCCC		/* ccc */,
755     XcmsFloat		/* hue */,
756     XcmsFloat		/* chroma */,
757     XcmsColor*		/* color_return */
758 );
759 
760 extern Status XcmsTekHVCQueryMaxVC (
761     XcmsCCC		/* ccc */,
762     XcmsFloat		/* hue */,
763     XcmsColor*		/* color_return */
764 );
765 
766 extern Status XcmsTekHVCQueryMaxVSamples (
767     XcmsCCC		/* ccc */,
768     XcmsFloat		/* hue */,
769     XcmsColor*		/* colors_return */,
770     unsigned int	/* nsamples */
771 );
772 
773 extern Status XcmsTekHVCQueryMinV (
774     XcmsCCC		/* ccc */,
775     XcmsFloat		/* hue */,
776     XcmsFloat		/* chroma */,
777     XcmsColor*		/* color_return */
778 );
779 
780 extern Status XcmsTekHVCToCIEuvY (
781     XcmsCCC		/* ccc */,
782     XcmsColor*		/* white_point */,
783     XcmsColor*		/* colors */,
784     unsigned int	/* ncolors */
785 );
786 
787 extern Status XcmsTekHVCWhiteShiftColors(
788     XcmsCCC		/* ccc */,
789     XcmsColor*		/* initial_white_point*/,
790     XcmsColor*		/* target_white_point*/,
791     XcmsColorFormat	/* target_format */,
792     XcmsColor*		/* colors_in_out */,
793     unsigned int	/* ncolors */,
794     Bool*		/* compression_flags_return */
795 );
796 
797 extern Visual *XcmsVisualOfCCC (
798     XcmsCCC		/* ccc */
799 );
800 
801 _XFUNCPROTOEND
802 
803 #endif /* _X11_XCMS_H_ */
804