color management spec
alexdeucher at gmail.com
Fri May 30 08:27:05 PDT 2008
On Fri, May 30, 2008 at 8:08 AM, Tomas Carnecky <tom at dbservice.com> wrote:
> As part of my GSoC project I have to work out a spec that covers how
> applications should communicate color management related properties
> between each other and the compositing manager. The main idea of the
> project is to let the compositing manager do the color management on
> behalf of the applications. But before that can happen, the applications
> have to tell the compositing manager how they want to have their colors
> managed. The following spec I came up with should cover exactly that
> How colors should be interpreted is defined in so called 'ICC Profiles',
> that is a blob that contains all the necessary informations how colors
> should be interpreted. These profiles are attached to windows so that
> the compositing manager can get them and do the necessary color
> conversion. To allow for fine-grained color management (if an
> application has only a region that it wants to have color managed), the
> applications have to be able to specify subregions of their window and
> attach profiles to that. Since toolkits (at least GTK+) already make
> heavy use of subwindows, using those makes sense to me. So I came up
> with a document (in the attachment) that describes which window
> properties and messages are used.
> Dennis Kasprzyk (compiz developer) wasn't happy that I want to attach
> properties to subwindows, instead he suggested to attach a list to the
> top-level window containing tuples of [(sub)window XID / Profile]. But
> I'd like to keep the properties on the subwindows, I think that will
> make it easier for toolkits. In GTK+ for example, widgets that create
> their own subwindow will be able to do the color management completely
> independent of the other widgets. If all profiles are kept in the
> top-level window then the widgets first have to find the top-level
> window and then coordinate with other widgets how to create the list.
> I'd like to hear other opinions on that.
I think you may want to start with a basic app to load ICC profiles
and properly set the LUTs per crtc using xrandr, then move onto the
per-window stuff. That may be part of your plan already.
> Color Management Spec
> Each window can have a color profile attached. This profile is used by the
> compositing manager to perform automatic colorspace tranformations.
> _NET_COLOR_PROFILE window property
> This property specifies the profile. The only type currently supported is
> 'ICC', it specifies that the data is an ICC profile. Other profile types
> may be added at a later time. Profiles are inherited from the parent
> Applications can disable the automatic colorspace transformation by setting
> the profile to None.
> _NET_COLOR_MANAGER client message
> By sending this client message to the compositing manager, the application
> requests that the compositing manager checks whether it can perform the
> needed colorspace transformations. Upon recieving this client message, the
> compositing manager traverses the subwindows of the application and saves
> attached profiles. It then checks whether it can perform the requested
> colorspace transformation and sends a reply to the application. The reply
> either positive or negative. Upon a positive reply the application can
> that the colors will be automatically corrected by the compositing manager.
> A negative reply contains a list of all the windows on which the
> manager can't perform the colorspace transformation. Usually due to the
> lack of the needed color management module.
> xorg mailing list
> xorg at lists.freedesktop.org
More information about the xorg