[Openicc] OpenICC Configuration 1.0 DRAFT 2

Kai-Uwe Behrmann ku.b at gmx.de
Wed Apr 4 03:56:29 PDT 2012


following is a draft of the JSON Configuration format used by 
Taxi and supported by Oyranos. The format was originally based on ucmm from 
Graeme but extended in many areas by various people.

New are the DB file names, paths and sections for the Devices and Defaults 
DB files.


ucmm 	2008-05-14 	Graeme Gill 	Initial proposal for ArgyllCMS

ICC meta Tag for Monitor Profiles - DRAFT 3 	2010-12-01 	Kai-Uwe Behrmann, Richard Hughes, Max Derhack, Lars Borg and others 	EDID keys for ICC meta tag

OpenICC Configuration - 1.0 DRAFT 1 	2011-11-24 	Kai-Uwe Behrmann, Sebastian Oliva, Richard Hughes 	Oyranos and Taxi DB format

OpenICC Configuration - 1.0 DRAFT 2 	2012-04-03 	Kai-Uwe Behrmann 	path and file name corrections

== Introduction ==

The OpenICC Configuration, in the following text simply named 
Configuration, is intended to share common configuration properties 
through colour management systems and desktops environments.

== Specification ==

The Configuration uses the JSON format to store data.

=== Format ===

The Configuration is stored in the well known JSON format inside a tree 
data structure. The key prefix contains "org"/"freedesktop"/"openicc".

Keys are usually grouped into sets either by namespaces like "devices" or 
by JSON format arrays.

JSON keys are literal strings in ASCII. Values are literal strings in 
UTF-8. It is recommended to write floating point numbers as strings to 
avoid imprecision during reading.

=== Keys ===

Keys can have a key prefix to handle key sets like flat data in the ICC 
meta tag. A prefix consists of upper case letters [:alpha:] and ends with 
a underscore '_'. The key name itself should be lower case and separated 
by underscore '_'. The string for the 'model' key with the 'EDID_' prefix 
would become "EDID_model".

The "prefix" key is optional and can contain a comma ',' separated list of 
prefixes for key names. A interpreter can then easily remove the prefix to 
search for common key names in the data base, while maintaining the 
origin. "EDID_model" can be resolved to "model" in absence of a explicit 
"model" key. Example "prefix"="EDID_,OSD_".

"icc_profile_hash" optionally contains the ICC hash value to specify a ICC 

"icc_profile_file" optionally contains the ICC profiles file name.

"creation_date" mandatory contains the date and time of entry creation
and should be updated on each change. Something human readable would be
great. But we can as well agree about an other format.

"expire_date" optionally contains data/time for showing a user a message
to update the profile with a new one.

"automatic_assignment" mandatory contains "1" for automatic generated
fallback style profiles in a local DB. "0" is to be used for explicit set 
selected profiles. This is useful to know which profiles should easily
be overridden.

    "org": {
      "freedesktop": {
        "openicc": {
          "device": {
            "monitor": [
              { "prefix": "EDID_",
                "EDID_model": "LCD one",
                "icc_profile_file": "profile_name_from_edid.icc",
                "creation_date": "05-08-11T11:59:50Z",
                "expire_date": "05-08-12T11:59:50Z",
                "automatic_assigment": "1"
              { "prefix": "EDID_",
                "EDID_model": "LCD two",
                "icc_profile": "profile_name_vendor.icc",
                "creation_date": "05-08-11T11:59:50Z",
                "expire_date": "05-08-12T11:59:50Z",
                "automatic_assigment": "0"

=== Locations ===

File locations to write to are:

local: $XDG_CONFIG_HOME/color/settings/ or ~/.config/color/settings/

global: /etc/xdg/color/settings/

Read from $XDG_CONFIG_DIRS/color/settings/ directory. The Configuration 
file ending is 'json'.

The Configuration JSON can be used as file or by a in memory string 
representation for exchange among supporting applications.

=== Devices DB ===

The initial key name space is as explained in the Format section 
"org"/"freedesktop"/"openicc". The following name space level is "device". 
Then on of the device classes "camera", "monitor", "printer" or "scanner" 
is to be used. The devices are stored in a JSON array. Each entry contains 
a set of keys and values.

The data base file name is "openicc-devices.json".

=== Defaults DB ===

The key name space starts as explained in the Format section with 
The data base file name is "openicc-defaults.json".

== References ==

1. [http://www.color.org International Color Consortium]

2. [http://www.json.org JSON]

3. meta tag - http://www.color.org/ICCSpecRevision_25-02-10_dictType.pdf

4. ISO 8601 - Data elements and interchange formats – Information interchange – Representation of dates and times

2010-2012 © Kai-Uwe Behrmann

Kai-Uwe Behrmann

More information about the openicc mailing list