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