The planned architecture as outline in babl/docs/roadmap.txt will likely
collapse under its own weight.
But if the devs are determined to pursue this course to the bitter end,
here are some suggestions regarding "white_reference":
//begin quote
. . . permitting at least linear formats with other chromaticities is
highly desirable, this will be fixed by allowing to specify named RGB
spaces, possibly like this:
void babl_define_named_rgb_space (
Babl *babl,
const char *name,
double red_xyz[3],
double blue_xyz[3],
double green_xyz[3],
int white_reference, /* could be _XYZ[3] instead of d50/d65/d60; but
this is likely sufficient */
double trc_gamma /* makes sense to have it even if not initially
used */
);//end quote
Short version:
You might want to specify white_reference using XYZ[3] instead of using
"int".
You probably want *two* variables:
1. the color space specifications reference white.
2. the ICC profile illuminant.
The variable names might be "white_reference" and "profile_illuminant".
The D50 profile illuminant tag that's in LCSM and ArgyllCMS profiles has
these XYZ values: (0.96420288, 1.00000000, 0.82490540).
The XYZ values for the D65 sRGB color space specification reference
white are (0.950455927, 1.000000000, 1.089057751). These values are
converted from xyY as given in the sRGB color space spec.
Long version:
1. Different profile specifications, standards bodies, etc. specify
slightly different XYZ/xyY values for D50, D65, etc. And sometimes CMMs
and profile makers make up their own D65 values for no apparent reason
(http://ninedegreesbelow.com/photography/linux-icc-profiles.html#variants -
scroll down to the table labelled "Selected D50 and D65 profile white
point xyY values").
2. The ICC spec D50 illuminant values are (0.9642, 1.0, 0.8249). These
aren't "rounded to four places" values. These are the actual values
given in the ICC spec.
3. ICC profile illuminant XYZ values as found in actual profiles are
hexadecimal-rounded. When converted back to decimal, the actual D50
illuminant XYZ values from an LCMS or ArgyllCMS profile are:
(0.96420288, 1.00000000, 0.82490540).
4. The next release of the ICC specifications likely will allow
illuminants other than D50. So assuming LCMS also will support this new
functionality, at some point the function "babl_define_named_rgb_space"
will need to directly retrieve the profile illuminant XYZ values.
5. In an ICC profile, the original color space XYZ values have been
adapted *from* the color space reference white *to* the ICC profile
illuminant. See
http://ninedegreesbelow.com/photography/srgb-color-space-to-profile.html
6. In an ICC profile color-managed image editor, you use relative
colorimetric conversions between RGB working spaces, so the original
color space reference white (for example, D65 for sRGB) is completely
irrelevant.
With respect,
Elle Stone
--
http://ninedegreesbelow.com
Color management and free/libre photography
_______________________________________________
gegl-developer-list mailing list
List address: gegl-developer-list@xxxxxxxxx
List membership: https://mail.gnome.org/mailman/listinfo/gegl-developer-list