Re: [Gimp-developer] [Gegl-developer] Don't make an architectural mistake based on a groundless premise

On Sun, Oct 12, 2014 at 8:41 AM, Elle Stone
<ellestone ninedegreesbelow com> wrote:
On 10/11/2014 08:52 PM, Jon Nordby wrote:
Please correct me if I misunderstood what you are saying. I think you are

GIMP uses GTK+.

GTK+ uses Cairo APIs for rendering to the screen.

Cairo APIs assume 8-bit sRGB.

Therefore in GTK+ applications such as GIMP, images must be converted to
sRGB before they can be displayed on the screen.

The same applies for most UI toolkits/APIs integrating with color
management; the implementation that is unmanaged (or all!) content is
to be presented in the framebuffer as sRGB and the desktop color
management to compensate towards the monitor profile. Applications
like GIMP, image viewers and similar - should be requesting that
rectangular parts of the UI (image viewing areas and similar) be
excepted from these conversions. Ideally we would be dealing
differently with, no desktop CM and no display profile, no desktop CM
(but have a display profile), desktop CMM without ability to opt out
regions, and desktop CM with the ability to opt out regions.

sRGB goes even deeper in cairo, where all API entry points where
individual colors are specified for stroking/filling/gradients is
specified as floating point sRGB (with the TRC as well). Buffers we
get from cairo for doing things like text rendering are 8bit sRGBA
with sRGB TRC and pre-multiplied alpha. An annoyance for GEGL is that
cairo is limited to 8bpc in its rasterization of vectors (by using a
clever implementation choice; which makes things fast - but tricky to
adapt for >8bit.).

Cairo is just one part of our eco-system which is following the
guidelines of how to integrate with color management even if you do it
badly; assume sRGB. Mostly everyone else tries to assume sRGB for
consistency - when color management is considered hard; babl aims to
make it easy and fast for GEGL to continue integrating with such code.

/pippin (btw, babl/docs/roadmap.txt has been slightly updated).

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