Perq Accepted for Google Summer of Code 2014


I am happy to announce that the perq project has a place in the 2014 Google Summer of Code!

The quick abstract:

This project will continue work from last summer, which hopes to enable a production print workflow suitable for graphics professionals (“perq”). It will do this by extending the CUPS web interface, and modifying its handling of PPD (PostScript Printer Description) files.

In other words, I will be picking up where I left off in GSoC’13 and perfecting the CUPS web interface for per-queue color management printing. The much-needed CM-off switch will be the focus this summer, where an infrastructure is now available to make this feature work for the perq paradigm.

A lot of stuff can get done in three months, so I look forward to finally bringing this project into fruition.


Google Summer of Code 2013 – Final

Hi everyone,

I have closed the GSoC’13 phase of the Color Management Printing Extension for CUPS project, and moving things forward into actual implementation.

Some samples of my work are the following:

These are essentially prototypes of the web interface when extended to support per-queue color management.

We are open to suggestions, and any input on the extensions are most welcome.


GSoC’11 Update – Weeks 8/9

Hi everyone.

Here is an overdue progress report of the last few weeks.  I will be committing a major code update by the end of the week.  In the meantime, here is what is going on so far:

There was kind of a wall hit when it came to the colorspace tagging portion of the code.  I had thought that there would be a direct solution in tagging the colorspace to an ICC one, but it turned out to be a little more difficult than I thought.  The issue is in dealing with multiple images in the PDF – it is possible that each image will have its own DeviceXXX colorspace tagged in the PDF.  This will mean that a solution will be needed to first read through the entire file, find the “/DeviceXXX” string in the PDF, and then replace *every* found instance of the tag with an appropriate “/DefaultXXX” string.

I am trying to tackle the multiple colorspace tagging issue by simply parsing a document by hand and replacing the “/DeviceXXX” tag with the appropriate ICC colorspace.  It is not the most elegant solution, but since Ghostscript doesn’t seem to have a direct way of handling this, it is worth trying out.

Aside from the Renderer part of the code, I have continued work on the XCPD ‘Selector’ module code, and I hope to get as much done before the end of the month.  This week will also begin the integration of the XCPDCM code with the actual XCPD UI, as well as completing the remaining documentation items in the XCPD manual (and then finally submitting them on ColourWiki).



GSoC’11 Midterm Update

Hello everyone.

I would like to apologize for the recent lack of weekly updates. Something had come up late in June and I missed about a week and a half of work. This will not happen again.

For the past couple of weeks, I have been working on the ‘Renderer’ portion of the XCPD CM, and finding a solution to embed a profile into a PDF. As of now, the XCPD Renderer Module code is now able to check if a file has an OutputIntent, and will direct the creation of the proper spool file. The steps are as follows:

1.) Check if a PDF file has an OutputIntent.
2.) If not, we tag the PDF with a default ICC profile.
3.) If the user has specified an ICC profile from the dialog, we convert the PDF into a PDF/X-3 file, and then embed the profile to the PDF.

Step 2 needs work, and I still need to finish implementing code to do the Tiff conversion. But for now, the ‘Renderer Test’ dialog is able to take in both a profile and PDF file, test if the file has an OutputIntent, and generate an embedded profile in a new PDF.

(The latest Ghostscript (9.02) is now required.)

Once this is all finished – and the ‘Renderer’ test dialog is made useful – I will complete the profile selection code. From there, it will be necessary to combine the completed modules (Renderer and Selector) into the XCPD to complete the prototype.

I will be doubling my efforts to make up for the lost time, but I expect the Rendering code will be finished in about a week or less.


Out of Town Notice

I was out of town suddenly for the past week and, unfortunately, have not updated on my progress.

When I return this week, I will provide a combined week 5/6 update on the XCPD.

My sincerest apologies for this – the July 11 midterm deadline has been in view despite the delay.


Synnefo Development Begins

One of the sought-after feature requests from OpenICC is the need to make Kolor Manager a standalone program.  Since I’ve found the time to do some outside coding this semester, I would like to extend my assistance to undertake this project.

Synnefo ( σύννεφο – the Greek word for “cloud”)* will be the standalone version of Kolor Manager, which will keep Oyranos (“sky”) as its internal color management system.  The key advantages for developing Synnefo will be in the following:

1.) Portability. Any environment that supports QT will be able to use Synnefo as a convenient color management solution (such as OS X and Gnome).

2.) Better modularity. Kolor Manager was originally designed with KDE’s System Settings in mind.  Synnefo will be independent, and thus, will allow more freedom in coding new features without conforming to a particular code base.

The goal for the initial implementation will be to carry over the current Kolor Manager code (as it exists right now), and strip away all KDE code. The creation of a main dialog that will hold together the three base modules (“Devices”, “Settings”, and “Information”) is a priority, as well as to provide room for future module expansion – say, the inclusion of a “Parser” or “Viewer” module via AnalyzeICC.

Since this is a project that will be worked on during my school session, I won’t be able to devote full-time on it.  However, I would like to offer this loose, two-month timeline as a way to keep pace:  The month of March will be dedicated to creating the main dialog and organizing the file structure for Synnefo. April will be spent finalizing the code and testing Synnefo in different environments outside of KDE.

Any suggestions are welcome. (Development repository)


*Special thanks to Yiannis for helping us decide on Greek names.