Around 15 o'clock on Dec 17, Dr Andrew C Aitchison wrote:

> Xcms is the only existing technology for this that I'm aware of -
> "man xcmsdb XcmsCreateCCC" may be a reasonable starting point.
> 
> I believe that Keith Packard thinks that it should be replaced.
> Here is a list of things I've learnt about Xcms over the years:

The X Color Management SYstem (Xcms) is built upon the X Device Color
Characterization Convention (XDCCC) which is part of the ICCCM spec and
involves a pair of properties set on the root window which contain tables to
convert between pixel RGB values and intensity ("gamma" correction) and
matrices for mapping between this linear RGB to CIE XYZ.

Xcms then takes this information and exposes several CIE traceable color 
spaces, such as CIE XYZ, CIE uvY, CIE xyY, CIE Lab, CIE Luv and the 
Tektronix HVC color space as well as both the original non-linear monitor 
RGB and the "gamma" corrected linear RGB space.

The only problem with Xcms is that it's integrated into Xlib in a useless 
fashion; it allows the specification of colors in any of these color 
spaces in string form through the regular Xlib color name APIs.  This 
means that Xlib is burdened with all of Xcms.

In addition, Xcms makes it somewhat difficult to add new color spaces and 
doesn't expose the underlying XDCCC data structures to applications.  

Because the typical monitor used for X has no color calibration data, 
application developers never saw value in this complicated color managment 
mechanism and hence never really adopted any of it's functionality.

I think the underlying monitor calibration data is sound, but what we 
should do is look again at what API should be exposed to applications to 
take advantage of this calibration information, in particular I can see 
value in adding several new color spaces such as sRGB.  I would also like 
to see the Render extension include gamma corrected compositing operations 
using the gamma tables provided through XDCCC.

Xcms includes extensive support for automatic gamut compression; I don't 
have enough experience with that part of the API to know if it's useful or 
not; it's a hard problem with significant data dependencies.

> 2) Xcms uses its own trig routines for Polar<->Cartesian conversion
> between color-spaces*, and these are buggy.

Sigh.  Of course that was forced because Xcms is integrated into Xlib and 
it wasn't possible to require applications to link against the math 
library just to use Xlib; systems without chained library dependencies 
were more common 10 years ago than they are today.

> but my experience, and perceived wisdom, is that on average using the
> default setup gives more accurate color than trusting the info provided by
> the monitor itself

I recall the results of that experiment -- assuming a standard gamma of 
2.2 was more accurate on average than believing the DDC gamma values.  I 
must assume that's true because Windows doesn't expose that data to 
applications.  I've heard that DDC information on "mac friendly" monitors 
is significantly more accurate.

Keith Packard        XFree86 Core Team        HP Cambridge Research Lab


_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to