Description: A graphical front-end for display calibration and profiling using Argyll CMS

# dispcalGUI—Open Source Display Calibration and Characterization powered by Argyll CMS

## Version 3.0

2015-05-02 22:11 UTC

- Get dispcalGUI
- System requirements
- What's new in this version

- About
- Quickstart guide
- Issues & solutions
- Get help
- Report a bug
- Donate

Stay up-to-date and be notified of new releases by signing up to the dispcalGUI-news mailing list (unless you're already subscribed to dispcalGUI-users which also receives new release notifications).

## Your support is appreciated!

If you would like to support the development of, technical assistance with, and continued availability of dispcalGUI and Argyll CMS, please consider a financial contribution. As dispcalGUI wouldn't be useful without Argyll CMS, all donations received for dispcalGUI will be split between both projects.
For light personal non-commercial use, a one-time donation may be appropriate. If you're using dispcalGUI professionally, an annual or monthly donation would make a great deal of difference in ensuring that both projects continue to be available.

If you have decided to donate (many thanks!), but you'd like to give to Argyll CMS directly on your own behalf (visit argyllcms.com and scroll down a bit to get to its donation links), please leave a note on your dispcalGUI donation if donating to both projects. Please note that if your contribution should be put towards adding a certain feature in Argyll CMS, like support for a specific instrument, it will be more appropriate and efficient to donate to Argyll CMS only, and directly.

Thanks to all contributors!

Donate using PayPal:

(For other means of donating, please contact me under dispcalGUI ‹at› hoech . net)

If you'd like to measure color on the go, you may also be interested in ArgyllPRO ColorMeter by Graeme Gill, author of Argyll CMS. Available for Android from the Google Play store.

## About dispcalGUI

dispcalGUI is a graphical user interface developed by Florian Höch for the display calibration and profiling tools of Argyll CMS, an open source color management system developed by Graeme Gill.

Calibrate and characterize your display devices using one of the many supported hardware sensors, with support for multi-display setups and a variety of available settings like customizable whitepoint, luminance, tone response curve as well as the option to create matrix and look-up-table ICC profiles, with optional gamut mapping, as well as some proprietary 3D LUT formats. Other features include:

- Support of colorimeter correction for different screens via correction matrices or calibration specral sample files (the latter only for specific colorimeters i.e. i1 Display Pro, ColorMunki Display and Spyder 4/5).
- Profile verification and measurement report: Check the quality of profiles and 3D LUTs via measurements. Also supports custom CGATS files (e.g. FOGRA, GRACoL/IDEAlliance, SWOP) and using of reference profiles to obtain test values.
- Test chart editor: Create charts with any amount of color patches, easy copy & paste from CGATS, CSV files (only tab-delimited) and spreadsheet applications.
- Create synthetic ICC (matrix) profiles with custom primaries, white- and blackpoint as well as tone response.

### Screenshots

Display & instrument settings
Calibration settings
Profiling settings

3D LUT settings
Verification settings
Testchart editor

Display adjustment
Profile information
Calibration curves

KDE4
Mac OS X
Windows 7

## Disclaimer

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

dispcalGUI is written in Python and uses the 3rd-party packages NumPy, demjson (JSON[6] library) and wxPython (GUI[4] toolkit). It also makes extensive use of several Argyll CMS utilities. The build system to create standalone executables additionally uses setuptools and py2app on Mac OS X or py2exe on Windows. All of these software packages are © by their respective authors.

## Get dispcalGUI via Zero Install (recommended)

- ### Brief introduction to Zero Install

  (Note: Usually you do not have to install Zero Install separately, it is handled automatically by the dispcalGUI downloads linked below. The following paragraph is only informational.)

  Zero Install is a decentralised cross-platform software installation system. The benefits you get from Zero Install are:

  - Always up-to-date. Zero Install automatically keeps all software updated.
  - Easily switch between software versions from within Zero Install if desired.
  - No administrator rights needed to add or update software (*).

  * Note: Installing/updating Zero Install itself or software dependencies through the operating system's mechanisms may require administrative privileges.

- ### For Linux

  Native packages for several distributions are available via openSUSE Build Service:

  - Arch Linux (please see note below)
  - CentOS 6
  - CentOS 7
  - Debian 6 (Squeezy)
  - Debian 7 (Wheezy)
  - Debian 8 (Jessie)
  - Fedora 16
  - Fedora 17
  - Fedora 18
  - Fedora 19
  - Fedora 20
  - Fedora 21
  - Mandriva 2009.1
  - Mandriva 2010
  - Mandriva 2010.1
  - Mandriva 2011
  - openSUSE 12.1
  - openSUSE 12.2
  - openSUSE 12.3
  - openSUSE 13.1
  - openSUSE 13.2
  - openSUSE Factory
  - openSUSE Tumbleweed
  - RedHat RHEL 6
  - RedHat RHEL 7
  - Ubuntu 10.04 (Lucid)
  - Ubuntu 10.10 (Maverick)
  - Ubuntu 11.04 (Natty)
  - Ubuntu 11.10 (Oneiric)
  - Ubuntu 12.04 (Precise)
  - Ubuntu 12.10 (Quantal)
  - Ubuntu 13.04 (Raring)
  - Ubuntu 13.10 (Saucy)
  - Ubuntu 14.04 (Trusty)
  - Ubuntu 14.10 (Utopic)
  - Ubuntu 15.04 (Vivid)
  Arch Linux note: The zeroinstall-injector 2.6.1 package in AUR is broken. Get a working version here:
  x86 | x86_64

  Please note:

  - The version number in the package name does not necessarily reflect the dispcalGUI version.
  - An official Argyll CMS version from ArgyllCMS.com will be used by default unless the distribution-packaged version is newer, but you can switch to a distribution-packaged version anytime (see “Updating or switching between software versions” below).

  Packages made for older distributions may work on newer distributions as long as nothing substantial has changed (i.e. Python version). Also there are several distributions out there that are based on one in the above list (e.g. Linux Mint which is based on Ubuntu). This means that packages for that base distribution should also work on derivatives, you just need to know which version the derivative is based upon and pick your download accordingly. In all other cases, please try the instructions below or one of the standalone installations.

  #### Alternate installation method

  If your distribution is not listed above, please follow these instructions:

  1. Install the 0install or zeroinstall-injector package from your distribution. In case it is not available, there are pre-compiled generic binaries. Download the appropriate archive for your system, unpack it, `cd` to the extracted folder in a terminal, and run `sudo ./install.sh local` to install to /usr/local, or `./install.sh home` to install to your home directory (you may have to add ~/bin to your PATH variable in that case). You'll need libcurl installed (most systems have it by default).
  2. Choose the 0install entry from the applications menu (older versions of Zero Install will have an “Add New Program” entry instead).
  3. Drag dispcalGUI's Zero Install feed link to the Zero Install window.

  Note on dispcalGUI's standalone tools under Linux (3D LUT maker, curve viewer, profile information, synthetic profile creator, testchart editor, VRML to X3D converter): If using the alternate installation method, an application icon entry will only be created for dispcalGUI itself. This is currently a limitation of Zero Install under Linux. You can manually install icon entries for the standalone tools by running the following in a terminal:

      0launch --command=install-standalone-tools-icons \
      	http://dispcalgui.hoech.net/0install/dispcalGUI.xml

  And you may uninstall them again with:

      0launch --command=uninstall-standalone-tools-icons \
      	http://dispcalgui.hoech.net/0install/dispcalGUI.xml

- ### For Mac OS X (10.5 or newer)

  Download the dispcalGUI Zero Install Launcher disk image and run any of the included applications.

- ### For Windows (XP or newer)

  Download and install the dispcalGUI Zero Install Setup: Administrator install | Per-user install.

- ### Manually updating or switching between software versions

  Updates are normally applied automatically. If you want to manually update or switch between software versions, please follow the instructions below.

  - #### Linux

    Choose the 0install entry from the applications menu (older versions of Zero Install will have a “Manage Programs” entry instead). In the window that opens, right-click the dispcalGUI icon and select “Choose versions” (with older versions of Zero Install, you have to click the small “Update or change version” icon below the “Run” button instead). You can then click the “Refresh all” button to update, or click the small button to the right of an entry and select “Show versions”.

    To select a specific software version, click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).

  - #### Mac OS X

    Run the 0install Launcher. In the window that opens, click the “Refresh all” button to update, or click the small button to the right of an entry and select “Show versions”.

    To select a specific software version, click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).

  - #### Windows

    Choose the Zero Install entry from the start page under Windows 8, or the respective subfolder of the programs folder in the start menu under Windows 7 and earlier, and switch to the “My Applications” tab in the window that opens. Click the small “down” arrow inside the “Start” button to the right of the dispcalGUI entry and choose “Update” or “Select version”.

    To select a specific software version, click on the “change” link next to an item, then click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).

Please continue with the Quickstart Guide.

## Get dispcalGUI standalone

Please note: Argyll CMS is a separate download unless you use a dispcalGUI for Linux native RPM package. I recommend to use the official Argyll CMS binaries from argyllcms.com.

- ### For Linux

  Native packages for several distributions are available via openSUSE Build Service:

  - Arch Linux x86 | x86_64
  - CentOS 6 x86 | x86_64
  - CentOS 7 x86_64
  - Debian 5 (Lenny) x86 | x86_64
  - Debian 6 (Squeezy) x86 | x86_64
  - Debian 7 (Wheezy) x86 | x86_64
  - Debian 8 (Jessie) x86 | x86_64
  - Fedora 16 x86 | x86_64
  - Fedora 17 x86 | x86_64
  - Fedora 18 x86 | x86_64
  - Fedora 19 x86 | x86_64
  - Fedora 20 x86 | x86_64
  - Fedora 21 x86 | x86_64
  - Mandriva 2009.1 x86 | x86_64
  - Mandriva 2010 x86 | x86_64
  - Mandriva 2010.1 x86 | x86_64
  - Mandriva 2011 x86 | x86_64
  - openSUSE 11.4 x86 | x86_64
  - openSUSE 12.1 x86 | x86_64
  - openSUSE 12.2 x86 | x86_64
  - openSUSE 12.3 x86 | x86_64
  - openSUSE 13.1 x86 | x86_64
  - openSUSE 13.2 x86 | x86_64
  - openSUSE Factory x86 | x86_64
  - openSUSE Tumbleweed x86 | x86_64
  - RedHat RHEL 6 x86 | x86_64
  - RedHat RHEL 7 x86_64
  - SUSE Linux Enterprise 11 x86 | x86_64
  - SUSE Linux Enterprise 11 SP1 x86 | x86_64
  - SUSE Linux Enterprise 11 SP2 x86 | x86_64
  - SUSE Linux Enterprise 11 SP3 x86 | x86_64
  - Ubuntu 10.04 (Lucid) x86 | x86_64
  - Ubuntu 10.10 (Maverick) x86 | x86_64
  - Ubuntu 11.04 (Natty) x86 | x86_64
  - Ubuntu 11.10 (Oneiric) x86 | x86_64
  - Ubuntu 12.04 (Precise) x86 | x86_64
  - Ubuntu 12.10 (Quantal) x86 | x86_64
  - Ubuntu 13.04 (Raring) x86 | x86_64
  - Ubuntu 13.10 (Saucy) x86 | x86_64
  - Ubuntu 14.04 (Trusty) x86 | x86_64
  - Ubuntu 14.10 (Utopic) x86 | x86_64
  - Ubuntu 15.04 (Vivid) x86 | x86_64

  Packages made for older distributions may work on newer distributions as long as nothing substantial has changed (i.e. Python version). Also there are several distributions out there that are based on one in the above list (e.g. Linux Mint which is based on Ubuntu). This means that packages for that base distribution should also work on derivatives, you just need to know which version the derivative is based upon and pick your download accordingly.

  In all other cases, you can try this universal install that should work on a multitude of distributions (if you use it, please uninstall any already installed version of dispcalGUI first to avoid file conflicts):

  Autopackage (Python 2.5, 2.6 and 2.7, x86 and x86_64)

- ### For Mac OS X (10.5 or newer)

  Disk image

- ### For Windows (XP or newer)

  Installer (recommended) or ZIP archive

- ### Source code

  You need to have a working Python installation and all requirements.

  Source Tarball

  Alternatively, if you don't mind trying out development code, browse the SVN[8] repository of the latest development version (or do a full checkout using `svn checkout svn://svn.code.sf.net/p/dispcalgui/code/trunk dispcalgui`). But please note that the development code might contain bugs or not run at all, or only on some platform(s). Use at your own risk.

## Quickstart guide

This short guide intends to get you up and running quickly, but if you run into a problem, you should refer to the full prerequisites and installation sections.

1. Download and unpack Argyll CMS: Linux | Mac OS X | Windows. Put the extracted directory (Argyll_VX.X.X) in a convenient place on your harddisk.

2. Launch dispcalGUI. If it cannot determine the path to the Argyll CMS binaries, it will prompt you to select the location manually on first launch.

3. Windows only: If your measurement device is not a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver before continuing. Select “Install Argyll CMS instrument drivers...” from the “Tools” menu. See also “Instrument driver installation under Windows”.

   Mac OS X only: If you want to use the HCFR colorimeter, follow the instructions in the “HCFR Colorimeter” section under “Installing Argyll CMS on Mac OS X” in the Argyll CMS documentation before continuing.

   Connect your measurement device to your computer.

4. Click the small icon with the swirling arrows in between the “Display device” and “Instrument” controls to detect connected display devices and instruments. The detected instrument(s) should show up in the “Instrument” dropdown.

   If your measurement device is a Spyder 2, a popup dialog will show which will let you enable the device. This is required to be able to use the Spyder 2 with Argyll CMS and dispcalGUI.

   If your measurement device is a i1 Display 2, i1 Display Pro, ColorMunki Display, DTP94, Spyder 2/3/4/5, a popup dialog will show and allow you to import generic colorimeter corrections from the vendor software which may help measurement accuracy on the type of display you're using. After importing, they are available under the “Correction” dropdown, where you can choose one that fits the type of display you have, or leave it at “Auto” if there is no match. Note: Importing from the Spyder 4/5 software enables additional measurement modes for that instrument.

5. Refer to the documentation for usage instructions.

   Linux only: If you can't access your instrument, choose “Install Argyll CMS instrument configuration files...” from the “Tools” menu (if that menu item is grayed out, the Argyll CMS version you're currently using has probably been installed from the distribution's repository and should already be setup correctly for instrument access). If you still cannot access the instrument, try unplugging and reconnecting it, or a reboot. If all else fails, read “Installing Argyll CMS on Linux: Setting up instrument access” in the Argyll CMS documentation.

## System requirements and other prerequisites

### General system requirements

- A recent Linux, Mac OS X (10.5 or newer) or Windows (XP/Server 2003 or newer) operating system.
- A graphics card with at least 24 bits per pixel (true color) support and the desktop set up to use this color depth.

### Argyll CMS

To use dispcalGUI, you need to download and install Argyll CMS (1.0 or newer).

### Supported instruments

You need one of the supported instruments to make measurements. All instruments supported by Argyll CMS are also supported by dispcalGUI. For display readings, these currently are:

#### Colorimeters

- CalMAN X2 (treated as i1 Display 2)
- Datacolor/ColorVision Spyder 2
- Datacolor Spyder 3 (since Argyll CMS 1.1.0)
- Datacolor Spyder 4 (since Argyll CMS 1.3.6)
- Datacolor Spyder 5 (since Argyll CMS 1.7.0)
- HP Advanced Profiling Solution (treated as i1 Display 2)
- HP DreamColor (treated as i1 Display 2)
- Hughski ColorHug (Linux support since Argyll CMS 1.3.6, Windows support with newest ColorHug firmware since Argyll CMS 1.5.0, fully functional Mac OS X support since Argyll CMS 1.6.2)
- Hughski ColorHug2 (new in Argyll CMS 1.7.0)
- Klein K10-A (new in Argyll CMS 1.7.0)
- Lacie Blue Eye (treated as i1 Display 2)
- Sequel Imaging MonacoOPTIX (treated as i1 Display 1)
- X-Rite ColorMunki Create (treated as i1 Display 2)
- X-Rite ColorMunki Smile (since Argyll CMS 1.5.0)
- X-Rite DTP92
- X-Rite DTP94
- X-Rite/GretagMacbeth/Pantone Huey
- X-Rite/GretagMacbeth i1 Display 1
- X-Rite/GretagMacbeth i1 Display 2/LT
- X-Rite i1 Display Pro, ColorMunki Display (since Argyll CMS 1.3.4)

#### Spectrometers

- JETI specbos 1211/1201 (since Argyll CMS 1.6.0)
- X-Rite ColorMunki Design, ColorMunki Photo (since Argyll CMS 1.1.0)
- X-Rite/GretagMacbeth i1 Monitor (since Argyll CMS 1.0.3)
- X-Rite/GretagMacbeth i1 Pro
- X-Rite i1 Pro 2 (since Argyll CMS 1.5.0)
- X-Rite/GretagMacbeth Spectrolino

If you've decided to buy a color instrument because Argyll CMS supports it, please let the dealer and manufacturer know that “You bought it because Argyll CMS supports it”—thanks.

Note that the i1 Display Pro and i1 Pro are very different instruments despite their naming similarities.

Also there are currently (2014-05-20) five instruments (or rather, packages) under the ColorMunki brand, two of which are spectrometers, and three are colorimeters (not all of them being recent offerings, but you should be able to find them used in case they are no longer sold new):

- The ColorMunki Design and ColorMunki Photo spectrometers differ only in the functionality of the bundled vendor software. There are no differences between the instruments when used with Argyll CMS and dispcalGUI.
- The ColorMunki Display colorimeter is a less expensive version of the i1 Display Pro colorimeter. It comes bundled with a simpler vendor software and has longer measurement times compared to the i1 Display Pro. Apart from that, the instrument appears to be virtually identical.
- The ColorMunki Create and ColorMunki Smile colorimeters are similar hardware as the i1 Display 2 (with the ColorMunki Smile no longer having a built-in correction for CRT but for white LED backlit LCD instead).

### Additional requirements for unattended calibration and profiling

When using a spectrometer that is supported by the unattended feature (see below), having to take the instrument off the screen to do a sensor self-calibration again after display calibration before starting the measurements for profiling may be avoided if the menu item “Allow skipping of spectrometer self-calibration” in the “Options” menu is checked (colorimeter measurements are always unattended because they generally do not require a sensor calibration away from the screen, with the exception of the i1 Display 1).

Unattended calibration and profiling currently supports the following spectrometers in addition to most colorimeters:

- X-Rite ColorMunki
- X-Rite/GretagMacbeth i1 Monitor & Pro
- X-Rite/GretagMacbeth Spectrolino
- X-Rite i1 Pro 2

Be aware you may still be forced to do a sensor calibration if the instrument requires it. Also, please look at the possible caveats.

### Additional requirements for using the source code

You can skip this section if you downloaded a package, installer, ZIP archive or disk image of dispcalGUI for your operating system and do not want to run from source.

#### All platforms:

- Python >= v2.5 <= v2.7.x (2.7.x is the recommended version. Mac OS X users: If you want to compile dispcalGUI's C extension module, it is advisable to first install XCode and then the official python.org Python)
- NumPy
- wxPython GUI[4] toolkit

#### Windows:

- pywin32
- WMI

### Additional requirements for compiling the C extension module

Normally you can skip this section as the source code contains pre-compiled versions of the C extension module that dispcalGUI uses.

#### Linux:

- GCC and development headers for Python + X11 + Xrandr + Xinerama + Xxf86vm if not already installed, they should be available through your distribution's packaging system

#### Mac OS X:

- XCode
- py2app if you want to build a standalone executable (on Mac OS X before 10.5, install setuptools first: `sudo python util/ez_setup.py setuptools`)

#### Windows:

- a C-compiler (e.g. MS Visual C++ Express or MinGW. If you're using the official python.org Python 2.6 or later I'd recommend Visual C++ Express as it works out of the box)
- py2exe if you want to build a standalone executable

### Running directly from source

After satisfying all additional requirements for using the source code, you can simply run any of the included `.pyw` files from a terminal, e.g. `python2 dispcalGUI.pyw`, or install the software so you can access it via your desktop's application menu with `python2 setup.py install`. Run `python2 setup.py --help` to view available options.

One-time setup instructions for source code checked out from SVN:

Run `python2 setup.py` to create the version file so you don't see the update popup at launch.

If the pre-compiled extension module that is included in the sources does not work for you (in that case you'll notice that the movable measurement window's size does not closely match the size of the borderless window generated by Argyll CMS during display measurements) or you want to re-build it unconditionally, run `python2 setup.py build_ext -i` to re-build it from scratch (you need to satisfy the requirements for compiling the C extension module first).

## Installation

It is recommended to first remove all previous versions unless you used Zero Install to get them.

### Instrument driver installation under Windows

You only need to install the Argyll-specific driver if your measurement device is not a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10.

If you are using Windows 8, you need to disable driver signature enforcement before you can install the driver:

1. Go to “Settings” (hover the lower right corner of the screen, then click the gear icon).
2. Select “Power” (the on/off icon).
3. Hold the SHIFT key down and click “Restart”.
4. Select “Troubleshoot → “Advanced Options” → “Startup Settings” → “Restart”.
5. After reboot, select “Disable Driver Signature Enforcement” (number 7 on the list).

To install the Argyll-specific driver that is needed to use some instruments, launch dispcalGUI and select “Install Argyll CMS instrument drivers...” from the “Tools” menu.

To switch between the Argyll CMS and vendor drivers, launch Windows' Device Manager and locate the instrument in the device list. It may be underneath one of the top level items. Right click on the instrument and select “Update Driver Software...”, then choose “Browse my computer for driver software”, “Let me pick from a list of device drivers on my computer” and finally select the Argyll driver for your instrument from the list.

### Linux package (.deb/.rpm)

A lot of distributions allow easy installation of packages via the graphical desktop, i.e. by double-clicking the package file's icon. Please consult your distribution's documentation if you are unsure how to install packages.

If you cannot access your instrument, first try unplugging and reconnecting it, or a reboot. If that doesn't help, read “Installing Argyll CMS on Linux: Setting up instrument access”.

### Linux Autopackage (.package)

Before installing the autopackage, first install wxPython (on some systems called python-wxGTK or python-wxWidgets) and NumPy using your system's package management software. To install the autopackage, follow these three steps (you only have to do it once, next time, you can just skip these steps and open the .package file directly):

1. Click on the package with your right mouse button. Then click on the “Properties” menu item.
2. Go to the “Permissions” tab.
   - Check the “Execute”, “Exec” or “Is Executable” checkbox. If there are more than one Execute/Exec checkboxes, check the top-most one.
   - Click “Close” or “OK”, depending on the dialog.
3. If you already have the software installed from your distributions packages or from the source, remove it first. Then open the package file. If you are asked whether you want to display or run the package, choose “Run”.

The installation will now begin. Follow further intructions that are displayed, if any.

If you cannot access your instrument, first try unplugging and reconnecting it, or a reboot. If that doesn't help, read “Installing Argyll CMS on Linux: Setting up instrument access”.

### Mac OS X

Mount the disk image and option-drag its icon to your “Applications” folder. Afterwards open the “dispcalGUI” folder in your “Applications” folder and drag dispcalGUI's icon to the dock if you want easy access.

If you want to use the HCFR colorimeter under Mac OS X, follow the instructions under “installing Argyll CMS on Mac OS X” in the Argyll CMS documentation.

### Windows (Installer)

Launch the installer which will guide you trough the required setup steps.

If your measurement device is not a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver. See “Instrument driver installation under Windows”.

### Windows (ZIP archive)

Unpack and then simply run dispcalGUI from the created folder.

If your measurement device is not a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver. See “Instrument driver installation under Windows”.

### Source code (all platforms)

See the “Prerequisites” section to run directly from source.

Starting with dispcalGUI 0.2.5b, you can use standard distutils/setuptools commands with setup.py to build, install, and create packages. `sudo python setup.py install` will compile the extension modules and do a standard installation. Run `python setup.py --help` or `python setup.py --help-commands` for more information. A few additional commands and options which are not part of distutils or setuptools (and thus do not appear in the help) are also available:

#### Additional setup commands

`0install`
  Create/update 0install feeds and create Mac OS X application bundles to run those feeds.
`appdata`
  Create/update AppData file.
`bdist_appdmg` (Mac OS X only)
  Creates a DMG of previously created (by the py2app or bdist_standalone commands) application bundles, or if used together with the `0install` command.
`bdist_deb` (Linux/Debian-based)
  Create an installable Debian (.deb) package, much like the standard distutils command bdist_rpm for RPM packages. Prerequisites: You first need to install alien and rpmdb, create a dummy RPM database via `sudo rpmdb --initdb`, then edit (or create from scratch) the setup.cfg (you can have a look at misc/setup.ubuntu9.cfg for a working example). Under Ubuntu, running utils/dist_ubuntu.sh will automatically use the correct setup.cfg. If you are using Ubuntu 11.04 or any other debian-based distribution which has Python 2.7 as default, you need to edit /usr/lib/python2.7/distutils/command/bdist_rpm.py, and change the line `install_cmd = ('%s install -O1 --root=$RPM_BUILD_ROOT '` to `install_cmd = ('%s install --root=$RPM_BUILD_ROOT '` by removing the `-O1` flag. Also, you need to change /usr/lib/rpm/brp-compress to do nothing (e.g. change the file contents to `exit 0`, but don't forget to create a backup copy first) otherwise you will get errors when building.
`bdist_lipa`
  Create a Listaller package.
`bdist_pyi`
  An alternative to `bdist_standalone`, which uses PyInstaller instead of bbfreeze/py2app/py2exe.
`bdist_standalone`
  Creates a standalone application that does not require a Python installation. Uses bbfreeze on Linux, py2app on Mac OS X and py2exe on Windows. setup.py will try and automatically download/install these packages for you if they are not yet installed and if not using the --use-distutils switch. Note: On Mac OS X, older versions of py2app (before 0.4) are not able to access files inside python “egg” files (which are basically ZIP-compressed folders). Setuptools, which is needed by py2app, will normally be installed in “egg” form, thus preventing those older py2app versions from accessing its contents. To fix this, you need to remove any installed setuptools-<version>-py<python-version>.egg files from your Python installation's site-packages directory (normally found under `/Library/Frameworks/Python.framework/Versions/Current/lib`). Then, run `sudo python util/ez_setup.py -Z setuptools` which will install setuptools unpacked, thus allowing py2app to acces all its files. This is no longer an issue with py2app 0.4 and later.
`buildservice`
  Creates control files for openSUSE Build Service (also happens implicitly when invoking `sdist`).
`finalize_msi` (Windows only)
  Adds icons and start menu shortcuts to the MSI installer previously created with `bdist_msi`. Successful MSI creation needs a patched msilib (additional information).
`inno` (Windows only)
  Creates Inno Setup scripts which can be used to compile setup executables for standalone applications generated by the `py2exe` or `bdist_standalone` commands and for 0install.
`purge`
  Removes the `build` and `dispcalGUI.egg-info` directories including their contents.
`purge_dist`
  Removes the `dist` directory and its contents.
`readme`
  Creates README.html by parsing misc/README.template.html and substituting placeholders like date and version numbers.
`uninstall`
  Uninstalls the package. You can specify the same options as for the `install` command.

#### Additional setup options

`--cfg=<name>`
  Use an alternate setup.cfg, e.g. tailored for a given Linux distribution. The original setup.cfg is backed up and restored afterwards. The alternate file must exist as misc/setup.<name>.cfg
`-n`, `--dry-run`
  Don't actually do anything. Useful in combination with the uninstall command to see which files would be removed.
`--skip-instrument-configuration-files`
  Skip installation of udev rules and hotplug scripts.
`--skip-postinstall`
  Skip post-installation on Linux (an entry in the desktop menu will still be created, but may not become visible until logging out and back in or rebooting) and Windows (no shortcuts in the start menu will be created at all).
`-stability=stable|testing|developer|buggy|insecure`
  Set the stability for the implementation that is added/updated via the `0install` command.
`--use-distutils`
  Force setup to use distutils (default) instead of setuptools. This is useful in combination with the bdist* commands, because it will avoid an artificial dependency on setuptools. This is actually a switch, use it once and the choice is remembered until you specify the `--use-setuptools` switch (see next paragraph).
`--use-setuptools`
  Force setup to try and use setuptools instead of distutils. This is actually a switch, use it once and the choice is remembered until you specify the `--use-distutils` switch (see above).

### Instrument-specific setup

If your measurement device is a i1 Display 2, i1 Display Pro, ColorMunki Display, DTP94, Spyder 2/3/4/5, you'll want to import the colorimeter corrections that are part of the vendor software packages, which can be used to better match the instrument to a particular type of display. Note: The full range of measurement modes for the Spyder 4/5 are also only available if they are imported from the Spyder 4/5 software.

Choose “Import colorimeter corrections from other display profiling software...” from dispcalGUI's “Tools” menu.

If your measurement device is a Spyder 2, you need to enable it to be able to use it with Argyll CMS and dispcalGUI. Choose “Enable Spyder 2 colorimeter...” from dispcalGUI's “Tools” menu.

## Basic concept of display calibration and profiling

If you have previous experience, skip ahead. If you are new to display calibration, here is a quick outline of the basic concept.

First, the display behavior is measured and adjusted to meet user-definable target characteristics, like brightness, gamma and white point. This step is generally referred to as calibration. Calibration is done by adjusting the monitor controls, and the output of the graphics card (via calibration curves, also sometimes called video LUT[7] curves—please don't confuse these with LUT profiles, the differences are explained here) to get as close as possible to the chosen target.
To meet the user-defined target characteristics, it is generally advisable to get as far as possible by using the monitor controls, and only thereafter by manipulating the output of the video card via calibration curves, which are loaded into the video card gamma table, to get the best results.

Second, the calibrated displays response is measured and an ICC[5] profile describing it is created.

Optionally and for convenience purposes, the calibration is stored in the profile, but both still need to be used together to get correct results. This can lead to some ambiguity, because loading the calibration curves from the profile is generally the responsibility of a third party utility or the OS, while applications using the profile to do color transforms usually don't know or care about the calibration (they don't need to). Currently, the only OS that applies calibration curves out-of-the-box is Mac OS X (under Windows 7 you can enable it, but it's off by default)—for other OS's, dispcalGUI takes care of creating an appropriate loader.

Even non-color-managed applications will benefit from a loaded calibration because it is stored in the graphics card—it is “global”. But the calibration alone will not yield accurate colors—only fully color-managed applications will make use of display profiles and the necessary color transforms.

Regrettably there are several image viewing and editing applications that only implement half-baked color management by not using the system's display profile (or any display profile at all), but an internal and often unchangeable “default” color space like sRGB, and sending output unaltered to the display after converting to that default colorspace. If the display's actual response is close to sRGB, you might get pleasing (albeit not accurate) results, but on displays which behave differently, for example wide-color-gamut displays, even mundane colors can get a strong tendency towards neon.

## A note about colorimeters, displays and dispcalGUI

Colorimeters need a correction in hardware or software to obtain correct measurements from different types of displays (please also see “Wide Gamut Displays and Colorimeters” on the Argyll CMS website for more information). The latter is supported when using Argyll CMS >= 1.3.0, so if you own a display and colorimeter which has not been specifically tuned for this display (i.e. does not contain a correction in hardware), you can apply a correction that has been calculated from spectrometer measurements to help better measure such a screen.
You need a spectrometer in the first place to do the necessary measurements to create such a correction, or you may query dispcalGUI's Colorimeter Corrections Database, and there's also a list of contributed colorimeter correction files on the Argyll CMS website—please note though that a matrix created for one particular instrument/display combination may not work well for different instances of the same combination because of generally low inter-instrument agreement of most older colorimeters (with the exception of the DTP94), newer devices like the i1 Display Pro/ColorMunki Display and possibly the Spyder 4/5 seem to be less affected by this.
Starting with dispcalGUI 0.6.8, you can also import generic corrections from some profiling softwares by choosing the corresponding item in the “Tools” menu.

If you buy a screen bundled with a colorimeter, the instrument may have been matched to the screen in some way already, so you may not need a software correction in that case.

### Special note about the X-Rite i1 Display Pro, ColorMunki Display and Spyder 4/5 colorimeters

These instruments greatly reduce the amount of work needed to match them to a display because they contain the spectral sensitivities of their filters in hardware, so only a spectrometer reading of the display is needed to create the correction (in contrast to matching other colorimeters to a display, which needs two readings: One with a spectrometer and one with the colorimeter).
That means anyone with a particular screen and a spectrometer can create a special Colorimeter Calibration Spectral Set (`.ccss`) file of that screen for use with those colorimeters, without needing to actually have access to the colorimeter itself.

## Usage

Through the main window, you can choose your settings. When running calibration measurements, another window will guide you through the interactive part of display adjustment.

### Settings file

Here, you can load a preset, or a calibration (`.cal`) or ICC profile (`.icc` / `.icm`) file from a previous run. This will set options to those stored in the file. If the file contains only a subset of settings, the other options will automatically be reset to defaults (except the 3D LUT settings, which won't be reset if the settings file doesn't contain 3D LUT settings, and the verification settings which will never be reset automatically).

If a calibration file or profile is loaded in this way, its name will show up here to indicate that the settings reflect those in the file. Also, if a calibration is present it can be used as the base when “Just Profiling”.
The chosen settings file will stay selected as long as you do not change any of the calibration or profiling settings, with one exception: When a `.cal` file with the same base name as the settings file exists in the same directory, adjusting the quality and profiling controls will not cause unloading of the settings file. This allows you to use an existing calibration with new profiling settings for “Just Profiling”, or to update an existing calibration with different quality and/or profiling settings. If you change settings in other situations, the file will get unloaded (but current settings will be retained—unloading just happens to remind you that the settings no longer match those in the file), and current display profile's calibration curves will be restored (if present, otherwise they will reset to linear).

When a calibration file is selected, the “Update calibration” checkbox will become available, which takes less time than a calibration from scratch. If a ICC[5] profile is selected, and a calibration file with the same base name exists in the same directory, the profile will be updated with the new calibration. Ticking the “Update calibration” checkbox will gray out all options as well as the “Calibrate & profile” and “Just profile” buttons, only the quality level will be changeable.

### Predefined settings (presets)

Starting with dispcalGUI v0.2.5b, predefined settings for several use cases are selectable in the settings dropdown. I strongly recommend to NOT view these presets as the solitary “correct” settings you absolutely should use unmodified if your use case matches their description. Rather view them as starting points, from where you can work towards your own, optimized (in terms of your requirements, hardware, surroundings, and personal preference) settings.

#### Why has a default gamma of 2.2 been chosen for some presets?

Many displays, be it CRT, LCD, Plasma or OLED, have a default response characteristic close to a gamma of approx. 2.2-2.4 (for CRTs, this is the actual native behaviour; and other technologies typically try to mimic CRTs). A target response curve for calibration that is reasonably close to the native response of a display should help to minimize calibration artifacts like banding, because the adjustments needed to the video card's gamma tables via calibration curves will not be as strong as if a target response farther away from the display's native response had been chosen.

Of course, you can and should change the calibration response curve to a value suitable for your own requirements. For example, you might have a display that offers hardware calibration or gamma controls, that has been internally calibrated/adjusted to a different response curve, or your display's response is simply not close to a gamma of 2.2 for other reasons. You can run “Report on uncalibrated display device” from the “Tools” menu to measure the approximated overall gamma among other info.

### Choosing the display to calibrate and the measurement device

After connecting the instrument, click the small icon with the swirling arrows in between the “Display device” and “Instrument” controls to detect connected display devices and instruments.

#### Choosing a measurement mode

Some instruments may support different measurement modes for different types of display devices. In general, there are three base measurement modes: “LCD”, “Refresh” (e.g. CRT and Plasma are refresh-type displays) and “Projector” (the latter is only available if supported by the instrument). Some instruments like the Spyder 4/5 and ColorHug support additional measurement modes, where a mode is coupled with a predefined colorimeter correction (in that case, the colorimeter correction dropdown will automatically be set to “None”).
Variations of these measurement modes may be available depending on the instrument: “Adaptive” measurement mode for spectrometers uses varying integration times (always used by colorimeters) to increase accuracy of dark readings. “HiRes” turns on high resolution spectral mode for spectrometers like the i1 Pro, which may increase the accuracy of measurements.

#### Drift compensation during measurements (only available if using Argyll CMS >= 1.3.0)

White level drift compensation tries to counter luminance changes of a warming up display device. For this purpose, a white test patch is measured periodically, which increases the overall time needed for measurements.

Black level drift compensation tries to counter measurement deviations caused by black calibration drift of a warming up measurement device. For this purpose, a black test patch is measured periodically, which increases the overall time needed for measurements. Many colorimeters are temperature stabilised, in which case black level drift compensation should not be needed, but spectrometers like the i1 Pro or ColorMunki Design/Photo are not temperature compensated.

#### Override display update delay (only available if using Argyll CMS >= 1.5.0, only visible if “Show advanced options” in the “Options” menu is enabled)

Normally a delay of 200 msec is allowed between changing a patch color in software, and that change appearing in the displayed color itself. For some instuments (i.e. i1d3, i1pro, ColorMunki, Klein K10-A) ArgyllCMS will automatically measure and set an appropriate update delay during instrument calibration. In rare situations this delay may not be sufficient (ie. some TV's with extensive image processing features turned on), and a larger delay can be set here.

#### Override display settle time multiplier (only available if using Argyll CMS >= 1.7.0, only visible if “Show advanced options” in the “Options” menu is enabled)

Normally the display technology type determines how long is allowed between when a patch color change appears on the display, and when that change has settled down, and as actually complete within measurement tolerance. A CRT or Plasma display for instance, can have quite a long settling delay due to the decay characteristics of the phosphor used, while an LCD can also have a noticeable settling delay due to the liquid crystal response time and any response time enhancement circuitr (instruments without a display technology type selection such as spectrometers assume a worst case).
The display settle time multiplier allows the rise and fall times of the model to be scaled to extend or reduce the settling time. For instance, a multiplier of 2.0 would double the settling time, while a multiplier of 0.5 would halve it.

#### Choosing a colorimeter correction for a particular display

This can improve a colorimeters accuracy for a particular type of display, please also see “A note about colorimeters, displays and dispcalGUI”. You can import generic matrices from some other display profiling softwares as well as check the online Colorimeter Corrections Database for a match of your display/instrument combination (click the small globe next to the correction dropdown). A list of contributed correction matrices can also be found on the Argyll CMS website.

Please note this option is only available if using Argyll CMS >= 1.3.0 and a colorimeter.

### Calibration settings

Interactive display adjustment
  Turning this off skips straight to calibration or profiling measurements instead of giving you the opportunity to alter the display's controls first. You will normally want to keep this checked, to be able to use the controls to get closer to the chosen target characteristics.
White point

  Allows setting the target white point locus to the equivalent of a daylight or black body spectrum of the given temperature in degrees Kelvin, or as chromaticity co-ordinates. By default the white point target will be the native white of the display, and it's color temperature and delta E to the daylight spectrum locus will be shown during monitor adjustment, and adjustments will be recommended to put the display white point directly on the Daylight locus. If a daylight color temperature is given, then this will become the target of the adjustment, and the recommended adjustments will be those needed to make the monitor white point meet the target. Typical values might be 5000 for matching printed output, or 6500, which gives a brighter, bluer look. A white point temperature different to that native to the display may limit the maximum brightness possible.

  If you want to find out the current uncalibrated whitepoint of your display, you can run “Report on uncalibrated display device” from the “Tools” menu to measure it.

  If you want to adjust the whitepoint to the chromaticities of your ambient lighting, or those of a viewing booth as used in prepress and photography, and your measurement device has ambient measuring capability (e.g. like the i1 Pro or i1 Display with their respective ambient measurement heads), you can use the “Measure” button next to the whitepoint settings. If you want to measure ambient lighting, place the instrument upwards, beside the display. Or if you want to measure a viewing booth, put a metamerism-free gray card inside the booth and point the instrument towards it. Further instructions how to measure ambient may be available in your instrument's documentation.

White level

  Set the target brightness of white in cd/m2. If this number cannot be reached, the brightest output possible is chosen, consistent with matching the white point target. Note that many of the instruments are not particularly accurate when assessing the absolute display brightness in cd/m2. NOTE that some LCD screens behave a little strangely near their absolute white point, and may therefore exhibit odd behavior at values just below white. It may be advisable in such cases to set a brightness slightly less than the maximum such a display is capable of.

  If you want to find out the current uncalibrated white level of your display, you can run “Report on uncalibrated display device” from the “Tools” menu to measure it.

Black level

  (To see this setting, go into the “Options” menu, and enable “Show advanced options”)

  Can be used to set the target brightness of black in cd/m2 and is useful for e.g. matching two different screens with different native blacks to one another, by measuring the black levels on both (i.e. in the “Tools” menu, choose “Report on uncalibrated display”) and then entering the highest measured value. Normally you may want to use native black level though, to maximize contrast ratio. Setting too high a value may also give strange results as it interacts with trying to achieve the target “advertised” tone curve shape. Using a black output offset of 100% tries to minimize such problems.

Tone curve / gamma

  The target response curve is normally an exponential curve (output = inputgamma), and defaults to 2.2 (which is close to a typical CRT displays real response). Four pre-defined curves can be used as well: the sRGB colorspace response curve, which is an exponent curve with a straight segment at the dark end and an overall response of approximately gamma 2.2, the L* curve, which is the response of the CIE L*a*b* perceptual colorspace, the Rec. 709 video standard response curve and the SMPTE 240M video standard response curve.
  Another possible choice is “As measured”, which will skip video card gamma table (1D LUT) calibration.

  Note that a real display usually can't reproduce any of the ideal pre-defined curves, since it will have a non-zero black point, whereas all the ideal curves assume zero light at zero input.

  For gamma values, you can also specify wheter it should be interpreted relative, meaning the gamma value provided is used to set an actual response curve in light of the non-zero black of the actual display that has the same relative output at 50% input as the ideal gamma power curve, or absolute, which allows the actual power to be specified instead, meaning that after the actual displays non-zero black is accounted for, the response at 50% input will probably not match that of the ideal power curve with that gamma value (to see this setting, you have to go into the “Options” menu, and enable “Show advanced options”).

  To allow for the non-zero black level of a real display, by default the target curve values will be offset so that zero input gives the actual black level of the display (output offset). This ensures that the target curve better corresponds to the typical natural behavior of displays, but it may not be the most visually even progression from display minimum. This behavior can be changed using the black output offset option (see further below).

  Also note that many color spaces are encoded with, and labelled as having a gamma of approximately 2.2 (ie. sRGB, REC 709, SMPTE 240M, Macintosh OS X 10.6), but are actually intended to be displayed on a display with a typical CRT gamma of 2.4 viewed in a darkened environment.
  This is because this 2.2 gamma is a source gamma encoding in bright viewing conditions such as a television studio, while typical display viewing conditions are quite dark by comparison, and a contrast expansion of (approx.) gamma 1.1 is desirable to make the images look as intended.
  So if you are displaying images encoded to the sRGB standard, or displaying video through the calibration, just setting the gamma curve to sRGB or REC 709 (respectively) is probably not what you want! What you probably want to do, is to set the gamma curve to about gamma 2.4, so that the contrast range is expanded appropriately, or alternatively use sRGB or REC 709 or a gamma of 2.2 but also specify the actual ambient viewing conditions via a light level in Lux, so that an appropriate contrast enhancement can be made during calibration. If your instrument is capable of measuring ambient light levels, then you can do so.
  (For in-depth technical information about sRGB, see “A Standard Default Color Space for the Internet: sRGB” at the ICC[5] website for details of how it is intended to be used)

  If you're wondering what gamma value you should use, you can run “Report on uncalibrated display device” from the “Tools” menu to measure the approximated overall gamma among other info. Setting the gamma to the reported value can then help to reduce calibration artifacts like banding, because the adjustments needed for the video card's gamma table should not be as strong as if a gamma further away from the display's native response was chosen.

Ambient light level

  (To see this setting, go into the “Options” menu, and enable “Show advanced options”)

  As explained for the tone curve settings, often colors are encoded in a situation with viewing conditions that are quite different to the viewing conditions of a typical display, with the expectation that this difference in viewing conditions will be allowed for in the way the display is calibrated. The ambient light level option is a way of doing this. By default calibration will not make any allowances for viewing conditions, but will calibrate to the specified response curve, but if the ambient light level is entered or measured, an appropriate viewing conditions adjustment will be performed. For a gamma value or sRGB, the original viewing conditions will be assumed to be that of the sRGB standard viewing conditions, while for REC 709 and SMPTE 240M they will be assumed to be television studio viewing conditions.
  By specifying or measuring the ambient lighting for your display, a viewing conditions adjustment based on the CIECAM02 color appearance model will be made for the brightness of your display and the contrast it makes with your ambient light levels.

  Please note your measurement device needs ambient measuring capability (e.g. like the i1 Pro or i1 Display with their respective ambient measurement heads) to measure the ambient light level.

Black output offset

  (To see this setting, go into the “Options” menu, and enable “Show advanced options”)

  Real displays do not have a zero black response, while all the target response curves do, so this has to be allowed for in some way.

  The default way of handling this (equivalent to 100% black output offset) is to allow for this at the output of the ideal response curve, by offsetting and scaling the output values. This defined a curve that will match the responses that many other systems provide and may be a better match to the natural response of the display, but will give a less visually even response from black.

  The other alternative is to offset and scale the input values into the ideal response curve so that zero input gives the actual non-zero display response. This ensures the most visually even progression from display minimum, but might be hard to achieve since it is different to the natural response of a display.

  A subtlety is to provide a split between how much of the offset is accounted for as input to the ideal response curve, and how much is accounted for at the output, where the degree is 0.0 accounts for it all as input offset, and 100% accounts for all of it as output offset.

Black point correction

  (To see this setting, go into the “Options” menu, and enable “Show advanced options”)

  Normally dispcal will attempt to make all colors down the neutral axis (R=G=B) have the same hue as the chosen white point. Near the black point, red, green or blue can only be added, not subtracted from zero, so the process of making the near black colors have the desired hue, will lighten them to some extent. For a device with a good contrast ratio or a black point that has nearly the same hue as the white, this is not a problem. If the device contrast ratio is not so good, and the black hue is noticeably different to that of the chosen white point (which is often the case for LCD type displays), this could have a noticeably detrimental effect on an already limited contrast ratio. Here the amount of black point hue correction can be controlled.
  By default a factor of 100% will be used, which is usually good for “Refresh”-type displays like CRT or Plasma and also by default a factor of 0% is used for LCD type displays, but you can override these with a custom value between 0% (no correction) to 100% (full correction), or enable automatically setting it based on the measured black level of the display.

  If less than full correction is chosen, then the resulting calibration curves will have the target white point down most of the curve, but will then cross over to the native or compromise black point.

Black point correction rate (only available if using Argyll CMS >= 1.0.4)

  (To see this setting, go into the “Options” menu, and enable “Show advanced options”)

  If the black point is not being set completely to the same hue as the white point (ie. because the factor is less than 100%), then the resulting calibration curves will have the target white point down most of the curve, but will then blend over to the native or compromise black point that is blacker, but not of the right hue. The rate of this blend can be controlled. The default value is 4.0, which results in a target that switches from the white point target to the black, moderately close to the black point. While this typically gives a good visual result with the target neutral hue being maintained to the point where the crossover to the black hue is not visible, it may be asking too much of some displays (typically LCD type displays), and there may be some visual effects due to inconsistent color with viewing angle. For this situation a smaller value may give a better visual result (e.g. try values of 3.0 or 2.0. A value of 1.0 will set a pure linear blend from white point to black point). If there is too much coloration near black, try a larger value, e.g. 6.0 or 8.0.

Calibration speed

  (This setting will not apply and be hidden when the tone curve is set to “As measured”)

  Determines how much time and effort to go to in calibrating the display. The lower the speed, the more test readings will be done, the more refinement passes will be done, the tighter will be the accuracy tolerance, and the more detailed will be the calibration of the display. The result will ultimately be limited by the accuracy of the instrument, the repeatability of the display and instrument, and the resolution of the video card gamma table entries and digital or analogue output (RAMDAC).

### Profiling settings

Profile quality
  Sets the level of effort and/or detail in the resulting profile. For table based profiles (LUT[7]), it sets the main lookup table size, and hence quality in the resulting profile. For matrix profiles it sets the per channel curve detail level and fitting “effort”.
Black point compensation (enable “Show advanced options” in the “Options” menu)

  (Note: This option has no effect if just calibrating and creating a simple curves + matrix profile directly from the calibration data without additional profiling measurements)

  This effectively prevents black crush when using the profile, but at the expense of accuracy. It is generally best to only use this option when it is not certain that the applications you are going to use have a high quality color management implementation. For LUT profiles, more sophisticated options exist (i.e. advanced gamut mapping options and use either “Enhance effective resolution of colorimetric PCS[11]-to-device tables”, which is enabled by default, or “Gamut mapping for perceptual intent”, which can be used to create a perceptual table that maps the black point).

Profile type (enable “Show advanced options” in the “Options” menu)

  Generally you can differentiate between two types of profiles: LUT[7] based and matrix based.

  Matrix based profiles are smaller in filesize, somewhat less accurate (though in most cases smoother) compared to LUT[7] based types, and usually have the best compatibility across CMM[2]s, applications and systems — but only support the colorimetric intent for color transforms. For matrix based profiles, the PCS[11] is always XYZ. You can choose between using individual curves for each channel (red, green and blue), a single curve for all channels, individual gamma values for each channel or a single gamma for all channels. Curves are more accurate than gamma values. A single curve or gamma can be used if individual curves or gamma values degrade the gray balance of an otherwise good calibration.

  LUT[7] based profiles are larger in filesize, more accurate (but may sacrifice smoothness), in some cases less compatible (applications might not be able to use or show bugs/quirks with LUT[7] type profiles, or certain variations of them). When choosing a LUT[7] based profile type, advanced gamut mapping options become available which you can use to create perceptual and/or saturation tables inside the profile in addition to the default colorimetric tables which are always created.
  L*a*b* or XYZ can be used as PCS[11], with XYZ being recommended especially for wide-gamut displays bacause their primaries might exceed the ICC[5] L*a*b* encoding range (Note: Under Windows, XYZ LUT[7] types are only available in dispcalGUI if using Argyll CMS >= 1.1.0 because of a requirement for matrix tags in the profile, which are not created by prior Argyll CMS versions).
  As it is hard to verify if the LUT[7] of an combined XYZ LUT[7] + matrix profile is actually used, you may choose to create a profile with a swapped matrix, ie. blue-red-green instead of red-green-blue, so it will be obvious if an application uses the (deliberately wrong) matrix instead of the (correct) LUT because the colors will look very wrong (e.g. everything that should be red will be blue, green will be red, blue will be green, yellow will be purple etc).

  Note: LUT[7]-based profiles (which contain three-dimensional LUTs) might be confused with video card LUT[7] (calibration) curves (one-dimensional LUTs), but they're two different things. Both LUT[7]-based and matrix-based profiles may include calibration curves which can be loaded into a video card's gamma table hardware.

Advanced gamut mapping options (enable “Show advanced options” in the “Options” menu)

  You can choose any of the following options after selecting a LUT profile type and clicking “Advanced...”. Note: The options “Low quality PCS[11]-to-device tables” and “Enhance effective resolution of colorimetric PCS[11]-to-device table” are mutually exclusive.

  #### Low quality PCS[11]-to-device tables

  Choose this option if the profile is only going to be used with inverse device-to-PCS[11] gamut mapping to create a DeviceLink or 3D LUT (dispcalGUI always uses inverse device-to-PCS[11] gamut mapping when creating a DeviceLink/3D LUT). This will reduce the processing time needed to create the PCS[11]-to-device tables. Don't choose this option if you want to install or otherwise use the profile.

  #### Enhance effective resolution of colorimetric PCS[11]-to-device table

  To use this option, you have to select a XYZ LUT profile type. This option increases the effective resolution of the PCS[11] to device colorimetric color lookup table by using a matrix to fill the whole grid with the values obtained by inverting the device-to-PCS[11] table, as well as optionally applies smoothing. If no CIECAM02 gamut mapping has been enabled for the perceptual intent, a simple but effective perceptual table (which is almost identical to the colorimetric table, but maps the black point to zero) will also be generated.

  You can also set the interpolated lookup table size. The default 33x33x33 resulution will provide a good balance between smoothness and accuracy. Lowering the resolution can increase smoothness (at the potential expense of some accuracy), while increasing resolution may make the resulting profile potentially more accurate (at the expense of some smoothness). Note that computation will need a lot of memory (>= 4 GB of RAM recommended to prevent swapping to harddisk) especially at higher resolutions.

  See below example images for the result you can expect, where the original image has been converted from sRGB to the display profile. Note though that the particular synthetic image chosen, a “granger rainbow”, exaggerates banding, real-world material is much less likely to show this. Also note that the sRGB blue in the image is actually out of gamut for the specific display used, and the edges visible in the blue gradient for the rendering are a result of the color being out of gamut, and the gamut mapping thus hitting the less smooth gamut boundaries.

  Original “granger rainbow” image

  Default colorimetric rendering (2500 OFPS XYZ LUT profile)

  “Smooth” colorimetric rendering (2500 OFPS XYZ LUT profile, inverted A2B)

  “Smooth” perceptual rendering (2500 OFPS XYZ LUT profile, inverted A2B)

  #### Default rendering intent for profile

  Sets the default rendering intent. In theory applications could use this, in practice they don't, so changing this setting probably won't have any effect whatsoever.

  #### CIECAM02 gamut mapping

  Normally, profiles created by dispcalGUI only incorporate the colorimetric rendering intent, which means colors outside the display's gamut will be clipped to the next in-gamut color. LUT-type profiles can also have gamut mapping by implementing perceptual and/or saturation rendering intents. You can choose if and which of those you want by specifying a source profile and marking the appropriate checkboxes. Note that a input, output, display or device colororspace profile should be specified as source, not a non-device colorspace, device link, abstract or named color profile. You can also choose viewing conditions which describe the intended use of both the source and the display profile that is to be generated. An appropriate source viewing condition is chosen automatically based on the source profile type.

  An explanation of the available rendering intents can be found in the 3D LUT section “Rendering intent”.

  For more information on why a source gamut is needed, see “About ICC profiles and Gamut Mapping” in the Argyll CMS documentation.

  One strategy for getting the best perceptual results with display profiles is as follows: Select a CMYK profile as source for gamut mapping. Then, when converting from another RGB profile to the display profile, use relative colorimetric intent, and if converting from a CMYK profile, use the perceptual intent.
  Another approach which especially helps limited-gamut displays is to choose one of the larger (gamut-wise) source profiles you usually work with for gamut mapping, and then always use perceptual intent when converting to the display profile.

  Please note that not all applications support setting a rendering intent for display profiles and might default to colorimetric (e.g. Photoshop normally uses relative colorimetric with black point compensation, but can use different intents via custom soft proofing settings).

Testchart file
  You can choose the test patches used when profiling the display here. The default ones are automatically chosen based on profile quality and type, but you can also use and create your own using the built-in testchart editor (click on the colored patches next to the testchart file selector or choose “Edit testchart...” from the “File” menu to launch it).
Testchart editor

  The provided default testcharts should work well in most situations, but allowing you to create custom charts ensures maximum flexibility when characterizing a display and can improve profiling accuracy and efficiency. See also optimizing testcharts.

  #### Testchart generation options

  You can enter the amount of patches to be generated for each patch type (white, black, gray, single channel, iterative and multidimensional cube steps). The iterative algorythm can be tuned if more than zero patches are to be generated. What follows is a quick description of the several available iterative algorythms, with “device space” meaning in this case RGB coordinates, and “perceptual space” meaning the (assumed) XYZ numbers of those RGB coordinates. The assumed XYZ numbers can be influenced by providing a previous profile, thus allowing optimized test point placement.

  - Optimized Farthest Point Sampling (OFPS) will optimize the point locations to minimize the distance from any point in device space to the nearest sample point
  - Incremental Far Point Distribution incrementally searches for test points that are as far away as possible from any existing points
  - Device space random chooses test points with an even random distribution in device space
  - Perceptual space random chooses test points with an even random distribution in perceptual space
  - Device space filling quasi-random chooses test points with a quasi-random, space filling distribution in device space
  - Perceptual space filling quasi-random chooses test points with a quasi-random, space filling distribution in perceptual space
  - Device space body centered cubic grid chooses test points with body centered cubic distribution in device space
  - Perceptual space body centered cubic grid chooses test points with body centered cubic distribution in perceptual space

  You can set the degree of adaptation to the known device characteristics used by the default full spread OFPS algorithm. A preconditioning profile should be provided if adaptation is set above a low level. By default the adaptation is 10% (low), and should be set to 100% (maximum) if a profile is provided. But, if for instance, the preconditioning profile doesn't represent the device behavior very well, a lower adaption than 100% might be appropriate.

  For the body centered grid distributions, the angle parameter sets the overall angle that the grid distribution has.

  The “Gamma” parameter sets a power-like (to avoid the excessive compression that a real power function would apply) value applied to all of the device values after they are generated. A value greater than 1.0 will cause a tighter spacing of test values near device value 0.0, while a value less than 1.0 will cause a tighter spacing near device value 1.0. Note that the device model used to create the expected patch values will not take into account the applied power, nor will the more complex full spread algorithms correctly take into account the power.

  The neutral axis emphasis parameter allows changing the degree to which the patch distribution should emphasise the neutral axis. Since the neutral axis is regarded as the most visually critical area of the color space, it can help maximize the quality of the resulting profile to place more measurement patches in this region. This emphasis is only effective for perceptual patch distributions, and for the default OFPS distribution if the adaptation parameter is set to a high value. It is also most effective when a preconditioning profile is provided, since this is the only way that neutral can be determined. The default value of 50% provides an effect about twice the emphasis of the CIE94 Delta E formula.

  The dark region emphasis parameter allows changing the degree to which the patch distribution should emphasis dark region of the device response. Display devices used for video or film reproduction are typically viewed in dark viewing environments with no strong white reference, and typically employ a range of brightness levels in different scenes. This often means that the devices dark region response is of particular importance, so increasing the relative number of sample points in the dark region may improve the balance of accuracy of the resulting profile for video or film reproduction. This emphasis is only effective for perceptual patch distributions where a preconditioning profile is provided. The default value of 0% provides no emphasis of the dark regions. A value somewhere around 15% - 30% is a good place to start for video profile use. A scaled down version of this parameter will be passed on to the profiler. Note that increasing the proportion of dark patches will typically lengthen the time that an instrument takes to read the whole chart. Emphasizing the dark region characterization will reduce the accuracy of measuring and modelling the lighter regions, given a fixed number of test points and profile quality/grid resolution. The parameter will also be used in an analogous way to the “Gamma” value in changing the distribution of single channel, grayscale and multidimensional steps.

  The “Limit samples to sphere” option is used to define an L*a*b* sphere to filter the test points through. Only test points within the sphere (defined by it's center and radius) will be in the generated testchart. This can be good for targeting supplemental test points at a troublesome area of a device. The accuracy of the L*a*b* target will be best when a reasonably accurate preconditioning profile for the device is chosen. Note that the actual number of points generated can be hard to predict, and will depend on the type of generation used. If the OFPS, device and perceptual space random and device space filling quasi-random methods are used, then the target number of points will be achieved. All other means of generating points will generate a smaller number of test points than expected. For this reason, the device space filling quasi-random method is probably the easiest to use.

  #### Generating diagnostic 3D views of testcharts

  You can generate 3D views in several formats. The default HTML format should be viewable in a modern WebGL-enabled browser. You can choose the colorspace(s) you want to view the results in and also control whether to use RGB black offset (which will lighten up dark colors so they are better visible) and whether you want white to be neutral. All of these options are purely visual and will not influence the actual test patches.

  #### Other functions

  If generating any number of iterative patches as well as single channel, gray or multidimensional patches, you can add the single channel, gray and multidimensional patches in a separate step by holding the shift key while clicking on “Create testchart”. This prevents those patches affecting the iterative patch distribution, with the drawback of making the patch distribution less even. This is an experimental feature.

  You are also able to:

  - Export patches as CSV, TIFF, PNG or DPX files, and set how often each patch should be repeated when exporting as images after you click the “Export” button (black patches will be repeated according to the “Max” value, and white patches according to the “Min” value, and patches in between according to their lightness in L* scaled to a value between “Min” and “Max”).
  - Add saturation sweeps which are often used in a video or film context to check color saturation. A preconditioning profile needs to be used to enable this.
  - Add reference patches from measurement files in CGATS format, from named color ICC profiles, or by analyzing TIFF, JPEG or PNG images. A preconditioning profile needs to be used to enable this.
  - Sort patches by various color criteria (warning: this will interfere with the Argyll CMS 1.6.0 or newer patch order optimisation which minimizes measurement times, so manual sorting should only be used for visual inspection of testcharts, or if required to optimize the patch order for untethered measurements in automatic mode where it is useful to maximize the lightness difference from patch to patch so the automatism has an easier time detecting changes).

  #### Patch editor

  Controls for the spreadsheet-like patch editor are as follows:

  - To select patches, click and drag the mouse over table cells, or hold SHIFT (select range) or CTRL/CMD (add/remove single cells/rows to/from selection)
  - To add a patch below an existing one, double-click a row label
  - To delete patches, select them, then hold CTRL (Linux, Windows) or CMD (Mac OS X) and hit DEL or BACKSPACE (will always delete whole rows even if only single cells are selected)
  - CTRL-C/CTRL-V/CTRL-A = copy/paste/select all

  If you want to insert a certain amount of patches generated in a spreadsheet application (as RGB coordinates in the range 0.0-100.0 per channel), the easiest way to do this is to save them as CSV file and drag & drop it on the testchart editor window to import it.

Profile name

  As long as you do not enter your own text here, the profile name is auto generated from the chosen calibration and profiling options. The current auto naming mechanism creates quite verbose names which are not necessarily nice to read, but they can help in identifying the profile.
  Also note that the profile name is not only used for the resulting profile, but for all intermediate files as well (filename extensions are added automatically) and all files are stored in a folder of that name. You can choose where this folder is created by clicking the disk icon next to the field (it defaults to your system's default location for user data).

  Here's an example under Linux, on other platforms some file extensions and the location of the home directory will differ. See User data and configuration file locations. You can mouse over the filenames to get a tooltip with a short description what the file is for:

  Chosen profile save path: `~/.local/share/dispcalGUI/storage`

  Profile name: `mydisplay`

  The following folder will be created: `~/.local/share/dispcalGUI/storage/mydisplay`

  During calibration & profiling the following files will be created:

  `~/.local/share/dispcalGUI/storage/mydisplay/mydisplay vs ClayRGB1998.log
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay vs ClayRGB1998.wrz
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay vs sRGB.log
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay vs sRGB.wrz
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.cal
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.gam.gz
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.icc
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.log
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.ti1
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.ti3
  ~/.local/share/dispcalGUI/storage/mydisplay/mydisplay.wrz`

  Any used colorimeter correction file will also be copied to the profile folder.

### Calibrating / profiling

If you are unclear about the difference between calibration and profiling (also called characterization), see “Calibration vs. Characterization” in the Argyll CMS documentation.

Please let the screen stabilize for at least half an hour after powering it up before doing any measurements or assessing its color properties. The screen can be used normally with other applications during that time.

After you have set your options, click on the button at the bottom to start the actual calibration/profiling process. The main window will hide during measurements, and should pop up again after they are completed (or after an error). You can always cancel out of running measurements using the “Cancel” button in the progress dialog, or by pressing ESC or Q. Viewing the informational log window (from the “Tools” menu) after measurements will give you access to the raw output of the Argyll CMS commandline tools and other verbose information.

#### Adjusting a display before calibration

If you clicked “Calibrate” or “Calibrate & profile” and have not turned off “Interactive display adjustment”, you will be presented with the interactive display adjustment window which contains several options to help you bring a display's characteristics closer to the chosen target values. Depending on wheter you have a “Refresh”- or LCD-type display, I will try to give some recommendations here which options to adjust, and which to skip.

##### Adjusting a LCD display

For LCD displays, you will in most cases only want to adjust white point (if the screen has RGB gain or other whitepoint controls) and white level (with the white level also affecting the black level unless you have a local dimming LED model), as many LCDs lack the necessary “offset” controls to adjust the black point (and even if they happen to have them, they often change the overall color temperature, not only the black point). Also note that for most LCD screens, you should leave the “contrast” control at (factory) default.

White point
  If your screen has RGB gain, colortemperature or other whitepoint controls, the first step should be adjusting the whitepoint. Note that you may also benefit from this adjustment if you have set the target whitepoint to “native”, as it will allow you to bring it closer to the daylight or blackbody locus, which can help the human visual system to better adapt to the whitepoint. Look at the bars shown during the measurements to adjust RGB gains and minimize the delta E to the target whitepoint.
White level
  Continue with the white level adjustment. If you have set a target white level, you may reduce or increase the brightness of your screen (ideally using only the backlight) until the desired value is reached (i.e. the bar ends at the marked center position). If you haven't set a target, simply adjust the screen to a visually pleasing brightness that doesn't cause eye strain.

##### Adjusting a “Refresh”-type display like CRT or Plasma

Black level
  On “Refresh”-type displays, this adjustment is usually done using the “brightness” control. You may reduce or increase the brightness of your screen until the desired black level is reached (i.e. the bar ends at the marked center position).
White point
  The next step should be adjusting the whitepoint, using the display's RGB gain controls or other means of adjusting the whitepoint. Note that you may also benefit from this adjustment if you have set the target whitepoint to “native”, as it will allow you to bring it closer to the daylight or blackbody locus, which can help the human visual system to better adapt to the whitepoint. Look at the bars shown during the measurements to adjust RGB gains and minimize the delta E to the target whitepoint.
White level
  Continue with the white level adjustment. On “Refresh”-type displays this is usually done using the “contrast” control. If you have set a target white level, you may reduce or increase contrast until the desired value is reached (i.e. the bar ends at the marked center position). If you haven't set a target, simply adjust the screen to a visually pleasing level that doesn't cause eye strain.
Black point
  If your display has RGB offset controls, you can adjust the black point as well, in much the same way that you adjusted the whitepoint.

##### Finishing adjustments and starting calibration/characterization

After the adjustments, you can run a check on all the settings by choosing the last option from the left-hand menu to verify the achieved values. If adjusting one setting adversely affected another, you can then simply repeat the respective option as necessary until the target parameters are met.

Finally, select “Continue on to calibration/profiling” to start the non-interactive part. You may want to get a coffee or two as the process can take a fair amount of time, especially if you selected a high quality level. If you only wanted help to adjust the display and don't want/need calibration curves to be created, you can also choose to exit by closing the interactive display adjustment window and then select “Profile only” from the main window.
If you originally selected “Calibrate & profile” and fulfil the requirements for unattended calibration & profiling, the characterization measurements for the profiling process should start automatically after calibration is finished. Otherwise, you may be forced to take the instrument off the screen to do a sensor self-calibration before starting the profiling measurements.

##### Optimizing testcharts for improved profiling accuracy and efficiency

The easiest way to use an optimized testchart for profiling is to set the testchart to “Auto” and adjusting the patch amount slider to the desired number of test patches. Optimization will happen automatically as part of the profiling measurements (this will increase measurement and processing times by a certain degree).
Alternatively, if you want to do generate an optimized chart manually prior to a new profiling run, you could go about this in the following way:

- Have a previous display profile and select it under “Settings”.
- Select one of the optimized testcharts (“optimized for ...”) of the desired size to use as base and bring up the testchart editor.
- Next to “Preconditioning profile” click on “current profile”. It should automatically select the previous profile you've chosen. Then place a check in the checkbox. Make sure adaptation is set to a high level (e.g. 100%)
- If desired, adjust the number of patches and make sure the iterative patches amount is not zero.
- Create the chart and save it. Click “yes” when asked to select the newly generated chart.
- Start the profiling measurements (e.g. click “calibrate & profile” or “profile only”).

#### Profile installation

When installing a profile after creating or updating it, a startup item to load its calibration curves automatically on login will be created (on Windows and Linux, Mac OS X does not need a loader). You may also prevent this loader from doing anything by removing the check in the “Load calibration curves on Login” checkbox in the profile installation dialog, and in case you are using Windows 7 or later, you may let the operating system handle calibration loading instead (note that the Windows 7 internal calibration loader does not offer the same high quality, due to wrong scaling and quantization, as the dispcalGUI/Argyll CMS loader).

### Creating 3D LUTs

You can create display correction RGB-in/RGB-out 3D LUTs for use in video playback or editing applications/devices that don't have ICC support as part of the profiling process.

#### 3D LUT settings

Create 3D LUT after profiling
  Normally after profiling, you'll be given the option to install the profile to make it available for ICC color managed applications. If this box is checked, you'll have the option to generate a 3D LUT (with the chosen settings) instead, and the 3D LUT settings will also be stored inside the profile, so that they can be easily restored by selecting the profile under “Settings” if needed.
Source colorspace/source profile
  This sets the source colorspace for the 3D LUT, which is normally a video standard space like defined by Rec. 709 or Rec. 2020.
Tone curve
  This allows to set a predefined or custom tone response curve for the 3D LUT. Predefined settings are Rec. 1886 (input offset) and Gamma 2.2 (output offset, pure power).
Gamut mapping mode (only visible if “Show advanced options” in the “Options” menu is enabled)
  The default gamut mapping mode is “Inverse device to PCS” and gives the most accurate results. In case a profile with high enough PCS-to-device tables is used, the option “PCS-to-device” is selectable as well, which allows for quicker generation of a 3D LUT, but is somewhat less accurate.
Rendering intent
  - “Absolute colorimetric” is intended to reproduce colors exactly. Out of gamut colors will be clipped to the closest possible match. The destination whitepoint will be altered to match the source whitepoint if possible, which may get clipped if it is out of gamut.
  - “Absolute appearance” maps colors from source to destination, trying to match the appearance of colors as closely as possible, but may not exactly map the whitepoint. Out of gamut colors will be clipped to the closest possible match.
  - “Absolute colorimetric with white point scaling” behaves almost exactly like “Absolute colorimetric”, but will scale the source colorspace down to make sure the source whitepoint isn't clipped.
  - “Luminance matched appearance” linearly compresses or expands the luminance axis from white to black to match the source to the destination space, while not otherwise altering the gamut, clipping any out of gamut colors to the closest match. The destination whitepoint is not altered to match the source whitepoint.
  - “Perceptual” uses three-dimensional compression to make the source gamut fit within the destination gamut. As much as possible, clipping is avoided, hues and the overall appearance is maintained. The destination whitepoint is not altered to match the source whitepoint. This intent is useful if the destination gamut is smaller than the source gamut.
  - “Perceptual appearance” uses three-dimensional compression to make the source gamut fit within the destination gamut. As much as possible, clipping is avoided, hues and the overall appearance is maintained. The destination whitepoint is altered to match the source whitepoint. This intent is useful if the destination gamut is smaller than the source gamut.
  - “Preserve saturation” uses three-dimensional compression and expansion to try and make the source gamut match the destination gamut, and also favours higher saturation over hue or lightness preservation. The destination whitepoint is not altered to match the source whitepoint.
  - “Relative colorimetric” is intended to reproduce colors exactly, but relative to the destination whitepoint which will not be altered to match the source whitepoint. Out of gamut colors will be clipped to the closest possible match. This intent is useful if you have calibrated a display to a custom whitepoint that you want to keep.
  - “Saturation” uses the same basic gamut mapping as “Preserve saturation”, but increases saturation slightly in highly saturated areas of the gamut.
3D LUT file format
  Sets the output format for the 3D LUT. Currently supported are Autodesk/Kodak (`.3dl`), Iridas (`.cube`), eeColor (`.txt`), madVR (`.3dlut`), Pandora (`.mga`) and Sony Imageworks (`.spi3d`). Note that an ICC device link profile (the ICC equivalent of an RGB-in/RGB-out 3D LUT) is always created as well.
Input/output encoding
  Some 3D LUT formats allow you to set the input/output encoding. Note that in most cases, sensible defaults will be chosen depending on selected 3D LUT format, but may be application- or workflow-specific.

### Verification / measurement report

You can do verification measurements to assess the display chain's (display profile - video card and the calibration curves in its gamma table - monitor) fit to the measured data, or to find out about the soft proofing capabilities of the display chain.

To do the former, you have to select a CGATS[1] testchart file containing device values (RGB). The measured values are then compared to the values obtained by feeding the device RGB numbers through the display profile (measured vs expected values). The default verification chart contains 26 patches and can be used, for example, to check if a display needs to be re-profiled. If a RGB testchart with gray patches (R=G=B) is measured, like the default and extended verification charts, you also have the option to evaluate the graybalance through the calibration only, by placing a check in the corresponding box on the report.

To perform a check on the soft proofing capabilities, you have to provide a CGATS reference file containing XYZ or L*a*b* data, or a combination of simulation profile and testchart file, which will be fed through the display profile to lookup corresponding device (RGB) values, and then be sent to the display and measured. Afterwards, the measured values are compared to the original XYZ or L*a*b* values, which can give a hint how suitable (or unsuitable) the display is for softproofing to the colorspace indicated by the reference.

The profile that is to be evaluated can be chosen freely. You can select it in dispcalGUI's main window under “settings”. The report files generated after the verification measurements are plain HTML with some embedded JavaScript, and are fully self-contained. They also contain the reference and measurement data, which consists of device RGB numbers, original measured XYZ values, and D50-adapted L*a*b* values computed from the XYZ numbers, and which can be examined as plain text directly from the report at the click of a button.

##### HowTo—Common scenarios

In all cases, make sure to select the profile you want to evaluate under “settings” (for evaluating 3D LUTs and DeviceLink profiles, this setting has only significance if a Rec. 1886 or custom gamma tone response curve was applied).

Also there are two sets of default verification charts in different sizes, one for general use and one for Rec. 709 video. The “small” and “extended” versions can be used for a quick to moderate check to see if a display should be re-profiled, or if the used profile/3D LUT is any good to begin with. The “large” and “xl” versions can be used for a more thorough check. Also, you can create your own customized verification charts with the testchart editor.

###### Checking the accuracy of a display profile (evaluating how well the profile characterizes the display)

In this case, you want to use a testchart with RGB device values and no simulation profile. Select a suitable file under “testchart or reference” and disable “simulation profile”. Other settings that do not apply in this case will be grayed out.

###### Checking how well a display can simulate another colorspace (evaluating softproofing capabilities, 3D LUTs, DeviceLink profiles, or native display performance)

There are two ways of doing this:

- Use a reference file with XYZ or L*a*b* aim values,
- or use a combination of testchart with RGB or CMYK device values and an RGB or CMYK simulation profile (for an RGB testchart, it will only allow you to use an RGB simulation profile and vice versa, and equally a CMYK testchart needs to be used with a CMYK simulation profile)

Then, you have a few options that influence the simulation.

- Whitepoint simulation. If you are using a reference file that contains device white (100% RGB or 0% CMYK), or if you use a combination of testchart and simulation profile, you can choose if you want whitepoint simulation of the reference or simulation profile, and if so, if you want the whitepoint simulated relative to the target profile whitepoint. To explain the latter option: Let's assume a reference has a whitepoint that is slightly blueish (compared to D50), and a target profile has a whitepoint that is more blueish (compared to D50). If you do not choose to simulate the reference white relative to the target profile whitepoint, and the target profile's gamut is large and accurate enough to accomodate the reference white, then that is exactly what you will get. Depending on the adaptation state of your eyes though, it may be reasonable to assume that you are to a large extent adapted to the target profile whitepoint (assuming it is valid for the device), and the simulated whitepoint will look a little yellowish compared to the target profile whitepoint. In this case, choosing to simulate the whitepoint relative to that of the target profile may give you a better visual match e.g. in a softproofing scenario where you compare to a hardcopy proof under a certain illuminant, that is close to but not quite D50, and the display whitepoint has been matched to that illuminant. It will “add” the simulated whitepoint “on top” of the target profile whitepoint, so in our example the simulated whitepoint will be even more blueish than that of the target profile alone.
- Using the simulation profile as target profile will override the profile set under “taget profile”. Whitepoint simulation does not apply here because color management will not be used and the display device is expected to be in the state described by the simulation profile. This may be accomplished in several ways, for example the display may be calibrated internally or externally, by a 3D LUT or device link profile. If this setting is enabled, a few other options will be available:
  - Enable madVR 3D LUT (if using the madVR display device/madTPG under Windows). This allows you to check how well a madVR 3D LUT transforms the simulation colorspace to the display colorspace. Note this setting can not be used together with a DeviceLink profile.
  - Apply tone response curve. If you are evaluating a 3D LUT or DeviceLink profile, choose the same settings here as during 3D LUT/DeviceLink creation (and also make sure the same target profile is set, because it is used to map the blackpoint).
  - DeviceLink profile. This allows you to check how well the DeviceLink transforms the simulation colorspace to the display colorspace. Note this setting can not be used together with the “Enable madVR 3D LUT” setting.

#### How were the nominal and recommended aim values chosen?

The nominal tolerances, with the whitepoint, average, maximum and gray balance Delta E CIE 1976 aim values stemming from UGRA/Fogra Media Wedge and UDACT, are pretty generous, so I've included somewhat stricter “recommended” numbers which I've chosen more or less arbitrarily to provide a bit “extra safety margin”.

For reports generated from reference files that contain CMYK numbers in addition to L*a*b* or XYZ values, you can also select the official Fogra Media Wedge V3 or IDEAlliance Control Strip aim values for paper white, CMYK solids and CMY grey, if the chart contains the right CMYK combinations.

#### How are the results of the profile verification report to be interpreted?

This depends on the chart that was measured. The explanation in the first paragraph sums it up pretty well: If you have calibrated and profiled your display, and want to check how well the profile fits a set of measurements (profile accuracy), or if you want to know if your display has drifted and needs to be re-calibrated/re-profiled, you select a chart containing RGB numbers for the verification. Note that directly after profiling, accuracy can be expected to be high if the profile characterizes the display well, which will usually be the case if the display behaviour is not very non-linear, in which case creating a LUT profile instead of a “Curves + matrix” one, or increasing the number of measured patches for LUT profiles, can help.

If you want to know how well your profile can simulate another colorspace (softproofing), select a reference file containing L*a*b* or XYZ values, like one of the Fogra Media Wedge subsets, or a combination of a simulation profile and testchart. Be warned though, only wide-gamut displays will handle a larger offset printing colorspace like FOGRA39 or similar well enough.

In both cases, you should check that atleast the nominal tolerances are not exceeded. For a bit “extra safety margin”, look at the recommended values instead.

Note that both tests are “closed-loop” and will not tell you an “absolute” truth in terms of “color quality” or “color accuracy” as they may not show if your instrument is faulty/measures wrong (a profile created from repeatable wrong measurements will usually still verify well against other wrong measurements from the same instrument if they don't fluctuate too much) or does not cope with your display well (which is especially true for colorimeters and wide-gamut screens, as such combinations need a correction in hardware or software to obtain accurate results—this problem does not exist with spectrometers, which do not need a correction for wide-gamut, but have lately been discovered to have issues measuring the correct brightness of some LED backlit displays which use white LEDs), or if colors on your screen match an actual colored object next to it (like a print). It is perfectly possible to obtain good verification results but the actual visual performance being sub-par. It is always wise to combine such measurements with a test of the actual visual appearance via a “known good” reference, like a print or proof (although it should not be forgotten that those also have tolerances, and illumination also plays a big role when assessing visual results). Keep all that in mind when admiring (or pulling your hair out over) verification results :)

#### How are profiles evaluated against the measured values?

Different softwares use different methods (which are not always disclosed in detail) to compare and evaluate measurements. This section aims to give interested users a better insight how dispcalGUI's profile verification feature works “under the hood”.

##### How is a testchart or reference file used?

There are currently two slightly different paths depending if a testchart or reference file is used for the verification measurements, as outlined above. In both cases, Argyll's xicclu utility is run behind the scenes and the values of the testchart or reference file are fed relative colorimetrically (if no whitepoint simualtion is used) or absolute colorimetrically (if whitepoint simulation is used) through the profile that is tested to obtain corresponding L*a*b* (in the case of RGB testcharts) or device RGB numbers (in the case of XYZ or L*a*b* reference files or a combination of simulation profile and testchart). If a combination of simulation profile and testchart is used as reference, the reference L*a*b* values are calculated by feeding the device numbers from the testchart through the simulation profile absolute colorimetrically if whitepoint simulation is enabled (which will be the default if the simulation profile is a printer profile) and relative colorimetrically if whitepoint simulation is disabled (which will be the default if the simulation profile is a display profile, like most RGB working spaces). Then, the original RGB values from the testchart, or the looked up RGB values for a reference are sent to the display through the calibration curves of the profile that is going to be evaluated. A reference white of D50 (ICC default) and complete chromatic adaption of the viewer to the display's whitepoint is assumed if “simulate whitepoint relative to target profile whitepoint” is used, so the measured XYZ values are adapted to D50 (with the measured whitepoint as source reference white) using the Bradford transform (see Chromatic Adaption on Bruce Lindbloom's website for the formula and matrix that is used by dispcalGUI) or with the adaption matrix from the profile in the case of profiles with 'chad' chromatic adaption tag, and converted to L*a*b*. The L*a*b* values are then compared by the generated dynamic report, with user-selectable critera and ΔE (delta E) formula.

##### How is the assumed vs. measured whitepoint ΔE calculated?

In a report, the correlated color temperature and assumed target whitepoint, as well as the whitepoint ΔE, do warrant some further explanations: The whitepoint ΔE is calculated as difference between the measured whitepoint's and the assumed target whitepoint's normalized XYZ values, which are first converted to L*a*b*. The assumed target whitepoint color temperature shown is simply the rounded correlated color temparature (100K threshold) calculated from the measured XYZ values. The XYZ values for the assumed target whitepoint are obtained by calculating the chromaticity (xy) coordinates of a CIE D (daylight) or blackbody illuminant of that color temperature and converting them to XYZ. You can find all the used formulas on Bruce Lindbloom's website and on Wikipedia.

##### How is the gray balance “range” evaluated?

The gray balance “range” uses a combined delta a/delta b absolute deviation (e.g. if max delta a = -0.5 and max delta b = 0.7, the range is 1.2). Because results in the extreme darks can be problematic due to lack of instrument accuracy and other effects like a black point which has a different chromaticity than the whitepoint, the gray balance check in dispcalGUI only takes into account gray patches with a minimum measured luminance of 1% (i.e. if the white luminance = 120 cd/m², then only patches with at least 1.2 cd/m² will be taken into account).

##### What does the “Evaluate gray balance through calibration only” checkbox on a report actually do?

It sets the nominal (target) L* value to the measured L* value and a*=b*=0, so the profile is effectively ignored and only the calibration (if any) will influence the results of the gray balance checks. Note that this option will not make a difference for a “Single curve + matrix” profile, as the single curve effectively already achieves a similar thing (the L* values can be different, but they are ignored for the gray balance checks and only influence the overall result).

### Special functionality

#### Remote measurements and profiling

When using Argyll CMS 1.4.0 and newer, remote measurements on a device not directly connected to the machine that is running dispcalGUI is possible (e.g. a smartphone or tablet). The remote device needs to be able to run a web browser (Firefox recommended), and the local machine running dispcalGUI may need firewall rules added or altered to allow incoming connections. To set up remote profiling, select “Web @ localhost” from the display device dropdown menu, then choose the desired action (e.g. “Profile only”). When the message “Webserver waiting at http://<IP>:<Port>” appears, open the shown address in the remote browser and attach the measurement device.
NOTE: If you use this method of displaying test patches, there is no access to the display video LUT[7]s and hardware calibration is not possible. The colors will be displayed with 8 bit per component precision, and any screen-saver or power-saver will not be automatically disabled. You will also be at the mercy of any color management applied by the web browser, and may have to carefully review and configure such color management.
NOTE: Close the web browser window or tab after each run, otherwise reconnection may fail upon further runs.

#### madVR test pattern generator

dispcalGUI supports the madVR test pattern generator (madTPG) and madVR 3D LUT formats since version 1.5.2.5 when used together with Argyll CMS 1.6.0 or newer.

#### Resolve (10.1+) as pattern generator

Since version 2.5, dispcalGUI can use Resolve (10.1+) as pattern generator. Select the “Resolve” entry from the display devices dropdown in dispcalGUI and in Resolve itself choose “Monitor calibration”, “CalMAN” in the “Color” menu.

#### Untethered display measurements

Untethered mode is another option to measure and profile a remote display that is not connected via standard means (calibration is not supported). To use untethered mode, the testchart that should be used needs to be optimized, then exported as image files (via the testchart editor) and those image files need to be displayed on the device that should be measured, in successive order. The procedure is as follows:

- Select the desired testchart, then open the testchart editor.
- Select “Optimize for untethered in auto mode” from the sorting options dropdown, click “Apply”, then export the testchart.
- Burn the images to a DVD, copy them on an USB stick or use any other available means to get them to display onto the device that should be measured.
- In dispcalGUI's display dropdown, select “Untethered” (the last option).
- Show the first image on the remote display, and attach the instrument. Then select “Profile only”.

Measurements will commence, and changes in the displayed image should be automatically detected if “auto” mode is enabled. Use whatever means available to you to cycle through the images from first to last, carefully monitoring the measurement process and only changing to the next image if the current one has been successfully measured (as will be shown in the untethered measurement window). Note that untethered mode will be (atleast) twice as slow as normal display measurements.

## Scripting

dispcalGUI supports scripting locally and over the network (the latter must be explicitly enabled by setting `app.allow_network_clients = 1` in dispcalGUI.ini) via sockets. dispcalGUI must be already running on the target machine for this to work. Below is an example connecting to a running instance on the default port `15411` and starting calibration measurements (the port is configurable in dispcalGUI.ini as `app.port`, although if the desired port is not available an unused one will be chosen automatically. You can read the actual used port from the file dispcalGUI.lock in the configuration file folder of dispcalGUI while it is running). The example is written in Python and deals with some of the intricacies of sockets as well.

    #!/usr/bin/env python2

    import socket

    class DCGScriptingClientSocket(socket.socket):

    	def __enter__(self):
    		return self

    	def __exit__(self, etype, value, tb):
    		# Disconnect
    		try:
    			# Will fail if the socket isn't connected, i.e. if there was an
    			# error during the call to connect()
    			self.shutdown(socket.SHUT_RDWR)
    		except socket.error:
    			pass
    		self.close()

    	def __init__(self):
    		socket.socket.__init__(self)
    		self.recv_buffer = ''

    	def get_single_response(self):
    		# Buffer received data until EOT (response end marker) and return
    		# single response (additional data will still be in the buffer)
    		while not '\4' in self.recv_buffer:
    			incoming = self.recv(4096)
    			if incoming == '':
    				raise socket.error("Connection broken")
    			self.recv_buffer += incoming
    		end = self.recv_buffer.find('\4')
    		single_response = self.recv_buffer[:end]
    		self.recv_buffer = self.recv_buffer[end + 1:]
    		return single_response

    	def send_and_check(self, command, expected_response="ok"):
    		""" Send command, get & check response """
    		self.send_command(command)
    		single_response = self.get_single_response()
    		if single_response != expected_response:
    			# Check application state. If a modal dialog is displayed, choose
    			# the OK option. Note that this is just an example and normally you
    			# should be very careful with this, as it could mean confirming a
    			# potentially destructive operation (e.g. discarding current
    			# settings, overwriting existing files etc).
    			self.send_command('getstate')
    			state = self.get_single_response()
    			if 'Dialog' in state.split()[0]:
    				self.send_command('ok')
    				if self.get_single_response() == expected_response:
    					return
    			raise RuntimeError('%r got unexpected response: %r != %r' %
    							   (command, single_response, expected_response))

    	def send_command(self, command):
    		# Automatically append newline (command end marker)
    		self.sendall(command + '\n')

    # Generate a list of commands we want to execute in order
    commands = []

    # Load “Laptop” preset
    commands.append('load presets/laptop.icc')

    # Setup calibration & profiling measurements
    commands.append('calibrate-profile')

    # Start actual measurements
    commands.append('measure')

    # Create socket & send commands
    with DCGScriptingClientSocket() as client:
    	client.settimeout(3)  # Set a timeout of 3 seconds

    	# Open connection
    	client.connect(('127.0.0.1', 15411))  # Default port

    	for command in commands:
    		client.send_and_check(command)

Each command needs to be terminated with a newline character (after any arguments the command may accept). Note that data sent must be UTF-8 encoded, and if arguments contain spaces they should be encased in double or single quotes. You should check the response for each command sent (the response end marker is ASCII 0x4 EOT, and the default response format is a plain text format, but JSON and XML are also available). The common return values for commands are either `ok` in case the command was understood (note that this does not indicate if the command finished processing), `busy` or `blocked` in case the command was ignored because another operation was running or a modal dialog blocks the UI, `failed` in case the command or an argument could not be processed successfully, `forbidden` in case the command was not allowed (this may be a temporary condition depending on the circumstances, e.g. when trying to interact with an UI element that is currently disabled), `invalid` in case the command (or one of its arguments) was invalid, or `error` followed by an error message in case of an unhandled exception. Other return values are possible depending on the command. All values returned are UTF-8 encoded. If the return value is `blocked` (e.g. because a modal dialog is displayed) you should check the application state with the `getstate` command to determine the further course of action.

### List of supported commands

Below is a list of the currently supported commands (the list contains all valid commands for the main application, the standalone tools will typically just support a smaller subset. You can use the “dispcalGUI Scripting Client” standalone tool to learn about and experiment with commands). Note that filename arguments must refer to files present on the target machine running dispcalGUI.

`3DLUT-maker [create filename]`
  Show 3D LUT creation tab, or create 3D LUT `filename`.
`abort`
  Try to abort a currently running operation.
`activate [window ID | name | label]`
  Activate window `window` or the main application window (bring it to the front). If it is minimized, restore it.
`alt | cancel | ok [filename]`
  If a modal dialog is shown, call the default action (ok), the alternate action (if applicable), or cancel it. If a file dialog is shown, using `ok filename` chooses that file.
`calibrate`
  Setup calibration measurements (note that this won't give a choice whether to create a fast curves + matrix profile as well, if you want that use `interact mainframe calibrate_btn` instead). For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`calibrate-profile`
  Setup calibration & profiling measurements. For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`close [window ID | name | label]`
  Close window `window` or the current active window (if the window is the main window, this quits the application). Note that this tries to abort any running operations first, so you may want to check application state via the `getstate` command.
`create-colorimeter-correction`
  Create colorimeter correction.
`create-profile [filename]`
  Create profile from existing measurements (profile or measurement file).
`curve-viewer [filename]`
  Show curves, optionally loading `filename`. Relative paths are possible e.g. for presets: `curve-viewer presets/photo.icc`
`dispcalGUI [filename]`
  Bring the main window to the front. If it is minimized, restore it. Optionally, load `filename`.
`enable-spyder2`
  Enable the spyder 2.
`getactivewindow`
  Get the current active window. The returned format is `classname` `ID` `name` `label` `state`. `state` is either `enabled` or `disabled`.
`getcellvalues [window ID | name | label] <grid ID | name | label>`
  Get cell values from grid `grid` of window `window` or the current active window.
`getappname`
  Get the name of the application you're connected to.
`getcfg [option]`
  Get configuration `option`, or whole configuration (key-value pairs in INI format).
`getcommands`
  Get list of commands supported by this application.
`getdefault <option>`
  Get default `option` (key-value pair in INI format).
`getdefaults`
  Get all defaults (key-value pairs in INI format).
`getmenus`
  Get available menus in the format `ID "label" state`. `state` is either `enabled` or `disabled`.
`getmenuitems [menuposition | label]`
  Get available menu items in the format `menuposition` `"menulabel"` `menuitemID` `"menuitemlabel"` `state` `[checkable]` `[checked]`. `state` is either `enabled` or `disabled`.
`getstate`
  Get application state. Return value will be either `idle`, `busy`, `dialogclassname` `ID` `dialogname` `[dialoglabel]` `state` `"messagetext"` `[path "path"]` `[buttons "buttonlabel"...]` if a modal dialog is shown or `blocked` in case the UI is currently blocked. Most commands will not work if the UI is blocked—the only way to resolve the block is to non-programmatically interact with the actual UI elements of the application or closing it. Note that a state of `blocked` should normally only occur if an actual file dialog is shown. If using the scripting interface exclusively, this should never happen because it uses a replacement file dialog that supports the same actions as a real file dialog, but doesn't block. Also note that a return value of `blocked` for any of the other commands just means that a modal dialog is currently waiting to be interacted with, only if `getstate` also returns `blocked` you cannot resolve the situation with scripting alone.
`getuielement [window ID | name | label] <element ID | name | label>`
`getuielements [window ID | name | label]`
  Get a single UI element or a list of the visible UI elements of window `window` or the current active window. Each returned line represents an UI element and has the format `classname` `ID` `name` `["label"]` `state` `[checked]` `[value "value"]` `[items "item"...]`. `classname` is the internal UI library class name. It can help you determine what type of UI element it is, and which interactions it supports. `ID` is a numeric identifier. `name` is the name of the UI element. `"label"` (if present) is a label which further helps in identifying the UI element. You can use the latter three with the `interact` command. `state` is either `enabled` or `disabled`. `items "item"...` (if present) is a list of items connected to the UI element (i.e. selection choices).
`getvalid`
  Get valid values for options that have constraints (key-value pairs in INI format). There are two sections, `ranges` and `values`. `ranges` are the valid ranges for options that accept numeric values (note that integer options not covered by `ranges` are typically boolean types). `values` are the valid values for options that only accept certain values. Options not covered by `ranges` and `values` are limited to their data type (you can't set a numeric option to a string and vice versa).
`getwindows`
  Get a list of visible windows. The returned format is a list of `classname` `ID` `name` `label` `state`. `state` is either `enabled` or `disabled`.
`import-colorimeter-corrections [filename...]`
  Import colorimeter corrections.
`install-profile [filename]`
  Install a profile.
`interact [window ID | name | label] <element ID | name | label> [setvalue value]`
  Interact with the UI element `element` of window `window` or the current active window, e.g. invoke a button or set a control to a value.
`invokemenu <menuposition | menulabel> <menuitemID | menuitemlabel>`
  Invoke a menu item.
`load <filename>`
  Load `filename`. Relative paths are possible e.g. for presets: `load presets/photo.icc`
`measure`
  Start measurements (must be setup first!).
`measure-uniformity`
  Measure screen uniformity.
`measurement-report [filename]`
  If no filename given, show measurement report tab. Otherwise, setup measurement to create the HTML report `filename`. For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`profile`
  Setup profiling measurements (note that this will always use the current calibration if applicable, if you want to use linear calibration instead call `load linear.cal` prior to calling `profile`). For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`profile-info [filename]`
  Show profile information, optionally loading profile `filename`. Relative paths are possible e.g. for presets: `profile-info presets/photo.icc`
`refresh`
  Update the GUI after configuration changes via `setcfg` or `restore-defaults`.
`report-calibrated`
  Report on calibrated display. For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`report-uncalibrated`
  Report on uncalibrated display. For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.
`restore-defaults [category...]`
  Restore defaults globally or just for `category`. Call `refresh` after changing the configuration to update the GUI.
`setlanguage <languagecode>`
  Set language.
`setcfg <option> <value>`
  Set configuration `option` to `value`. The special value `null` clears a configuration option. Call `refresh` after changing the configuration to update the GUI. Also see `getdefaults` and `getvalid`.
`setresponseformat <format>`
  Set the format for responses. The default `plain` is a text format that is easy to read, but not necessarily the best for parsing programmatically. The other possible formats are `json`, `json.pretty`, `xml` and `xml.pretty`. The `*.pretty` formats use newlines and indentation to make them easier to read.
`synthprofile [filename]`
  Show synthetic profile creation window, optionally loading profile `filename`.
`testchart-editor [filename | create filename]`
  Show testchart editor window, optionally loading or creating testchart `filename`. Relative paths are possible e.g. for loading a default testchart: `testchart-editor ti1/d3-e4-s17-g49-m5-b5-f0.ti1`
`verify-calibration`
  Verify calibration. For non-virtual displays as well as pattern generators (except madVR), call the `measure` command afterwards to commence measurements.

### Interacting with UI elements

- Invoking a button: `interact [window] <button>` e.g. show profile name placeholders information: `interact mainframe profile_name_info_btn`
- Setting a value on a dropdown, text field, or slider: `interact [window] <element> setvalue "value"` e.g. set calibration gamma to 2.4: `interact mainframe trc_textctrl setvalue 2.4` (note that for changing multiple options at once it is generally preferable to call `setcfg <option> <value>` for each option you want to set followed by a single `refresh` instead)
- Setting a cell value on a grid: `interact [window] <grid> setvalue "row,col,value"` e.g. while the testchart editor is shown, set the cell at the second column of the first row to 33: `interact tcgen grid setvalue "0,1,33"`

### Caveats and limitations

There are a few things to be aware of when using commands that interact with the UI directly (i.e. `activate`, `alt | cancel | ok`, `close`, `interact` and `invokemenu`).

Referring to windows and UI elements: You can refer to windows and UI elements by their ID, name or label (you can find out about windows and UI elements with the `getmenus`/`getmenuitems`, `getuielement`/`getuielements`, and `getwindows` commands). If an object's ID is negative, it means that it has been automatically assigned at object creation time and is only valid during the lifetime of the object (i.e. for modal dialogs, only while the dialog is displayed). For this reason, using an object's name instead is easier, but names (aswell as non automatically assigned IDs) are not guaranteed to be unique, even for objects which share the same parent window (although most of the “important” controls as well as application windows will have unique names). Another possibility is to use an object's label, which while also not guaranteed to be unique, still has a fairly high likelihood of being unique for controls that share the same parent window, but has the drawback that it is localized (although you can ensure a specific UI language by calling `setlanguage`) and is subject to change when the localization is updated.

Sequential operations: Calling commands that interact with the UI in rapid succession may require the use of additional delays between sending commands to allow the GUI to react (so `getstate` will return the actual UI state after a specific command), although there is a default delay for commands that interact with the UI of atleast 55 ms. A good rule of thumb for sending commands is to use a “send command” → “read response” → “optionally wait a few extra ms” → “get application state (send `getstate` command)” → “read response” cycle.

Setting values: If setting a value on an UI element returns `ok`, this is not always an indication that the value was actually changed, but only that the attempt to set the value has not failed, i.e. the event handler of the element may still do error checking and change the value to something sane if it was not valid. If you want to make sure that the intended value is set, use `getuielement` on the affected element(s) and check the value (or even better, if you use JSON or XML response format, you can check the `object` property/element of the response instead which will reflect the object's current state and saves you one request). In general it is preferable to use `interact <elementname> setvalue <value>` only on dialogs, and in all other cases use a sequence of `setcfg <option> <value>` (repeat as necessary, optionally call `load <filename>` or `restore-defaults` first to minimize the amount of configuration options that you need to change) followed by a call to `refresh` to update the UI.

Also, not all controls may offer a comprehensive scripting interface. I'm open to suggestions though.

## User data and configuration file locations

dispcalGUI uses the following folders for configuration, logfiles and storage (the storage directory is configurable).

### Configuration

- Linux: `/home/Your Username/.config/dispcalGUI`
- Mac OS X: `/Users/Your Username/Library/Preferences/dispcalGUI`
- Windows Vista and newer: `C:\Users\Your Username\AppData\Roaming\dispcalGUI`
- Windows XP: `C:\Documents and Settings\Your Username\Application Data\dispcalGUI`

### Logs

- Linux: `/home/Your Username/.local/share/dispcalGUI/logs`
- Mac OS X: `/Users/Your Username/Library/Logs/dispcalGUI` and
  `/Users/Your Username/Library/Logs/0install`
- Windows Vista and newer: `C:\Users\Your Username\AppData\Roaming\dispcalGUI\logs`
- Windows XP: `C:\Documents and Settings\Your Username\Application Data\dispcalGUI\logs`

### Storage

- Linux: `/home/Your Username/.local/share/dispcalGUI/storage`
- Mac OS X: `/Users/Your Username/Library/Application Support/dispcalGUI/storage`
- Windows Vista and newer: `C:\Users\Your Username\AppData\Roaming\dispcalGUI\storage`
- Windows XP: `C:\Documents and Settings\Your Username\Application Data\dispcalGUI\storage`

### Incomplete/failed runs (useful for troubleshooting)

- Linux: `/home/Your Username/.local/share/dispcalGUI/incomplete`
- Mac OS X: `/Users/Your Username/Library/Application Support/dispcalGUI/incomplete`
- Windows Vista and newer: `C:\Users\Your Username\AppData\Roaming\dispcalGUI\incomplete`
- Windows XP: `C:\Documents and Settings\Your Username\Application Data\dispcalGUI\incomplete`

## Known issues and solutions

- General: Wacky image colors (swapped colors)
- General: Measurements are failing if using the “Allow skipping of spectrometer self-calibration” option and/or highres/adaptive mode
- MS Windows/madVR: “The process <dispcal.exe|dispread.exe> has stopped working” / “Calibration / profiling has not been finished”
- Windows: “The process <dispcal.exe|dispread.exe|coloprof.exe|...> could not be started.”
- Photoshop: “The monitor profile […] appears to be defective. Please rerun your monitor calibration software.”
- MS Windows Vista: The calibration gets unloaded when a User Access Control prompt is shown
- MS Windows with Intel graphics: The Calibration gets unloaded after login/resume/User Access Control prompt
- MS Windows Vista and 7: The display profile isn't used if it was installed for the current user
- MS Windows Vista and 7, 64-bit: Driver signature enforcement prevents the installation of unsigned Argyll USB drivers
- MS Windows 7: Calibration does not load automatically on login when not using the dispcalGUI Profile Loader
- MS Windows XP, multiple displays: One profile is used by all displays connected to a graphics card
- Mac OS X: dispcalGUI.app is damaged and can't be opened.
- Photoshop CS3 (Mac OS X): The brush cursor looks funny (box around brush)
- Linux/Windows: No video card gamma table access (“Calibrate only” and “Calibrate & profile” buttons grayed, “Profile only” button available)
- Linux: Instrument not working correctly/constantly disconnecting (conflict with libmtp)

General: Wacky image colors (swapped colors)
  Solution: This happens when you created a “XYZ LUT + swapped matrix” profile and is a way to alert you that the software you're using does not support XYZ LUT profiles and falls back to the included matrix (which generally means you'd loose accuracy). If you're having this situation only in some applications, creating a “XYZ LUT + matrix” profile will remedy it (but please keep in mind that those applications not supporting XYZ LUT will still fall back to the matrix, so results can be different from applications that support XYZ LUT correctly). If all colormanaged applications you use show swapped colors, you should create a matrix profile instead. Note that you do not have to re-run any measurements: In dispcalGUI, choose a profile type as suggested previously, adjust quality and profile name if you want, then choose “Create profile from measurement data...” in the “Options” menu and select the profile you had the issue with.
General: Measurements are failing (“Sample read failed”) if using the “Allow skipping of spectrometer self-calibration” option and/or highres/adaptive mode
  Solution: Disable either or all of the above options. The problem seems to mainly occur with the ColorMunki.
MS Windows/madVR: “The process <dispcal.exe|dispread.exe> has stopped working” / “Calibration / profiling has not been finished”
  Solution: Copy the file madHcNet32.dll from your madVR folder to the Argyll CMS binaries folder (e.g. Argyll_VX.X.X\bin).
Windows: “The process <dispcal.exe|dispread.exe|coloprof.exe|...> could not be started.”
  Solution: If you downloaded Argyll CMS manually, go to your Argyll_VX.X.X\bin directory, and right-click the exe file from the error message. Select “Properties”, and then if there is a text on the “General” tab under security “This file came from another computer and might be blocked”, click “Unblock”. Sometimes also over-zealous Antivirus or 3rd-party Firewall solutions cause such errors, and you may have to add exceptions for all involved programs (which may include all the Argyll CMS executables and if you're using Zero Install also python.exe which you'll find in a subdirectory under C:\ProgramData\0install.net\implementations) or (temporarily) disable the Antivirus/Firewall.
Photoshop: “The monitor profile […] appears to be defective. Please rerun your monitor calibration software.”
  Solution: Adobe ACE, Adobe's color conversion engine, contains monitor profile validation functionality which attempts to filter out bad profiles. With XYZ LUT profiles created in Argyll CMS versions up to 1.3.2, the B2A white point mapping is sometimes not particularly accurate, just enough so that ACE will see it as a problem, but in actual use it may only have little impact that the whitepoint is a bit off. So if you get a similar message when launching Photoshop, with the options “Use profile regardless” and “Ignore profile”, you may choose “Use profile regardless” and check visually or with the pipette in Photoshop if the inaccurate whitepoint poses a problem. This issue is fixed in Argyll CMS 1.3.3 and newer. Alternatively, you can create a L*a*b* LUT profile.
MS Windows Vista: The calibration gets unloaded when a User Access Control prompt is shown
  Solution: (Intel and Intel/AMD hybrid graphics users please see “The Calibration gets unloaded after login/resume/User Access Control prompt” first) This Windows Vista bug seems to have been fixed under Windows 7, and can be remedied under Vista by either manually reloading calibration, or disabling UAC—but please note that you sacrifice security by doing this. To manually reload the calibration, either open dispcalGUI and select “Load calibration curves from current display profile” in the “Options” menu, or (quicker) open the Windows start menu and select “dispcalGUI Profile Loader” in the “Startup” subfolder. To disable UAC[9] (not recommended!), open the Windows start menu and enter “msconfig” in the search box. Click on the Tools tab. Select the line “Disable UAC” and click the “Launch” button. Close msconfig. You need to reboot your system for changes to apply.
MS Windows with Intel graphics (also Intel/AMD hybrid): The Calibration gets unloaded after login/resume/User Access Control prompt
  Solution: The Intel graphics drivers contain several utilities that interfere with correct calibration loading. A workaround is to rename, move or disable (e.g. using a tool like AutoRuns) the following files:

      C:\Windows\system32\igfxtray.exe
      C:\Windows\system32\igfxpph.dll
      C:\Windows\system32\igfxpers.exe

MS Windows Vista and 7: The display profile isn't used if it was installed for the current user
  Solution: Open the Windows start menu, select “Control Panel”, then “Color Management” (you may have to select “Classic View” under Vista and anything other than “Category View” under Windows 7 to see it). Under the “Devices” tab, select your display device, then tick “Use my settings for this device”.
MS Windows Vista and 7, 64-bit: Driver signature enforcement prevents the installation of unsigned Argyll USB drivers
  Solution: Please upgrade to Argyll CMS 1.2.0 or later. For prior versions, signing the Argyll drivers or disabling driver signature enforcement altogether on each boot was needed to successfully use the drivers. Such workarounds are no longer needed with recent versions of Argyll CMS which include drivers that will work out-of-the-box (if you already have drivers for your measurement device installed, see “Updating Argyll drivers” under “Installing Argyll CMS on Microsoft Windows” in the Argyll CMS documentation if you use a prior version of the Argyll drivers, or “Adding Argyll drivers to existing drivers” if you are using vendor drivers).
MS Windows 7: Calibration does not load automatically on login when not using the dispcalGUI Profile Loader
  Solution: Open the Windows start menu, select “Control Panel”, then “Color Management” (you may have to select something other than “Category View” to see it). Select the “Advanced” tab, then “Change system defaults...”, and finally tick the “Use Windows display calibration” checkbox. Note that the quality of Windows' built-in calibration loading is inferior in quality compared to the dispcalGUI profile loader and may introduce inaccuracies and artifacts.
MS Windows XP, multiple displays: One profile is used by all displays connected to a graphics card
  Solution: The underlying issue is that Windows XP assigns color profiles per (logical) graphics card, not per output. Most XP graphics drivers present only one logical card to the OS even if the card itself has multiple outputs. There are several possible solutions to this problem:
  - Use different graphics cards and connect only one display to each (this is probably the preferable solution in terms of ease of use and is least prone to configuration error)
  - Install and use the Windows XP color control applet
  - Some graphics cards, like the Matrox Parhelia APV (no longer produced), will expose two logical cards to the OS when using a specific vendor driver (some older ATI drivers also had this feature, but it seems to have been removed from newer ones)
Mac OS X: dispcalGUI.app is damaged and can't be opened.
  Solution: Go to the “Security & Privacy” settings in System Preferences and set “Allow applications downloaded from” (under the “General” tab) to the “Anywhere” setting. After you have successfully launched dispcalGUI, you can change the setting back to a more secure option and dispcalGUI will continue to run properly.
Photoshop CS3 (Mac OS X): Under Mac OS X, the brush cursor in Photoshop CS3 looks funny (box around brush)
  Solution: This seems to be a bug which shows with LUT[7]-type profiles that have only one rendering intent. You can try to overcome it by selecting “Advanced...” next to the profile type dropdown, selecting an existing ICC[5] profile as source (for hints as to which profile to select, see “Advanced gamut mapping options”) and tick at least one of the “Enhance effective resolution of colorimetric PCS[11]-to-device table” or “Apply gamut mapping to” checkboxes before profiling. To do that for an existing profile, adjust quality and profile name if you want, choose “Create profile from measurement data...” from the “Options” menu and select the profile. Note that this does not always solve the issue. Trying another profile type (XYZ LUT instead of L*a*b* LUT) might also help.
Linux/Windows: No video card gamma table access (“Calibrate only” and “Calibrate & profile” buttons grayed, “Profile only” button available)
  Solution: Make sure you have not selected a display that doesn't support calibration (i.e. “Web @ localhost” or “Untethered”) and that you have enabled “Interactive display adjustment” or set the tone curve to a different value than “As measured”. Under Linux, please refer to the Argyll CMS documentation, “Installing the software on Linux with X11” and “Note on X11 multi-monitor setups” / “Fixing access to Video LUTs” therein. Under Windows, please also see the solution posted under “The display profile isn't used if it was installed for the current user” if you are using Windows 7 and make sure you have a recent driver for your video card installed.
Linux: Instrument not working correctly/constantly disconnecting (conflict with libmtp)
  Solution: There is a bug on some systems with libmtp that causes instruments to continuously switch between connected and disconnected state. This seems to be a bug in libmtp-runtime. You can work around it by renaming `/lib/udev/mtp-probe` or updating to libmtp 1.0.6 where the issue should be fixed.

## Get help

Need help with a specific task or problem? It may be a good idea to first check the known issues & solutions if the topic has been covered. If you want to report a bug, please see the guidelines on bug reporting. Otherwise, feel free to use one of the following channels:

- Help & support forum
- dispcalGUI-users mailing list
- Contact me directly via E-Mail: dispcalGUI ‹at› hoech . net (but keep in mind other users may also benefit from exchanges, so I'm encouraging the use one of the above channels if possible)

## Report a bug

Found a bug? If so, please first check the bug tracker, it may have been reported already. Please follow these guidelines for reporting bugs:

- Try to give a short, but concise summary of the problem.
- Try to give some steps to reproduce the problem.
- Always attach logfiles if possible. They are usually automatically created by dispcalGUI as part of normal program operation. You can find them here:
  - Linux: `/home/Your Username/.local/share/dispcalGUI/logs`
  - Mac OS X: `/Users/Your Username/Library/Logs/dispcalGUI` and
    `/Users/Your Username/Library/Logs/0install`
  - Windows Vista and newer: `C:\Users\Your Username\AppData\Roaming\dispcalGUI\logs`
  - Windows XP: `C:\Documents and Settings\Your Username\Application Data\dispcalGUI\logs`

  As the folder may contain several logfiles, it is a good idea to compress the whole folder to a ZIP or tar.gz archive that you can easily attach to a bug report.

  Please note the logfiles may contain your username as well as paths of files you may have used in dispcalGUI. I will respect your privacy at all times, but you may want to consider this when attaching logfiles to public places like the bug tracker.

Create a new ticket (or if the bug has been reported already, use the existing ticket) at the bug tracker, following the guidelines above, and attach the logfiles archive.

If you don't want to or can't use the bug tracker, feel free to use one of the other support channels.

## Discussion

Do you want to get in touch with me or other users regarding dispcalGUI or related topics? The general discussion forum or dispcalGUI-users mailing list is a good place to do so. You can also contact me directly via E-Mail: dispcalGUI ‹at› hoech . net.

## To-Do / planned features (in no particular order)

- On first launch, guide user through basic setup using a wizard (postpone dispcalGUI update check until after wizard has run?):
  - Check Argyll CMS availability, if not available or outdated, offer automatic download & installation (consider 0install/native Linux distribution packages?) (use 0install/native distribution packages, other users can download manually for now)
  - Windows only: Install instrument drivers if necessary (probably need to check if already installed)
  - Check available instruments and instrument capabilities
  - Do instrument specific first launch stuff:
    - Import OEM files
    - Choose/create colorimeter correction if applicable
- When an instrument is first selected:
  - Check if OEM files from the vendor software have already been imported (if applicable); if not, offer to do it. (implemented in v2.1.1.3 Beta and newer, after detecting instruments)
  - Check colorimeter corrections if applicable (from respective vendor software and online database, skip the latter if a spectro is available), in case of no usable specific or generic correction, offer to create one if possible, preferably using spectro measurements as reference, EDID as user-selectable fallback? (Need to sanity-check EDID red/green/blue/white xy coordinates in that case! Possibly against sRGB and AdobeRGB as the most commonly cited gamuts for standard gamut and wide-gamut displays? As some cheaper panels and many of those found in Laptops/Notebooks are sometimes very limited in gamut, additionally a special “low-gamut RGB” may be needed)
  - Users need to be made aware of the implications their colorimeter correction choice has, e.g.
    - When using a correction created from spectral reference measurements of the specific display (user needs a spectro): Usually very good accuracy/match to user's specific display/instrument combination
    - When using a vendor-supplied generic correction: Good (?) (e.g. i1 DisplayPro, ColorMunki Display) to poor (?) (e.g. i1 Display 1/2/LT, Huey, ColorHug) accuracy/match to user's specific display/instrument combination, in case of CCSS considered preferable to corrections supplied by other users because of lab-grade equipment (high spectral resolution) used by vendor.
    - When using a correction supplied by another user for the same display/instrument combination: Good (?) (e.g. i1 DisplayPro, ColorMunki Display, DTP94) to poor (?) (e.g. i1 Display 1/2/LT, Huey, ColorHug) accuracy/match to user's specific display/instrument combination
    - When using EDID of the specific display as reference: Moderate (?) to poor (?) accuracy/match to user's specific display/instrument combination (could be ok match, could be awful, but should in most cases still be able to fix problems like e.g. ColorHug red sensitivity so may be ok as last resort)
- When trying to import colorimeter corrections or enable the Spyder 2, have automatic mode download the vendor software if needed. (implemented in v2.1.1.2 Beta and newer)
- (Long-term) improve UI.
- Better interface to GNOME Color Manager (implemented in v0.8.1.0+)
- Measure and report on screen homogenity / evenness of illumination
- Get rid of the terminal and implement a proper GUI for the interactive part of calibration (implemented in v0.8.5.6+)
- Better user interface for profile verification: If a test set contains multiple value formats (CMYK, RGB, XYZ, L*a*b*), allow selection which one(s) should be used in a “setup” window (“setup” window implemented in v1.5.6.9+, value format selection added in v1.6.3.5)
- Add gamut coverage percentages to the profile verification report if the test set contains reference values (not *.ti1): Calculate profiles from test set and verification measurements on-the-fly and create gamut volumes from test set profile, evaluated profile, and verification measurements profile using Argyll's `iccgamut` tool. Compare gamut volumes using Argyll's `viewgam` tool with `-i` option and include the results in the report (coverage calculation for test set reference and profile to be evaluated could be done before the actual measurements and also shown in the yet-to-be-implemented profile verification “setup” window).
- Complete the documentation in the README
- German language README (postponed)
- Profile verification (feed XYZ or L*a*b* to display profile, display corresponding RGB values, measure, output Delta E) (implemented in v0.3.6+)
- “Before” / “After” switch when calibration / profiling complete (implemented in v0.2+)
- Store all settings in profile, allow loading of settings from profile in addition to `.cal` file (implemented in v0.2+)
- Document the code (code documentation could still be enhanced, for now it'll do)
- Code cleanup (mostly done)

## Thanks and acknowledgements

I would like to thank the following people:

Graeme Gill, for creating Argyll CMS

Translators: Loïc Guégant (french translation), Roberto Quintero (spanish translation), Tommaso Schiavinotto (italian translation)

Recent donors: Peter Clarke, Rajinder Singh Gill, Ed Rudolph, Pedro Santo, Peter Clarke, Paul Philippov, Fabio Giraldi, Antonio Marcheselli, Stevan Rankic, Manuel Weber, Heinrich Schemmann, Gábor Huszár, Tilman Holzhauer, Lateral Imaging, Frank Zacharias, Marina Toshich, more...Tomislav Stojanović, Michel Mougey, Tim Oberbillig, Peter Clarke, Lionel Davey, Christian-Aurel Buru, James Hainis, Nejib Boubaker, Tomislav Stojanović, Scott Miller, John Navarro, Stephen Wall, Andrej Schmitt, Olivier Besner Morin, Christian Ramharter, Dieter Pongratz, Andrew Hunter, Yulian Martsenkov, Catherine Goniot, Ben Edwards, Ievgen Morskyi, Ahammed Umminiyil, LivingWithBugs.com, Christoph Clarenbach, Paul Fokkens, Kieren Hinch, Dale Somerville, Francesco Demontis, Projection Mapping Central, Scott Janz, Govindanunny Thekkadath, Nejib Boubaker, Mason Livingston, Daniel Lenardon, Manuel López Pérez, Xavier Potel, Andrew Hunter, Thomas Voigt, Александр Ольховский, Eugeniy Yurov, Hans Cremers, George Pop, Michael Gestgrasser, Stefan Pallari, Oliver Hoefele, Kyle Winfree, Alexander Mitchell, Juho Turunen, Jon Sands, Evgueni Ivanov, Riccardo Mandarano, Roman Romenskiy, Myron Blume, WTPM van Vucht, Philip Tobias, Richard Luney, Matthias Klausing, M E M van Ineveld, Patryk Bajer, Gregor Kofler, Richard Egger, Michael Dougherty, Christian Spyr, Konstantin Pyanzin, Eugeniy Yurov

And everyone who sent me feedback or bug reports, suggested features, or simply uses dispcalGUI.

Acknowledgements

Part of the comprehensive Argyll CMS documentation has been used in this document, and was only slightly altered to better fit dispcalGUI's behavior and notations.

## Version history / changelog

2015-05-02 22:11 (UTC) 3.0

  ### 3.0

  #### Added in this release:

  - Tabbed user interface. See screenshots.
  - Full support for Argyll CMS 1.7.0, which includes support for the ColorHug2, K-10A, Spyder5, the capability to use a Google Chromecast as pattern generator, and more. Note that the accuracy of using a ChromeCast is limited due to the internal RGB to YCbCr conversion and upscaling in the device.
  - Optional automatic testchart optimization as part of the characterization process.
  - madTPG launches automatically when used (requires madVR 0.87.12 or later).
  - Optionally create a 3D LUT automatically after profiling. 3D LUT settings are stored in the profile and synced with measurement report settings when loaded.
  - 1-click install of madVR 3D LUTs after generation (requires madVR 0.87.12 or later).
  - 3D LUT maker: Optionally allow to use PCS-to-device instead of inverse device-to-PCS gamut mapping. This allows for fast creation of 3D LUTs, but the result is dependent on the quality and accuracy of the profile's B2A tables.
  - 3D LUT maker/measurement report: Added an option to just apply black output offset to the tone response curve instead of overriding it completely. This option is only available for source profiles that have a tone response curve which is not defined by a simple power function (e.g. sRGB). Also added a warning message if input values would be clipped when using the tone response curve unmodified.
  - Show reference versus corrected colorimeter measurements along with delta E when creating a colorimeter correction matrix.
  - Optionally clip WTW on input when creating a 3D LUT (requires Argyll CMS 1.7 or later).
  - Additional error checking for patterngenerator network interface: Check if each Argyll test pattern update is followed by a network send. Fail with a sync error otherwise.
  - Easily create a compressed archive of the currently selected profile and related files with the click of a button next to the “Settings” dropdown.
  - Testchart editor:
    - Support loading of CGATS files which do not contain XYZ values.
    - CSV import (drag and drop a CSV file) and export.
    - Export 16-bit PNG and TIFF or 10-bit DPX files.
    - Improved speed of image file export.
    - Dragging and dropping image files extracts and adds reference patches if a preconditioning profile is set.

  #### Changed in this release:

  - Generate XYZ LUT profiles by default and for all presets. Consequently, black point compensation now defaults to off and is an advanced option (not shown by default).
  - XYZ LUT + matrix profiles will always have black point compensated matrix TRC tags. That way “dumb” applications which fall back to the matrix won't clip shadow detail if they don't support BPC internally, while “smart” applications can use the accurate LUTs.
  - When creating XYZ LUT profiles with enhanced effective PCS-to-device table resolution, improve reproduction of saturated colors for displays with limited gamut (e.g. smaller than sRGB), increasing visible detail and saturation in those areas. This should typically affect saturated blues the most. Users of displays that cover most of sRGB except parts of the blue region may see an improvement as well. Also, more accurately encode the PCS-to-device black point.
  - Show display technology type of spectral colorimeter corrections and sort by the shown name instead of the filename.
  - Moved display update delay and settle time controls to main window (“Show advanced options” must be enabled).
  - Force a minimum display update delay of 600 ms for Resolve irrespective of chosen preset.
  - Don't unload current settings file when changing calibration tone curve to “As measured”.
  - When creating a profile, automatically filter out XYZ = 0 readings if the RGB stimulus is < 5% (except black).
  - Files generated during incomplete/failed runs are moved to a different location than the storage directory. See “User data and configuration file locations”, “Incomplete/failed runs”. Compare the list of files in the temporary directory and their modification times before and after running Argyll CMS tools to determine if files should be kept in case of errors.
  - When updating via Zero Install, force exact version.
  - 3D LUT: Default to 65x65x65 cube for all 3D LUT formats except Pandora (.mga) which only supports 17x17x17 and 33x33x33.
  - 3D LUT: Default to 16..235 TV level encoding for the eeColor.
  - Measurement report: Changed displayed range of Y to be always 0..100 with four decimal digits.
  - Linux, Windows: On application startup, the current video LUT is restored after checking video LUT access. This differs from the previous behavior where the video LUT was reset to the calibration (if present) of the currently assigned display profile(s) (if any).

  #### Fixed in this release:

  - Error message when trying to quit the application while the “About” dialog was shown (regression of a change in 2.6 how lingering dialogs are handled on application exit).
  - Using Resolve as pattern generator prevented ambient measurements.
  - Fixed bug with Resolve interface related to APL that resulted in pattern updates being rejected by Resolve due to negative background RGB. This could happen with bright patches if the test patch size was above roughly 30% and below 100% screen area.
  - Due to file descriptors for session logfiles not being closed after being done with the file, dispcalGUI could run out of available file descriptors when used to create or inspect a large amount of profiles in a single session.
  - Disabled rollover for session logfiles.
  - Worked around uninitialized variables with Argyll's xicclu utility in versions 1.6.x to prevent unexpected color lookup output values.
  - Make sure the 1% reading during calibration check measurements doesn't trigger continuing to the following step.
  - Clicking the “Pause” button on the progress dialog in the first few seconds before instrument initialization was complete would not pause measurements, and disabled the button until clicking “Cancel”.
  - Verifying a device link created with an encoding other than full range RGB.
  - Curve viewer: Amount of tone values and grayscale % for calibration curves was not calculated correctly if the number of entries was not 256.
  - Testchart editor: Deleting a selection of non-consecutive rows didn't work correctly.
2014-11-15 20:46 (UTC) 2.6

  ### 2.6

  #### Added in this release:

  - Scripting support (locally and over the network).
  - Possibilty to do spectrometer self-calibration on its own (look in the “Options” menu). Useful in conjunction with “Allow to skip spectrometer self-calibration”.
  - Curve viewer, profile information: Support plotting tone response curve of grayscale profiles.
  - wxPython 3.0.2 “Phoenix” compatibility.
  - Linux: Install/uninstall instrument configuration files (udev rules/hotplug scripts) from the “Tools” menu.

  #### Changed in this release:

  - Use extended testchart as default for matrix profiles.
  - When switching profiles or displays, make sure the measurement report and 3D LUT creation windows are updated accordingly if shown.
  - Unset Argyll display update delay/settle time environment variables after disabling their override when they were not set initially.
  - All standalone tools have separate configuration files (overridden by main configuration if newer and vice versa) and logfiles.
  - VRML to X3D converter can now do batch processing.
  - Enhanced UI for colorimeter correction creation.
  - Limit the ability to create colorimeter corrections for the Klein K-10 to factory measurement mode.
  - Detect instruments at startup if no instruments were previously configured.
  - Changed “Resolve” preset to use a minimum display update delay of 600 ms and constant APL patterns by default.
  - Restore defaults for display update delay and settle time multiplier when loading settings without override.
  - Linux: The system-wide configuration file is ignored except for the profile loader.

  #### Fixed in this release:

  - Calibration curve plot was not working anymore for profiles with formula-type vcgt tags (regression of r2384, did not affect Argyll-generated profiles).
  - Re-use existing Resolve connection if possible and only shut it down on application exit (fixes “Address already in use” error under Linux and Mac OS X).
  - When using Resolve, the measurement window position and size aswell as the “Use black background” setting were not correctly stored in the generated calibration file and/or profile and could thus not be restored by loading the file(s).
  - When exporting test patches as image files, limit pixel dimensions to FullHD (fixes memory error when exporting fullscreen patches).
  - When applying a tone response curve to an existing profile, make sure curve values can't become negative at and near zero input.
  - Fix generation of synthetic grayscale profiles.
  - Linux (only if Argyll CMS was installed via Zero Install)/Mac OS X/Windows: If the Argyll CMS directory was not explicitly configured, Argyll CMS reference profiles (e.g. Rec709.icm) were not added automatically to file dropdown lists and the “Install Argyll CMS instrument drivers...” menu item (Windows only) was grayed out (this impacted convenience, not functionality).
  - Cosmetic, Mac OS X 10.8 and earlier: Splash screen had a light gray border instead of being semi-transparent.
  - Mac OS X 10.10 Yosemite: Disable functionality to load/clear calibration like under Mac OS X 10.6 and up.
2014-09-06 00:07 (UTC) 2.5

  ### 2.5

  #### Added in this release:

  - Argyll CMS 1.7 beta compatibility: Klein K10-A support (requires Argyll CMS 1.7 beta test 2014-05-21 or newer) and updated technology strings for colorimeter correction creation. When creating 3D LUTs with Rec. 1886 or custom tone response curve, force RGB source 0 0 0 to map to RGB destination 0 0 0 (requires Argyll CMS 1.7 beta development code 2014-07-10 or newer).
  - Enable black output offset instead of all-input offset for 3D LUTs, measurement report and synthetic profile creation (based on Argyll CMS 1.7 beta development code 2014-07-12, thanks to Graeme Gill). Note that for 3D LUTs, if using output offset ideally Argyll CMS 1.7 should be used aswell once it becomes available since the current implementation in dispcalGUI that enables output offset when used with Argyll CMS 1.6.3 or older has limited 16-bit precision for the black point mapping (due to the implementation altering the source profile TRC on-the-fly in that case, and the ICCv2 16-bit encoding used for the TRC tags in the source profile), while Argyll CMS 1.7 will enable full floating point processing (due to the black point mapping then taking place internally in `collink`, and dispcalGUI not having to alter the source profile TRC beforehand).
  - Black point can be specified in XYZ or chromaticity coordinates when creating a synthetic ICC profile.
  - When dropping an existing profile onto the synthetic ICC profile creation window, set whitepoint, primaries, blackpoint and tone response curve (average) according to the profile.
  - Support for the Resolve 10.1 (and newer) CM pattern generator. See also 3D LUT creation workflow for Resolve on the dispcalGUI Wiki.
  - Enable interactive display adjustment without creating calibration curves by setting “Tone curve” to “As measured”. This also causes all calibration setting placeholders in the profile name to be ignored.
  - Added options to override the minimum display update delay (requires Argyll CMS 1.5 or newer) and display settle time multiplier (requires Argyll CMS 1.7 Beta or newer). These options can be found in the “Set additional commandline arguments...” window accessible from the “Options” menu. Note that these two settings (unlike the additional commandline parameters) are stored in the profile, and will be restored when the profile is selected again under “Settings”.
  - Testchart editor: If generating any number of iterative patches as well as single channel, gray or multidimensional patches, it is possible to add the single channel, gray and multidimensional patches in a separate step by holding the shift key while clicking on “Create testchart”. This prevents those patches affecting the iterative patch distribution, with the drawback of making the patch distribution less even. This is an experimental feature.
  - Windows: Simplified Argyll CMS instrument driver installation by adding a respective menu item to the “Tools” menu.

  #### Changed in this release:

  - Visual overhaul.
  - Calibration curves are no longer automatically loaded into the video card gamma table when loading a settings file. To manually load calibration curves into the video card gamma table, choose “Load calibration curves from calibration file or profile...” in the “Options” menu (Linux and Windows only), or install a profile, or use the “Preview calibration” checkbox (Linux and Windows only) in the profile installation dialog. The previous behavior can be restored by editing dispcalGUI.ini and adding a line `calibration.autoload = 1`.
  - Split “Smooth B2A tables” into “Enhance effective resolution of colorimetric PCS[11]-to-device table” and “Smoothing” options and moved them to advanced gamut mapping options.
  - Renamed “Apply BT.1886 gamma mapping” to “Apply tone response curve”.
  - Always override the source profile tone response curve when using “Apply tone response curve” (3D LUT creation and measurement report) so the result will be correct for the chosen parameters regardless of source profile tone response curve.
  - Removed black point compensation option from synthetic profile creation window.
  - Changing the black level or black point Y value when creating a synthetic ICC profile now rounds up or down to make it a multiple of the 16-bit encoding precision used in ICC v2 profiles (which is roughly 0.00153 when normalized to 0..100).
  - Re-enabled moving the standalone curve viewer between displays updating the graph according to the display it is currently on.
  - Always append the measurement mode to the instrument string in the measurement report.
  - Confirm quitting the application (via the application menu “Quit” item or the associated keyboard shortcut) if a task is still running (in practice this only affects Mac OS X as the menu is not accessible on other platforms while a task is running).
  - When selecting “Locate Argyll CMS executables...” in the menu to switch to a different Argyll CMS version, automatically detect if a newer version is on the search path and offer to use it right away without having to manually browse to the location.
  - Renamed “Gamma” entry in calibration tone response curve dropdown to “Custom” to emphasize that it is a curve with custom gamma exponent and other parameters.
  - When switching calibration tone response curve from Rec. 1886 to custom, restore the previous gamma and black output offset parameters (or defaults in case a preset was used).
  - Show an error message if trying to measure the ambient light color with an instrument which only has a monochrome ambient sensor (e.g. Spyder 3 and 4 Elite or Pro).
  - Importing colorimeter corrections and enabling the Spyder 2 is now truly automatic (necessary files are downloaded if not present on the local system).
  - Made black level control an advanced calibration option.
  - Loading a profile that does not contain calibration settings sets all calibration options to “As measured”.
  - When creating or loading a profile (except presets), it is now automatically set as the current profile in the measurement report and 3D LUT creation windows.
  - Enabled interactive display adjustment for the madVR and Resolve presets and altered them to not do video card gamma table calibration by default.
  - All presets that create LUT profiles use optimized testcharts.
  - When a virtual display is selected, don't offer profile installation but 3D LUT creation instead.
  - ReadMe: Completed testchart editor documentation.
  - Testchart editor: Always enable “Add saturation sweeps” and “Add reference patches...” controls when a preconditioning profile is set, regardless of selected patch distribution and adaptation.
  - Testchart editor: When enabling/disabling the preconditioning profile, set adaptation to 100%/10% respectively.
  - Testchart editor: Greatly improved the speed of inserting patches into large testcharts with thousands of patches.
  - Linux, profile installation: Try to install the profile using all available systems regardless if one of them fails to install the profile. Only report profile installation as failed if all available systems failed to install the profile. Report specific failures when profile installation only partly succeeds.
  - Linux, profile installation: Try colormgr as fallback (if available) if profile installation using Argyll 1.6+ failed.
  - Linux: Use the EDID MD5 to find the device ID (this only works with colord versions released after 26. Apr. 2013).
  - Mac OS X: No longer require administrator privileges if running from a non-administrator user account.
  - Windows Vista and newer: Enable system-wide profile and OEM files installation without the need to run the whole application as administrator. The UAC shield icon is shown on buttons if an action requires administrator privileges.

  #### Fixed in this release:

  - The “Apply BT.1886 gamma mapping” checkbox in the 3D LUT creation window did re-enable itself when clicking on “Create 3D LUT” if Rec709.icm was selected as source profile.
  - Synthetic ICC profile creation: Setting gamma to absolute or relative when not using Rec. 1886 now actually makes a difference (previously the end result was always an absolute curve).
  - “Show actual calibration curves from video card” could not be enabled in the standalone curve viewer if the previously selected display did not allow video LUT access.
  - Measuring the ambient light level with an instrument which only has a monochrome ambient sensor (e.g. Spyder 3 and 4 Elite or Pro).
  - If loading a settings file created with automatic black point hue correction, that setting was not restored and the default value of no correction was used.
  - When doing a “Profile only” and using the current calibration from the video card gamma table, Argyll CMS expects 256 entries. Interpolate on-the-fly if the number of entries in the video card gamma table is not 256 (this currently only affects Mac OS X 10.9 and newer where the table contains 1024 entries).
  - If the display manufacturer string recorded in a profile was the same as the three-letter manufacturer ID string (e.g. NEC), the profile could not be uploaded to the openSUSE ICC Profile Taxi service due to a bogus “missing metadata” error message (regression of r1422).
  - Profile information window: Color coordinates in the status bar were wrong if the selected colorspace was not a*b* (bug introduced in dispcalGUI 2.0).
  - The specbos 1201 was not working due to not supporting measurement mode selection.
  - When getting normalized vcgt tag values, scaling was off if the vcgt wasn't 16-bit. This prevented e.g. the measurement report from working with certain 3rd-party display profiles.
  - Cosmetic: Correct padding of the patch number in the measurement report summary (fixes missing padding when multiple patches are evaluated for a single criterion).
  - Trivial: Tab order of controls (top-down, left-right).
  - Testchart editor: IndexError if trying to add saturation sweeps or reference patches when no cells are selected.
  - Linux, profile installation: Do not regard a missing colormgr as error.
  - Mac OS X: Selecting “About”, “Locate Argyll CMS executables...” (preferences) and “Quit” in the application menu does something again (this stopped working with the move to wxPython 3.0 GUI library in dispcalGUI 2.0).
2014-05-11 19:00 (UTC) 2.1

  ### 2.1

  #### Added in this release:

  - “Auto” measurement mode for the ColorHug. This will automatically create a colorimeter correction with the reference based on EDID[10] as part of the normal measurement process. This is a work-around for the red primary shift problem that some ColorHug users are experiencing (note that this will make ColorHug measurements closely match the gamut boundaries defined by the primaries and whitepoint from EDID). This mode should only be used as a last resort if no colorimeter correction with reference measurements from a spectrometer or other known accurate instrument can be obtained.
  - Auto-update functionality. Apply updates from within dispcalGUI under Mac OS X and Windows, or if using Zero Install.

  #### Changed in this release:

  - Improved Zero Install integration. Installation is now as simple as a standalone installation.
  - Switched “Smooth B2A tables” off and “Low quality B2A tables” back on for the madVR preset to save some time during profile generation.
  - The HTML-embedded X3D viewer will now by default try and load its components from the web, with a fallback to a locally cached copy (if available) and not anymore the other way around. This means generated HTML files will automatically use updated viewer components when an internet connection is available.
  - Choosing “Profile information” from the “File” menu will now always present a file dialog to pick a profile and no longer use the profile currently selected in the main window (this functionality is still available via the small blue “Info” button next to the settings dropdown).
  - Show profile information with right pane expanded by default.
  - Don't lock measurement mode for colorimeter corrections, instead set colorimeter correction to none if an incompatible measurement mode is selected.
  - Allow black point compensation if “low quality B2A tables” is enabled.
  - Windows: Limit profile name length so that the length of the path of the temporary directory plus the length of the profile name does not exceed 254 characters (which is the maximum useable length for Argyll CMS tools where an extension with a length of four characters is added automatically).

  #### Fixed in this release:

  - When using the ColorHug in “Factory” or “Raw” measurement mode in dispcalGUI (r1378 or later) with a colorimeter correction that was created with Argyll CMS 1.5 or later, the measurement mode was being locked to the wrong mode (a colorimeter correction created in “Factory” mode would lock to “Raw” and vice versa).
  - Transpareny rendering in the HTML-embedded X3D viewer: Transparency is now gamma-corrected.
  - Tone response curves plot: Removed the very slight interpolation offset error at zero input (around +0.5 RGB on a 0-255 scale for a synthetic 16-bit tone response curve following a gamma of 2.2 with no black offset) for tone response curves that have zero output at non-zero input.
  - Trying to open files with unicode characters in their filename or path in the standalone testchart editor, curve viewer, profile information, or VRML to X3D converter application from the commandline, via the desktop's “open with” functionality, or by assigning a supported filetype to be opened with the respective application failed (dragging and dropping the file onto the respective application window worked fine).
  - Correctly reflect in the GUI if black point compensation can be applied. Black point compensation is available for curves + matrix profiles and XYZLUT profiles with either “low quality B2A tables” or “smooth B2A tables” enabled.
  - Linux: Fixed a problem with unicode when querying colord for the current display profile (regression of r1832).
  - Windows: Report could not be saved after finishing display uniformity measurements due to the file dialog not receiving mouse clicks or keyboard input.
  - Windows: Work-around python issues with long pathnames (>= 260 characters).
2014-04-23 00:43 (UTC) 2.0

  ### 2.0

  #### Added in this release:

  - New profiling option “smooth B2A tables” for XYZ LUT profiles. This should improve the smoothness of the relative colorimetric gamut mapping. Enabling this option will also generate a simple but effective perceptual mapping (which will be almost identical to the colorimetric mapping, but map the black point) if no other advanced gamut mapping options have been chosen.

    See below example images for the result you can expect (note though that the particular synthetic image chosen, a “granger rainbow”, exaggerates banding, real-world material is much less likely to show this).

    Original “granger rainbow” image

    Default colorimetric rendering (2500 OFPS XYZ LUT profile)

    “Smooth” colorimetric rendering (2500 OFPS XYZ LUT profile, inverted A2B)

    “Smooth” perceptual rendering (2500 OFPS XYZ LUT profile, inverted A2B)

    For the test, the image has been converted from sRGB to the display profile. Note that the sRGB blue in the image is actually out of gamut for the specific display used, which made the test particularly challenging (the edges visible in the blue gradient for the rendering are a result of the color being out of gamut, and the gamut mapping thus hitting the less smooth gamut boundaries).

    Technical discussion: “smooth B2A tables” works by inverting the already present A2B colorimetric table, making use of Argyll CMS to do clipping in CAM Jab for saturated colors. A new cLUT, cLUT matrix and cLUT device channel curves are then generated. The matrix and device channel curves scale and transform the input values to distribute them across the cLUT grid points, trying to make good use of the limited number of points. Additional smoothing is then applied to the cLUT (this can be disabled by editing dispcalGUI.ini and adding a line `profile.b2a.smooth.extra = 0`). Diagnostic PNG images are created for each of the B2A cLUT tables (pre/post/post smoothing). This approach is relatively straightforward, but seems very effective in creating a smooth yet accurate mapping. There is a drawback though, if the native device gamut boundary is bumpy, the error at the gamut boundary and thus the max error can go up. In most cases, I feel this will be acceptable, and the smoothness and often also increased in-gamut accuracy should make up for the potential higher max error. If you're interested, you can check the error of the B2A table vs the A2B table by running (in a terminal) `invprofcheck -k -h -w -e` on the profile, and compare it to the error of a profile where “smooth B2A tables” was not used. Comments and feedback welcome as always.

  - Synthetic ICC profiles can be created with DICOM or BT.1886 tone response curve, with or without black offset, and can either be RGB (curves + matrix) or gray (curves only).
  - Expanded the color space choices for profile gamut views with L*u*v* and DIN99 family colorspaces.
  - Expanded the color space choices for diagnostic 3D views of testcharts with HSI, HSL, DIN99 family, LCH(ab), LCH(uv), L*u*v*, Lu'v' and xyY colorspaces. To differentiate the LCH(ab) and LCH(uv) views from L*a*b* and L*u*v* respectively, a layout where the hue angle increases along the horizontal and chroma along the vertical axis is used.
  - 3D views of profile gamuts and testcharts can be created as VRML, X3D, or X3D in HTML with embedded viewer for WebGL-enabled browsers.
  - VRML to X3D standalone converter. Output options are X3D (XML) and X3D in HTML. The HTML files generated by default use the X3DOM runtime to implement a viewer, which requires a WebGL-enabled browser. The converter can be run from a terminal without GUI. Run it with the `--help` argument to view the list of options.
  - Rendering intent and direction selector for curve viewer tone response curve plot. Also changed layout of controls slightly.
  - LUT checkbox to profile info gamut view (if the profile is a LUT profile and contains both LUT and matrix tags). This allows inspecting the gamut characterized by the LUT versus the one defined by the matrix.
  - Show estimated remaining time in the progress dialog if applicable. Note that it is not always particularly accurate, and for operations consisting of multiple steps (e.g. calibration & profiling), the shown estimate is for the current (sub-)step only.

  #### Changed in this release:

  - Slightly adjusted presets:
    - Changed “madVR” and “Video” presets to use Rec. 1886 as calibration target.
    - Changed “Prepress” and “Softproof” presets to use full black point hue correction during calibration.
    - Disabled interactive display adjustment for “Laptop” preset.
    - Set profile type for those presets that defaulted to curves + matrix to single curve + matrix.
  - Changed profile black point compensation option to map the black point to zero more reliably. This means black point compensation can no longer be used for L*a*b* LUT profiles, and will only be applied to the LUT part of XYZ LUT profiles if the new “smooth B2A tables” profiling option is used.
  - Changed 3D LUT and measurement report settings to automatically enable/disable Rec. 1886 gamma mapping if the source profile has/doesn't have a known “camera” transfer function (e.g. SMPTE 240M or Rec. 709).
  - Unlocked calibration Rec. 1886 gamma controls to bring them in line with the 3D LUT and measurement report offerings.
  - Set BT.1886 gamma mapping defaults to gamma 2.4 absolute to match the recommendation.
  - Show error message in case of ambient measurement failing due to instrument communications failure.
  - Curve viewer: Enable dragging and zooming.
  - Profile information comparison profile selection, measurement report simulation profile selection: The list of automatically recognized profiles (if they are installed) has been extended to the full range of ECI offset, gravure and newsprint profiles as well as their basICColor equivalents (available on colormanagement.org) and an increased range of RGB working space profiles. Other profiles can be added by dragging-and-dropping them on the profile list.
  - Never center the display adjustment and untethered measurement windows on the screen, or show them at their parent window coordinates if no previous coordinates were stored in the configuration (always use default coordinates of topleft screen corner in that case).
  - In the case of essential resource files missing (e.g. broken installation or deleted application files), show a more informative error message.
  - Diagnostic 3D views of testcharts are no longer created automatically. You have to click the “3D” button.
  - Slightly increased the logging verbosity.
  - Linux: No longer use GObject Introspection to interface with colord. It could in rare cases cause hard to diagnose problems with wxPython. Rely on colord support in Argyll CMS 1.6 and newer instead (with a fallback to colormgr for profile queries or if libcolordcompat.so is not available for profile installation).
  - Linux: Deal with distribution-specific differences for the location of Argyll CMS reference files (currently supported are `XDG_DATA_DIRS`/argyllcms/ref, `XDG_DATA_DIRS`/color/argyll and `XDG_DATA_DIRS`/color/argyll/ref).
  - Linux: Use udev hwdb instead of pnp.ids for looking up PNP ID to manufacturer name if available.

  #### Fixed in this release:

  - Unhandled exception when trying to start measurements on a display that was added/enabled while dispcalGUI was already running.
  - In case of untethered measurements, correctly detect and react to recurring need for intermittent instrument calibration.
  - Re-enabled the ability to generate some 3D LUT formats from existing DeviceLink profiles.
  - Don't allow leading dashes in profile filename which might trick the Argyll CMS tools into mistaking parts of it as an option parameter.
  - Refresh display measurement mode was not correctly restored from saved settings.
  - Moving the measurement window between displays resulted in an error and did not update the display configuration (regression of r1737).
  - Linux: Make curve viewer and profile information compatible with wxPython 3.0.
  - Linux: When the trash directory was not already present, files couldn't be moved to the trash.
  - Linux: System-wide profile installation should now also work if sudo is configured to require a TTY.
  - Linux/colord interface: Leave out manufacturer name part of device ID if the PNP ID wasn't found in the database.
  - Linux/colord interface: Deal with potential differences in device ID depending on installed colord version and desktop environment.
  - Linux, Mac OS X: In rare cases, a worker thread could reach an infinitely blocked state.
  - Mac OS X: Standalone tools (broken due to internal symlinks pointing to wrong locations).
  - Mac OS X: Create user profile directory if it does not exist when trying to install a profile (fixes inability to install a profile if the user profile directory does not exist).
  - Mac OS X 10.6 and newer: Calibration loading/clearing is now disabled due to undesirable side-effects (loading calibration from the current display profile could make it necessary to manually restore the display profile by opening system preferences → display → color and loading or clearing a calibration could have side-effects on calibration and profiling measurements).
2014-02-09 22:55 (UTC) 1.7.5.7

  ### 1.7.5.7

  #### Added in this release:

  - Unique icons for all standalone tools.
  - Profile information can plot and display colors from named color profiles (including ICC v4). Thanks to Alexander Bohn for adding the original named color support in the ICC profile module.
  - Testchart editor, “Add reference patches”: Named color profiles can be used as reference.
  - Linux: Desktop entries for standalone tools.
  - Mac OS X: Application bundles for standalone tools (Note: They won't work without the main application being present in the same folder, as the resources are shared and contained in the main application bundle).

  #### Changed in this release:

  - Error handling: Omit traceback from error messages for filesystem and operating system related errors (like disk full or no read permissions on a file) as such errors are not code-related.
  - Updated french translation (thanks to Loïc Guegant).
  - If a profile is corrupted, show the curves window regardless if enabled. Show the profile error message only when the corrupted profile is first accessed, not each time the curves window is shown/hidden.
  - Testchart editor, “Add reference patches” (dealing with image colorspaces): Support Lab TIFF images. Fail on colorspace mismatches.
  - Removed DCI_P3.icm profile (prefer SMPTE431_P3.icm which is part of recent Argyll CMS releases).

  #### Fixed in this release:

  - Disable double-click centering and scaling for curve views (this was never supposed to be possible in the first place).
  - Testchart editor, “Add reference patches” (chromatic adaptation): When no device white is available, make sure alternate whitepoint definitions (APPROX_WHITE_POINT, LUMINANCE_XYZ_CDM2 fields) are actually used if present.
  - Always automatically add a file type extension to the filename in the curve/gamut saving dialog (fixes “unsupported filetype” error when trying to save under Mac OS X without manually adding the extension to the filename).
  - Calibration preview for calibration & profile from “<current>” setting no longer switches between .cal and .icm file created in that same run.
2014-01-19 10:02 (UTC) 1.7.1.6

  ### 1.7.1.6

  #### Added in this release:

  - A new option to not use the video card gamma table to apply calibration (default like in 1.5.2.5/1.5.3.1: On for madVR, off for everything else).
  - Correlated color temperature, gamma, RGB gray balance and gamut graphs to measurement report.
  - Re-added the default testchart for gamma + matrix profiles.
  - Testchart editor: Dark region emphasis controls (Argyll CMS 1.6.2).
  - Testchart editor: Black patches amount control (Argyll CMS 1.6).
  - Testchart editor: Ability to add saturation sweeps and reference patches (from CGATS or images) to a testchart if using a preconditioning profile and adaptation = 100%.
  - Standalone curve viewer. This allows to view the curves of the currently assigned display profile or the actual video card gamma table without launching dispcalGUI.
  - Curve viewer can reload, apply black point compensation to, load into the videocard, and export calibration files.

  #### Changed in this release:

  - Untethered measurements window: Enable keyboard navigation in the grid view (up/down/pageup/pagedown/home/end keys).
  - Measurements are now pauseable.
  - Cancelling a potentially long-running operation like measurements or profile generation now needs to be confirmed.
  - Improved robustness of ambient measurement code.
  - Show an error message when communication with the instrument fails (instead of just logging the error).
  - Show an error message when trying to measure ambient light and ambient measurements are unsupported (instead of just logging the error).
  - Regenerated testcharts preconditioned by gamma-based profiles with slight dark region emphasis.
  - Updated french translation (thanks to Loïc Guégant).
  - “Allow skipping of spectrometer calibration” will now always try to skip spectrometer calibration if enabled, not just when doing a calibration and subsequent profile in one go (“Calibrate & profile”). This means a calibration timeout will then be in effect (which is 60 minutes for the ColorMunki Design/Photo, i1 Pro and i1 Pro 2), and a recalibration will only be needed if this timeout has been exceeded before the start of an operation.
  - Testchart VRML export: Only use Bradford chromatic adaptation if ACCURATE_EXPECTED_VALUES in the `.ti1` file is true (i.e. a preconditioning profile was used), otherwise XYZ scaling (to visually match VRML files generated by Argyll CMS).
  - Renamed “Verify profile” to “Measurement report”. Added options for BT.1886 gamma mapping, whitepoint simulation, (limited) support for device link profiles, and madVR color management (3D LUTs). Overhauled report HTML layout and style.
  - Use nicer filenames and titles for HTML reports and uniformity check (e.g. include the display name for which the report was generated).
  - Improved dealing with profile linking errors during 3D LUT generation (show error dialog instead of just logging the error).
  - Always use a cLUT resolution of 65 and don't preserve device curves for 3D LUT generation, regardless of the selected 3D LUT format or size (this should make results consistent between eeColor/madVR, which were always generated like that, and the other formats).
  - Allow the use of PC levels for madVR 3D LUT output encoding.
  - Synchronize input and output encoding for eeColor 3D LUT format.
  - Disable xvYCC output encoding (not supported) and consequently disable it also as input encoding for eeColor because it needs the same input/output encoding.
  - Allow loading of calibration files that do not contain settings.
  - Testchart editor: Combined patch ordering controls.
  - Testchart editor: Vastly enhanced performance of row delete operations on very large testcharts (several thousand patches). Also slightly improved speed of testchart loading.
  - Measurement report charts: Each larger chart contains all the patches from the previous smaller chart. Re-generated video charts preconditioned to Rec. 709 and with slight dark region emphasis.
  - Windows 7 and up: Prefer dispcalGUI profile loader over calibration loading facility of the OS (the latter introduces quantization artifacts and applies wrong scaling, the former uses Argyll CMS and thus doesn't have these problems).
  - Windows: Do not regard unability to determine startup folders as fatal error (this means an autostart entry to load calibration on login can not be created automatically in that case though, so unless Windows 7 or newer is used which has the ability to load calibration without external utilities, calibration needs to be loaded manually).
  - Windows/madVR: Always reset the video card gamma table to linear when using a calibration file and not using the video card gamma table to apply the calibration (this should prevent the potential problem of double calibration being applied if loading a calibration on a display, then switching over to madVR on the same display and using a calibration file while not using the video card gamma table to apply the calibration).

  #### Fixed in this release:

  - A possible unicode decode error when the computer name contains non-ASCII characters, introduced in 1.5.2.5.
  - In some instances the handling of profile name placeholders was quirky (problematic character sequences were those consisting of the same characters, case insensitive, as calibration speed or profile quality shortcodes, i.e. FxF, MxM, SxS, VFxVF and VSxVS, with x being any non alphanumeric character).
  - When loading a settings file, only switch to the associated display device if it can be unambiguously determined (fixes multi-screen setups with identical screens always switching to the first one, a bug introduced in 1.5.2.5).
  - Ignore messages from the logging module (fixes a bogus error message being displayed under Windows when closing dispcalGUI, introduced in 1.5.2.5).
  - Handling of separate video card gamma table access controls was a bit quirky since the addition of virtual display devices.
  - If the 3D LUT target profile was overwritten by the generated device link profile (which could happen if choosing the same path and file name for the 3D LUT/device link profile as the target profile), it prevented changing the source profile.
  - Instrument (spectrometer) calibration can be required multiple times during a calibration run, depending on its duration. This was not handled correctly by the GUI.
  - 3D LUT generation with TV RGB 16-235 encoding could lead to wrongly encoded 3D LUTs if not using the eeColor or madVR format.
  - 3D LUT generation with YCbCr encodings failed with an error if not using the eeColor or madVR format.
  - Standalone utilities (3D LUT maker, curve viewer, profile information, and testchart editor) now function properly even if dispcalGUI itself was never launched before (previously the Argyll CMS version was read from the configuration, so if it was never configured before it could happen that not all available options where shown or it was never asked to select an Argyll CMS executable directory in case the Argyll CMS executables were not found).
  - Don't block other windows when an operation fails while a progress dialog with a modal dialog on top is shown.
2013-10-23 20:09 (UTC) 1.5.3.1

  ### 1.5.3.1

  #### Added in this release:

  - New feature: When creating a profile from existing measurement data, averaging of measurements can be performed by selecting multiple files.

  #### Fixed in this release:

  - Fixed possible unicode error in logging module.
  - Fixed a bug with optimizing a testchart for untethered measurements halving the amount of different device combinations by repeating patches if the total patch count was even.
  - Mac OS X 10.6: Fixed weird behavior due to a bug in OS X 10.6's version of `sudo`.
2013-10-22 14:32 (UTC) 1.5.2.5

  ### 1.5.2.5

  #### Added in this release:

  - Full Argyll CMS 1.6.0 support (e.g. JETI specbos 1211/1201, madVR calibration and 3D LUT generation, body centered cubic grid option for creating testcharts).
  - Testchart editor: Charts can be exported as PNG or TIFF files.
  - Testchart editor: Gamma and neutral axis emphasis controls.
  - Testchart editor: “Use current profile as preconditioning profile” button.
  - Testchart editor: Save VRML diagnostic files for testcharts without the need to re-generate the chart.
  - Testchart editor: Sort patches by L*, RGB, sum of RGB or sort RGB gray and white to top.
  - Untethered display measurement and profiling. Be sure to read the note on optimizing testcharts for untethered measurements in automatic mode.
  - Shortcut for the BT.1886 tone curve (previously available by setting gamma to 2.4, absolute, and black output offset to zero).
  - 3D LUT: Enable additional intents.
  - 3D LUT: Support eeColor and Pandora LUT formats.
  - 3D LUT: Support Argyll CMS 1.6 video encodings and BT.1886 gamma mapping.
  - Windows 8 Argyll CMS driver installation instructions to the ReadMe.
  - Instructions how to proceed when a process cannot be started to the ReadMe.
  - Softproof preset (based on FOGRA recommendation).
  - madVR preset.
  - sRGB preset.
  - Allow specifying extra arguments for Argyll's `targen` command.
  - Computer name, EDID serial and EDID CRC32 placeholders for use in the profile name.
  - Synthetic profile creation facility (e.g. for use as source in 3D LUT generation).
  - ACES RGB and DCI P3 colorspace definitions and reference profiles.
  - Dry run. If enabled in the options menu, all functionality that calls Argyll CMS executables will effectively do nothing. This allows review of the used command line parameters by checking the log.
  - Additional session logs are saved for most operations involving the Argyll tools (i.e. directly in the folder where created files are saved to).
  - Show profile self check ΔE*76 info in profile installation dialog.

  #### Changed in this release:

  - Testchart and preset improvements:
    - All testcharts for LUT profiles have been complemented with additional single channel patches. This should in most cases improve average and maximum delta E of generated profiles, in some cases significantly. In fact, testing has shown that the new “small testchart for LUT profiles” with 154 patches total yields better results than the previous “extended testchart for LUT profiles” with 238 patches.
    - The charts for curves + matrix profiles have been improved by adding a few additional body centered cubic grid patches - all the charts which are not tuned for a certain display type are body centered cubic grid based (this was also the case previously for the LUT testcharts, but not for the matrix charts).
    - The patch order in the LUT charts has been optimized to improve measurement speed.
    - The chart for gamma + matrix profiles has been removed in favor of the updated default chart for matrix profiles.
    - New additional charts for LUT profiles have been added in various sizes.
    - For each of the new charts for LUT profiles, starting from the “very large” size, optimized farthest-point-sampled versions have been added which are pre-conditioned for several common display types: sRGB tone response with Rec. 709 primaries and D65 whitepoint (consumer-grade displays), gamma 2.2 with Rec. 709 primaries and D65 whitepoint (consumer-grade displays, TVs), gamma 2.2 with AdobeRGB primaries and D65 whitepoint (entry-level and high-end graphics displays), L* tone response with NTSC primaries and D50 whitepoint (high-end graphics displays).
    - The naming and patch count of the testcharts for LUT profiles has changed. The mapping that most closely resembles the old testcharts is as follows (total number of patches in parentheses):
      - Old “Default testchart for LUT profiles” (124) → new “Small testchart for LUT profiles” (154)
      - Old “Extended testchart for LUT profiles” (238) → new “Default testchart for LUT profiles” (270)
      - Old “Large testchart for LUT profiles” (396) → new “Extended testchart for LUT profiles” (442)
      - Old “Very large testchart for LUT profiles” (912) → new “Very large testchart for LUT profiles” (994)
      - Old “Massive testchart for LUT profiles” (2386) → new “Massive testchart for LUT profiles” (2527)
    Use of the new charts is highly recommended. All presets have been updated to use the new chart types. The “prepress" preset has also been updated to generate a XYZ LUT profile by default.
  - Detect if the instrument can use CCMX or CCSS colorimeter corrections based on the measurement mode. Disable colorimeter corrections for non-base display types.
  - Correctly map measurement mode to DISPLAY_TYPE_BASE_ID for all supported instruments when creating CCMX.
  - If a colorimeter correction with DISPLAY_TYPE_BASE_ID or DISPLAY_TYPE_REFRESH is selected, automatically set the correct measurement mode.
  - If measuring the colorimeter correction testchart, automatically ensure a suitable measurement mode for colorimeters (if they support more than refresh and non-refresh measurement modes).
  - Do not use spline interpolation for curve plots.
  - Updated french translation, thanks to Loïc Guégant.
  - Renamed calibration quality to calibration speed.
  - Set calibration speed for all presets to medium.
  - Standalone testchart editor: Parse first non-option argument as file to be opened.
  - Testchart editor: Always generate good optimized points rather than fast.
  - Testchart editor: Use existing file path when saving testchart.
  - Testchart editor: Greatly improved the speed of paste operations when comparatively large data sets are used.
  - Disallow -d and -D as extra arguments for Argyll's `targen` as the testchart editor only supports video RGB.
  - Reset adaptive measurement mode when restoring defaults.
  - Close all profile information windows when hiding the main window instead of just hiding them (don't reopen them when the main window is shown again).
  - Curve viewer: Use float formatting for input RGB display.
  - Only skip legacy serial ports if no instrument detected.
  - Also specify Argyll `dispcal`/`dispread` -y parameter for spectrometers.
  - Use Rec. 709 whitepoint chromaticity coordinates for “Video” preset.
  - Changed profile installation error message for virtual display devices.
  - Make it clearer which calibration is used when doing a “Profile only”: When a calibration file is going to be used, change the message from the warning “The current calibration curves will be used” to the informational “The calibration file `<x>` will be used” with the usual options to embed/not embed/reset video card gamma table.
  - Allow the use of calibration curves when profiling a web display.
  - When creating a colorimeter correction from profile(s), get the instrument name from the embedded TI3 if the data source is not EDID.
  - Do not specify (superfluous and thus ignored) patch window positioning arguments for `dispcal`/`dispread` when using a virtual display.
  - 3D LUT: Removed black point compensation option (no longer easily possible because it now uses Argyll's `collink` internally. You can still have the effect of BPC by creating a display profile with BPC enabled and using it as destination profile during 3D LUT creation).
  - Always copy/move temporary files to the save location if not a dry run, also in case of an error. If copy/move fails, keep them in the temporary directory and inform the user.
  - Disable black point compensation for the “Prepress” preset (there are three presets without bpc - “madVR”, “Prepress” and “Softproof”) and use L* as calibration tone curve.

  #### Fixed in this release:

  - Show black point correction choice also when switching from refresh to any other measurement mode instead of only when switching from refresh to LCD measurement mode or vice versa.
  - Corrected averaged RGB transfer function display.
  - Adaptive measurement mode could not be disabled (regression of r1152 where adaptive measurement mode was made default in dispcalGUI).
  - Work-around a very rare problem where a (bogus) display size of 0x0 mm is returned.
  - Check if the configured colorimeter correction exists before adding it to the list.
  - Update colorimeter correction and testchart lists after deleting settings files.
  - Don't carry over colprof arguments from testchart file (fixes occasional wrong display model and manufacturer in profiles).
  - Average, RMS and maximum delta E metadata was not added to profiles if equal to or greater than 10.
  - Unhandled exception when 3D LUT window was opened and there was no profile selected under settings and also no display profile set.
  - Unhandled exception if colorimeter correction does not exist.
  - Standalone curve viewer: Fix loading of .cal file via commandline argument.
  - Don't strip trailing zeros when displaying average gamma in the status bar of the profile information or curve window.
  - Only set adaptive and hires measurement mode when the instrument supports it (fixes measurement mode switching to non-adaptive if toggling betweeen a colorimeter and a spectrometer).
  - Mac OS X with Argyll CMS 1.5 and newer: Also search library folders for Argyll CMS support files (fixes imported colorimeter corrections not found).
  - Only fall back to private copy of pnp.ids under Mac OS X and Windows.
  - Updated link to Datacolor website download section for the Spyder 2 Windows installers.
  - Transposed bits for EDID red y chromaticity coordinate.
  - Curve viewer / profile info window: Reset tone response curve calculation when toggling LUT checkbox.
  - Correctly react to detected display changes when the actual physical displays didn't change (e.g. when switching Argyll between versions supporting and not supporting the virtual “Web” display).
  - Keypresses or cancel were not recognized during patch reading.
  - Display uniformity measurements: Q or ESC had to be pressed twice to exit.
  - Do not use “install profile” message for non-display profiles.
  - 3D LUT: “apply vcgt” checkbox stayed disabled after switching from a devicelink source profile to a non-devicelink source profile.
  - Update all open windows when switching Argyll versions
  - Do not reset selected colorimeter correction to none when selecting a preset or a settings file.
  - Measurement window position was not correct when switching from web display.
  - Show an error message when choosing a directory as profile save path where no subdirectories can be created.
  - Python 2.7 compatibility: Mask u16Fixed16Number (fixes profile information not working for profiles with negative XYZ or chromaticity values when using Python 2.7).
  - wxPython 2.9 compatibility: Do not specify number of rows in dynamically growing FlexGridSizer.
  - Linux: Use colord's quirk_vendor_name to fix the manufacturer string.
  - Mac OS X 10.6 and up: Clearing and loading calibration needs root privileges in some circumstances.
  - Windows: Correctly escape quotes in arguments (fixes hang when profile name, program path or Argyll path contains a single quote).
  - Windows: Show a meaningful error message when a subprocess can't be started instead of hanging indefinitely.
  - Windows: Ignore WMI errors.
  - Windows: Selecting testcharts saved in the root of a drive under Windows.
  - Windows: Disable broken Windows 2000 support (was broken since 0.8.5.6 when the interactive display adjustment GUI was introduced and is not fixable as Windows 2000 does not implement the required AttachConsole functionality).
  - Windows/Mac OS X: If Argyll profile installation failed, a success message was still shown.
2013-03-03 19:42 (UTC) 1.2.7.0

  ### 1.2.7.0

  #### Fixed in this release:

  - Colorimeter correction creation not working when using Argyll CMS 1.5.0 because of missing newly required fields in CGATS data.
  - Mac OS X: Accidentally swapped “/Users/<Username>/Library/Application Support” and “/Library/Application Support”.
2013-03-01 09:39 (UTC) 1.2.6.6

  ### 1.2.6.6

  #### Added in this release:

  - Argyll CMS 1.5.0 compatibility.
  - Ability to do remote measurements using Argyll CMS 1.4.0 and newer (Firefox is recommended as client). See remote measurements and profiling.
  - Include black level and contrast in profile verification reports (if possible, i.e. if the test chart contains a RGB=0 patch).
  - 3D LUT: Support color space conversion ('spac') profiles.
  - DCI P3 reference profile.
  - Add “Quality” (if applicable) and “License” metadata to profiles.
  - Add colord device ID mapping to profile metadata.
  - Linux: Add screen brightness to profile metadata if profiling a mobile computer's screen (using the org.gnome.SettingsDaemon.Power DBus interface).
  - Additional logging.

  #### Changed in this release:

  - Revised display uniformity test to generate HTML reports.
  - Use a delay of 200 ms for display uniformity measurements.
  - Detect “Calibrate failed with 'User hit Abort Key' (No device error)” Argyll CMS error message and ignore further errors to prevent popping up multiple error dialogs.
  - Reload currently selected calibration after verifying a profile.
  - Add metadata to fast shaper matrix profiles (e.g. gamut volume and coverage).
  - When deleting a settings file, also offer CCSS, CCMX and files starting with the settings file basename in the same directory for deletion.
  - Enable use of absolute values in profile verification reports regardless of testchart.
  - When loading a profile without calibration settings, look for an accompanying colorimeter correction in the same directory.
  - When only creating a profile and not calibrating, give a clear choice whether to embed current calibration curves in a profile or not.
  - When using black point compensation, keep the black point compensated TI3 measurement file in addition to the unaltered file.
  - When restoring default settings, don't reset the 3D LUT abstract profile as well as 3D LUT and profile info window positions.
  - Truncate the colorimeter correction description displayed in the dropdown if it's overly long.
  - Only load linear calibration curves into the curve viewer when resetting the video card gamma table.
  - Do not remove spaces from the instrument name when assembling the profile name.
  - Only compress JavaScript in HTML reports if the `report.pack_js` configuration option is set (default 1 = compress).

  #### Fixed in this release:

  - Improved instrument event handling.
  - When measuring the screen using a spectrometer, make sure to repeat the instrument calibration until it is successfully completed or canceled (ColorMunki Design/Photo).
  - When measuring ambient light with a spectrometer, abort after a 30 second timeout if instrument calibration did not complete.
  - Correctly react if the instrument sensor is in the wrong position and prompt the user to set the correct position.
  - Mouse cursor and clicked “Measure” button stayed hidden when aborting a measurement in the display device uniformity test window.
  - Updating the calibration (vcgt) of a profile didn't work if first selecting a `.cal` file, ticking the “Update calibration” checkbox and then switching to the profile.
  - Disable all calibration controls (except the quality slider) when “Update calibration” is ticked.
  - Only enable “Update calibration” checkbox if calibration can actually be updated.
  - Disable the “Create colorimeter correction...” and “Create 3D LUT...” menu items as well as the “LUT” checkbox in the curves and profile information windows if Argyll CMS executables are not found.
  - Update measurement modes when switching Argyll versions.
  - wxPython 2.9 compatibility.
  - Set manufacturer, model, creator and ID in reference profiles (except ClayRGB and sRGB from Argyll).
  - Only switch over to progress dialog after a three second delay (fixes erroneously switching over to progress dialog under Windows when running calibration or display uniformity measurements directly after a canceled testchart measurement).
  - If using a DTP92, only offer refresh measurement mode.
  - Make sure updated profiles also have updated descriptions.
  - Also overwrite .gam.gz and .wrz files if overwriting an existing profile.
  - Mac OS X: Make sure the menus are re-enabled after calibrate & profile.
2013-01-07 19:41 (UTC) 1.1.8.3

  ### 1.1.8.3

  #### Changed in this release:

  - Show display device uniformity measurement window on selected display device if multiple display devices are connected.
  - Hide mouse cursor and clicked button while measuring display device uniformity.

  #### Fixed in this release:

  - Sporadic measurement hang when measuring display device uniformity.
  - Wrong window being shown when calibrating after display device uniformity measurements or vice versa.
2013-01-05 13:32 (UTC) 1.1.7.0

  ### 1.1.7.0

  #### Added in this release:

  - Preliminary Argyll CMS 1.5.0 compatibility.
  - Added facility to measure and report display device uniformity. Known issue: Sometimes measurements hang. Press space to try and continue.
  - 3D LUTs can optionally incorporate abstract (“Look”) profiles.
  - 3D LUTs can be created from Device Link (class “link”) and input (class “scnr”) profiles.
  - 3D LUTs can also be created in SPI3D format.

  #### Changed in this release:

  - Updated french translation, thanks to Loïc Guégant.

  #### Fixed in this release:

  - Fedora: Calibration curves were reset to linear when installing a profile and using the Fedora packaged Argyll CMS.
  - Linux, Mac OS X, Windows (Administrator): Colorimeter corrections imported from i1 Profiler and ColorMunki Display software were not listed in the dropdown menu.
2012-11-05 20:32 (UTC) 1.1.2.9

  ### 1.1.2.9

  #### Changed in this release:

  - Simplified Spyder 2 enabling instructions.

  #### Fixed in this release:

  - Broken Unicode support (unhandled exception) when dealing with colorimeter correction descriptions containing 8-Bit characters.
  - Check if xicclu is found before attempting to use it for the profile information window (gets rid of bogus “'NoneType' object has no attribute 'encode'” message).
  - Use a default generic message when prompting to choose a profile.
2012-10-05 19:04 (UTC) 1.1.2.1

  ### 1.1.2.1

  #### Changed in this release:

  - Disable source profile selector in advanced gamut mapping options if not atleast one of perceptual or saturation checkboxes is selected.
  - Only show a warning if an incompatible colorimeter correction is explicitly selected via the filebrowser.
  - Show a less cryptic error message if an invalid file is selected when importing colorimeter corrections from other display profiling software.

  #### Fixed in this release:

  - Whitepoint color temperature is an integer, not a float. This fixes calibration settings being detected as changed when they actually haven't.
  - Worked around a bug in wxPython where controls in a hidden window react to focus events. This fixes the sporadic hang after calibration measurements during a “Calibrate & profile” run.
  - Linux, Mac OS X: Unhandled exception when trying to import colorimeter corrections from other display profiling software and selecting a file with '.txt' extension.
2012-09-15 15:38 (UTC) 1.1

  ### 1.1

  #### Added in this release:

  - Additional profile name placeholder %ds for the display device serial from EDID if applicable (may be empty or bogus).
  - Windows: Additional profile name placeholders %dnw (DeviceString) and %dnws (shortened DeviceString, it may be the same as %dnw if shortening isn't possible). The former is equivalent to what's shown in the display device dropdown. The DeviceString is often more verbose as the sometimes very generic EDID device name (placeholder %dn).

  #### Changed in this release:

  - Updated spanish translation (thanks to Roberto Quintero).

  #### Fixed in this release:

  - Show an error message if a colorimeter correction cannot be used with the selected instrument.
  - Show an error message when trying to import colorimeter corrections from an unsupported filetype.
2012-08-01 10:13 (UTC) 1.0.9.0

  ### 1.0.9.0

  #### Changed in this release:

  - Use the original file basename for colorimeter corrections copied over to the storage directory (previously, if a colorimeter correction was copied, it inherited the same basename as the rest of the measurement/profile/calibration files, thus making it a bit cumbersome to determine which colorimeter correction was originally the source, especially in profile verification reports which only showed the filename and not the description from the file contents).
  - Show colorimeter correction file basename in addition to the description if they are different.
  - Linux: Fall back to gcm-import if colord profile installation fails.

  #### Fixed in this release:

  - When switching to L*/Rec. 709/SMPTE or sRGB and then loading settings with a gamma value, the gamma entry field was not shown.
  - Report on calibrated/uncalibrated display and calibration verification did not work if using a colorimeter correction (regression of changeset #1020).
  - Do not freeze if loading a settings file which had an accompanying colorimeter correction that was since deleted.
  - Windows 2000: Don't fail to launch.
2012-06-28 22:05 (UTC) 1.0.7.7

  ### 1.0.7.7

  This is a bug-fix release for version 1.0.7.6.

  #### Fixed in this release:

  - Unhandled exception in gamut view calculation after profile creation if using french localization.
2012-06-23 00:25 (UTC) 1.0.7.6

  ### 1.0.7.6

  #### Added in this release:

  - Option to auto-select a suitable colorimeter correction if available locally.
  - Ability to choose between L*a*b*, XYZ and xyY in profile verification reports.

  #### Changed in this release:

  - Reset default black point correction from automatic to off.
  - If a profile contains no 'vcgt' tag, assume linear calibration.
  - When creating a colorimeter correction, remember the last selected reference and colorimeter measurement file separately.
  - When creating a colorimeter correction, automatically only use white, red, green and blue patches (at 100% device value each) from measurement files, regardless if they contain more patches. This allows re-using of measurement files with different patch counts (as long as they contain those four combinations) that have been created as by-product of other operations, e.g. during profiling. Note that measurements still need to be done under identical conditions and within reasonable timeframe (ideally less than a few minutes apart) to minimize effects of display and instrument drift when creating colorimeter corrections from them.
  - When measuring the colorimeter correction testchart, automatically set the resulting measurement as last selected reference or colorimeter file depending on whether it contains spectral data or not.
  - When restoring the current calibration after measuring the colorimeter correction testchart, do it silently (don't show a message window).
  - Filter colorimeter corrections by selected instrument.
  - Show colorimeter correction description in the dropdown instead of the filename. Show the filename and path on mouse hover.
  - ColorHug: Only enable colorimeter corrections for “Factory” and “Raw” measurement modes.
  - ColorHug: Automatically set “Factory” measurement mode when measuring the colorimeter correction testchart and measurement mode is not yet “Factory” or “Raw”. Restore previous measurement mode afterwards.
  - Linux: Enable ColorHug support by default.
  - Linux: colord wrapper now uses PyGObject instead of ctypes.
  - Updated french translation, thanks to Loïc Guégant.

  #### Fixed in this release:

  - When creating a 3D LUT, don't fail if the target profile contains no 'vcgt' tag and the preference is “Apply calibration” (which is the default) irrespective of checkbox state.
  - Use colorimeter correction (if applicable) from settings stored in calibration files and profiles when loading them.
  - When creating a colorimeter correction, the display name in the description is now taken from the measurement file if available.
  - When creating a colorimeter correction, automatically order the measurements exactly the same by device (RGB) triplets.
  - Hide any profile information window(s) when the main window is hidden and restore them when it is shown again.
  - Correct ID on profile created from EDID after adding gamut coverage/volume metadata.
  - Measurement modes other than “LCD (generic)” and “Refresh (generic)” are now correctly restored from settings embedded in calibration files and profiles.
  - If using the current calibration curves for profiling without calibrating (“Profile only” with “Reset video card gamma table” unchecked), using Argyll CMS 1.4.0, the resulting profile will now contain a 'vcgt' tag with the current calibration like with previous Argyll versions.
  - RGB bars and chromaticity/color temperature readouts when adjusting a whitepoint with blackbody target are now working correctly.
  - Ignore and do not show any explicitly selected Colorimeter Calibration Spectral Sample (CCSS) file for instruments that do not support it.
  - Changing Argyll version/binaries in dispcalGUI with automatic instrument detection switched off is working correctly again without the need to restart the program.
  - Show ColorHug-specific measurement modes (please run instrument detection once again to refresh the list if you already used the ColorHug in a previous version of dispcalGUI).
  - Saturation gamut mapping settings are no longer ignored.
  - Trying to view profile information for profiles whose black point X Y Z sum is zero will no longer result in a division by zero error.
  - Black point compensation is no longer attempted if not atleast one black or white patch is found in measurement data.
  - Linux: Don't error out if profile installation with dispwin fails, but profile installation via colord or oyranos-monitor is successful (fixes profile installation when using the distribution-packaged Argyll under Fedora)
  - Linux: colord device key name now correctly adheres to device naming spec for xrandr devices (fixes some profile installation problems).
  - Linux, Windows: Correctly detect in the profile loader if linear calibration is assumed when using Argyll CMS 1.4.0 or newer.
  - Windows: Continuous measurements during interactive display adjustment are now stopped reliably when clicking the “Stop measurements” button or hitting the space key.
2012-04-02 19:24 (UTC) 0.9.9.1

  ### 0.9.9.1

  #### Added in this release:

  - Spyder 4 support if using Argyll CMS >= 1.3.6. To make all measurement modes available, you have to use “Import correction matrices from other display profiling softwares...” from the “Tools” menu.
  - Experimental ColorHug support is enabled through Argyll CMS >= 1.3.6 if the `ENABLE_COLORHUG` environment variable is set, but the ColorHug currently doesn't work reliably across all platforms.
  - Added information about instrument measurement modes to the ReadMe.

  #### Changed in this release:

  - GUI spring-cleaning: Re-arranged some controls and replaced radiobuttons and read-only combo-boxes with choice controls instead. Only the controls related to a selected choice are shown.
  - Default calibration black point correction to automatic.
  - Replaced previous 19-patch colorimeter correction testchart with smaller 4-patch version (just red, green, blue at 100% each and white, as is the default with Argyll CMS 1.3.6).
  - Linux packages: Added Argyll CMS to dependencies. Please note: If you want the latest Argyll features or run into problems, it is recommended to download the standalone Argyll binaries from argyllcms.com as the distribution repositories often only contain older Argyll CMS releases.

  #### Fixed in this release:

  - Fixed unhandled exception when adding metadata to a profile from EDID that contains an invalid (out of range) gamma value.
  - Fixed slightly off the mark whitepoint in resulting profile when using black point compensation (typical max. error 0.2 ΔE*76). You may want to re-create existing profiles.
  - Do not reset visibility of advanced calibration options when restoring defaults.
  - Store black point compensation setting in profiles.
  - Mac OS X: The application bundle now again contains all required files (no missing files when dragging just the bundle to Mac OS X “Applications” folder).
2012-03-15 14:45 (UTC) 0.9.6.6

  ### 0.9.6.6

  #### Added in this release:

  - Black point compensation option for profiles (default ON). This effectively prevents black crush, but at the expense of accuracy of the resulting profile.
  - Profile information window with 2D gamut plot as well as information pane which shows profile header and tag data in detail (with few exceptions).
  - Ability to create display correction 3D LUTs for use in movie post-processing applications that don't have ICC support. Currently supported are the `.3dl` and `.cube` formats.
  - Write gamut VRML files and calculate coverage and volume percentages against sRGB and Adobe RGB when creating profiles.
  - Add 'chrm' tag (xy chromaticities for each primary) to created profiles. Unlike the values from 'rXYZ', 'gXYZ', 'bXYZ', A2Bx or 'clrt' tags, the 'chrm' data corresponds to the actual measured chromaticities without chromatic adaptation or interpolation. The 'chrm' tag is purely informational.
  - Windows 7 and later: Added an option to let the operating system handle calibration loading when installing a profile (this option requires dispcalGUI to be run as Administrator and is also available in the dispcalGUI installer. If selecting the option there, the dispcalGUI Profile Loader will not be installed to the startup items. A shortcut to the loader is still available in the dispcalGUI folder in the start menu though, to be able to quickly force a reload of calibration).

  #### Changed in this release:

  - Instrument detection now defaults to manual. A click on the icon with the swirling arrows or choosing the corresponding menu item in the “Options” menu detects connected instruments. Automatic instrument detection can be (re-)enabled/disabled there, too.
  - The dispcalGUI Profile Loader can now be set to not show error messages again (errors will still be logged).
  - Tone response curves are now plotted as L* → RGB by default and are also calculated for LUT profiles (profiles with both LUT and matrix TRC tags allow on-the-fly switching between them). In addition, the transfer function is shown if it can be estimated.
  - Windows: Allow enabling/disabling of calibration loading on login when installing a profile (to be able to change this option when Windows 7 or later is set up to handle calibration loading, either dispcalGUI needs to be run as administrator or in the Windows color management control panel “Advanced” tab, click on “Change system defaults...” and disable “Use Windows display calibration”).

  #### Fixed in this release:

  - Do not fail to launch due to unhandled exception when parsing CGATS files containing KEYWORD, INDEX, SAMPLE_ID or DATA_FORMAT values in exponential notation.
  - Do not use exponential notation for low (< 0.0001) calibration black level target values.
  - Correctly handle failed instrument calibration (by asking to repeat) and measurement failures which are not misreads or communication failures (and should thus not be retried automatically).
  - Also look at ASCII descriptor blocks when determining the display device name from EDID (fixes display model not being set in profiles for certain Apple displays).
  - Don't loose 'mmod' tag (monitor make and model) when creating a profile from measurement data embedded in an existing profile.
  - Automatically restore calibration after measuring the colorimeter correction testchart.
  - Restore Argyll CMS < 1.3.0 compatibility (broken in 0.8.9.3).
  - Windows Vista, 7 and later: Automatically enable “Use my settings for this device” in Windows' colormanagement settings when installing a profile.
2012-02-11 03:56 (UTC) 0.8.9.3

  ### 0.8.9.3

  #### Fixed in this release:

  - Selecting a smaller default testchart than the recommended one did not work (was reset to the recommended default when starting measurements or re-starting dispcalGUI).
  - Restore previously selected testchart if canceling colorimeter correction measurements.
  - Disable the “Measure” button in the “Create colorimeter correction” dialog if no display or instrument detected/selected.
  - Disable menus while the main window isn't shown (only affects operating systems where the menu is not part of the main window e.g. Mac OS X).
  - Linux: Fixed i1 Display Pro / ColorMunki Display missing from Argyll udev rules (this was actually already fixed in 0.8.5.2, but not mentioned in the changelog).
  - Mac OS X Lion: Removed sporadic password dialog being shown after calibration measurements when running “Calibrate & profile”.
  - Mac OS X Lion: Fixed an issue with profile installation for the current user which only installed the profile for the root user, thus not making it available in system preferences and making e.g. the login screen the only visible place where it was effectively being used.

  #### Changed in this release:

  - Allow the selection of LCD or CRT measurement modes for spectrometers too (determines the available controls during interactive display adjustment).

  #### Added in this release:

  - GUI for interactive display adjustment.
  - Add 'mmod' tag (monitor make and model, an Apple-specific private tag) to created profiles (ensures the profiles still show up in Mac OS X system preferences if “Show profiles for this display only” is ticked).
2012-01-24 18:40 (UTC) 0.8.5.2

  ### 0.8.5.2

  #### Fixed in this release:

  - Added missing numbers to “delta E too high” message when trying to upload a profile with low self-fit accuracy.
  - Decoding of numerical manufacturer ID from EDID when adding metadata to a profile was done in the wrong byte order.
  - Fixed missing terminating NUL character for copyright tag when creating a profile from EDID.
  - Fixed missing underscore in EDID colorimetric metadata key names as per the ICC meta Tag for Monitor Profiles specification.
  - Linux: Display measurements couldn't be started if dispcalGUI was installed via the 0install feed.
  - Mac OS X: The file which maps Plug'n'Play device IDs to manufacturer names was not found when running from the application bundle, resulting in manufacturer entries in profiles always being equivalent to the three-letter PnP ID instead of the full manufacturer name.

  #### Changed in this release:

  - Measurements for colorimeter corrections can now be started directly from the dialog, and the previous testchart is restored afterwards.
  - Add more metadata to generated profiles to allow better automatic selection/ranking on systems that support it and standardized a few previously dispcalGUI-only keys (ICC meta Tag for Monitor Profiles / GCM metadata specification).
  - Use product code as fallback for make/model when creating profiles from EDID.
  - Windows: In case of an Argyll CMS 'config 1 failed' error upon trying to use an instrument, inform the user its driver may not be installed.

  #### Added in this release:

  - Added ability to specify the display technology for created colorimeter corrections.
  - Enabled overriding of default gamut mapping intents for LUT profiles. “Luminance matched appearance” is the default override for perceptual intent, which provides an effect similar to black point compensation.
  - The colorimeter corrections database now has a public web interface and API.
2011-12-08 13:33 (UTC) 0.8.1.9

  ### 0.8.1.9

  #### Fixed in this release:

  - Ignore 'unknown' (not required) fields when verifying CGATS (fixes bug 'invalid testchart' after profiling with spectrometer, introduced in r780).
  - Force a default testchart if the selected one is invalid.
  - Linux (autopackage): Set `PYTHONDONTWRITEBYTECODE=` (empty string) to fix installation on Mandriva 2011.

  #### Changed in this release:

  - Default profile type should be 3x shaper + matrix, not single shaper + matrix.
  - Some of the advanced calibration options (gamma type relative/absolute, ambient adjustment, black point correction and offset) are now hidden by default and can be shown via the corresponding menu item in the options menu.

  #### Added in this release:

  - Option to share profiles via the openSUSE ICC Profile Taxi service.
  - Option to create profiles from extended display identification data (EDID).
  - Linux (GNOME 3): colord compatibility (query current profile, install & set profile).
2011-10-06 21:44 (UTC) 0.7.8.9

  ### 0.7.8.9

  #### Fixed in this release:

  - Additional commandline arguments were ignored when doing profile verification measurements.
  - Windows: If the startup folder in the start menu was deliberately deleted, the profile loader shortcut wasn't created when installing a profile.
  - Windows: Profile loader correctly verifies if the calibration was sucessfully loaded.

  #### Changed in this release:

  - Skip legacy serial ports by default when detecting instruments (serial instruments like the DTP92 or Spectrolino will no longer be selectable unless you manually set `skip_legacy_serial_ports = 0` in `dispcalGUI.ini` or use a serial to USB adapter).
  - Windows: The profile loader shortcut in the startup folder inside the start menu is now created at installation time (and removed when uninstalling).
  - When checking for program updates, show the changelog for the new version if an update is available.
  - Confirm enabling of debugging output.

  #### Added in this release:

  - Support for Argyll CMS 1.3.4 features: i1 Display Pro and Colormunki Display, Colorimeter Calibration Spectral Sample (.ccss) files.
  - Ability to import colorimeter corrections from other display profiling softwares. Currently iColor Display, i1 Profiler and ColorMunki Display are supported.
  - Ability to create correction matrices and Calibration Spectral Sample files, with the option to share them via an online database.
  - Option to automatically check for program updates on startup.
  - Added information how to fix instrument not working correctly/constantly disconnecting under Linux due to a conflict with libmtp (thanks to Pascal Obry who notified me of the issue back in May 2011).
2011-08-05 01:06 (UTC) 0.7.3.7

  ### 0.7.3.7

  #### Fixed in this release:

  - Linux: Fixed multi-display support when not using separate X screens.
  - Mac OS X: Fixed not being able to run under a standard user account, and Mac OS X 10.7 compatibility.
  - Mac OS X 10.4.x: Fixed functionality requiring elevated privileges, e.g. installing profiles system wide or enabling the Spyder 2 using Argyll 1.1.x (regression of a change introduced in r706 / 0.7.0.7)
  - Windows: Fixed several problems with special characters in paths which are not representable through the file system encoding.
  - Windows: Worked around OS localtime() bug. If the system's clock was set to a date far into the future, dispcalGUI failed to launch on subsequent runs because of the logfile's timestamp which could not be processed by localtime().
  - Windows Vista/7: Querying the user display profile resulted in a “not found” error if the checkbox “Use my settings for this device” was never ticked in Windows' color management control panel, failing the fallback of querying the system display profile in case of no user display profile.

  #### Changed in this release:

  - All presets now use curves + matrix as profile type (for better overall application compatibility).
  - Better feedback when trying to open broken/invalid files (display an error dialog instead of just logging the error).
  - Icons in the task switcher on Windows Vista/7 (and presumably Linux) should now be crisp and not pixelated.
2011-06-02 21:45 (UTC) 0.7.0.7

  ### 0.7.0.7

  #### Fixed in this release:

  - wxPython 2.8.12 compatibility.
  - Linux: Preserve environment when installing a profile system-wide so $DISPLAY is available for dispwin.
  - Linux (Source): Changed highest supported Python version to “lower than 3.0” because openSUSE Build Service would choke on “lower than or equal to 2.7” when building for Ubuntu 11.04.
  - Linux (Source): Fixed setup.py bdist_deb as far as possible (see notes under installing from source, additional setup commands, bdist_deb)
  - Windows: Fixed error when the display profile cannot be determined (e.g. when running remotely).
2011-04-20 21:08 (UTC) 0.7.0.0

  ### 0.7.0.0

  #### Fixed in this release:

  - Updating profile verification reports created in versions prior to revision 672 should not strip calibration and gray balance information anymore (regression of a change in r672).
  - If the Spyder 2 was enabled using Argyll CMS 1.2 or newer, this should now be reflected correctly in the “Tools” menu by a checkmark next to the “Enable Spyder 2” menu item.
  - Linux (Autopackage, DEB and RPM installs) and source: Fixed missing application icons in sizes other than 16x16 and 32x32 if the source archive was created with setup.py under Mac OS X or Windows (regression of a change in r501).
  - Linux/Windows: The location of the Argyll binaries was not stored in the system-wide configuration, which could prevent the profile loader from finding the Argyll binaries if they were not on the PATH environment variable and a profile was installed system-wide.
  - Windows: Fixed program termination if EnumDisplayDevices fails (e.g. when running remotely).
  - Windows: Fixed program termination if a display device has no driver entry in the registry (the very generic Windows error message is misleading in that case: It pretends a file was not found).
  - Windows XP: Correctly enumerate display device names and EDID.

  #### Changed in this release:

  - When doing verification measurements of a (non-Argyll) profile containing a chromatic adaptation 'chad' tag, dispcalGUI now tries to use the same chromatic adaptation transform to calculate adapted values from the measurements instead of using a hardcoded Bradford transform.
  - The default delta E formula for “RGB + gray balance” evaluation is now DE 2000.
  - The delta E formula is now locked for the Fogra MediaWedge and IDEAlliance Control Strip evaluation criteria.
  - The “Update calibration” and “Update profile” checkboxes were combined into one. This removes the ambiguity about what “Update profile” functionality actually was: Only updating the calibration inside the profile. Both updating stand-alone calibration '.cal' files and calibrations embedded in profiles are now handled with the single “Update calibration” checkbox. The slightly different workflow of only updating the calibration, and then creating an actual new profile on top of it in one go, is still possible by explicitly loading a calibration '.cal' file under “Settings”.
  - Made the GUI a bit nicer towards low screen resolutions by moving more controls into the scrollable area and also removing the graphical banner and allowing horizontal scrollbars if things get really cramped.
  - Windows Vista/7 and later: To be able to install a profile system-wide, you now need to run dispcalGUI explicitly as administrator (right-click the dispcalGUI icon, then select “Run as administrator”) to show the appropriate controls in the profile installation dialog.

  #### Added in this release:

  - Documentation: Updated the information for Photoshop's “The monitor profile […] appears to be defective” message under Known issues and solutions.
  - Documentation: Added Windows XP multiple displays and profiles under Known issues and solutions.
2011-01-24 03:56 (UTC) 0.6.7.7

  ### 0.6.7.7

  #### Fixed in this release:

  - Fixed measurements hanging at the start if using the black background option.
  - wxPython 2.9 compatibility.
  - Windows: Potential COM error caused by obsolete code.
  - Windows Vista/7: Potential WMI errors when trying to read a display's EDID are now suppressed (the EDID can not be read on systems where WMI has errors, which may prevent more accurate display descriptions, but will not impede functionality otherwise).

  #### Added in this release:

  - Profiles can now be dragged and dropped onto the curve viewer.
  - When using the profile verification feature, it is now possible to first select a simulation profile before choosing a testchart.
2010-11-05 03:12 (UTC) 0.6.6.7

  ### 0.6.6.7

  #### Fixed in this release:

  - Re-enabled warning message from the profile loader if the calibration in the video card does not match the requested calibration after loading.
  - Fixed “Show curves” checkbox in the profile installation dialog not doing anything if the curve viewer was not shown before (regression of a change in version 0.6.2.2).
  - Fixed a small visual glitch where the message “Calibration complete” was not cleared from the progress window after instrument calibration.
  - Fixed possibility of unprintable characters from EDID strings (e.g. display name) causing errors.
  - Fixed Argyll CMS diagnostic output not working for dispwin when using Argyll CMS 1.3.1
  - Linux: Fixed Autopackage install not working with Python 2.7

  #### Added in this release:

  - Linux: Added a “Load profile and calibration on login” checkbox to the profile installation dialog. Normally, you want to keep this checked, so that dispcalGUI's profile loader can setup the configured display(s). But if you use another solution for loading profiles, like Oyranos with the CompICC plugin, you should uncheck it, so that display profiles are solely handled by CompICC.
  - Mac OS X: Like on the other platforms, EDID is now used if available.
2010-10-24 04:36 (UTC) 0.6.5.3

  ### 0.6.5.3

  #### Fixed in this release:

  - Fixed a bug where the wrong correction matrix setting was stored in a profile or calibration file when changing the correction matrix, and creating a profile with a previous settings file selected which used a different correction matrix. Note this didn't affect measurements when creating the new profile or calibration file, but when loading it in dispcalGUI, the correction matrix used for the previously selected settings file was set instead of the one actually used when creating the new file.
  - Fixed missing XYZ values for the assumed whitepoint in profile verification reports.
  - Fixed crash when the manufacturer ID from a display's EDID contains invalid data.
  - Honor the selected display when loading calibration curves from a settings file.
  - Linux: Installing profiles under multi-display configurations using separate X screens should now work better when Oyranos is installed (previously, when the profile for the second screen was installed after the profile for the first screen, it would override the first profile in the Oyranos configuration. Profiles can be re-installed with this version of dispcalGUI to fix this).
  - Linux: Profile loader: When Oyranos is installed, but not xcalib, the fallback to dispwin to load the calibration curves was not working.

  #### Changed in this release:

  - Reset additional commandline arguments too when restoring defaults.
  - The profile loader will no longer show an error message when unable to determine a display's current ICC profile, as there may just not be any profile installed for the respective display. Instead, such errors are now silently logged.
  - Improved error messages from the profile loader by adding some information about the affected display for easier troubleshooting of multi-display configurations.
  - Windows: Profile installation: When a system-wide autostart entry for the calibration loader already exists, do not create a per-user entry.
  - Linux: The autopackage can now be installed just for the current user. Note this will not setup instrument access though, as that requires root privileges.

  #### Added in this release:

  - Save the device model and manufacturer description to measurement data (.ti3) files and use that information when creating a profile.
  - Log all output from the profile loader.
  - Ability to just measure a testchart and create a measurement data file (menu “Options”, “Measure testchart”).
  - Approximate gamma for grayscales is shown in profile verification reports.
  - Build system: Added `--skip-postinstall` option.
2010-09-19 17:53 (UTC) 0.6.2.2

  ### 0.6.2.2

  #### Fixed in this release:

  - Trying to verify or view curves of a (non-Argyll) profile with a 'formula' type vcgt tag no longer fails with a 'NameError'.
  - When the measurement window was moved to the leftmost and/or topmost coordinates of the screen, the calculated relative position could become negative and prevent starting measurements.
  - Trying to profile a display which provides an empty model description via EDID no longer fails.
  - Profile name placeholder %im (instrument measurement mode) now inserts the correct string.
  - Profiling did not finish if “Show actual calibration curves from video card gamma table” was checked and the curves window shown.
  - Fixed black point correction rate not being restored correctly when loading settings.
  - Fixed conversion of the color temperature to xy chromaticity coordinates (the input fields in the GUI) which was erroneously being calculated with the formula for daylight even if a blackbody locus was chosen.
  - Fixed assumed whitepoint in profile verification reports erroneously being calculated with the formula for daylight even if a blackbody locus was originally chosen when creating the profile.
  - Fixed profile verification reports not working in Internet Explorer 5.x-6.0 and Opera 7.x.
  - Fixed profile verification reports showing “missing data” for some fields if using the Fogra Media Wedge V3 criteria and the reference file contained both XYZ and Lab data.
  - Mac OS X: A double extension (.icc.icm) is no longer added when creating a profile from an existing one (menu “Options”, “Create profile from measurement data...”).

  #### Changed in this release:

  - When loading settings from calibration (.cal) files, the actual parameters chosen when calibrating are now set instead of stored measured values (e.g. whitepoint, black- and white level. Will only work for .cal files created in this version and up).
  - “Allow skipping of spectrometer self-calibration” (in the “Options” menu) for characterization readings after calibration is now disabled by default to help sensor stability (especially for the ColorMunki).
  - Black point correction rate now uses a floating-point control with the range 0.05...20.0 (consistent with the Argyll CMS dispcal commandline tool) instead of the previous integer control with the range 5...2000.
  - The default evaluation criteria for RGB testcharts in profile verification reports is now RGB only.
  - The default Delta E formula used for results in profile verification reports is now Delta E 2000 (except for standardised criteria like the Fogra Media Wedge V3).
  - Additional statistics in profile verification reports are now hidden by default.
  - Selecting “CMYK” or “RGB” in profile verification reports now actually makes a difference (shows the corresponding device values in the overview).
  - “Evaluate gray balance through calibration only” in profile verification reports is now disabled by default.
  - Windows: Installing a profile system-wide removes an existing user autostart entry for the profile loader to avoid having two entries.
  - Windows: EDID info will be used if available instead of generic device strings ('PnP-Monitor' et al).

  #### Added in this release:

  - Ability to enable Argyll CMS diagnostic (debugging) output for measurements via menu “Options”.
  - Option to choose blackbody whitepoint reference instead of daylight in profile verification reports.
  - Original profile whitepoint is now shown in profile verification reports.
  - Instrument black level and display white level drift compensation options when using Argyll CMS >= 1.3.0
  - Ability to choose a correction matrix for colorimeters when using Argyll CMS >= 1.3.0
  - Allow setting of additional commandline arguments for dispcal, dispread, spotread and colprof via a new menu item in the “Options” menu.
  - IDEAlliance Control Strip 2009 aim values for profile verification with CMYK test charts.
  - Profile verification report shows instrument measurement mode and correction matrix (if any).
  - Menu option to update existing profile verification reports with the current templates.
2010-08-01 03:19 (UTC) 0.5.8.1

  ### 0.5.8.1

  #### Fixed in this release:

  - Argyll CMS 1.2.0 compatibility
2010-07-25 13:19 (UTC) 0.5.8.0

  ### 0.5.8.0

  #### Fixed in this release:

  - The timeout of 10 seconds for the startup of Argyll tools and instrument initialization was too short for some instruments and is now increased to 30 seconds. If the timeout is ever exceeded, dispcalGUI should now also abort automatically and no longer hang.
  - When previewing the calibration upon profile installation, use a linear calibration if no display profile is present when toggling the preview on and off (fixes the curve viewer not updating).
  - Fixed closing the log window not re-enabling the “show log automatically” menuitem.
  - Linux (Autopackage install): Fixed menu entry sometimes disappearing permanently after logging out under GNOME.
  - Linux: Fixed dispcalGUI not working if libX11 or libXrandr do not expose certain functions (e.g. under Mandriva 2009).
  - Linux: Fixed not being able to install a profile using GNOME Color Manager when the profile was not writable.
  - Linux: Fixed not being able to install a profile using Oyranos when the profile was not located in ~/.color/icc/devices/display.
  - Linux/Mac OS X: Saving a log file from the log window now works correctly.
  - Mac OS X: The terminal should no longer lose its focus when the measurement area is shown. This should also make the mouse cursor reappear which is otherwise hidden by dispcal/dispread.
  - Mac OS X 10.6: The current display profile should now be determined correctly (e.g. for the curve viewer) when loading its calibration curves or selecting the “<Current>” settings.
  - Windows (installer): An unused console window is no longer shown when launching dispcalGUI via the installed shortcuts.
  - Windows: Fixed executable not working under Windows 2000.

  #### Changed in this release:

  - Do not pass through the “hit any key to retry” message from Argyll CMS tools to the progress dialog in case of misreads/port communication problems (retries happen automatically, so there is no need and also no possibility for keyboard interaction).
  - Enabling the Spyder 2 is now less cumbersome if the original installation CD is not available (especially on Mac OS X, where the firmware couldn't be found if a recent version of the Spyder 2 software was installed) and should work with the downloadable Spyder 2 software installers (but they need to be run to install the software first because the firmware can't be extracted from the installer binaries directly). Messages are now hopefully more informative to give a better idea of what to do. If the firmware can't be extracted from the Spyder 2 software installer, you are asked to install the software and try again. If that can't be done because of platform incompatibility (Linux), the last choice is to locate the Spyder.lib/CVSpyder.dll file manually (it must be copied from a Mac OS X or Windows system in that case).
  - Linux: Allow installation of profiles using GNOME Color Manager even if XRandR is not working/available.
  - Linux: Installation now checks for existing udev rules/hotplug scripts for instruments and only installs its own rules if none exist yet.
  - Linux/Windows: The profile loader will now show a warning dialog if a profile couldn't be loaded.
  - Linux/Windows: Device model and manufacturer are added to profiles if EDID[10] info is available.

  + Numerous other small fixes and changes.

2010-06-29 19:23 (UTC) 0.4.9.2

  ### 0.4.9.2

  #### Fixed in this release:

  - Spectrometer sensor calibration sometimes accidentally occured when the instrument was still attached to the screen, leading to erroneous subsequent readings.
  - Immediately close a profile after reading to avoid locking it (fixes not being able to delete files from within the GUI).
  - Fixed quirks in “update calibration” and “update profile” operation.
  - The system-wide installation option in the profile install dialog is no longer hidden just because a profile has no embedded calibration curves (vcgt tag).
  - If the calibration curves of the current display profile couldn't be loaded for some reason (broken video card gamma table access, or no profile set), the curve viewer was not yet shown, and then a profile under “Settings” was selected, and then deleted, and then the curve viewer called up, an unhandled exception was raised.
  - Fixed ambient measurement via the “Measure” buttons timing out with the ColorMunki and various error handling issues regardless of instrument which could lead to an un-cancelable, forever looping progress bar.
  - Fixed ambient color temperature measurement via the “Measure” button not updating the kelvin field if selected.
  - Linux (only if the detected filesystem encoding is not UTF-8), Mac OS X and Windows: When installing a profile with “special” characters in the filename (everything not representable as 7-bit ASCII), it is now given an unique name containing the display number and MD5 hash, which fixes a few problems with filename encoding under Linux and Mac OS (under Linux the profile couldn't be successfully installed, under Mac OS X system-wide installation partly broke). This also fixes an issue under Windows where a profile whose name starts with the same first few characters (but has not the same name) as an already existing file in the system profile directory could accidentally overwrite that file, because I had not considered that filenames returned by win32api.GetShortPathName are only unique for the directory where a given file resides—and upon installation, that is the profile storage directory, not the system profile directory.
  - Linux, Mac OS X: When installing a profile, interaction with the curves window works now while the installation dialog is shown.
  - Windows (standalone executable): Fixed ambient measurement via the “Measure” buttons reproducably hanging (regardless of instrument) if the MS Visual C++ 2008 Redistributable Package (x86) was not installed.

  #### Added in this release:

  - Linux: Oyranos support. If it is available, profiles are imported to the Oyranos database using `oyranos-monitor` upon installation, and an appropriate autostart entry is created to load calibration curves and setup the X _ICC_PROFILE atoms on login.
  - Linux: Rudimentary support for GNOME Color Manager. If it is available and XRandR is working, profiles are imported to GCM upon installation. Any calibration loaders created previously by dispcalGUI will be removed (except the possible `oyranos-monitor` entry). You then still have to manually assign the profile to a display in the GCM preferences by selecting it and then choosing the profile from the dropdown menu (in the future, this process will be made obsolete by using GCM library functions). Loading of calibration curves and setting up the X _ICC_PROFILE atom and XRandR output properties is then handled by GCM.
  - Menu option to automatically show the log window after certain operations (measurements, profile creation).

  #### Changed in this release:

  - The terminal window is now only shown when required (e.g. keyboard interaction during interactive display adjustment). Also, the terminal used is no longer an external application, but a minimal emulator that just passes keyboard input to the Argyll CMS tools.
  - All measurements which do not require keyboard interaction with Argyll CMS tools now show a progress dialog with the option to cancel the measurements. All output that was previously visible through the terminal is still available via the log window (“Tools” menu) and -file.
  - Always load calibration curves before installing a profile, even if the profile has no vcgt tag (resets calibration to linear).
  - Automatically scroll to bottom when messages are added to the log window.
  - Store calibration and profiling settings in extra sections inside the TI3 file instead of the profile copyright tag. Use “generic” copyright information (“Created with dispcalGUI `<version>` and Argyll CMS `<version>`”), overridable by adding a line `copyright = My copyright information` in dispcalGUI's configuration file.
  - Made sure that only 7-bit ASCII gets written to a profile's copyright, ASCII description, and ASCII device model description. ICC v2 Unicode and Mac ScriptCode descriptions are now also written by default.
  - Presets default to high profile quality.
  - Remember visible state of curves, log window and testchart editor.
  - Updated french translation (thanks).
  - Linux: Unattended calibration & profiling no longer depends on xautomation.
  - Linux: EDID[10] is now used (if available) when generating descriptive identifiers for displays.
  - Linux: When determining a display's associated profile, check XrandR _ICC_PROFILE output properties first if available.
  - Linux: The option to install a profile system-wide is not offered if using GNOME Color Manager to install profiles (GCM has its own way to set profiles as system default).
  - Linux (only when GCM is not installed or XRandR is not working), Mac OS X, Windows: Installing a profile system-wide now also sets it as default for the current user.
  - Windows Vista and later: The option to install a profile system-wide is no longer offered if using Argyll CMS <= 1.1.1 (system scope in Argyll releases up to 1.1.1 acts like user scope on those systems).

  + Numerous other small fixes and changes. There is now also a mailing list for discussion and support as well as announcements (see at the top of this document).

2010-05-07 22:36 (UTC) 0.3.9.9

  ### 0.3.9.9

  #### Fixed in this release:

  - Fixed unreliable (hanging occasionally) profile install when using system scope under Linux and Mac OS X (regression of a change in SVN r391 / 0.3.9.3).
  - Fixed ICC profile truncation if actual tag data is not in the same order as the tag table (regression of a change in SVN r274 / 0.3.0.7. Argyll profiles were not affected).
  - Fixed potential invalid profile name being generated if some unicode characters can't be conveyed in the file system encoding (Windows, Linux).
  - Fixed possible backslash in profile name due to wrong escaping when replacing invalid characters.
  - Fixed support for codepages 65000 (UTF-7) and 65001 (UTF-8) in the main application under Windows. This is actually a fix for shortcomings of Python.
2010-05-03 18:45 (UTC) 0.3.9.3

  ### 0.3.9.3

  #### Added in this release:

  - Show percentage and amount of tone values per channel (+ grayscales) for calibration curves in the curve viewer and profile verification reports.
  - Profile verification: Enabled gray balance evaluation for all RGB charts containing grayscales (R=G=B). Added option to verify graybalance through calibration only (sets the target L* of each grayscale patch to the measured L* and target a*=b*=0).
  - Added documentation for the interactive display adjustment part of calibration.
  - Added further documentation of the profile verification feature with detailed information about underlying technical aspects.

  #### Fixed in this release:

  - Fixed an unicode error after creating a profile verification report in a path containing unicode characters and a few other unrelated (potential) unicode errors.
  - Fixed potential unhandled exception if a JSON language file is malformed.
  - Fixed unhandled exception (local variable referenced before assignment) if trying to view calibration curves of an output with no video card gamma table access.
  - Fixed rare unhandled exception (local variable referenced before assignment) if logfile couldn't be renamed or removed during rollover.
  - Fail more gracefully (omit traceback from error message) if temp directory couldn't be created.
  - Fixed handling of XDG_CONFIG_DIRS and the system-wide autostart directory if the preferred configuration directory does not exist under Linux when installing a profile in local system scope, which prevented the system-wide autostart entry to be created.
  - Correctly determine system display profile under Windows Vista and 7 if no user profile is set. Fall back to sRGB if no display profile is set.

  #### Changed in this release:

  - Changed default gamma from 2.4 to 2.2 in an attempt to increase the amount of available gamma table tone values after calibration for LCD screens, which often have a native response that is closer to a gamma of 2.2 than 2.4.
  - Changed default profile type to single curve + matrix.
  - Profile verification: Only evaluate grayscales (R=G=B) if their luminance is atleast 1% of the white luminance. Also evaluate combined Δa and Δb range.
  - Moved instrument feature details to separate JSON configuration file.
  - Made compatible with wxPython 2.8.6.0.
2010-03-31 15:24 (UTC) 0.3.8.0

  ### 0.3.8.0

  #### Added in this release:

  - “Very large” testchart with 912 patches.
  - Profile verification: Support (non-Argyll) profiles which use chromatic adaption.

  #### Fixed in this release:

  - Improved error message when Argyll binaries are not found (only files not found are now shown, together with alternatives). Automatically fall back to xicclu if icclu is not found (eg. Ubuntu's Argyll 1.0.3 package doesn't contain icclu).
  - Fixed 'invalid syntax' error when running under Python 2.5.
  - Profile verification report: Fixed a parsing error when reference or measurement data contained numbers in exponential notation.
  - Linux: Unhandled exception if DISPLAY environment variable is in the format `[host]:displaynumber` instead of `[host]:displaynumber.screennumber` (eg. `:0` instead of `:0.0`).
  - Mac OS X: Fixed values entered in combo boxes not updating the configuration correctly under some circumstances.

  #### Changed in this release:

  - Profile verification: Lookup device values relative colorimetrically and adapt the measured values to D50 before comparison (using Bradford matrix), so that the measured whitepoint corresponds to L*a*b* 100 0 0. Please note that verification results obtained with reference files measured in earlier versions of dispcalGUI should not be compared to those obtained via this new approach if the display whitepoint is not D50, as the results are likely to be different as an effect of the relative lookup and the chromatic adaption.
  - Profile verification: Improved support for non-Argyll CGATS text files. Handling is as follows:
    - If the file contains RGB_R RGB_G RGB_B fields, it is handled like a Argyll *.ti1 (testchart) file—any XYZ or Lab data is ignored and the RGB numbers are sent to the display and measured. Afterwards, the measured values are compared to the expected values, which are obtained by sending the RGB numbers through the profile. If RGB values above 100 are found, a range of 0-255 is assumed. Otherwise, a range of 0-100 (like Argyll *.ti1) is assumed.
    - If the file doesn't contain RGB_R RGB_G RGB_B fields, but XYZ_X XYZ_Y XYZ_Z or LAB_L LAB_A LAB_B, it is handled like a Argyll measurement data (*.ti3) file—the values are used to lookup corresponding RGB numbers through the profile and these are then sent to the display and measured. Afterwards, the measured values are compared to the original XYZ or Lab values.
  - Profile verification report: Show measured whitepoint and assumed target color temperature (based on closest daylight temperature), and use them to calculate the Delta E for the whitepoint. A few performance improvements when processing large datasets with several hundred or thousand measurements.
  - GUI and ReadMe: Changed all occurences of the term “LUT curves” to “calibration curves” and also changed all occurences of the term “video LUT” to “video card gamma table” to better distinguish from “LUT profile”. Also renamed the “LUT viewer” to curve viewer as a more accurate description of its functionality.
2010-03-17 18:50 (UTC) 0.3.6.4

  ### 0.3.6.4

  #### Added in this release:

  - Profile verification: CGATS-compatible text files (*.txt) containing measurement data can now be selected in addition to Argyll testchart (*.ti1) and measurement data (*.ti3) files.
  - Profile verification report: Depending on the chart used, you can now choose among different evaluation criteria from within the report. Also added Fogra Media Wedge V3 tolerance values for CMYK testcharts.

  #### Fixed in this release:

  - Profile verification: Error 'Unknown color representation Lab' when trying to verify a L*a*b* LUT profile.
  - Profile verification: Wrong XYZ scaling when reading from *.ti3 files containing XYZ, but no L*a*b* values.
  - Profile verification: When measuring a display other than the first one, the calibration curves were erroneously still loaded to the 1st display.

  #### Changed in this release:

  - Profile verification report: Show nominal and actual measured values as L*a*b* instead of XYZ. Reduced visible decimals in report to increase readability.
  - Split the cramped “Extra” menu into “Options” and “Tools”.
2010-03-13 06:31 (UTC) 0.3.6.2

  ### 0.3.6.2

  #### Added in this release:

  - Profile verification by measurements. Argyll testchart (*.ti1) and measurement data (*.ti3) files can be measured.

  #### Fixed in this release:

  - Testchart editor: Do not automatically select a saved testchart (regression of a change in 0.3.3.5). Do not show empty rows when creating a testchart using an algorythm that does not create the expected number of rows.
  - Bumped wxPython version check to 2.8.8.0 so a proper error message is displayed if wxPython is too old.
  - Linux: When using TwinView or Xinerama, the size of the measurement window was sometimes not correct.
  - Linux: Failure in get_argyll_version if Argyll utilities have alternate names (eg. argyll-targen instead of targen), which could prevent being able to open the testchart editor (regression of a change in 0.3.3.5).
  - Mac OS X 10.4: Fall back to ColorSyncScripting if Image Events does not return a display profile.

  #### Changed in this release:

  - Linux: Info window no longer stays always on top.
  - Linux: When getting the current profile for a display, also look at the _ICC_DEVICE_PROFILE atom (see draft ICC Profiles in X Specification 0.4).
2010-03-02 20:12 (UTC) 0.3.3.6

  ### 0.3.3.6

  #### Fixed in this release:

  - Linux/Mac OS X: 'tcgetattr failed' when trying to calibrate or profile.

  #### Changed in this release:

  - Linux: Updated udev rules.
2010-03-01 06:27 (UTC) 0.3.3.5

  ### 0.3.3.5

  #### Added in this release:

  - Capability to set whitepoint or ambient light level for viewing condition adjustment by measuring ambient light.
  - Profile name %tpa placeholder (test patch amount).
  - Documentation for ambient light level viewing conditions adjustment, advanced profiling options (gamut mapping) and testchart editor in the ReadMe. Also a few additions to the existing whitepoint/white level and tone curve documentation (mostly taken from the Argyll CMS documentation).
  - Two entries to the known issues & solutions section in the ReadMe (swapped colors and Photoshop “Monitor profile appears to be defective”).

  #### Changed in this release:

  - New improved testcharts and presets, with lower patch counts: 12 patches default for gamma+matrix profiles, 48 patches default for curves+matrix profiles (former chart had 91 patches), 124 patches default for LUT profiles which should actually be usable this time around when coupled with a profile quality setting of “high”, unlike its predecessor with 127 patches which yielded mediocre results at best (but for increased accuracy, the new 238-patch “extended” testchart is recommended). 396 and 2386-patch charts (the new “large” and “massive” quantity) are also included.
  - Default to high profile quality (and force for gamma+matrix profiles, as there is no processing penalty like for curves+matrix or LUT profiles).
  - Removed limit for remembered settings files.
  - When calibration or profiling measurements fail, first show the main application window, then the error message (small dialog boxes are sometimes hard to spot on big screens if the application context is missing).
  - Moved profile quality, type and advanced settings above testchart selector (this order is more logical, as profile quality and type influences testchart selection).
  - Testchart editor: Default to adaption of 10% for testchart creation using optimized farthest point sampling (OFPS). Support both device and L*a*b* diagnostic VRML files when creating testcharts using Argyll >= 1.1.0. No longer calculate the amount of white/gray/single color patches or multidimensional cube steps if info is missing in testchart file (calculations take way too long for little added benefit).
  - Cleaned up the known issues & solutions section in the ReadMe.

  #### Fixed in this release:

  - Wrong value for adaption settings in testchart editor being stored.
  - Linux (cosmetic): Incorrect special characters in console window when using non-english locale under certain configurations (regression of a change introduced in 0.3.0.7).
  - Non-critical: File information in Argyll CGATS TI1 to TI3 conversion.
  - Testchart editor: Do not allow overwriting of predefined testcharts when saving. Correctly remember last used filename when “saving as...”.
  - Log window: Correctly remember last used filename when saving.
  - Typo in the ReadMe (the second “Report on calibrated display device” entry under “Menu commands” should have been “Report on uncalibrated display device”).
2010-02-17 15:53 (UTC) 0.3.1.0

  ### 0.3.1.0

  #### Fixed in this release:

  - Running “Calibrate & profile” several times in succession no longer fails on the 2nd and subsequent runs.
  - Linux: Missing wxPython version check for the measurement window subprocess.
2010-02-15 17:27 (UTC) 0.3.0.9

  ### 0.3.0.9

  #### Added in this release:

  - Test chart editor: Support for Argyll 1.1.0 perceptual space-filling quasi-random test patch distribution.
2010-02-13 16:36 (UTC) 0.3.0.8

  ### 0.3.0.8

  #### Fixed in this release:

  - #2951168 Windows: Critical bug with win32 API calls to get the display name returning 8-bit characters where only ASCII was expected.
2010-02-12 20:13 (UTC) 0.3.0.7

  ### 0.3.0.7

  #### Added in this release:

  - Support for Argyll >= 1.1.0 adaptive emissive measurement mode with the i1 Pro spectrometer.
  - All of Argyll's profile types are now available (XYZ LUT on Windows only if using Argyll >= 1.1.0).
  - Support for “very low” calibration quality.
  - Optionally create a fast matrix/shaper profile when just calibrating.
  - “Reset video card gamma table” checkbox in the dialog shown when just profiling.
  - Information how to install Argyll >= 1.1.0 USB drivers on Windows Vista/7 64-bit to the “known issues and solutions” section in the ReadMe.
  - ReadMe, license, bug tracker and support forum can now be accessed from the “Help” menu.
  - “Check for update...” in the help menu (launches a web browser and displays the dispcalGUI homepage if a new version is found).
  - Curve viewer: Capability to show the actual curves from the video card.
  - Curve viewer: Capability to show a matrix profile's rTRC/gTRC/bTRC curves.

  #### Changed in this release:

  - When restoring defaults, selected display/instrument/measurement mode, language and profile name are retained.
  - The display/instrument selector is only enabled if more than one device detected respectively.
  - Changed i1 Pro highres measurement mode from implicit to user choice.
  - Gamut mapping: When selecting a source profile, pre-select a source viewing condition based on profile class (monitor or printer).
  - Updated defaults and presets to Argyll 1.1.0 values (i.e. black output offset).
  - Short display name placeholder (%dns) for profile name should not yield single numbers or model name without model number any more (or atleast less likely).
  - Log messages from most informational and all error dialogs.
  - Show file paths in most dialogs involving file processing.
  - Documentation in the ReadMe has been updated and is now more or less complete for the main application (testchart editor docs are still to be done). Setup instructions have also been streamlined.
  - Moved information how to fix video card gamma table access under Linux/X11 to the “known issues and solutions” section in the ReadMe.
  - Linux: Updated udev rules to those provided with Argyll 1.1.0. Removed obsolete permissions and policy files.
  - Linux: In multi-display setups using separate X screens, it should no longer be necessary to launch dispcalGUI on the display you want to measure.
  - Windows: Get names of displays via additional Windows API calls (should yield more descriptive names than “DISPLAY1”, “DISPLAY2” etc.)
  - Windows (cosmetic): Use default command prompt text color, and a darker variant only when doing measurements.
  - dispcalGUI version now corresponds to SVN revision number, split into its digit components. Build system (setup.py) uses SVN to generate version information.

  #### Fixed in this release:

  - Curve viewer: When no display is selected (i.e. when Argyll binaries are not found), it will now try to show the vcgt of the 1st display's profile.
  - Curve viewer: When hiding the viewer and loading different calibration curves, those changes were not reflected when showing the viewer again.
  - Curve viewer: If a profile does not contain a 'vcgt' tag, clear canvas and disable R/G/B checkboxes.
  - Selection of display used for video card gamma table access not working correctly.
  - Loading of calibration upon initial preview in profile installation dialog if profile does not contain dispcalGUI settings.
  - Do not show failure message if user cancels profile installation via the password dialog when installing in system scope.
  - In some cases, values read from the configuration file were not correctly validated (would only show with deliberately altered or broken config file).
  - colprof output is no longer swallowed when creating a matrix profile with Argyll versions <= 1.0.4.
  - Linux: Fall back to ASCII if detected encoding is not UTF-8 to fix profile install issues.
  - Linux/Mac OS X: Enabling the Spyder 2 colorimeter might need elevated privileges.
  - Linux/Mac OS X: When installing a profile in local system scope, the necessary password was not accepted under newer Linux distros and also Mac OS X > 10.4.11
  - Mac OS X (cosmetic): Suppress spurious AppleScript messages.
  - Windows: Get display profile via registry instead of Windows API because the latter does not reflect runtime changes to profile associations (you still need to refresh the curve viewer when changing profile associations outside of dispcalGUI while it is running).

  #### Known issues in this release:

  - Linux: You can't interact with the drop-down menu or the checkboxes in the curve viewer while a profile installation dialog is shown.
2009-07-16
  - Fixed a glitch in the Linux Autopackage installer where it would install even if required libraries were missing.
2009-06-30 0.2.6b3 (SVN r239)
  - fix (Windows): Fixed a critical bug in the Windows codepath which tried to access non-existent paths when certain settings were used.
2009-06-26 0.2.6b2
  - fix: Only look at <major>.<minor> during the Python version check (fixes a critical error on Ubuntu 9.10 Beta, where the Python revision number has an unexpected value).
  - fix: The curve viewer is now also able to plot calibration curves from *.cal files.
  - fix (Linux): If launched on an X display which is not the first display, the measurement window's location no longer determines the display which is used for measurements. This allows non-Xinerama multiscreen configurations to work with dispcalGUI. Note: You need to launch dispcalGUI on the display you want to measure, e.g. ``DISPLAY=:0.1 dispcalGUI``.
  - fix (Linux): Get the profile from the correct display when loading a display's calibration curves into the curve viewer.
  - fix (Linux, cosmetic): Suppress CUPS warnings encountered on some systems when using the curve viewer.
  - fix (Mac OS X): Do not offer 'Network' scope during profile installation if `/Network/Library/ColorSync/Profiles` does not exist.
  - fix (Windows, cosmetic): Made sure the message "Debug: src/helpers.cpp(140): 'CreateActCtx' failed with error 0x0000007b (the filename, directory name, or volume label syntax is incorrect.)" is not shown when launching the standalone Windows executable, by changing the way *.pyd files are bundled (they are now copied to the executable's directory and are no longer part of the executable itself).
  - chg: The curve viewer resets to linear if a display without associated profile is selected.
2009-06-22 0.2.6b
  - fix: calibration preview checkbox in the “install profile” dialog should now correctly toggle between previous and new calibration.
  - fix: profiling failed when creating a profile on top of an existing calibration.
  - fix: correctly decode environment variables (should fix a failure when trying to create a profile and the username contains non-ASCII characters).
  - fix: automatic restoration of defaults before loading settings from a profile or cal file should no longer restore “do not show again” dialogs.
  - fix (Windows): several errors related to character encoding.
  - chg: unattended calibration and profiling: wait 10 seconds instead of 5 after calibration before trying to start profiling measurements (some instruments seem to need longer to initialize than others, e.g. Spyder 2).
  - chg (Python packages and source): instead of requiring wxPython 2.8.x specifically, only ensure a minimal version of 2.8.
  - add: Curve viewer.
2009-06-11 21:33 (UTC)
  - Added Linux Autopackage download.
  - Renamed 55-Argyll.rules to 92-Argyll.rules, so it can work on Debian too.
  - Removed “Creating a standalone executable from source” section from the ReadMe (the topic is still handled under “Installing from source” / “Additional setup.py commands”).
2009-06-07 0.2.5b4
  - fix: “TypeError: coercing to Unicode: need string or buffer, instance found” when calling any of the get*Description() methods of an ICCProfile instance, which caused profile creation from existing profile to fail.
  - fix: (Windows Vista) application exit on launch if autostart directory did not exist.
  - fix: (source, Debian and RPM packages) use the correct wxPython version
  - fix: tab-key traversal of calibration settings controls.
  - fix: automatically scroll into view focused calibration settings controls if scrollbars are shown.
  - fix: properly clean & remove temporary directory.
  - fix: (cosmetic) added some padding to calibration settings right-hand side so scrollbar won't overlap if shown.
  - chg: (cosmetic) enable auto-sizing (fit to contents) for colortemp locus, trc type and profile type selectors.
  - chg: (cosmetic) do not show vendor name in instrument select dropdown (conserve some space).
  - chg: (cosmetic) made the instrument selector a little narrower (needs less space now to display instrument name because the vendor name is stripped) and the measure mode selector a bit wider (to accommodate for projector mode).
  - chg: only try to re-start within terminal if running as standalone executable.
  - chg: show application restart request in the chosen language after changing it.
  - chg: allow resizing/maximizing of main window (a minimal size is forced to prevent layout glitches).
  - chg: (Linux) install from source or package will try to automatically setup access to your instrument. Some services (PolicyKit/HAL or udev) may need to be restarted to get the updated configuration recognized. If in doubt, a reboot should work in all cases.
  - add: french translation (by Loïc Guégant, thanks!)
  - add: bdist_deb command and --cfg option for setup.py
2009-05-16 0.2.5b3
  - Fixed calibration loader autostart entry creation (“access denied” error) under Windows Vista and later with User Account Control enabled.
2009-05-07 0.2.5b2
  - Fixed “error: nothing to repeat” when using a spectrometer.
2009-05-05 0.2.5b
  - fix: encoding-related issues on all platforms and strange Unicode-related problems with AppleScript and Terminal on Mac OS X 10.4 (Details).
    Prerequisites to reproduce Unicode-related issues under Mac OS X 10.4: Terminal closed, or with atleast one window opened. Script inside an AppleScript bundle, the bundle filename contains UTF-8 characters. “main.command” (executable shell script) inside Contents/Resources subfolder of the bundle.
    Not working (messagebox “Resource not found”):

        tell application "Terminal"
        	activate
        	do script quoted form of (POSIX path of (path to resource "main.command"))
        end tell

    Not working (messagebox “Resource not found”):

        tell application "Terminal"
        	activate
        	do script quoted form of (POSIX path of (path to resource "main.command")) in first window
        end tell

    Not working (message “No such file or directory” printed to Terminal window):

        set shellscript to quoted form of (POSIX path of (path to resource "main.command"))
        tell application "Terminal"
        	activate
        	do script shellscript
        end tell

    Working:

        set shellscript to quoted form of (POSIX path of (path to resource "main.command"))
        tell application "Terminal"
        	activate
        	do script shellscript in first window
        end tell

  - fix: (Windows) several actions unexpectedly failing under Windows 7 (dispcalGUI created temporary files via system calls on several occasions, but on Windows, this does not create the file in the user's temp directory as one would expect, but in the ROOT directory e.g. C:\—a sane method is now being used instead).
  - fix: bug in sorting function caused leading and trailing zeroes of numbers in testchart filenames to get lost, thus failing to load such files.
  - fix: (Linux) “No module named _md5” error with the standalone executable on some Linux distros (apparently an OpenSSL-related issue, because normally it wouldn't fall back to the legacy _md5 module which is not even built by default in recent Python versions). The fallback _md5 module is now included.
  - fix: calibration was not automatically added & selected in the dropdown menu when only calibrating.
  - fix: dropping a profile which was not created in dispcalGUI onto the application window no longer results in an unhandled error.
  - fix: when trying to load calibration curves from a profile which actually does not contain any, an error message is now shown instead of resetting the video card gamma table to linear and erroneously stating the curves were succesfully loaded.
  - fix: add display device name as device model description when profiling.
  - fix: when creating a new profile from an existing profile, use that profile's device model description if present.
  - fix: also create .app/.sh/.cmd files when creating a new profile from existing measurement data.
  - fix: restore advanced gamut mapping options to default if selecting a profile which does not contain those settings.
  - fix: allow free selection of source and target viewing conditions in advanced gamut mapping options for LUT[7] profiles regardless of source profile type.
  - fix: if the screen or instrument that was selected in a previous session is not available, select an available one.
  - fix: (Mac) the “enable spyder 2” menu item would not allow to select files other than “setup.exe”.
  - fix: [src] (Mac) if dispcalGUI was installed as application and then run from (separate) source, multiple copies were launched at certain occasions.
  - fix: selecting a different Argyll binary directory than the previous one now actually works.
  - chg: the previously empty entry at the top of the settings dropdown (settings which are not associated to a profile or .cal file) is now named “<current settings>”.
  - chg: changed settings which are associated to a profile or .cal file are now marked with a leading asterisk in the settings dropdown.
  - chg: default to a gamma of 2.4 (Argyll default).
  - chg: warn before changed settings are discarded.
  - chg: new default profile naming scheme.
  - chg: new default file locations on all platforms.
    - On Linux, dispcalGUI now adheres to the XDG Base Directory Specification—the configuration file is saved as `$XDG_CONFIG_HOME/dispcalGUI/dispcalGUI.ini` ($XDG_CONFIG_HOME defaults to ~/.config if not set), all files created during calibration/profiling go into `$XDG_DATA_HOME/dispcalGUI/storage/` ($XDG_DATA_HOME defaults to ~/.local/share if not set) by default, and logfiles into `$XDG_DATA_HOME/dispcalGUI/logs/`
    Any old (pre v0.2.5b) configuration data is retained in the file `~/.dispcalGUI` and may be safely deleted after using v0.2.5b or newer for the first time.
    - On Mac OS, the configuration is saved as `~/Library/Preferences/dispcalGUI/dispcalGUI.ini`, all files created during calibration/profiling go into `~/Library/Application Support/dispcalGUI/storage/` by default, and logfiles into `~/Library/Logs/dispcalGUI/`
    Any old (pre v0.2.5b) configuration data is retained in the file `~/Library/Preferences/dispcalGUI Preferences` and may be safely deleted after using v0.2.5b or newer for the first time.
    - On Windows, the configuration file is saved as `%APPDATA%\dispcalGUI\dispcalGUI.ini`, all files created during calibration/profiling go into `%APPDATA%\dispcalGUI\storage\` by default, and logfiles into `%APPDATA%\dispcalGUI\logs\`
    Any old (pre v0.2.5b) configuration data is retained in the registry key `HKEY_CURRENT_USER\Software\dispcalGUI`.
  - chg: [build/src] (Windows) removed MS Visual C++ 2008 Redistributable DLLs from the source package. Users who build under Windows will have them anyway as they are installed with Python 2.6, so they are now copied directly from %SystemRoot%\WinSxS (Windows side-by-side assemblies) if possible.
  - chg: [build/src] SendKeys is now a dependency on Windows when running or building from source.
  - chg: [build/src] made dispcalGUI a distutils package, so it can be built/installed via setup.py.
  - chg: default locations are now also searched for resource files (`$XDG_DATA_HOME/dispcalGUI`, `$XDG_DATA_DIRS/dispcalGUI` on Linux, `~/Library/Application Support/dispcalGUI`, `/Library/Application Support/dispcalGUI` on Mac OS X, `%APPDATA%\dispcalGUI`, `%COMMONAPPDATA%\dispcalGUI` and `%COMMONPROGRAMFILES%\dispcalGUI` on Windows) in addition to the current working directory (which is always searched first if it differs from the executable directory) and the executable directory (which is always searched last).
  - chg: better error handling. For unhandled exceptions, a message box is shown and an entry is written to the logfile.
  - chg: (Linux) the calibration loader will no longer try and handle gnome-screensaver quirks—it was working too unreliably, and should really be fixed in gnome-screensaver. The current recommendation is to not use a screensaver at all if possible, and instead rely on the system's energy saving options.
  - chg: (Linux) there's no longer an installer for the Linux version.
  - chg: cancelling of certain operations like profile calculation and testchart generation is now also supported when using Python 2.5
  - chg: when searching for Argyll executables, also search for files with “argyll-” prefix or “-argyll” suffix (thanks to Mark Whitis for report).
  - chg: disable measurement mode selection when using a spectrometer.
  - add: logging (also see the change related to file-storage). Logfiles are created per-date. A maximum of 5 old ones is being kept as backup.
  - add: placeholders like display name, measurement device, whitepoint etc. can now be used in the profile name.
  - add: unattended calibration and profiling for some instruments, meaning it is no longer necessary to press a key after calibration to start the measurements for profiling (needs xautomation under Linux).
  - add: settings and related files can be deleted.
  - add: (Linux, Mac, Vista) profile install scope can be selected (note: local system scope install is broken with current Argyll versions under Linux).
  - add: version and translation information in the about window.
  - add: projector mode when using Argyll 1.1.0 Beta or newer with the X-Rite ColorMunki.
2009-01-01
  Linux and sourcecode bugfix update: Creation of the autostart entry failed when the autostart directory did not yet exist.
2008-12-24 0.2.1b
  - fix: video card gamma table access check always returned false when no display profile was set.
  - chg: (Linux) dispcalGUI now uses the autostart specification from freedesktop.org for the profile loader under Linux when installing profiles. NOTE for users: This also means you should manually remove any autostarts from previous versions, e.g.
    `rm ~/.gnome2/dispwin-*.sh
    rm ~/.kde/Autostart/dispwin-*.sh`
    and then re-install your current profile so the new loader is created. The new loader will be created in $XDG_CONFIG_HOME/autostart/ (if set) or ~/.config/autostart/ (if not set), with the filename dispcalGUI-Calibration-Loader-Display-x.desktop, where x is the display number.
  - chg: the calibration loader will check if gnome-screensaver is running and if so, exit it before loading the calibration, then start it again to prevent resetting the calibration when activated.
  - chg: .sh/.cmd file in profile folder is no longer created when just installing a profile.
  - add: message box when selecting LUT[7] as profile type with recommendation to use more samples for higher quality profiles.
  - add: default to english locale if translation doesn't exist.
2008-12-18 0.2b
  - fix: no longer possible to introduce invalid value types through a malformed config file (which could lead to dispcalGUI not launching).
  - fix: windows can no longer be moved permanently out of the visible screen area.
  - fix: spaces and special chars in the profile name should work now (should have from the start, but I had some superfluous code which broke it).
  - fix: spaces in the path to dispcalGUI should work now under Linux and Mac OS X too (Windows had no problem)
  - fix: measurement file no longer gets deleted after successful measurement if profile generation fails (was a simple oversight on my side).
  - fix: [cosmetic] logo header now always spans the whole width of the window.
  - fix: [cosmetic] (Mac OS X) on first launch, a second, unused, terminal window is no longer opened.
  - fix: windows will now try to adjust its height to fit on small screens (scrollbars might appear).
  - chg: “Calibration file” renamed to “Settings” and moved to the top, is now a dropdown box remembering the last 10 used files. Settings are stored in and loaded from profiles.
  - chg: renamed “Display type” to “Measurement mode” and moved over to measurement device selector.
  - chg: default to “LCD” for measurement mode.
  - chg: default testchart file names are now localized.
  - chg: new default testcharts, four flavours: matrix default (91 patches), LUT[7] default (127 patches), large (512 patches) and massive (3012 patches).
  - chg: testchart selector is now a dropdown box, shows all testchart files in chosen directory plus the default testcharts.
  - chg: [build/src] new and improved build system.
  - chg: [build/src] Python 2.6 is now the recommended version to run and/or build dispcalGUI. Python 2.5 is still supported, but you will not be able to cancel profile or testchart creation through the GUI[4].
  - chg: (Linux) externally installed wxGTK is no longer a dependency for executables.
  - chg: [build] Executables are now completely self-contained. The following paths are searched for additional language files: `<user home directory>/dispcalGUI/lang`, `<dispcalGUI root directory>/lang`
  - add: all settings now stored in profile whenever possible.
  - add: “Install” button next to settings dropdown to install selected profile.
  - add: dropdown to choose the display to use for video card gamma table access if all of the following applies:
    - more than one display connected
    - one of those displays seems to have non-working video card gamma table access (detected on startup)
    - one of those displays seems to have working video card gamma table access (detected on startup)
  - add: show patch count of selected testchart next to dropdown.
  - add: ability to select an icc profile (if it contains appropriate data) or measurement data file (.ti3) as testchart (converted on-the-fly).
  - add: testchart generator with editing cabability (experimental)
    - to select patches, click and drag the mouse over table cells, or hold SHIFT (select range) or CTRL/CMD (add/remove single cells/rows to/from selection)
    - to add a patch, double-click a row label
    - to delete patches, select them, then hold CTRL or CMD and hit DEL or BACKSPACE (will always delete whole rows even if only single cells selected)
    - CTRL-C/CTRL-V/CTRL-A = copy/paste/select all
  - add: advanced gamut mapping options for LUT[7]-type profiles, can also be used to overcome an apparent Photoshop CS3 bug under Mac OS X where the brush cursor shows strange artifacts when using LUT[7]-profiles with only one intent (thanks to Klaus Karcher for reporting this).
  - add: ability to generate profile from existing measurement data, even from an existing profile (if it contains appropriate data).
  - add: drag and drop calibration files (.cal), profiles (.icc/.icm), testcharts (.ti1) and measurement data files (.ti3) to the main window to process/select them (does not work very reliably on Mac OS X depending on where you drop the files, and you also get no optical feedback during the drag operation like the changed mouse cursor on Linux/Windows. Your best bet when dropping any files is perhaps the unoccupied area below “Settings”).
  - add: fully movable/resizable measurement window.
  - add: profile and testchart creation can be aborted (when running from source only if using Python >= 2.6).
  - add: “Before” / “After” switch when calibration / profiling complete.
  - add: menu item to enable Spyder 2 from within dispcalGUI.
  - add: italian and spanish GUI[4] translations (thanks contributors!)
  - Numerous other small fixes/changes.
2008-08-21
  Executable-only update for Linux (thanks to Patrice Vetsel for bug report): dispcalGUI is now built against wxGTK 2.8.7.1, which becomes a dependency.
2008-08-18 0.1b
  First public release.

## Definitions

[1] CGATS
  Graphic Arts Technologies Standards, CGATS.5 Data Exchange Format (ANSI CGATS.5-1993 Annex J)
[2] CMM / CMS
  Color Management Module / Color Management System
[3] GPL
  GNU General Public License — gnu.org/licenses/gpl.html
[4] GUI
  Graphical User Interface
[5] ICC
  International Color Consortium — color.org
[6] JSON
  JavaScript Object Notation, a lightweight data-interchange format — json.org
[7] LUT
  Look Up Table — en.wikipedia.org/wiki/Lookup_table
[8] SVN
  Subversion, a version-control system — subversion.tigris.org
[9] UAC
  User Account Control — en.wikipedia.org/wiki/User_Account_Control
[10] EDID
  Extended Display Identification Data — en.wikipedia.org/wiki/EDID
[11] PCS
  Profile Connection Space — en.wikipedia.org/wiki/ICC_profile

dispcalGUI © 2008-2015 Florian Höch