Skip to content

Draft: Implement proof-of-concept for better Wide Gamut softproofing.

This changes the "proof to painting space" from proofing to the image colorspace to using the softproofing config instead.

Reason: In the old advanced color selector, you could only have sRGB, but you could have it use, say, a CMYK colorspace to move those colors through. This had the interesting effect that you could effectively limit colors to that CMYK space without losing the conveniences of using a RGB-HSX colorselector or an RGB image.

Right now, the color selector only allows setting the selector colorspace to a different space as the image, which is useful if you really want to use an alternate colorspace, but for CMYK, its useful to only proof the selector colorspace. Because we effectively know the desired proofing space for a given image, this patch proposes using that info to provide a proof instead of merely using the image, as that would cover one of the remaining use-cases the advanced color selector could handle, but the Wide Gamut selector cannot yet.

Remaining issues:

  • Toggle needs to be renamed.
  • The intents need to be homogenized. In some places I am not using the softproofing intents for convenience.
  • The selector uses a regular colorconversion, instead of a proofing color conversion. The main difference between the two, as far as I can tell, is that the proofing conversion doesn't use blackpoint compensation on the second of its two transforms, which is always relevant for printing profiles.
    • Using the softproofing transform could also offer gamut alarms on the color selector, but it's not super-necessary.
  • The transforms don't get updated when the softproofing config changes. This is probably just a signal that needs to be set.
  • Right now, colors coming from the wide-gamut selector are "proofed" inside the docker, instead of inside the visual selector, probably the desired proofing space and config needs to be stored inside the selector as they change.
  • I had replaced the old functionality wholesale mostly for convenience, as my earlier attempt to properly have two codepaths gave me too much trouble. Do we want to retain the old codepath? The only place I can think it being useful is the greyscale colorspace of masks inside an non-greyscale image, but that would be more of a "proof to node colorspace"?

Test Plan

Enable "proof to painting space" in wide gamut selector settings. The wide gamut selector should now be using the softproofing config. Colors selected with the selector should also be limited to roughly that given colorspace.

image

Above: Color selector of LAB image, soft-proofed to the default chemical proof CMYK profile.

Formalities Checklist

  • I confirmed this builds.
  • I confirmed Krita ran and the relevant functions work.
  • [-] I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
  • I made sure my commits build individually and have good descriptions as per KDE guidelines.
  • I made sure my code conforms to the standards set in the HACKING file.
  • I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.
  • Does the patch add a user-visible feature? If yes, is there a documentation MR ready for it at Krita Documentation Repository?

Merge request reports

Loading