Hi Sven,

Sven Neumann wrote:

- implement color management as was discussed earlier

Firstly, I've been quiet on this subject for a few weeks because I've bought a new printer, and my limited coding time has been spent tweaking gimp-print to settle one or two minor print quality issues!

But to refresh everyone's memory about colour management, here is a list of what I believe needs to be done:

1.  Create a new class for colour-management preferences, as you suggested:

struct GimpColorConfig
  GObject          parent_instance;

  gboolean         enabled;

  gchar           *monitor_profile;
  gchar           *working_profile;
  gchar           *proof_profile;
  GimpColorIntent  render_intent;
  GimpColorIntent  proofing_intent;

We need to be able to get this information into both the display filters and plugins. (Read only is probably sufficient for now.)

2. Modify the display filter interface to allow the current image to be referenced from within.

3. Allow the creation of a global display filter that will apply to all open images (unless disabled through an image parasite) and to the colour-selectors too. (For the latter, the image parameter passed to the module will be NULL)

4. Create a plugin that can transform an image between arbitrary RGB profiles. This plugin will need to be capable of using as source a binary profile attached to the image as a parasite "icc-profile", as applied by the TIFF loader. It will also need a user interface for interactive use.

5. When an image is newly loaded it should be checked for an icc-profile parasite, and if one is found the user should be given the *option* of converting the image to the current working space. If the user agrees, the parasite should be flushed after conversion, because the image will now be in the working space. If the user declines, a further parasite should be attached to the image that will disable colour-matching in the global display filter.

6. Image saving: some savers already support ICC profiles, as a binary parasite. We could simply load in the working profile and attach it as a parasite before saving, or we could do something smarter, providing the savers with access to the structure outlined in (1).

Does anyone have anything to add to this list, or can anyone see any fatal flaws or other problems that need to be resolved?

And the ultimate question: who's going to do what?

I can put some time into this, but probably not enough to do the entire list. Since I don't currently know GIMP's internals very well I think my time would best be spent working on the plugin mentioned in (4) and the display filters themselves, but points 1 and especially 2 need to be done first.

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

Reply via email to