jpayne@69: jpayne@69: /* jpayne@69: * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. jpayne@69: * All Rights Reserved jpayne@69: * jpayne@69: * This file is a component of an X Window System-specific implementation jpayne@69: * of Xcms based on the TekColor Color Management System. Permission is jpayne@69: * hereby granted to use, copy, modify, sell, and otherwise distribute this jpayne@69: * software and its documentation for any purpose and without fee, provided jpayne@69: * that this copyright, permission, and disclaimer notice is reproduced in jpayne@69: * all copies of this software and in supporting documentation. TekColor jpayne@69: * is a trademark of Tektronix, Inc. jpayne@69: * jpayne@69: * Tektronix makes no representation about the suitability of this software jpayne@69: * for any purpose. It is provided "as is" and with all faults. jpayne@69: * jpayne@69: * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, jpayne@69: * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A jpayne@69: * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY jpayne@69: * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER jpayne@69: * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF jpayne@69: * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN jpayne@69: * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. jpayne@69: * jpayne@69: * jpayne@69: * DESCRIPTION jpayne@69: * Public include file for X Color Management System jpayne@69: */ jpayne@69: #ifndef _X11_XCMS_H_ jpayne@69: #define _X11_XCMS_H_ jpayne@69: jpayne@69: #include jpayne@69: jpayne@69: /* The Xcms structs are full of implicit padding to properly align members. jpayne@69: We can't clean that up without breaking ABI, so tell clang not to bother jpayne@69: complaining about it. */ jpayne@69: #ifdef __clang__ jpayne@69: #pragma clang diagnostic push jpayne@69: #pragma clang diagnostic ignored "-Wpadded" jpayne@69: #endif jpayne@69: jpayne@69: /* jpayne@69: * XCMS Status Values jpayne@69: */ jpayne@69: #define XcmsFailure 0 jpayne@69: #define XcmsSuccess 1 jpayne@69: #define XcmsSuccessWithCompression 2 jpayne@69: jpayne@69: /* jpayne@69: * Color Space Format ID's jpayne@69: * Color Space ID's are of XcmsColorFormat type. jpayne@69: * jpayne@69: * bit 31 jpayne@69: * 0 == Device-Independent jpayne@69: * 1 == Device-Dependent jpayne@69: * jpayne@69: * bit 30: jpayne@69: * 0 == Registered with X Consortium jpayne@69: * 1 == Unregistered jpayne@69: */ jpayne@69: #define XcmsUndefinedFormat (XcmsColorFormat)0x00000000 jpayne@69: #define XcmsCIEXYZFormat (XcmsColorFormat)0x00000001 jpayne@69: #define XcmsCIEuvYFormat (XcmsColorFormat)0x00000002 jpayne@69: #define XcmsCIExyYFormat (XcmsColorFormat)0x00000003 jpayne@69: #define XcmsCIELabFormat (XcmsColorFormat)0x00000004 jpayne@69: #define XcmsCIELuvFormat (XcmsColorFormat)0x00000005 jpayne@69: #define XcmsTekHVCFormat (XcmsColorFormat)0x00000006 jpayne@69: #define XcmsRGBFormat (XcmsColorFormat)0x80000000 jpayne@69: #define XcmsRGBiFormat (XcmsColorFormat)0x80000001 jpayne@69: jpayne@69: /* jpayne@69: * State of XcmsPerScrnInfo jpayne@69: */ jpayne@69: #define XcmsInitNone 0x00 /* no initialization attempted */ jpayne@69: #define XcmsInitSuccess 0x01 /* initialization successful */ jpayne@69: #define XcmsInitFailure 0xff /* failure, use defaults */ jpayne@69: jpayne@69: #define DisplayOfCCC(ccc) ((ccc)->dpy) jpayne@69: #define ScreenNumberOfCCC(ccc) ((ccc)->screenNumber) jpayne@69: #define VisualOfCCC(ccc) ((ccc)->visual) jpayne@69: #define ClientWhitePointOfCCC(ccc) (&(ccc)->clientWhitePt) jpayne@69: #define ScreenWhitePointOfCCC(ccc) (&(ccc)->pPerScrnInfo->screenWhitePt) jpayne@69: #define FunctionSetOfCCC(ccc) ((ccc)->pPerScrnInfo->functionSet) jpayne@69: jpayne@69: typedef unsigned long XcmsColorFormat; /* Color Space Format ID */ jpayne@69: jpayne@69: typedef double XcmsFloat; jpayne@69: jpayne@69: /* jpayne@69: * Device RGB jpayne@69: */ jpayne@69: typedef struct { jpayne@69: unsigned short red; /* scaled from 0x0000 to 0xffff */ jpayne@69: unsigned short green; /* scaled from 0x0000 to 0xffff */ jpayne@69: unsigned short blue; /* scaled from 0x0000 to 0xffff */ jpayne@69: } XcmsRGB; jpayne@69: jpayne@69: /* jpayne@69: * RGB Intensity jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat red; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat green; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat blue; /* 0.0 - 1.0 */ jpayne@69: } XcmsRGBi; jpayne@69: jpayne@69: /* jpayne@69: * CIE XYZ jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat X; jpayne@69: XcmsFloat Y; jpayne@69: XcmsFloat Z; jpayne@69: } XcmsCIEXYZ; jpayne@69: jpayne@69: /* jpayne@69: * CIE u'v'Y jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat u_prime; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat v_prime; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat Y; /* 0.0 - 1.0 */ jpayne@69: } XcmsCIEuvY; jpayne@69: jpayne@69: /* jpayne@69: * CIE xyY jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat x; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat y; /* 0.0 - 1.0 */ jpayne@69: XcmsFloat Y; /* 0.0 - 1.0 */ jpayne@69: } XcmsCIExyY; jpayne@69: jpayne@69: /* jpayne@69: * CIE L*a*b* jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat L_star; /* 0.0 - 100.0 */ jpayne@69: XcmsFloat a_star; jpayne@69: XcmsFloat b_star; jpayne@69: } XcmsCIELab; jpayne@69: jpayne@69: /* jpayne@69: * CIE L*u*v* jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat L_star; /* 0.0 - 100.0 */ jpayne@69: XcmsFloat u_star; jpayne@69: XcmsFloat v_star; jpayne@69: } XcmsCIELuv; jpayne@69: jpayne@69: /* jpayne@69: * TekHVC jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat H; /* 0.0 - 360.0 */ jpayne@69: XcmsFloat V; /* 0.0 - 100.0 */ jpayne@69: XcmsFloat C; /* 0.0 - 100.0 */ jpayne@69: } XcmsTekHVC; jpayne@69: jpayne@69: /* jpayne@69: * PAD jpayne@69: */ jpayne@69: typedef struct { jpayne@69: XcmsFloat pad0; jpayne@69: XcmsFloat pad1; jpayne@69: XcmsFloat pad2; jpayne@69: XcmsFloat pad3; jpayne@69: } XcmsPad; jpayne@69: jpayne@69: jpayne@69: /* jpayne@69: * XCMS Color Structure jpayne@69: */ jpayne@69: typedef struct { jpayne@69: union { jpayne@69: XcmsRGB RGB; jpayne@69: XcmsRGBi RGBi; jpayne@69: XcmsCIEXYZ CIEXYZ; jpayne@69: XcmsCIEuvY CIEuvY; jpayne@69: XcmsCIExyY CIExyY; jpayne@69: XcmsCIELab CIELab; jpayne@69: XcmsCIELuv CIELuv; jpayne@69: XcmsTekHVC TekHVC; jpayne@69: XcmsPad Pad; jpayne@69: } spec; /* the color specification */ jpayne@69: unsigned long pixel; /* pixel value (as needed) */ jpayne@69: XcmsColorFormat format; /* the specification format */ jpayne@69: } XcmsColor; jpayne@69: jpayne@69: jpayne@69: /* jpayne@69: * XCMS Per Screen related data jpayne@69: */ jpayne@69: jpayne@69: typedef struct _XcmsPerScrnInfo { jpayne@69: XcmsColor screenWhitePt; /* Screen White point */ jpayne@69: XPointer functionSet; /* pointer to Screen Color Characterization */ jpayne@69: /* Function Set structure */ jpayne@69: XPointer screenData; /* pointer to corresponding Screen Color*/ jpayne@69: /* Characterization Data */ jpayne@69: unsigned char state; /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */ jpayne@69: char pad[3]; jpayne@69: } XcmsPerScrnInfo; jpayne@69: jpayne@69: typedef struct _XcmsCCC *XcmsCCC; jpayne@69: jpayne@69: typedef Status (*XcmsCompressionProc)( /* Gamut Compression Proc */ jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: typedef Status (*XcmsWhiteAdjustProc)( /* White Point Adjust Proc */ jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* initial_white_point*/, jpayne@69: XcmsColor* /* target_white_point*/, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: /* jpayne@69: * XCMS Color Conversion Context jpayne@69: */ jpayne@69: typedef struct _XcmsCCC { jpayne@69: Display *dpy; /* X Display */ jpayne@69: int screenNumber; /* X screen number */ jpayne@69: Visual *visual; /* X Visual */ jpayne@69: XcmsColor clientWhitePt; /* Client White Point */ jpayne@69: XcmsCompressionProc gamutCompProc; /* Gamut Compression Function */ jpayne@69: XPointer gamutCompClientData; /* Gamut Comp Func Client Data */ jpayne@69: XcmsWhiteAdjustProc whitePtAdjProc; /* White Point Adjustment Function */ jpayne@69: XPointer whitePtAdjClientData; /* White Pt Adj Func Client Data */ jpayne@69: XcmsPerScrnInfo *pPerScrnInfo; /* pointer to per screen information */ jpayne@69: /* associated with the above display */ jpayne@69: /* screenNumber */ jpayne@69: } XcmsCCCRec; jpayne@69: jpayne@69: typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */ jpayne@69: Display* /* dpy */, jpayne@69: int /* screen_number */, jpayne@69: XcmsPerScrnInfo* /* screen_info */ jpayne@69: ); jpayne@69: jpayne@69: typedef void (*XcmsScreenFreeProc)( jpayne@69: XPointer /* screenData */ jpayne@69: ); jpayne@69: jpayne@69: /* jpayne@69: * Function List Pointer -- pointer to an array of function pointers. jpayne@69: * The end of list is indicated by a NULL pointer. jpayne@69: */ jpayne@69: /* jpayne@69: * XXX: The use of the XcmsConversionProc type is broken. The jpayne@69: * device-independent colour conversion code uses it as: jpayne@69: jpayne@69: typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *, jpayne@69: unsigned int); jpayne@69: jpayne@69: * while the device-dependent code uses it as: jpayne@69: jpayne@69: typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int, jpayne@69: Bool *); jpayne@69: jpayne@69: * Until this is reworked, it's probably best to leave it unprotoized. jpayne@69: * The code works regardless. jpayne@69: */ jpayne@69: typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */ jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* pcolors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* pCompressed */ jpayne@69: ); jpayne@69: jpayne@69: typedef Status (*XcmsDIConversionProc)( /* using device-independent version */ jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* pcolors_in_out */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: typedef XcmsDIConversionProc XcmsConversionProc; jpayne@69: typedef XcmsConversionProc *XcmsFuncListPtr; jpayne@69: jpayne@69: typedef int (*XcmsParseStringProc)( /* Color String Parsing Proc */ jpayne@69: char* /* color_string */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: /* jpayne@69: * Color Space -- per Color Space related data (Device-Independent jpayne@69: * or Device-Dependent) jpayne@69: */ jpayne@69: typedef struct _XcmsColorSpace { jpayne@69: const char *prefix; /* Prefix of string format. */ jpayne@69: XcmsColorFormat id; /* Format ID number. */ jpayne@69: XcmsParseStringProc parseString; jpayne@69: /* String format parsing function */ jpayne@69: XcmsFuncListPtr to_CIEXYZ; /* Pointer to an array of function */ jpayne@69: /* pointers such that when the */ jpayne@69: /* functions are executed in sequence */ jpayne@69: /* will convert a XcmsColor structure */ jpayne@69: /* from this color space to CIEXYZ */ jpayne@69: /* space. */ jpayne@69: XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function */ jpayne@69: /* pointers such that when the */ jpayne@69: /* functions are executed in sequence */ jpayne@69: /* will convert a XcmsColor structure */ jpayne@69: /* from CIEXYZ space to this color */ jpayne@69: /* space. */ jpayne@69: int inverse_flag; /* If 1, indicates that for 0 <= i < n */ jpayne@69: /* where n is the number of function */ jpayne@69: /* pointers in the lists to_CIEXYZ */ jpayne@69: /* and from_CIEXYZ; for each function */ jpayne@69: /* to_CIEXYZ[i] its inverse function */ jpayne@69: /* is from_CIEXYZ[n - i]. */ jpayne@69: jpayne@69: } XcmsColorSpace; jpayne@69: jpayne@69: /* jpayne@69: * Screen Color Characterization Function Set -- per device class jpayne@69: * color space conversion functions. jpayne@69: */ jpayne@69: typedef struct _XcmsFunctionSet { jpayne@69: XcmsColorSpace **DDColorSpaces; jpayne@69: /* Pointer to an array of pointers to */ jpayne@69: /* Device-DEPENDENT color spaces */ jpayne@69: /* understood by this SCCFuncSet. */ jpayne@69: XcmsScreenInitProc screenInitProc; jpayne@69: /* Screen initialization function that */ jpayne@69: /* reads Screen Color Characterization*/ jpayne@69: /* Data off properties on the screen's*/ jpayne@69: /* root window. */ jpayne@69: XcmsScreenFreeProc screenFreeProc; jpayne@69: /* Function that frees the SCCData */ jpayne@69: /* structures. */ jpayne@69: } XcmsFunctionSet; jpayne@69: jpayne@69: _XFUNCPROTOBEGIN jpayne@69: jpayne@69: extern Status XcmsAddColorSpace ( jpayne@69: XcmsColorSpace* /* pColorSpace */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsAddFunctionSet ( jpayne@69: XcmsFunctionSet* /* functionSet */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsAllocColor ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsColor* /* color_in_out */, jpayne@69: XcmsColorFormat /* result_format */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsAllocNamedColor ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: _Xconst char* /* color_string */, jpayne@69: XcmsColor* /* color_scrn_return */, jpayne@69: XcmsColor* /* color_exact_return */, jpayne@69: XcmsColorFormat /* result_format */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsCCC XcmsCCCOfColormap ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabClipab( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabClipL( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabClipLab( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabQueryMaxC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* L_star */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabQueryMaxL ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabQueryMaxLC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabQueryMinL ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabToCIEXYZ ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELabWhiteShiftColors( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* initial_white_point*/, jpayne@69: XcmsColor* /* target_white_point*/, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvClipL( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvClipLuv( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvClipuv( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvQueryMaxC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* L_star */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvQueryMaxL ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvQueryMaxLC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvQueryMinL ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue_angle */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvToCIEuvY ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIELuvWhiteShiftColors( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* initial_white_point*/, jpayne@69: XcmsColor* /* target_white_point*/, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEXYZToCIELab ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEXYZToCIEuvY ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEXYZToCIExyY ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEXYZToRGBi ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEuvYToCIELuv ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEuvYToCIEXYZ ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIEuvYToTekHVC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsCIExyYToCIEXYZ ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsColor *XcmsClientWhitePointOfCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsConvertColors ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colorArry_in_out */, jpayne@69: unsigned int /* nColors */, jpayne@69: XcmsColorFormat /* targetFormat */, jpayne@69: Bool* /* compArry_return */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsCCC XcmsCreateCCC ( jpayne@69: Display* /* dpy */, jpayne@69: int /* screenNumber */, jpayne@69: Visual* /* visual */, jpayne@69: XcmsColor* /* clientWhitePt */, jpayne@69: XcmsCompressionProc /* gamutCompProc */, jpayne@69: XPointer /* gamutCompClientData */, jpayne@69: XcmsWhiteAdjustProc /* whitePtAdjProc */, jpayne@69: XPointer /* whitePtAdjClientData */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsCCC XcmsDefaultCCC ( jpayne@69: Display* /* dpy */, jpayne@69: int /* screenNumber */ jpayne@69: ); jpayne@69: jpayne@69: extern Display *XcmsDisplayOfCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsColorFormat XcmsFormatOfPrefix ( jpayne@69: char* /* prefix */ jpayne@69: ); jpayne@69: jpayne@69: extern void XcmsFreeCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsLookupColor ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: _Xconst char* /* color_string */, jpayne@69: XcmsColor* /* pColor_exact_in_out */, jpayne@69: XcmsColor* /* pColor_scrn_in_out */, jpayne@69: XcmsColorFormat /* result_format */ jpayne@69: ); jpayne@69: jpayne@69: extern char *XcmsPrefixOfFormat ( jpayne@69: XcmsColorFormat /* id */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryBlack ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryBlue ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryColor ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsColor* /* pColor_in_out */, jpayne@69: XcmsColorFormat /* result_format */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryColors ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsColor* /* colorArry_in_out */, jpayne@69: unsigned int /* nColors */, jpayne@69: XcmsColorFormat /* result_format */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryGreen ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryRed ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsQueryWhite ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsRGBiToCIEXYZ ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsRGBiToRGB ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsRGBToRGBi ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern int XcmsScreenNumberOfCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsColor *XcmsScreenWhitePointOfCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsCCC XcmsSetCCCOfColormap( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsCompressionProc XcmsSetCompressionProc ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsCompressionProc /* compression_proc */, jpayne@69: XPointer /* client_data */ jpayne@69: ); jpayne@69: jpayne@69: extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsWhiteAdjustProc /* white_adjust_proc */, jpayne@69: XPointer /* client_data */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsSetWhitePoint ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* color */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsStoreColor ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsColor* /* pColor_in */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsStoreColors ( jpayne@69: Display* /* dpy */, jpayne@69: Colormap /* colormap */, jpayne@69: XcmsColor* /* colorArry_in */, jpayne@69: unsigned int /* nColors */, jpayne@69: Bool* /* compArry_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCClipC( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCClipV( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCClipVC( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: unsigned int /* index */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCQueryMaxC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue */, jpayne@69: XcmsFloat /* value */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCQueryMaxV ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCQueryMaxVC ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCQueryMaxVSamples ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue */, jpayne@69: XcmsColor* /* colors_return */, jpayne@69: unsigned int /* nsamples */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCQueryMinV ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsFloat /* hue */, jpayne@69: XcmsFloat /* chroma */, jpayne@69: XcmsColor* /* color_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCToCIEuvY ( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* white_point */, jpayne@69: XcmsColor* /* colors */, jpayne@69: unsigned int /* ncolors */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XcmsTekHVCWhiteShiftColors( jpayne@69: XcmsCCC /* ccc */, jpayne@69: XcmsColor* /* initial_white_point*/, jpayne@69: XcmsColor* /* target_white_point*/, jpayne@69: XcmsColorFormat /* target_format */, jpayne@69: XcmsColor* /* colors_in_out */, jpayne@69: unsigned int /* ncolors */, jpayne@69: Bool* /* compression_flags_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Visual *XcmsVisualOfCCC ( jpayne@69: XcmsCCC /* ccc */ jpayne@69: ); jpayne@69: jpayne@69: #ifdef __clang__ jpayne@69: #pragma clang diagnostic pop jpayne@69: #endif jpayne@69: jpayne@69: _XFUNCPROTOEND jpayne@69: jpayne@69: #endif /* _X11_XCMS_H_ */