[Xr] API questions
spitzak at d2.com
Thu Jul 3 18:07:27 PDT 2003
On Thursday 03 July 2003 02:42 pm, David Forster wrote:
> On Thu, Jul 03, 2003 at 10:44:52AM -0700, Bill Spitzak wrote:
> > My suggestion is that the exact results for out-of-gamut colors is
> > implementation-dependent. This will allow Xr or Xrender to turn the
> > colors into internal representation without breaking the spec.
> I think this would be a mistake.
> If Xr is to be a serious API for rendering to both CRT/LCDs and
> printers, then Xr is going to have to get color management right.
> There's no way around it. If it doesn't, then it'll just get replaced
> by someone who's willing to do it right.
> The point of abstracting away the hardware is so that developers can
> write their rendering code _once_. The same code used to render a
> document (like say a vector/raster image) to the screen can be reused
> to print that document out.
I fully understand that, but since the device cannot display out-of-gamut
colors then it is impossible to produce the same output on two different
devices anyway, so it really does not matter what it does with such colors
(though I recommend that the device choose reasonable values).
What I meant is that a compositing operation of two out-of-gamut colors could
mathematically produce in-gamut colors. However I recommend that this not be
supported, even though it makes in-gamut output different on different
I hope everybody can see that unless this is defined this way, Xr cannot use
hardware for compositing, and must store full-floating point for every pixel
in it's display.
> If you don't define what the out-of-bounds sRGB values mean, then the
> developer is going to have to take over color management, and that
> means hardware dependence. And with Xr already correcting values for
> sRGB it will be nothing short of a mess. One might just as well use
> Xr for screen output and PostScript for printer output..
I do define exactly what out-of-bounds sRGB means: sRGB defines the exact
luminosities of all values in the range 0-1, and I recommend this be extended
with a straight line less than zero and a continued gamma curve above 1:
if X is the sRGB value,
luminosity = (x < .04045) ? x*1/12.92 : pow((x+.055)/1.055, 2.4)
sRGB also defines the exact CIE XYZ coordinates of 1,0,0 and 0,1,0 and 0,0,1.
More information about the cairo