The GSoC ‘Color-Managed Printing for Krita’ Project has come to a close. However, the work shall continue on without the fancy “GSoC” letters!
Over the summer, I have been describing the features of libCmpx, the library used to provide the main components to handle color-managed printing. This code has finally been integrated into Calligra, providing an initial developer interface: KoCmpx is a class located in “libs”, providing a print color management base for all Calligra applications, which in turn has been extended into Krita as KisCmpx. In addition, a “Printer Color Settings” docker has been created to make use of KisCmpx’s profile selection mechanism.
A sample screenshot of the docker is located below this post, as well as diagrams of the code interaction from a developer’s standpoint.
The docker is designed for Krita users to select an ICC printer profile before actually clicking the “print” button. It provides the option to manually choose a profile (through the use of Krita’s own Color Space selector), or automatically through KisCmpx (requiring that you specify the printer you want a profile from). Once the printer profile is chosen, KisCmpx saves it into Krita by way of its configuration class.
Choosing a profile for printing is half of KisCmpx’s duty; the other half involves taking that very profile and “attaching” it to a print job. The idea of the Color-Managed PDF Print Flow is in embedding an ICC profile into a PDF spool file, where the profile is later extracted and rasterized for the printer. KisCmpx is able to accomplish the first task from within Krita’s “print job” interface, essentially taking your image and converting it into a PDF file. Having saved the desired profile through the docker, KisCmpx will then re-load the profile and embed it into the PDF image file.
It is important to note that the mechanism to take in a PDF spool file and actually submit it to the printer is not available at the moment. One of the major pieces implemented so far is the embedding of the ICC profile into the locally created PDF spool file, a job handled by KisCmpx. However, once there is a way to transport the PDF spool file to the printer and make use of the profile, color-managed printing will then become available. (And we’re getting very close to that point.)
With all this said, I will continue to try to maintain the ‘printing’ part of Calligra/Krita, and will make the effort to finalize everything into the master repository. My code can be found in the krita-printing-jsimon383 branch, but it is a little unstable due to the ongoing work.