annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/X11/Xcms.h @ 69:33d812a61356

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