# 6.12.1 Color Spaces

The CIE XYZ color space serves as the hub for all
conversions between device-independent and device-dependent color spaces.
Therefore, the knowledge to convert an
XcmsColor
structure to and from CIE XYZ format is associated with each color space.
For example, conversion from CIE L*u*v* to RGB requires the knowledge
to convert from CIE L*u*v* to CIE XYZ and from CIE XYZ to RGB.
This knowledge is stored as an array of functions that,
when applied in series, will convert the
XcmsColor
structure to or from CIE XYZ format.
This color specification conversion mechanism facilitates
the addition of color spaces.
Of course, when converting between only device-independent color spaces
or only device-dependent color spaces,
shortcuts are taken whenever possible.
For example, conversion from TekHVC to CIE L*u*v* is performed
by intermediate conversion to CIE u*v*Y and then to CIE L*u*v*,
thus bypassing conversion between CIE u*v*Y and CIE XYZ.

Christophe Tronche, ch@tronche.com