Hi Everyone,

Sven Neumann wrote:

Color management

  This has been discussed quite thoroughly but it still needs to be
  written down in some sort of specification and then been cut down
  into tasks.

Here's a first attempt at a suitable specification:

Colour management will bring two major benefits to The GIMP:
1.Accurate display of colours when equipped with a suitable monitor profile.
2.The ability to perform a soft-proof, whereby an image is rendered to simulate how it will look on a particular output device (usually a printing press).

The hard work is performed by LittleCMS, while the existing proof display filter can provide both of these facilities with a little modification; most of the details remaining to be finalised are interface and infrastructure related.

I can provide an outline here of what needs to be done; someone with a more in-depth knowledge of GIMP’s internals will have to tell us how much work this will entail:

(The following assumes that we’re going to create some kind of global display filter for colour-matching, rather than (or as well as) the current per-image ones – at the very least, such a filter will be needed for colour-correcting the colour-selectors...)

* Add a new section in the preferences dialog (or add to the existing Display section) the following options:
* Enable/disable colour management (Do we allow this to be enabled/disabled on a per-image basis? The filter will need access to image parasites for that.)
* GimpFileEntry for working space profile (ie the source profile provided to lcms)
* GimpFileEntry for monitor profile (the destination profile for lcms)
* GimpFileEntry for proof profile (the profile of the device to be simulated, e.g. USWebCoatedSWOP.

Implementation details: lcms has a built-in sRGB profile, which should be used as a default if the working space or monitor profile entries are left blank.
If the proof profile is left blank, then the display filter will use a normal transform instead of a proofing transform. If all three are left blank, then the display filter should be disabled, since it won’t have any work to do!

* Update the proof display filter to allow straight Working Space -> Monitor Profile transforms as well as full proofing transforms. This is a trivial modification, and I have it working here.
The filter (at least the global one) needs to be able to fetch the profiles from wherever the prefs dialog stores them.
If the display filter becomes able to fetch parasites from the image, then it becomes possible (easy) to disable colour management on a per-image basis, and perform other tricks like overriding the working space for the separate plugin’s fake composite CMYK images.

That’s it as far as displaying accurate colour goes, and even if we get no further than this for 2.2, it’s a worthwhile start.

The next step will be to write a plugin for converting between colour spaces. This is not a difficult task. A couple of questions:
* Do we allow the user to convert between arbitrary profiles, or only allow the current working space as a destination?
* Where in the menu structure should this live?

Finally, the image loading code needs to modified. Any loaders for formats that support embedded ICC profiles should attach it (as binary) to the image as a parasite named “icc-profile”. The loading code will check for this parasite on the loading of an image, and allow the user to choose between converting to the working space or disabling colour-management for this image.

A special case will be the TIFF plugin – TIFFs can contain embedded profiles for a CMYK colour space; ideally the TIFF plugin itself will use lcms to convert the raw CMYK data to the RGB Working Space.

I think this covers most of what’s needed to make colour management a useful addition to The GIMP.

Comments please, both on difficulty of implementation and any technical points that need to be discussed further.

All the best,
Alastair M. Robinson
Gimp-developer mailing list

Reply via email to