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