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