Google Summer of Code has officially started this week, along with the more critical pieces of work for libCmpx. The timeline that I had planned for the summer is to get libCmpx up to snuff during the first half, and then to integrate the library into Krita during the second. The latter goal should proceed smoothly if the former has been worked on with care.
This week, I concentrated on extending the libCmpx API to handle obtaining each print option individually.
Originally, the library was only able to obtain printer options that were marked directly from the print driver file (in Linux, “ppd_file_t” for PPDs). Such a case was convenient only if the driver files were readily accessible from the print dialog application. In the case of print dialogs like Krita, however, these driver files are usually abstracted away from the dialog programmer. This meant that a better approach for libCmpx is to extract each option string from its corresponding widget.
As shown in the above visual, each option in the print dialog simulator will “hook” onto libCmpx using a function call – “libcmpxCM_setPrintOption()” – which will internally store an option as a key/value pair. Processing of these options to obtain a profile is emitted by the “libcmpxCM_calibrateICC()” function. What happens in “auto assign” mode is each color option will be sent into libCmpx’s Selector Module, which will then use Oyranos to rank an appropriate profile based on the selected options. The user gets full priority for selecting profiles manually, so such processing will not happen for cases like that.
So far, this API addition is partially implemented, but I hope to have this finished soon. During this stage of work, the print dialog simulator will be broken in the meantime, so please bear that in mind if you have been testing it!