# Summary of Argyll CMS Changes since last release

### For a complete and more detailed list of changes, please see the log.txt file.

# [V1.3.7 -> V1.4.0] 20th April 2012

- Modified spectro/ccxxmake so that a colorimeter can be used as a reference to make ccmx files if two .ti3 files are used. Added ref/ccxx.ti1 as convenient way of creating ccmx .ti3 files.
- Added dither/screening support for 8 bit output of render, and then made it available in target/printtarg.
- Added JPEG file support to imdi/cctiff, xicc/tiffgamut and xicc/extracticc. ICC profiles embedded in JPEG files can now be used anywhere a TIFF file with embeded ICC profile can be used as a source of an ICC profile.
- Fixed memory leaks in usbio.c, xdg_bds.c & conv.c
- Fixed double memory free bug in icc/icc.c when iccdump'ing a profile that has a duplicate tag.
- Changed license of xicc/ccmx.[ch] to GPL2.
- Made display calibration and profile making deal with displays without hardware calibration support (VideoLUT support) more graceful. Added tutorial section covering this.
- Added option to dispwin/dispcal/dispread/ccxxmake to redirect the test patches to a web browser via a local web server. This augments Argyll's existing local and remote display capability.
- Fixed bug in spectro/i1d3.c which results in NAN if a low level readings drops to zero at a particular time. Improved refresh rate calibration accuracy. Fixed bugs in adaptive measurement logic that caused a channel to be pre-measured when it shouldn't. This seems to noticeably improve repeatability on refresh displays.
- Fixed bug in ucmm/jcnf where it was failing to locate the correct profile for a display.
- Fix bugs in ColorMunki Transmissive measurement mode calibration.

# [V1.3.6 -> V1.3.7] 26th March 2012

- Fix regression in Spyder support - ccmx files were not being handled (bug introduced in 1.3.6).
- Fix packaging problem - Spyder4 MSWin .inf file was missing.
- Change dispwin so that it will install a profile when there is no access to the display VideoLUT if the profile has no vcgt.

# [V1.3.5 -> V1.3.6] 19th March 2012

- Added Spyder4 support. Note the need for spyd4en for access to a full range of Manufacturers calibrations. The Spyder4 can use .ccss calibration files too. Speeded up all Spyder instrument readings on brighter colors.
- Experimental ColorHug support is compiled in, but is disabled unless the environment variable "ENABLE_COLORHUG" is set. The ColorHug currently doesn't seem to work reliably across all platforms ArgyllCMS supports.
- Changed and expanded display selection (-y flag) to be instrument specific. This is to support the Spyder4 and ColorHug, and adds a refresh display selection to the i1d3.
- Tweaked i1d3 integration times and added accurate refresh period calibration to the refresh display mode. Refresh display measurement times are double non-refresh displays. Improved i1d3 period measurement logic to improve measurement speed and accuracy for dark colors.
- Changed i1disp measurement logic to try and make it more robust against light to dark changes during a reading. This may make it slightly less precise for LCD displays on bright colors (equivalent now to Refresh display precision).
- Added a -V option to spotread to allow tracking reading consistency.
- Changed ccxxmake to create default .ccss with just RGBW, and not to weight W. This may give better matching. Made corresponding change to CCMX, giving the white patch 1/4 weighting of sum of all other patches.
- Fixed applycal so that it applies calibration to both A2B and B2A tables, to preserve softproofing.
- Fixed timeout in SpectroScanT reference transmission measurement. (Someone kindly donated me a SpectroScanT to test with!)
- Made DTP94 driver ignore with a warning any NEEDS_OFFSET_DRIFT_CAL_ERR after a full reset. It seems that occasionally a few instruments do this, and X-Rite don't appear to be prepared to treat this as an instrument fault.
- Added support for Datacolor SpyderCheckr (Thanks to Jos Pereira).
- Improved the ability of spyd2en to cope with slightly different setup.exe formats.
- Add support for NEC SpectraSensor Pro version of the i1d3.

# [V1.3.4 -> V1.3.5] 24th October 2011

- Fix bug (crash) that affects ColorMunki design/photo display measurement. This also stops it restoring a calibration (-N flag).
- Add support for the OEM version of the i1d3.
- Fix bug that stopped ccxxmake being able to make ccmx's.
- Tweak gamut mapping to improve dark area mapping, non-monotonic profile inversion, and contrast preservation to small gamut.
- Kill i1ProfileTray.exe process if unable to open i1d3 on MSWin.
- Fix DTP20 chart printing - TID was sometimes incomplete. This shows up on a 4x6 chart.

# [V1.3.3 -> V1.3.4] 31st August 2011

- Added support for the X-Rite i1 Display Pro and ColorMunki Display colorimeters. As part of this, added support for CCSS calibration files for the instruments and added CCSS support to ccxxmake (renamed from ccmxmake). Provide new tool i1d3ccss to translating and installing CCSS files as well as the manufacturers calibration files for these instruments. Added non-default observer support for these instruments too.
- Fix gamut code to ignore setting primary/secondary cusps that are unlikely to be true. This avoids buggy gamut mapping behavior for gamuts that are very small and odd shaped.
- Changed Linux USB code to avoid doing a set_configuration if possible, since the USB driver does this by default. This then avoids triggering a bug in the Spyder2, which allows it to work on Linux version without the reset_ep fix, and may also allow the Spyder to work better with USB hubs.
- Change printtarg for DTP20 to allow for variable patch size.
- Changed dummy display matrix table to have channels rotated rather than R & G swapped, to make it more obvious.
- Added option to colprof to allow setting the default profile rendering intent.
- Enhanced spectro/fakeread so that it will process a .ti3 file that has been renamed to .ti1.
- Fix bug in matrix input profile white point selection, + add in slight neutral bias code used in clut profiles.
- New profcheck -I wasn't working - fix option parsing.

# [V1.3.2 -> V1.3.3] 13th May 2011

- Fixed compiler dependant bug in Eye-One pro and (possibly) Munki high res. spectral wavelength calculation.
- Add support for install variables DESTDIR and PREFIX in Jamtop. These can be set on the command line using "jam -s"
- Added targen -N parameter to allow adjustment of neutral axis patch density emphasis, as well as increasing the default. This should improve the result without needing to add explicit grey test patches.
- Added spectro/instlib.ksh script to assemble all the files needed for a standalone instrument library. Changed licence to GPLv2 for the files included in the instlib.zip file that is thus created. See spectro/instlib.txt for more details.
- Fix Jambase so that recent MingW compilers don't need extra .dll's
- Change Linux serial code to test ports using O_NONBLOCK
- Modify xspect & illumread to improve realism of UV spectrum estimation.
- Fixed profile/txt2ti3 so that a sample name that looks like an integer is treated as text. (Fixes problem with latest ProfileMaker file).
- Added LCh option to spotread.
- Fixed numerical issue in scanin/scanrd.c, where large input rasters would cause fitting to fail.
- Modified colprof input chart white patch detection to slightly favour patches that are close to D50 neutral.
- Increase the default XYZ PCS A2B profile default smoothness.
- Improved cLUT input -u black & white point extrapolation.
- Improved black point determination for devices that have extremely narrow gamuts doe to the use of custom inks.
- Added -Z option to colprof, to allow setting ICC attribute flags.
- Fix CIECAM02 to better match forward and backwards, to fix perceptual table white point.
- Add code to override X-Rite's new OS X drivers for ColorMunki and EyeOne. Note new installation instructions <http://www.argyllcms.com/doc/Installing_OSX.html>.
- Added -R flag to colprof, which restricts the range of the white, black for better compatibility with other programs.
- Fixed typo bug that prevented flash measurement mode from working.
- Replaced spectro/average with a new version that is more general.
- Fixed bug in printcal not working with spectral only files.
- Added extra verbose output to printcal in which it computes an ideal power-like value to apply to the test chart values in targen.
- Modify the way that XYZ cLUT B2A tables are indexed, so that the white point is at the top corner of the grid.This should solve Photoshop CS4/CS5 complaining that XYZ LUT profiles are 'defective'.
- Added option in xicc/xicclu to plot an arbitrary slice.
- Expand the number of i1 Display OEM devices that can be used.
- Made some changes to help compile on FreeBSD.
- Added another intent, "pa", Perceptual Appearance, which is the same as perceptual except that the grey axes are not forced into alignment, allowing the appearance parameters to have full affect, including altering the chromatic mapping.
- Fixed bug in txt2ti3 - it wasn't creating an iRGB colorspace file for output device RGB files, causing warnings warnings and failures when mixed with other iRGB tool sequences.
- Added pathological case fix for target/ofps where the ink limit == di-2.
- targen was failing to proceed when fixed points happened to be numerically just over the total ink limit.
- Added more navigation options for chartread patch by patch mode.
- Fixed bug in "chartread -r -H" that caused resume of i1Pro high res to fail with "The resumed spectral type seems to have changed".
- Modified profcheck so that it prints patch location if it is present in the .ti3 file.
- Changed dispcal and dispread -K option to -J. Added -K option to dispcal as an alternate way of profiling a calibrated display, and also added a -K option to dispcal.
- Increased ColorMunki emissive auto scaling target "over" margin from 5% to 10% to allow more room for instrument drift during measurement.
- Fix bug in winusb + i1Display, where dark CRT measurements timeout.

# [V1.3.1 -> V1.3.2] 4th November 2010

- Turn off debugging that was accidentally left on in FWA code. Add gcc 3.3 PPC optimizer bug workaround to FWA code in xicc/xspect.c
- Change shaper/matrix profile back to using power curve as 0th order shape. Improve it with input & output offsets and straight segment at zero. Make cLUT input -u black & white point extrapolation use pure shaper curves with special tweaks.
- Increase dispcal native white target weighting from 10 to 50 to encourage white to be device 1.0,1.0,1.0 more strongly.

# [V1.3.0 -> V1.3.1] 26th October 2010

- Fixed MSWIN Vista/Win7 problem where having Task Manager running would stop display test window updating. Also fixed plot library to avoid the same problem.
- Swapped dispwin -E and -D flags, to make -D debug consistent throughout tools.
- Changed the ARGYLL_NOT_INTERACTIVE mode so that all return and line feed characters are ignored, so that they can be used freely to flush stdin without triggering anything.
- Fixed endless loop problem with chartread -r -p on fully read chart.
- Added -S option to chartread, that suppresses wrong strip and unexpected value warnings.
- Fix dispcal and spotread so that color temperature takes into account any non-standard observer (ie. the color temperature is the closest point on the spectrum locus as determined by the chosen observers interpretation of the Plancian or daylight spectrum.)
- Fix bug in libusb1 triggered on systems that support bulk continuation (Linux)
- Added 1964_10c observer to spectro/dispcal, to better allow comparison to the default numbers.
- Added recognition for Huey built into Lenovo W series Laptops.
- Fixed chartread/dispsup/spotread etc. so that -N isn't fatal if the instrument doesn't support it.
- Fixed dispcal to disable black & white drift tracking during interactive adjustment.
- Added -s option to ccmxmake to allow the number of test patches to be set.

# [V1.2.0 -> V1.3.0] 8th September 2010

- Added option to dispcal and dispread that attempts to counteract instrument black drift and display white drift (-I option). This may help with instruments that haven't properly acclimatised to the measurement location, and LCD displays that also take some time to stabilise. The is a short discussion here.
- Added option to dispcal to allow specifying a non 1931 2 degree observer if a spectrometer is being used.
- Added new utility spectro/ccmxmake, which makes Colorimeter Correction Matrices for a particular Colorimeter + Display combination, using a Spectrometer as a reference. The resulting .ccmx file can then be used with spotread/dispcal/dispread (-X option) to improve the accuracy of the colorimeter on that particular display. See a discussion here and here.
- Fixed bug in spotread's handling of emissive measurements. If the XYZ was computed from spectral, it was using a D50 white instead of no white reference.
- Fixed bug in i1pro normal resolution wavelength calibration, introduced in V1.2.0.
- Changed libusb V1.0 name to libusb-1.0A, so as not to clash with any official but different libusb V1.0 installation. [This may necessitate re-installing device drivers on MSWin.]
- Added support for HP DreamColor version of the i1 display.
- Fix problem with ARGYLL_NOT_INTERACTIVE - reading from instruments was not actually possible, because polling for input was disabled.
- Adjust ColorMunki dark threshold to reduce misread reports. Add inconsistent data to debug output. Fix bug in adaptive mode - the integration time was sometimes too short. Set adaptive emissive target at 95% to allow a little more margin to saturation.
- Fix problem with ColorMunki reporting erroneous inconsistent measurement errors. This shows up on display calibration.
- Fix some minor compiler warnings.
- Added direction indicators to xy values in dispcal interactive monitor adjustments.
- Fix bug in CIECAM02 viewing condition settings :- the enumerated conditions after "mt" are displaced by 1. (ie. "mt" is really "pc", "mb" is "mt", "md" is "mb" etc.) Added option -c:sn for auto surround from the Lv parameter (-c:l).
- Add option to illumread to average several readings. Fixed bug in the way illumread displays available instruments.

# [V1.1.1 -> V1.2.0] 30 July 2010

- Re-worked gamut mapping to improve perceptual intent saturation levels, as well as improve highlight and shadow contrast. Added fine tuning to improve both smoothness and the precision with which the source is mapped to the destination.
- Added illumread, which allows measuring an illuminant and estimating its UV content, for better accuracy with FWA compensation.
- Use a modified/forked version of libusb V1.0, that supports Win2K (libusb0.sys) back end by default. Supports 64 but MSWin using a combination of WinUSB.sys and ptlibusb0.sys. [ The HCFR does not work on Win 64 bit though, due to its buggy USB implementation. ] NOTE that the included version of Libusb V1 has been carefully tested with all supported instruments on all supported platforms, and includes many bug fixes needed for correct functioning. While bug fixes have been fed upstream, not all have been adopted. In particular there is a nasty race condition that has not, and may never be fixed upstream, as well as missing critical functionality (clearep()).
- Modified colprof -p to allow different abstract profiles to be applied for each intent.
- Added -I option (imitation) to printcal, so that an existing devices response can be set as a target.
- Increase target/ofps.c vertex intersection retries from 10 to 40 to give it a better chance of working with difficult profiles.
- Fixed bug in plot that shows up on XP+, where the window isn't dismissed by the first keystroke, but only after it has been moved or resized.
- Changed CMYK black point to be natural, rather than the darkest point in the same direction and K only. This may wreck K only to black point matching, but it will stop printers with funny colored K ink from messing up the black point.
- Make Lacie Blue Eye colorimeter appear as an i1display.
- Improved i1pro matching to Original Manufacturers Driver (see doc/i1proDriver.html).
- Improved i1pro/ColorMunki patch recognition for better uniformity.
- Fixed bug in ColorMunki driver scan mode calibration when instrument is more sensitive than usual.
- Added EV calculation to spotread -a

# [V1.1.0 -> V1.1.1] 21 February 2010

- Renamed the following tools:
  cb2cgats -> cb2ti3
  kodak2cgats -> kodak2ti3
  logo2cgats -> txt2ti3
  splitcgats -> splitti3
  mpprof -> mppprof
- Modified black curve to make sure that smoothed curve meets target level at boundaries.
- Added -M option to printtarg, for the case where the TIFF file is to include the margin.
- Fixed several build bugs in imdi code related to 64 bits.
- Fixed profile/colprof -u so that it is applied to matrix profiles too
- Changed tiffgamut to use one pass gamut hull finding and modified the smoothing so as to end up with a more closely wrapped volume.
- Fixed bug in input matrix profiles introduced by the XYZ cLUT display matrix profile change, where the correct white and black point weren't being written.
- Added matrix only/linear algorithm option to profile/colprof, for raw camera profiling.
- Modified libusb/55-Argyll.rules for better compatibility with systems that have ACL installed but no ConsoleKit. Also set ID_VENDOR and ID_MODEL using. usb-db.
- Modified target/targen to cope better with case where adding nodes fails to determine vertex positions a lot of the time, causing extreme slowdown.
- Fixed colprof so that the per channel input curves for XYZ PCS B2A tables are actually scaled correctly.
- Changed link/collink to apply Y to L* curve if the input or output space is XYZ. Fixed the Y to L* scaling to make sure it only apples to XYZ space, and that the L* non-linearisation still applies to Y like device spaces.
- Modified scanin so that it ignores any alpha channels in the input .tiff file.
- Changed printcal so that it will create .AMP file with more than 4 channels. Also fixed up plotting to plot up to 10 channels.
- Changed dispcal and dispread so that a request for projector mode falls back to display mode if the instrument doesn't support a projector mode.
- Updated ref/CMP_Digital_Target-3.cht as it seems that the reference chart has columns labelled "2A - 2D" rather than the "AA - AD" that is actually printed on the chart...
- Altered xpsect FWA code to reduce overshoot artefacts due to filtering.

# [V1.0.4 -> V1.1.0] 17th January 2010

- Spyder3 and ColorMunki Design, Photo and Create instrument support.
- Added a complete printer calibration system. This can work either with a print system that supports per channel print calibration curves, or purely using ICC profiling mechanisms.
- Default targen (OFPS) test point distribution has been re-written to generate test points on the gamut surface, refine the point locations when using a guide profile, and use a better error estimate model to determine the test point locations.
- Changed chartread strip reading mode to allow navigating about the strips, saving a partially read chart, and resuming a partially read chart.
- Improved and re-tuned gamut mapping. This is noticeably smoother and better retains source image detail.
- Re-tuned the cLUT profile creation smoothness vs. accuracy.
- Fixed viewgam so that the number of gamuts that can be viewed is unlimited. Also added error when computing intersecting volume if the two gamuts are incompatible.
- Improved CMYK black generation control and smoothness near the black point.
- Improved collink special black and colorant handling so that the gamut mapping is consistent with the special black and colorant mapping
- Changed profile/colprof to generate matrix tags for Display XYZ PCS cLUT profiles, to improve compatibility with other CMMs.
  By default (-ax) the matrix tags will be a dummy transform that swaps red and green, while using -aX will create real matrix tags.
- Added -V option to dispcal and dispread to allow use of i1pro adaptive mode to give better low level consistency.
- Changed dispcal to default to -f 1.0 (assume black is all output offset) to make it work in more sympathy to a typical display response. Also changed default gamma to 2.4 for OS X 10.6 systems.
- Improved X11 XRandR CRTC detection.
- Added spotread option to save spectral reading of an illuminant to a .sp file.
- Added Color Rendering Index (Ra) to spotread measurement results.
- Added i1pro & ColorMunki flash measurement support.
- Improve reliability of detecting backwards read i1pro/Munki strips.
- Fixed bug in i1pro driver that subtly affected accuracy.
- Modified xicc/cam02 to clip the blue to avoid crazy behavior outside the spectrum locus.
- Simplified the Linux installation instructions, particularly with regard to USB and serial permissions.
- Added working MSWindows 64 bit libusb drivers, which will work on Vista 64 and MSWindows 7 64 bit. Because of Microsoft's driver signing requirements though, they won't be usable unless a driver code signing workaround is used.
- Changed printtarg so that the TIFF output has the paper margin subtracted from it. This is so that the resulting TIFF can be placed on that sized paper without clipping or scaling. Set the margin to zero to get a TIFF that exactly fits into the specified paper size

# [V1.0.3 -> V1.0.4] 30th June 2009

- Modify icc/icclib to protect against integer overflow exploits, and fixes to minor bugs. Bump icclib version to 2.11 to reflect this.
- Fix bug in spectro/hidio.c that can cause a crash (bus error) on OS X for any program that accesses the instruments.
- Fix bug in xicc/xfit.c where too little memory was being allocated.

# [V1.0.2 -> V1.0.3] 3rd September 2008

- Added multi-TIFF and popularity filtering to tiffgamut.
- Modified gamut mapping in colprof and collink to be consistent, and have higher perceptual intent saturation.
- Fixed timeout problem with the Eye-One Display colorimeter.
- Fix segmentation fault in dispread.
- Fix out of memory error in colprof for systems with > 3Gig Ram.
- Add support for the Eye-One Monitor spectrometer.
- Added -L option to printtarg to suppress the i1pro target holder clip margin.
- Fixed bug in dispcal when using -a with -t

# [V1.0.1 -> V1.0.2] 19th August 2008

Various bug fixes, the main ones being:

- Fixed some colprof performance and memory usage issues.
- Fixed issues with Eye-One Pro Rev B timeouts.
- Added new option to collink -fk, that forces 000K input to K only output.
- Added device target value quantization option to printtarg, as well as making it default for TIFF output files.put files.
- Fixed leak that was affecting printtarg.

# [V0.70 Beta 8 -> V1.0.0] 1st July 2008

Apart from numerous bug fixes and many minor feature additions and improvements, the main changes to this version compared to the previous one are:

- Speedup in profile and device link generation (inversion code), and better memory usage.
- Support for embedded profiles in TIFF files.
- Support for installing and uninstalling and loading of display profiles for all operating systems, and a micro CMM system for X11/Linux
- Improved display calibration and profiling, including ambient light adjustment.
- X11 XRandR 1.2 support added.
- Raster test charts now supported, as well as PS and EPS.
- Guidance for installing on a wider range of systems.
- Fixed luminance and ambient calibration issues with various instruments.
- Renamed "profile" to "colprof", and "icclink" to "collink" to avoid clashes that have arisen with other executable names.
- Streamlined source code build system, for much easier building.
- Installation archives now include a top directory, and gzip/tar format for OS X and Linux.
- Added B2A table to input device LUT profiles by default.

As usual, a more detailed description of all changes is in the log.txt file that accompanies the source code.

# [V0.60 -> V0.70 Beta 8]15th January 2008

- Added quick display ICC profile creation as part of calibration.
- Added support for the Huey, Spyder 2, DTP20, Eye-One Pro, DTP22/Digital Swatchbook, Eye-One Display 1 and 2 instruments.
- Changed to GPL Version 3 license.
- Countless other bug fixes and feature enhancements.