blob: 8151fd1f34cf5a57325ed914fd00ce8395addef0 [file] [log] [blame]
Lingfeng Yanga2a3b0f2020-11-04 11:50:46 -08001
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
77typedef unsigned long XcmsColorFormat; /* Color Space Format ID */
78
79typedef double XcmsFloat;
80
81 /*
82 * Device RGB
83 */
84typedef 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 */
93typedef 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 */
102typedef struct {
103 XcmsFloat X;
104 XcmsFloat Y;
105 XcmsFloat Z;
106} XcmsCIEXYZ;
107
108 /*
109 * CIE u'v'Y
110 */
111typedef 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 */
120typedef 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 */
129typedef 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 */
138typedef struct {
139 XcmsFloat L_star; /* 0.0 - 100.0 */
140 XcmsFloat u_star;
141 XcmsFloat v_star;
142} XcmsCIELuv;
143
144 /*
145 * TekHVC
146 */
147typedef 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 */
156typedef struct {
157 XcmsFloat pad0;
158 XcmsFloat pad1;
159 XcmsFloat pad2;
160 XcmsFloat pad3;
161} XcmsPad;
162
163
164 /*
165 * XCMS Color Structure
166 */
167typedef 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
188typedef 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
198typedef struct _XcmsCCC *XcmsCCC;
199
200typedef 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
208typedef 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 */
221typedef 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
235typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */
236 Display* /* dpy */,
237 int /* screen_number */,
238 XcmsPerScrnInfo* /* screen_info */
239);
240
241typedef 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
253typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
254 unsigned int);
255
256 * while the device-dependent code uses it as:
257
258typedef 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 */
264typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */
265 XcmsCCC /* ccc */,
266 XcmsColor* /* pcolors_in_out */,
267 unsigned int /* ncolors */,
268 Bool* /* pCompressed */
269 );
270
271typedef Status (*XcmsDIConversionProc)( /* using device-independent version */
272 XcmsCCC /* ccc */,
273 XcmsColor* /* white_point */,
274 XcmsColor* /* pcolors_in_out */,
275 unsigned int /* ncolors */
276 );
277
278typedef XcmsDIConversionProc XcmsConversionProc;
279typedef XcmsConversionProc *XcmsFuncListPtr;
280
281typedef 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 */
290typedef 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 */
320typedef 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
337extern Status XcmsAddColorSpace (
338 XcmsColorSpace* /* pColorSpace */
339);
340
341extern Status XcmsAddFunctionSet (
342 XcmsFunctionSet* /* functionSet */
343);
344
345extern Status XcmsAllocColor (
346 Display* /* dpy */,
347 Colormap /* colormap */,
348 XcmsColor* /* color_in_out */,
349 XcmsColorFormat /* result_format */
350);
351
352extern 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
361extern XcmsCCC XcmsCCCOfColormap (
362 Display* /* dpy */,
363 Colormap /* colormap */
364);
365
366extern 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
374extern 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
382extern 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
390extern Status XcmsCIELabQueryMaxC (
391 XcmsCCC /* ccc */,
392 XcmsFloat /* hue_angle */,
393 XcmsFloat /* L_star */,
394 XcmsColor* /* color_return */
395);
396
397extern Status XcmsCIELabQueryMaxL (
398 XcmsCCC /* ccc */,
399 XcmsFloat /* hue_angle */,
400 XcmsFloat /* chroma */,
401 XcmsColor* /* color_return */
402);
403
404extern Status XcmsCIELabQueryMaxLC (
405 XcmsCCC /* ccc */,
406 XcmsFloat /* hue_angle */,
407 XcmsColor* /* color_return */
408);
409
410extern Status XcmsCIELabQueryMinL (
411 XcmsCCC /* ccc */,
412 XcmsFloat /* hue_angle */,
413 XcmsFloat /* chroma */,
414 XcmsColor* /* color_return */
415);
416
417extern Status XcmsCIELabToCIEXYZ (
418 XcmsCCC /* ccc */,
419 XcmsColor* /* white_point */,
420 XcmsColor* /* colors */,
421 unsigned int /* ncolors */
422);
423
424extern 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
434extern 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
442extern 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
450extern 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
458extern Status XcmsCIELuvQueryMaxC (
459 XcmsCCC /* ccc */,
460 XcmsFloat /* hue_angle */,
461 XcmsFloat /* L_star */,
462 XcmsColor* /* color_return */
463);
464
465extern Status XcmsCIELuvQueryMaxL (
466 XcmsCCC /* ccc */,
467 XcmsFloat /* hue_angle */,
468 XcmsFloat /* chroma */,
469 XcmsColor* /* color_return */
470);
471
472extern Status XcmsCIELuvQueryMaxLC (
473 XcmsCCC /* ccc */,
474 XcmsFloat /* hue_angle */,
475 XcmsColor* /* color_return */
476);
477
478extern Status XcmsCIELuvQueryMinL (
479 XcmsCCC /* ccc */,
480 XcmsFloat /* hue_angle */,
481 XcmsFloat /* chroma */,
482 XcmsColor* /* color_return */
483);
484
485extern Status XcmsCIELuvToCIEuvY (
486 XcmsCCC /* ccc */,
487 XcmsColor* /* white_point */,
488 XcmsColor* /* colors */,
489 unsigned int /* ncolors */
490);
491
492extern 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
502extern Status XcmsCIEXYZToCIELab (
503 XcmsCCC /* ccc */,
504 XcmsColor* /* white_point */,
505 XcmsColor* /* colors */,
506 unsigned int /* ncolors */
507);
508
509extern Status XcmsCIEXYZToCIEuvY (
510 XcmsCCC /* ccc */,
511 XcmsColor* /* white_point */,
512 XcmsColor* /* colors */,
513 unsigned int /* ncolors */
514);
515
516extern Status XcmsCIEXYZToCIExyY (
517 XcmsCCC /* ccc */,
518 XcmsColor* /* white_point */,
519 XcmsColor* /* colors */,
520 unsigned int /* ncolors */
521);
522
523extern Status XcmsCIEXYZToRGBi (
524 XcmsCCC /* ccc */,
525 XcmsColor* /* colors */,
526 unsigned int /* ncolors */,
527 Bool* /* compression_flags_return */
528);
529
530extern Status XcmsCIEuvYToCIELuv (
531 XcmsCCC /* ccc */,
532 XcmsColor* /* white_point */,
533 XcmsColor* /* colors */,
534 unsigned int /* ncolors */
535);
536
537extern Status XcmsCIEuvYToCIEXYZ (
538 XcmsCCC /* ccc */,
539 XcmsColor* /* white_point */,
540 XcmsColor* /* colors */,
541 unsigned int /* ncolors */
542);
543
544extern Status XcmsCIEuvYToTekHVC (
545 XcmsCCC /* ccc */,
546 XcmsColor* /* white_point */,
547 XcmsColor* /* colors */,
548 unsigned int /* ncolors */
549);
550
551extern Status XcmsCIExyYToCIEXYZ (
552 XcmsCCC /* ccc */,
553 XcmsColor* /* white_point */,
554 XcmsColor* /* colors */,
555 unsigned int /* ncolors */
556);
557
558extern XcmsColor *XcmsClientWhitePointOfCCC (
559 XcmsCCC /* ccc */
560);
561
562extern Status XcmsConvertColors (
563 XcmsCCC /* ccc */,
564 XcmsColor* /* colorArry_in_out */,
565 unsigned int /* nColors */,
566 XcmsColorFormat /* targetFormat */,
567 Bool* /* compArry_return */
568);
569
570extern 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
581extern XcmsCCC XcmsDefaultCCC (
582 Display* /* dpy */,
583 int /* screenNumber */
584);
585
586extern Display *XcmsDisplayOfCCC (
587 XcmsCCC /* ccc */
588);
589
590extern XcmsColorFormat XcmsFormatOfPrefix (
591 char* /* prefix */
592);
593
594extern void XcmsFreeCCC (
595 XcmsCCC /* ccc */
596);
597
598extern 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
607extern char *XcmsPrefixOfFormat (
608 XcmsColorFormat /* id */
609);
610
611extern Status XcmsQueryBlack (
612 XcmsCCC /* ccc */,
613 XcmsColorFormat /* target_format */,
614 XcmsColor* /* color_return */
615);
616
617extern Status XcmsQueryBlue (
618 XcmsCCC /* ccc */,
619 XcmsColorFormat /* target_format */,
620 XcmsColor* /* color_return */
621);
622
623extern Status XcmsQueryColor (
624 Display* /* dpy */,
625 Colormap /* colormap */,
626 XcmsColor* /* pColor_in_out */,
627 XcmsColorFormat /* result_format */
628);
629
630extern Status XcmsQueryColors (
631 Display* /* dpy */,
632 Colormap /* colormap */,
633 XcmsColor* /* colorArry_in_out */,
634 unsigned int /* nColors */,
635 XcmsColorFormat /* result_format */
636);
637
638extern Status XcmsQueryGreen (
639 XcmsCCC /* ccc */,
640 XcmsColorFormat /* target_format */,
641 XcmsColor* /* color_return */
642);
643
644extern Status XcmsQueryRed (
645 XcmsCCC /* ccc */,
646 XcmsColorFormat /* target_format */,
647 XcmsColor* /* color_return */
648);
649
650extern Status XcmsQueryWhite (
651 XcmsCCC /* ccc */,
652 XcmsColorFormat /* target_format */,
653 XcmsColor* /* color_return */
654);
655
656extern Status XcmsRGBiToCIEXYZ (
657 XcmsCCC /* ccc */,
658 XcmsColor* /* colors */,
659 unsigned int /* ncolors */,
660 Bool* /* compression_flags_return */
661);
662
663extern Status XcmsRGBiToRGB (
664 XcmsCCC /* ccc */,
665 XcmsColor* /* colors */,
666 unsigned int /* ncolors */,
667 Bool* /* compression_flags_return */
668);
669
670extern Status XcmsRGBToRGBi (
671 XcmsCCC /* ccc */,
672 XcmsColor* /* colors */,
673 unsigned int /* ncolors */,
674 Bool* /* compression_flags_return */
675);
676
677extern int XcmsScreenNumberOfCCC (
678 XcmsCCC /* ccc */
679);
680
681extern XcmsColor *XcmsScreenWhitePointOfCCC (
682 XcmsCCC /* ccc */
683);
684
685extern XcmsCCC XcmsSetCCCOfColormap(
686 Display* /* dpy */,
687 Colormap /* colormap */,
688 XcmsCCC /* ccc */
689);
690
691extern XcmsCompressionProc XcmsSetCompressionProc (
692 XcmsCCC /* ccc */,
693 XcmsCompressionProc /* compression_proc */,
694 XPointer /* client_data */
695);
696
697extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc (
698 XcmsCCC /* ccc */,
699 XcmsWhiteAdjustProc /* white_adjust_proc */,
700 XPointer /* client_data */
701);
702
703extern Status XcmsSetWhitePoint (
704 XcmsCCC /* ccc */,
705 XcmsColor* /* color */
706);
707
708extern Status XcmsStoreColor (
709 Display* /* dpy */,
710 Colormap /* colormap */,
711 XcmsColor* /* pColor_in */
712);
713
714extern Status XcmsStoreColors (
715 Display* /* dpy */,
716 Colormap /* colormap */,
717 XcmsColor* /* colorArry_in */,
718 unsigned int /* nColors */,
719 Bool* /* compArry_return */
720);
721
722extern 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
730extern 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
738extern 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
746extern Status XcmsTekHVCQueryMaxC (
747 XcmsCCC /* ccc */,
748 XcmsFloat /* hue */,
749 XcmsFloat /* value */,
750 XcmsColor* /* color_return */
751);
752
753extern Status XcmsTekHVCQueryMaxV (
754 XcmsCCC /* ccc */,
755 XcmsFloat /* hue */,
756 XcmsFloat /* chroma */,
757 XcmsColor* /* color_return */
758);
759
760extern Status XcmsTekHVCQueryMaxVC (
761 XcmsCCC /* ccc */,
762 XcmsFloat /* hue */,
763 XcmsColor* /* color_return */
764);
765
766extern Status XcmsTekHVCQueryMaxVSamples (
767 XcmsCCC /* ccc */,
768 XcmsFloat /* hue */,
769 XcmsColor* /* colors_return */,
770 unsigned int /* nsamples */
771);
772
773extern Status XcmsTekHVCQueryMinV (
774 XcmsCCC /* ccc */,
775 XcmsFloat /* hue */,
776 XcmsFloat /* chroma */,
777 XcmsColor* /* color_return */
778);
779
780extern Status XcmsTekHVCToCIEuvY (
781 XcmsCCC /* ccc */,
782 XcmsColor* /* white_point */,
783 XcmsColor* /* colors */,
784 unsigned int /* ncolors */
785);
786
787extern 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
797extern Visual *XcmsVisualOfCCC (
798 XcmsCCC /* ccc */
799);
800
801_XFUNCPROTOEND
802
803#endif /* _X11_XCMS_H_ */