6.12.6 Color Specification Conversion Callback

Callback functions in the XcmsColorSpace structure for converting a color specification between device-independent spaces must adhere to the following software interface specification:
Status ConversionProc(ccc, white_point, colors_in_out, ncolors)
      XcmsCCC ccc;
      XcmsColor *white_point;
      XcmsColor *colors_in_out;
      unsigned int ncolors;
ccc Specifies the CCC.
white_point Specifies the white point associated with color specifications. The pixel member should be ignored, and the entire structure remain unchanged upon return.
colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return.
ncolors Specifies the number of XcmsColor structures in the color specification array.

Callback functions in the XcmsColorSpace structure for converting a color specification to or from a device-dependent space must adhere to the following software interface specification:

Status ConversionProc(ccc, colors_in_out, ncolors, compression_flags_return)
      XcmsCCC ccc;
      XcmsColor *colors_in_out;
      unsigned int ncolors;
      Bool compression_flags_return[];

ccc Specifies the CCC.
colors_in_out Specifies an array of color specifications. Pixel members should be ignored and must remain unchanged upon return.
ncolors Specifies the number of XcmsColor structures in the color specification array.
compression_flags_return Returns an array of Boolean values for indicating compression status. If a non-NULL pointer is supplied and a color at a given index is compressed, then True should be stored at the corresponding index in this array; otherwise, the array should not be modified.
Conversion functions are available globally for use by other color spaces. The conversion functions provided by Xlib are:

Function Converts from Converts to

XcmsCIELabToCIEXYZ() XcmsCIELabFormat XcmsCIEXYZFormat
XcmsCIELuvToCIEuvY() XcmsCIELuvFormat XcmsCIEuvYFormat
XcmsCIEXYZToCIELab() XcmsCIEXYZFormat XcmsCIELabFormat
XcmsCIEXYZToCIEuvY() XcmsCIEXYZFormat XcmsCIEuvYFormat
XcmsCIEXYZToCIExyY() XcmsCIEXYZFormat XcmsCIExyYFormat
XcmsCIEXYZToRGBi() XcmsCIEXYZFormat XcmsRGBiFormat
XcmsCIEuvYToCIELuv() XcmsCIEuvYFormat XcmsCIELabFormat
XcmsCIEuvYToCIEXYZ() XcmsCIEuvYFormat XcmsCIEXYZFormat
XcmsCIEuvYToTekHVC() XcmsCIEuvYFormat XcmsTekHVCFormat
XcmsCIExyYToCIEXYZ() XcmsCIExyYFormat XcmsCIEXYZFormat
XcmsRGBToRGBi() XcmsRGBFormat XcmsRGBiFormat
XcmsRGBiToCIEXYZ() XcmsRGBiFormat XcmsCIEXYZFormat
XcmsRGBiToRGB() XcmsRGBiFormat XcmsRGBFormat
XcmsTekHVCToCIEuvY() XcmsTekHVCFormat XcmsCIEuvYFormat

Next: Function Sets

Christophe Tronche, ch@tronche.com