Is gegl_buffer_* aware of source color profile?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For example, let's say I'm developing a gimp plugin and I'm using gegl_buffer_iterator_* to get the data. And I want to manipulate the data in profile connection space CIE xyY. I have:

```
...
GeglBuffer         *buffer;
const Babl         *format;
GeglBufferIterator *iter;

buffer = gimp_drawable_get_buffer(drawable_ID);
format = babl_format("CIE xyY float");
iter   = gegl_buffer_iterator_new(buffer,
                                  ..., ..., 
                                  format,
                                  ..., ..., ...);
while (gegl_buffer_iterator_next(iter))
{
...
```.

And this seems to work fine if the color profile in gimp is set to sRGB. for example, with pure sRGB green (#00ff00), the gegl_buffer will get me xyY 0.32, 0.58, 0.72, which seems about right.

The problem becomes when I convert the image in gimp to something like ProPhoto. Gimp correctly converts the pure green to be represented with something like ProPhotoRGB #8aed4e, which is probably still around the same green as before in profile connection space. So far, so good.
But then, when I try to read this drawable with gegl_buffer:

```
...
GeglBuffer         *buffer;
const Babl         *format;
const Babl         *profile = babl_space("ProPhoto");
GeglBufferIterator *iter;

buffer = gimp_drawable_get_buffer(drawable_ID);
format = babl_format_with_space("CIE xyY float", profile);
iter   = gegl_buffer_iterator_new(buffer,
                                  ..., ..., 
                                  format,
                                  ..., ..., ...);
while (gegl_buffer_iterator_next(iter))
{
...
```,

I get xyY 0.36 0.51 0.67, which differs from before. xyY should be agnostic to the color space as it is a profile connection space. It's almost as if the gegl_buffer interpreted the #8aed4e color as sRGB and not as ProPhotoRGB, which then kinda matches the result.
Is there a way for gegl_buffer to interpret the drawable data using the correct color space? Is there a libgimp way to get the assigned image profile to use it with gegl? Or is it better to load the buffer with something like babl_format("RGB float") and then use babl_fish() to manually convert to xyY?

Thanks
_______________________________________________
gegl-developer-list mailing list
List address:    gegl-developer-list@xxxxxxxxx
List membership: https://mail.gnome.org/mailman/listinfo/gegl-developer-list




[Index of Archives]     [Yosemite News]     [Yosemite Photos]     [gtk]     [GIMP Users]     [KDE]     [Gimp's Home]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux