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