# OpenICC project OpenICC has two main goals. The first goal is to work out a common set of settings for color savvy applications to share profiles and settings. The second goal is to bring together those developers in areas like printing, display and desktop applications to work together to make color management end to end work for open source applications. A draft specification is planned at a later stage. [[!toc 3]] # Getting involved If you are planning to add color management to your software project or you are hardware manufacturer who wishes to extend his clients base by dipping your toes into opensource water, we encourage you to join our mailing list. Subscription page is [[just round the corner|http://lists.freedesktop.org/mailman/listinfo/openicc]]. * Email: [[OpenICC email list at freedesktop.org|http://lists.freedesktop.org/mailman/listinfo/openicc]] * [[IRC|http://webchat.freenode.net?channels=openicc&uio=MT11bmRlZmluZWQb1]]: the channel is called [[#openicc @ irc.freenode.net|irc://irc.freenode.net/openicc]] # Who's taking part Currently, OpenICC is an informal group of developers exchanging ideas and concepts on integrating ICC color management. Here is a mostly complete list of project developers involved in this discussion: * [[ArgyllCMS|http://www.argyllcms.com]], an experimental, open source, ICC compatible color management system. * [[CinePaint|http://cinepaint.sourceforge.net]], a 16-bit photo retouching application, best suited for video. * [[colord|http://colord.hughsie.com/index.html]], a system service to manage, install and generate color profiles * [[CUPS|http://cups.org]], printing software. * [[GraphicsMagick|http://www.graphicsmagick.org/]], is the swiss army knife of image processing. * [[GIMP|http://www.gimp.org]], popular pixel manipulation application * [[GhostScript|http://www.ghostscript.com/]], an interpreter for the [[PostScript|PostScript]] language and for PDF * [[Gutenprint|http://gutenprint.org]], a set of very high quality drivers for printers, with particular emphasis on inkjets. * [[ImageMagick|http://www.imagemagick.net]], image editing collection. * [[Inkscape|http://www.inkscape.org]], a vector graphics editor. * [[Krita|http://www.krita.org]], and [[Karbon|http://www.calligra.org]], the raster and vector image manipulation applications of the Calligra suite. * [[LittleCMS|http://www.littlecms.com]], a widely used open source color management system. * [[Poppler|http://poppler.freedesktop.org/]], a PDF rendering library based on the xpdf-3.0 code base. * [[LPROF|http://lprof.sourceforge.net]], an open source profiler that uses LCMS. * [[Scribus|http://www.scribus.net]], an open source page layout application. * [[Oyranos|http://www.oyranos.org]], a colour management system for configuration, user interfaces and much more. # Profiles for standard print condition and their licenses For the creation and exchange of images, vector graphics and documents (e.g. PDF) it makes sense, when applications can use a standard set of ICC-profiles which are preinstalled in an known directoty like eg. share/color/profile on every computer. Currently, different organisations, projects and vendors are offering such standard profile packages with different licenses. Not all licenses are compatible to integrate these profile packages into LINUX distributions. Furthermore in the graphic arts, there are so called "reference printing conditions" which represent color measurement-data (also called characterization-data) representing a printing standard. Such characterization-data are a basis for calculating ICC-profiles representing a printing standard. Several packages for standard ICC profiles are containing CMYK-profiles with different names and calculated with different profiling packages but representing the same reference printing condition. The International Color Consortium ICC hosts a [[registry|http://www.color.org/registry2.xalter]] for worldwide used reference printing conditions. Future new ICC profiles for OpenICC should use the same [[reviewed|http://www.crynwr.com/cgi-bin/ezmlm-cgi?3:mss:16756:201007:jgkgmfkbkeglodlhbmnc]] [[license as the ICC|http://www.color.org/registry/profileregistration.xalter]]. An overview about available packages is here [[OpenIcc/ProfilePackages|OpenIcc/ProfilePackages]] # ICC is going open source The ICC itself has began an open source project: * [[http://sourceforge.net/projects/sampleicc/|http://sourceforge.net/projects/sampleicc/]] SampleICC provides an open source platform independent C++ library for reading, writing, manipulating, and applying ICC profiles along with applications that make use of this library. # Legal issues In the middle of the 90's, there were some patent wars concerning color management. Specifically the company EFI sued a lot of other companies that had implemented an RGB to CMYK conversion in their applications. Actually, it is important to be aware of which color management features are part of the ICC specs, and which are going beyond the ICC specs. Implementing color management according to ICC specs is very safe. Implementing extended functions that are not part of the ICC specification could may be dangerous. This concerns especially LittleCMS, which is the standard CMM for more or less all open source applications dealing with color management. (Of course, ArgyllCMS also contains a CMM...) Some of this extended functionality can be very helpful for some use cases. So from the point of view of the user, it makes a lot of sense to implement and use them. One example is enhanced options for CMYK to CMYK conversions. Such functions are useful for the colormanagement of documents for the graphic arts. It can be implemented as special function for the CMM, or it can be solved by precalculating a devicelink-profile, which is used with a ICC-conforming CMM. If it is, for example, implemented as special function in LittleCMS, a legal issue concerning littleCMS could touch all applications which make use of LittleCMS. If it is implemented in a standalone software, which generates and delivers a devicelink-profile, the legal issue covers only the standalone software. The use of devicelink-profiles in other software is a standard feature of the ICC specs. # Specifications * [[Standards|http://www.oyranos.org/wiki/index.php?title=Standards]] overview on [[ColourWiki|http://www.oyranos.org/wiki/]] * [[ICC Profiles in X Specification|http://www.freedesktop.org/wiki/Specifications/icc_profiles_in_x_spec]] * [[ICC meta Tag for Monitor Profiles|http://www.freedesktop.org/wiki/Specifications/icc_meta_tag_for_monitor_profiles]] * [[Oyranos X11 Requirements|http://www.oyranos.org/wiki/index.php?title=Oyranos_X11_Requirements]] # Proposals ## White papers for enhancing the ICC-specs Observing real world colormanagement-workflows with ICC-profiles, it is clear that some problems should be solved with better and more clear defined ICC-specs. Actually, some of such enhancements can be done through "white papers". Such a white paper could e.g. describe extended functions of the CMM. One example of such enhancement is the description of Blackpoint Compensation in Adobe Products at *[[http://www.color.org/Adobe1bpc.pdf|http://www.color.org/Adobe1bpc.pdf]] If developers or color management consultants think, that the ICC-specs need some enhancements, the OpenICC wiki could be used as collaborative platform to produce such whitepapers. Every proposal for an ICC Whitepaper should be a Subpage in the OpenICC wiki and should be structured as following: * Which real world use cases are addressed * which kind of applications are targeted * how should it be implemented technically * how should it be implemented in the user interface. ### Actual proposals for ICC whitepapers #### Better handling of ICC Grey Objects [[IccGreyObjects|IccGreyObjects]] #### Device Settings in ICC [[ICC meta data tag|http://www.color.org/ICCSpecRevision_25-02-10_dictType.pdf]] - the base specification to store a meta data key/value list in ICC profiles. [[ICC meta Tag for Monitor Profiles|http://www.freedesktop.org/wiki/Specifications/icc_meta_tag_for_monitor_profiles]] stores device infos from EDID #### HDR Rendering Description The goal of the [[HdrRenderingDescription|HdrRenderingDescription]] is to provide a way of, how to render an LDR representation from a certain HDR image in different applications to appear similar. Such a description should be included into a ICC style colour profile. As one step a [[OpenIccForGoogleSoC2007|OpenIccForGoogleSoC2007]] project was underway. ## General Topics ### Directory scheme for Colour Management [[OpenICC Directory Proposal|http://www.oyranos.com/wiki/index.php?title=OpenIccDirectoryProposal]] ### X Color Management spec [[Version 0.4 Draft 1|http://oyranos.org/scm?p=xcolor.git;a=blob;f=docs/X_Color_Management.txt]] is public. The goal is to communicate ICC colour regions between server and clients. The implementation is available in libXcm-0.2.x. Some tools and plugin in the Oyranos examples directory support the draft by using libXcm. ## Requirements of Applications and Services ### Link Collection * [[Applications at ColourWiki|https://www.oyranos.org/wiki/index.php?title=Applications]] * [[Cairo|http://www.freedesktop.org/wiki/OpenIcc/Cairo]] ### PPD colouring End user applications want to assign ICC profiles to a combination of printer device, a driver and a set of colour related driver options. Thus for PPD to support this scheme, it is necessary to know, which PPD option is colour related. The proposal suggests a enumerated list of PPD key words named ColorKeyWords, containing a semicolon ';' separated list of PPD key words. The listed keys relate to colour and thus with their values to the ICC profile selection at application level. # LINUX color management a proposal for implementation [[OpenIcc/LinuxCmProposal|OpenIcc/LinuxCmProposal]] describes a roadmap for color management under LINUX with the interaction of * A profile repository connecting devices, documents and profiles * Engine for ICC color transformations of Image maps * Cairo * Ghostscript * monitor output * printer driver (e.g. Gutenprint or Turboprint) * CUPS / PPDs * File export * application interface [[ColourWiki|http://www.oyranos.org/wiki]] contains [[schemes for colour managed printing|http://www.oyranos.org/wiki/index.php?title=Device_Settings#Printing]]. They are graphical and in some parts more technical. # Color managed Printing Path [[OpenIcc/ColorMangedPrintingPath|OpenIcc/ColorMangedPrintingPath]] is a proposal for coordinating developments of Gutenprint, CPD and pdftoraster moduls like e.g. [[GhostScript|GhostScript]] to create a reliable color managed printing path both for standard users, color enthusiasts and color professionals. # Internet Printing Protocol The page [[InternetPrintingProtocol|InternetPrintingProtocol]] collects informations about color managed printing according the Internet Printing Protocol IPP. # Google SoC Suggestions for Googles Summer of Code 2012 are here [[OpenIcc/GoogleSoC2012|OpenIcc/GoogleSoC2012]]. Students will find our project goals and ideas, contact persons, requirements and other hints there. Students who successfully complete their projects will receive a significant stipend from Google for their work. Not our application is not agreed upon. For the older projects and ideas see here [[OpenIcc/GoogleSoC2011|OpenIcc/GoogleSoC2011]], [[OpenIcc/GoogleSoC2010|OpenIcc/GoogleSoC2010]], [[OpenIcc/GoogleSoC2009|OpenIcc/GoogleSoC2009]], [[OpenIccForGoogleSoC2008|OpenIccForGoogleSoC2008]] and here [[OpenIccForGoogleSoC2007|OpenIccForGoogleSoC2007]]. # Events [[Linux Color Management Hackfest Brno 9th till 12th November 2012|http://www.freedesktop.org/wiki/OpenIcc/Events/Hackfest/2012]] [[Elder OpenICC Events|OpenIcc/Events]] --- # Help for editors Here is the editing manual [[http://www.freedesktop.org/wiki/HelpContents|http://www.freedesktop.org/wiki/HelpContents]]