XcmsCompressionProc()XcmsCompressionProc()NameXcmsCompressionProc – interface definition for gamut compression proce‐
dure.
Synopsis
typedef Status (*XcmsCompressionProc)(ccc, colors_in_out, ncolors,
index, compression_flags_return)
XcmsCCC ccc;
XcmsColor colors_in_out[];
unsigned int ncolors;
unsigned int index;
Bool compression_flags_return[];
Arguments
ccc Specifies the color conversion context.
colors_in_out
Specifies an array of color specifications. Pixel members
are ignored and remain unchanged upon return.
ncolors Specifies the number of XcmsColor structures in the color
specification array.
index Specifies the index into the array of XcmsColor structures
for the encountered color specification that lies outside the
Screen's color gamut. Valid values are 0 (for the first ele‐
ment) to ncolors–1.
compression_flags_return
Specifies an array of Boolean values (or NULL) for returned
information that indicates if the color was compressed. For
example, if this routine returns XcmsSuccessWithCompression,
and compression_flags_
return[3] is True, this indicates that the fourth color spec‐
ified in the color specification array was compressed. If
you are not interested in knowing which color was compressed
when the return value is XcmsSuccessWithCompression, then
pass a NULL. Otherwise, allocate an array of Boolean values
for each element in the color definition array and pass its
address.
Returns
Zero on failure, non-zero on success.
Availability
Release 5 and later.
Description
A gamut compression procedure maps a range of colors in a device-inde‐
pendent color space into a range of colors displayable on a physical
device.
When implementing a gamut compression procedure, consider the following
rules and assumptions:
· The gamut compression procedure can attempt to compress one or mul‐
tiple specifications at a time.
· When called, elements 0 to index–1 in the array of color specifica‐
tion array can be assumed to fall within the screen's color gamut.
In addition these color specifications are already in some device-
dependent format (typically XcmsRGBi). If any modifications are
made to these color specifications, they must upon return be in
their initial device-dependent format.
· When called, the element in the color specification array specified
by the index argument contains the color specification outside the
screen's color gamut encountered by the calling routine. In addi‐
tion this color specification can be assumed to be in XcmsCIEXYZ.
Upon return, this color specification must be in XcmsCIEXYZ.
· When called, elements from index to ncolors–1 in the color specifi‐
cation array may or may not fall within the screen's color gamut.
In addition these color specifications can be assumed to be in Xcm‐
sCIEXYZ. If any modifications are made to these color specifica‐
tions, they must upon return be in XcmsCIEXYZ.
· The color specifications passed to the gamut compression procedure
have already been adjusted to the Screen White Point. This means
that at this point the color specification's white point is the
Screen White Point.
· If the gamut compression procedure uses a device-independent color
space not initially accessible for use in the color management sys‐
tem, use XcmsAddColorSpace() to insure that it is added.
See AlsoXcmsCCCOfColormap(), XcmsCreateCCC(), XcmsClientWhitePointOfCCC(),
XcmsDefaultCCC(), XcmsSetCCCOfColormap(), XcmsSetCompressionProc(),
XcmsSetWhiteAdjustProc(), XcmsSetWhitePoint().
Xlib - Device-independent Color XcmsCompressionProc()