github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xcb/include/X11/Xcms.h (about)

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