Revision History:
2005-06-24 |
Ross Burton |
Initial release. Thanks to Craig Ringer, Jim Gettys, Kai-Uwe Behrmann, and Matthew Allum for feedback. |
|
2006-05-03 |
Kai-Uwe Behrmann |
Specify how to handle Xinerama setups. |
|
Revision 0.3 |
2007-11-15 - 2008-04-23 |
Kai-Uwe Behrmann |
Clearify terminology suggested Hal V. Engel, Jon A. Cruz, sRGB default by Craig Ringer and corrections by Kai-Uwe Behrmann; case corrections by Graeme Gill |
Introduction
This is a specification for associating ICC colour profiles with X monitors. With this specification applications can obtain the appropriate display profile for the monitor they are interessted in, and apply colour correction to any images, which are being shown to the user.
Specification
Currently there is only one atom base name defined.
_ICC_PROFILE
The atom name for the first monitor in a root window is _ICC_PROFILE.
For root windows spanning more than one monitor, as typical in Xinerama multihead configurations, a atom for each monitor is added holding the appropriate ICC profile. The first monitor uses the _ICC_PROFILE atom name. All monitors in a root window starting from number one use _ICC_PROFILE as atom name extended with an underscore plus the monitor number, e.g. _ICC_PROFILE_1 . Monitor counting starts with zero. Thus a _ICC_PROFILE_0 atom should not appear.
The atoms are of type XA_CARDINAL with 8-bit elements. The value of the atom should be a literal ICC profile, that applications can read and parse directly.
This property does not have to be set on every monitor. When this property is not set for a monitor, this monitor is uncharacterised, and colour correction for this monitor should be done using the sRGB colour space.
As profiles can be large, applications should read the profile for a particular screen once, and cache it. As a screen's profile may change during the lifetime of the process, applications should ask to receive property change notifications from the root window, even if they don't currently have a profile set. Applications which can change screens using mechanisms such as display migration should be aware that the new screen is likely to have different profiles assigned to monitors.
_ICC_PROFILE_IN_X_VERSION
The _ICC_PROFILE_IN_X_VERSION atom specifies the version of this specification applied. To simplify parsing the minor revision number is multiplied by 1 plus the major number by 100. So for example revision 0.3 would result in:
0*100 + 3*1 => 3
References
1. International Color Consortium
2005 © Ross Burton; 2006-2008 © Kai-Uwe Behrmann


