summaryrefslogtreecommitdiff
path: root/log.txt
diff options
context:
space:
mode:
Diffstat (limited to 'log.txt')
-rw-r--r--log.txt3581
1 files changed, 3581 insertions, 0 deletions
diff --git a/log.txt b/log.txt
new file mode 100644
index 0000000..13f6bad
--- /dev/null
+++ b/log.txt
@@ -0,0 +1,3581 @@
+
+Argyll CMS change log
+=====================
+
+Version 1.5.1 (8th March 2013)
+-------------
+
+* Fix spectro/instlib.ksh and standalone instlib build.
+
+* Turned off debug plot on using FWA.
+
+* Changed link $(LINKFLAGS) location in link command line
+ Jambase to get latest gcc working.
+
+* Fixed new bug in matrix display profile creation that causes an
+ inacurate relative white point. This causes Photoshop to barf on
+ the profiles.
+
+* Added -m option to printcal.
+
+* Fix bug in webwin that causes crash.
+
+
+Version 1.5.0 (1st March 2013)
+-------------
+
+* Made SpectroScanT respond to enter key when reading
+ transparent samples.
+
+* Added signal handlers to dispwin to restore VideoLUT
+ in case of interrupt.
+
+* Added support for an FWA simulated instrument illuminant
+ separate to the illuminant used to compute XYZ values.
+ This (and the provision of appropriate illuminants and illuminant
+ aliases) allows simulation of ISO 13655:2009 M0, M1 and M2
+ measurements using any spectrometer that can take non-UV filtered
+ measurements. An optional argumen to the -f flag is used to select
+ this.
+
+* Increased stability of i1d3 refresh display measurements
+ by increasing integration time, and tweaking crossover
+ from frequency to period measurement.
+ Fixed bug that sometimes resulted in zero dark readings
+ due to round up of integration time that then exceeded
+ the valid maximum.
+
+* Added spotread interactive function 'f' to read out the
+ calibrate display refresh rate for instruments that have a refresh display
+ mode, as well as an 'F' function that measures the refresh rate for instruments
+ that support a refresh rate measurement function (colorimeters & spectrometers).
+
+* Added refresh rate measurement function to the i1pro
+ and ColorMunki Spectro's. Also added a set refresh rate
+ function, so that a refresh rate calibration can
+ be carried over between sessions, or set manually.
+
+* Bumped icclib to 2.15.
+ Change icc->read_tag() to only succeed if the tag type is
+ known, since the standard expectation of a non NULL
+ return type is that it is of a known type. Added new
+ method icc->read_tag_any() which will return a
+ icmSigUnknownType if the tag type is unknown.
+
+* The Display Type selection option -y in dispcal, dispread,
+ chartread, spotread & ccxxmake now lists installed
+ CCSS and CCMX files as a selction. The -X options
+ is no longer used to select installed CCSS files.
+ To make this work, the CCMX and CCSS files now have extra
+ fields to indicate the refresh mode, an optional list of
+ default UI selection characters, and (for CCMX files)
+ the base display type they apply over (CB-n). ccxxmake now
+ only allows Base Calibration display types to be selected.
+ The installer (oeminst) checks for the refresh mode
+ and base ID before installing CCMX and CCSS's.
+
+* Tweaked B2A least squares aproximation code to reduce
+ artefacts when used on badly behaved CMYK profiles.
+
+* Fixed targen so that use of -v1 (verify) doesn't cause it to fail
+ if ofps stats pass fails.
+
+* Tweaked CIECAM02 to imrove behaviour for extreme blue
+ colors, so that the hue doesn't swing too far towards the
+ cyan. This helps in the clipping behaviour from colorspaces
+ such as ProPhotoRGB.
+
+* Added some post table setting filtering to the B2A table
+ creation for out of gamut colors.
+
+* Made the input profile cLUT extra neutral axis extrapolation
+ points the default for colprof -u and non -u profiles. Fixed serious
+ bug in colprof -u :- the white point was being set incorrectly.
+ Changed -u algorithm to work similarly to -U scale :- it
+ sets the scale automatically. Relative colorimetric is therefore
+ hue matched to the white reference patch,
+ Removed colprof -un, as it seems unnecessary.
+ Added coloprof -uc, which clips cLUT colors over Y = 1
+ to white.
+ Modified matrix profile creation to match cLUT in terms
+ of how these options work.
+
+* Add verbose report if dispcal/dispread -Ibw is used.
+
+* Fixed bug in CRI computation - the TCS09 sample was incorrect.
+ (Thanks to Gabriele Guarnieri for noticing this).
+
+* The spyd2en, spyd4en and i1d3ccss tools have been combined into
+ and replaced by a single oeminst tool.
+
+* Fix problem with dispwin/dispcal/dispread -dweb and the latest
+ Safari browser.
+
+* Added optional fourth parameter to dispwin, dispcal, dispread, ccxxmake
+ -P option, that allows setting different horizontal and vertical
+ scalings of the test window.
+
+* Changed to a single ArgyllCMS.inf file for MSWin USB driver
+ installation. This eases instalation of more than a single
+ type of isntrument.
+ Tested on MS Windows 8 and updated installation instructions.
+
+* Added scanin support for ColorCheckerPassort
+ (Thanks to Ben Goren)
+
+* Enable the ColorHug by default, although it
+ isn't advertised as supported, since it doesn't
+ yet work reliably on OS X.
+
+* Updated OS X code to compile on 10.6 and 10.7
+ (64 bit compatible API used when compiling
+ on those platforms, including Cocoa for the test
+ patch window).
+
+* Added support for Quato Silver Haze 3 OEM i1d3
+
+* No longer using libusb for USB access, using native USB access instead.
+ MSWin uses the libusb-win32 kernel driver.
+ (This resolves the long standing issue of ArgyllCMS using
+ a custom version of libusb.)
+
+* Moved the usb setup files from libusb1 to
+ a new directory, usb.
+
+* Added support for X-Rite ColorMunki Smile colorimeter.
+
+* Changed udev file usb/55-Argyll.rules to eliminate
+ the test for /lib/udev/udev-acl as a condition of using
+ ACL_MANAGE, since I'm informed that it is deprecated
+ in recent distribution releases.
+
+* Deprecated -V flag (adaptive mode) in dispcal, dispread and ccxxmake,
+ since this is now the default. Flag will be ignored with a warning.
+ Added -ZA flag instead, to select non-adaptive integration time mode.
+
+* spotread -d flag is deprecated, and is now a synonym for the -e
+ flag, since it defaults to adaptive mode. Added -ZA flag instead, to
+ select non-adaptive integration time mode. Also addes -Zr and -ZR flags
+ to allow testing of the refresh mode overrides.
+
+* Migrated ArgyllCMS specific application runtime files (such as instrument
+ blobs, calibration state & calibration files) to an "ArgyllCMS"
+ subdirectory rather than the generic "color" directory.
+ On OS X also moved data files to below the "Application Support" sub
+ directory. The old locations will be used as a fallback.
+
+* Fix potential array bounds violation in icc/icc.c for malformed
+ cLUT profiles with zero input channels. Bump to icclib to V2.14
+
+* Fixed bug in cgats/pars.c that caused a parsing failure
+ with the ARM compiler.
+
+* Modified colprof so that a -rr smoothing parameter is now
+ passed to the shaper fitting of shaper/matrix.
+
+* Reduced regularisation weight of order 0 & 1 curve shape parameters
+ for matrix and cLUT based profiles, as well as converting it to
+ be a two pass matrix then matrix+curves approach, making for a more
+ reliable and better fit for some devices. This may improve matrix input profiles.
+
+* Added partial i1pro Rev E (i1pro2) support.
+ Uses RevE measurement mode, and does wavelength calibration.
+ Uses RevE (internal) stray light reduction, and black level temperature
+ compensation. The only Rev E feature not currently supported is U.V.
+ measurement, which would improve the accuracy of FWA compensation.
+ Rev E driver can be disabled and the legacy driver
+ mode used by setting the ARGYLL_DISABLE_I1PRO2_DRIVER environment variable.
+
+* Changed ColorMunki adaptive mode to avoid high gain mode,
+ so as to give more consistent and longer integration
+ times for low levels. Added black level temperature compensation.
+
+* Changed i1pro adaptive mode to avoid high gain mode,
+ so as to give more consistent and longer integration
+ times for low light levels.
+
+* Added automatic adjustment of patch reading delay
+ for i1d3, so that a more conservative (longer) default value (200 msec)
+ can be used without impacting i1d3 speed.
+ Also added environment variable ARGYLL_MIN_DISPLAY_UPDATE_DELAY_MS
+ that can set a different minimum update delay.
+
+* Fixed a bug introduced in V1.3.6 that stops the dtp41 from being initialised properly.
+
+* Added warning message to colprof if an additive device (ie. RGB)
+ has an ink limit set that will affect the white point.
+
+* Modified printtarg so as to output CMY colorspace charts in CMYK PS, EPS & TIFF
+ files by default rather than Device N, and to add an option (-o) to select
+ CMY as inverted RGB, or CMY Device N as an option
+
+* Add explicity icoms error message when there are no instruments to be found.
+
+* Updated ColorHug PCI VID & PID
+
+* Change ColorHug driver to not do Raw mode post scale if
+ firmware is >= 1.1.5
+
+* Fixed regression with Spectrolino not taking filter options.
+
+* Added doco for QPcard_201, and ref. files for QPcar_202
+
+* Modify numlib/numsup so that error() is marked noreturn,
+ to shut up bogus compiler warnings.
+
+* Fix problem in libusb1 for MSWIN libusb0 devices not
+ being able to be opened with more than one instance of
+ usb open (This bug is not relevant to ArgyllCMS, but is to libinst use).
+
+* For Spyder, emit a warning rather than error if the feature bits
+ are missing for calibration tables.
+
+* Added an introduction to color management document.
+
+* Change libjpg to libjpeg in Jamtop & jpg/Jamfile
+ so it picks up system libraries, and fix system library link flag.
+
+* Fix bug in profile B2A table construction that
+ sometimes created reversals in black clipping behaviour.
+
+* For i1d3, make transition to longer re-measure integration
+ time smooth and progressive. Changed debugging so that reading
+ details are printed if debug >= 6
+
+* Fix bug in gamut/gammap.c - freeing not allocated memory
+ if no nearpoint mapping was being done.
+
+* Update icclib to address robustness against malformed profiles.
+
+* Various API changes to the instlib to make it more
+ self contained and flexible:
+
+ The ipatch structure has been changed to remove the unused/unsupported
+ Lab[] value, and merge the XYZ[] and aXYZ[] values.
+ There is a new type indicator "mtype" to track what sort of
+ measurement it is, and (implicitly) what units the measurement is in.
+
+ Spectral readings have always been clamped to be +ve in past
+ release of Argyll, but this has now been removed, because
+ it has a detrimetal effect on dark XYZ readings, limiting the
+ minimum reading possible. By default now, read_sample allows
+ possibly -ve XYZ values (which will aid the accuracy
+ of averaged dark readings) and has an option flag to
+ clamp XYZ values to be +ve for compatibility with previous behaviour.
+
+ To avoid enumerating USB devices multiple times, the list of
+ available instruments now uses an icompaths object, and a
+ particular icompath is handed to new_inst().
+
+ An error, debug and verbose logging object 'a1log' (declared
+ in numlib/numsup.h) is now used to control and capture
+ informational output. This is handed to new_icompaths()
+ as well as new_inst(); Existing error(), warning() and
+ verbose() function calls now funnel into the default
+ global a1log object 'g_log'.
+
+ instlib user interaction is now funnelled through a callback
+ function (uicallback) rather than interacting with stdout and
+ command line input itself. The implementation of the callback
+ function and the default calibration setup handler for Argyll
+ command line applications is now in a separate library instappsup.c.
+
+ There is now an asynchronous callback for indicating events
+ such as the instrument switch being pressed, or the
+ instrument measurement configuration being changed (ie.
+ sensor position, ambient filter). Only some instruments
+ will use this. This is called from a thread.
+
+ inst_capability and inst_mode are now one and the same: inst_mode.
+ The IMODETST macro should be used for testing a capability or mode,
+ but because a specific mode is represented by a combinations of
+ bits, this test is not definitive, and should also be verified with
+ the check_mode() function to be sure it is valid, and won't be
+ rejected by set_mode();
+
+ inst_emis_disptype, inst_emis_disptypem, inst_ccmx and inst_ccss
+ have moved to cap2 as inst2_disptype, inst2_disptypem, inst2_ccmx
+ and inst2_ccss respectively.
+
+ The capabilities2() method has been removed, and capabilities() now
+ returns inst_mode capability, inst2_capability and new placeholder
+ inst3_capability flags.
+
+ All the inst2_cal_* enumerations have been replaced by the new
+ get_n_a_cals() call, which gives fuller information about what
+ calibrations are needed and available for the current measurement mode.
+
+ needs_calibration() now retuns a mask of calibrations needed.
+ calibrate() now can be given one of three pseudo-calibrations,
+ and returns a mask of remaining calibrations.
+
+ The inst_mode_emis_disp and inst_mode_emis_proj modes have been removed
+ and replaced with a general emissive mode, with a "tele" modifier
+ to indicate projector mode (there are also corresponding changes in
+ the calibration types and conditions, replacing "disp" and "proj" with
+ "emis"). Adaptive measurement mode used as default
+ for emmissive measurement. inst_mode_emis_spot and inst_mode_emis_tele can
+ be used as replacements, with the inst_mode_emis_nonadaptive
+ option used to get the non-adaptive display measurement mode
+ previously triggered by inst_mode_emis_disp/proj in those instances
+ where it is wanted and the device supports it. (i1pro, colormunki spectro.)
+
+ By default display refresh synchronized calibration and measurement
+ is selected in tandem with the display type selector
+ (indicated in inst_disptypesel). Where supported, this refresh
+ mode can now be overridden using the inst_mode_emis_refresh_ovd and
+ inst_mode_emis_norefresh_ovd modes.
+
+ Changed get_status(inst_stat_sensmode) to a new
+ function meas_config(), and changed the values returned to be the
+ valid measurement modes or calibration conditions for the current
+ instrument physical configuration.
+ This allows the application to be sensitive to what measurement
+ modes are available with things like the Colormunki sensor position,
+ and the i1d3 ambient adapter position.
+
+ A new function get_ref_rate() has been added to make the measured
+ display refresh rate available.
+
+ get_opt_details(inst_optdet_disptypesel) has been replaced by get_disptypesel();
+
+ Commbined set_opt_mode() and get_status() into get_set_opt(),
+ and combined inst_opt_mode and inst_status_type into inst_opt_type;
+
+ col_cal_spec_set() now only sets the CCSS, not the observer.
+ The observer can be set by a call to get_set_opt(inst_opt_set_ccss_obs);
+
+
+
+Version 1.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 -D switch.
+
+* 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 embedded ICC profile can be used as a source of an ICC profile.
+ This makes it more convenient to color correct photographs.
+
+* 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+.
+
+* Removed dispcal -K option, since it is not
+ needed with more graceful handling of no
+ VideoLUT access.
+
+* 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 long standing
+ 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.
+
+Version 1.3.7 (26 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.
+
+Version 1.3.6 (19th March 2012)
+-------------
+
+* 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
+ accross all platforms Argyll supports).
+
+* Modified spectro/hidio.c for OS X so that it only
+ attaches run loop when an hid call is made,
+ to make the SW more GUI friendly.
+
+* Fixed bug in Spyder 2 driver, where aborting a reading
+ (ie. in interactive dispcal), leaves hardware out of sync
+ with driver, leading to a bad next reading.
+
+* Reworked i1disp driver slightly to improve repeatability
+ when in CRT mode.
+
+* Added a -V option to spotread to allow tracking
+ reading consistency.
+
+* Tweaked i1d3 integration times, and added refresh
+ period calibration to the refresh display mode.
+ Refresh display measurement times are double
+ non-refresh displays.
+
+* Added Spyder4 support. Note the need for sptd4en.
+ Speeded up Spyder on brighter colors. Hopefully
+ this doesn't affect accuracy.
+
+* 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.
+
+* Changed display selection (-y flag) to be instrument
+ specific. This is to support the Spyder4 and ColorHug.
+
+* Improved i1d3 period measurement logic to improve
+ measurement speed and accuracy for dark colors.
+
+* Removed Linux serial port filtering code for USB serial
+ ports, since it may interfere with other devices.
+
+* Fixed OS X and Linux profile installation so that if you run
+ dispwin -I as root (ie. sudo), the profile is still installed
+ as the underlying user, not to the root user location.
+
+* Fixed bug in black point finding code in xicc/xicc.c that
+ affected xicclu.
+
+* Fixed txt2ti3 to cope with inputs that don't have any device values.
+ This is useful for dealing with input chart reference values.
+
+* Fixed applycal so that it applies calibration to both A2B and B2A tables,
+ to preserve softproofing.
+
+* Changed ICC unknown manufracturer and model Tags to value 0, rather than "????".
+
+* Fixed timeout in SpectroScanT reference transmission measurement.
+
+* Switched ucmm over to using spectro/xdg_bds code,
+ to solve problem with multiple paths in
+ XDG_*_DIRS. Changed xdg_bds and aglob code to
+ an "MIT" license, consistent with all the ucmm code.
+
+* Made DTRP94 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.
+
+* Made sure that dispcal and dispread now error if
+ reading of ccmx or ccss files fail.
+
+* Add support for NEC SpectraSensor Pro version of the i1d3.
+
+* Add smoothing control flag to printcal.
+
+* Fix bug in ccxxmake with regard to -I and -T options.
+
+* Fix bug in ccxxmake that stops the test patch from being scaled
+ properly using -P
+
+* Supress TIFF open message errors better when attempting to
+ open an ICC profile embedded within a TIFF file.
+
+Version 1.3.5 (24th October 2011)
+-------------
+
+* Add support for the OEM version of the i1d3.
+
+* Fix bug in dispread where spectral instrument readings weren't being
+ normalized to the display white Y when they were supposed to be.
+
+* Kill i1ProfileTray.exe process if unable to open i1d3 on MSWin.
+
+* Tweak gamut mapping to improve dark area mapping, non-monotonic
+ profile inversion, and contrast preservation to small gamut.
+
+* Fix bug that stopped ccxxmake being able to make ccmx's.
+ (Unable to use colorimeter due to "instrument doesn't support spectral or CCSS"
+ error).
+
+* Fix bug (crash) that affects ColorMunki design/photo display measurement.
+ This also stops it restoring a calibration (-N flag).
+
+* Fix DTP20 chart printing - TID was sometimes incomplete.
+ This shows up on a 4x6 chart.
+
+* Changed DTP20 chart to use a much smaller and ligher row label
+ to try and avoid mis-reads.
+
+Version 1.3.4 (31 August 2011)
+-------------
+
+* Fix gamut code to ignore setting primary/secondary cusps that
+ are unlikely to be true. This avoids buggy gamut mapping
+ behaviour for gamuts that are very small and odd shaped.
+ Tweak saturation intent very slightly to improved hue consistency.
+
+* 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.
+
+* 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 all colorimeters so that the ccmx matrix is used only
+ for non-Ambient measurements.
+
+* Change printtarg for DTP20 to allow for variable patch size.
+ Note that patch length must me 6.5, 7, 10, 12.5 or 13 mm.
+
+* 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.
+
+* Fix bug in spectro/average.c - field match check index was wrong variable.
+
+* Fix bug in xicc/xlut.c that caused bad reverse lookup
+ values at some clipped grid points.
+
+* Increase number of re-seeding retries in target/ofps.c,
+ and fix bug that caused failure to finish rather than
+ error.
+
+* 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.
+
+Version 1.3.3 (12th May 2011)
+-------------
+
+* Added -I relative colorimetric intent flags to spectro/fakeread
+ and profile/profcheck, for special use.
+
+* Fixed compiler dependant bug in Eye-One pro and (posibly) 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"
+
+* Add ref/linear.cal to distribution.
+
+* Added targen -N parameter to allow adjustment of neutral axis
+ patch density emphasis. The default effect has also been
+ increased. Note this is only effective when perceptual distributions
+ are created, or the defaul OFPS with a high level of Adaptation is
+ used. This will be most effective when a pre-conditioning profile
+ is used. This may reduce the number of patches needed for a given
+ quality profile, or increase the quality for a given number of
+ patches. 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.
+ Can be built using the included Makefile, once libusb-1.0A has
+ been built.
+
+* 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.
+
+* Scaled XYZ PCS A2B profile deviation to improve default
+ smoothness.
+
+* Change Make cLUT input -u black & white point extrapolation
+ to use gamma curve + one order shaper, and increase these
+ extra points weights.
+
+* Change black point search weighting to give a*b* error less
+ weight, so that devices narow gamuts due to strange inks
+ get a better chance at a reasonable black point.
+
+* Added -Z option to colprof, to allow setting ICC attribute flags.
+
+* Attempted to (yet again) fix the shortcoming of cam02 blue behaviour.
+ This may well improve the purity and color of blue gamut mapping.
+ Also fixed problem with inversion not matching the forward conversion,
+ resulting in gamut mapped cLUT tables white points not
+ being exact, and resulted in non perfect device values for white.
+
+* Add code to temporarily disable X-Rite's new Daemon drivers on
+ OS X, for ColorMunki and EyeOne. The Argyll utilities either need
+ to be run as root, or the X-Rite Daeomon .plist's need to
+ be changed to run as the user.
+
+* Added -R flag to colprof, which restricts the values of the white, black
+ and primaryies to have Y <= 1 and +ve, respectively. This can aid
+ compatibility with other programs.
+
+* Fixed typo in spectro/inst.h that prevented flash measurement mode from
+ working.
+
+* Replaced spectro/average with a new version that is more
+ general. Merging and Averaging are are now separate operations.
+
+* Fixed bug in printcal - it wasn't dealing 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. Modified targen to use power-like function, to avoid
+ issues with small values with real power curve.
+
+* Reduced printcal data point smoothing slightly, to improve
+ accuracy.
+
+* Fix bug in profile/printcal where the white point device
+ value wasn't beeing computed as the average of all the
+ white patches. Tightened up definition of white patch
+ to avoid targen -p type test charts slipping non-white
+ patches into white average. Made sort of device value consistent.
+
+* 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
+ make better use of the cLUT, as well as improving the accuracy
+ of the inverse white mapping. [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.
+
+* Added some patches to help compile on FreeBSD.
+ (Thanks to Simon Walton)
+
+* Added offset parameter to spectro/synthcal, to allow generation of
+ inverted ramps.
+
+* 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.
+
+* txt2ti3 wasn't creating an iRGB colorspace file for output device
+ RGB files. This can cause warnings and failurs when mixed with
+ other iRGB tool sequences. Also fixed fakeread grey fudge to recognise
+ both RGB and iRGB.
+
+* Added pathological case fix for target/ofps where the ink
+ limit == di-2. For CMYK this needs slightly more than
+ 32 bits of mask. Fix forces limit to be slightly less than
+ di-2.
+
+* targen was failing to proceed when fixed points happened
+ to be numerically just over the total ink limit, and ofps
+ then got stumped in adding them. Now clip them before
+ ofps tries to add them.
+
+* 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"
+ due to a floating point mismatch.
+
+* Modified profcheck so that it prints patch location if it is
+ present in the .ti3 file.
+
+* Made doubly sure that DTP94 has offset drift compensation on.
+
+* 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. These options may be useful for displays that
+ don't have VideoLUTs or that (very strangely) have VideoLUTs with lower
+ precision entries than the frame buffer.
+
+* Increased ColorMunki emissive auto scaling target "over" margine
+ from 5% to 10% to allow more room for instrument drift.
+
+* Add more runtime debugging output in dispsup code (dispcal, dispread etc.)
+
+* Fix bug in winusb + i1Display, where dark CRT measurements timeout.
+
+Version 1.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.
+
+Version 1.3.1 (26th October 2010)
+-------------
+
+* Tightened up scanin -ca option parsing to reduce chances of false
+ trigger.
+
+* Added synthetic device white/black point for input cLUT profiles
+ where the -u flag is being used. Particularly for Lab PCS, this can
+ improve the reasonableness of the extrapolation along the neutral
+ axis. Added -un flag option to disable this.
+
+* Changed shaper/matrix profiles so that they use pure shaper curves
+ rather than base gamma + shapers, as this seems to be a better fit
+ for real device behaviour.
+
+* Fixed MSWIN Vista/Win7 problem where having Task Manager running
+ would stop display test window updating. Also fixed plot library to
+ avid the same problem.
+
+* Added -i (input) option to profile/txt2ti3, as well as making
+ device value scaling be guessed from the data range.
+
+* Fixed problem in MSWin .inf files not copying libusb .dll to system
+ directories.
+
+* 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.
+
+* Added ref/ECI2002.ti1, so ECI2002 test values can be printed using
+ printtarg.
+
+* Added -L option to chartread, to save both XYZ and Lab values.
+
+* Fixed endless loop problem with chartread -r -p on fully read chart.
+
+* Increase display patch color change to instrument measurement
+ settling time from 60 to 200 msec, to allow for very slow
+ MVA and PVA LCD displays.
+
+* Fixed problem in Jambase that stops MSWin MingW compiling.
+
+* 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.
+
+
+Version 1.3.0 (8th September 2010)
+-------------
+
+* Added option to dispread to save non-normalised to Y=100 values.
+ Fixed colprof to normalise display spectral values that haven't been normalised.
+ Fixed profcheck to normalise display spectral values that haven't been normalised.
+ Fixed verify to scale white point reference to be larger than largest Y value
+ being compared.
+
+* 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.
+
+* 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.
+
+* Fixed bug in spotread's handling of emsissive 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.
+
+* Fixed bug in the way illumread displays available instruments.
+
+* Changed libusb V1.0 name to libusb-1.0A, so as not to clash
+ with any official but different libubs 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 inconsitent data to debug output.
+ Fix bug in adaptive mode - the integration time was sometimes
+ too short.
+ Set adapative emissive target at 95% to allow a little more
+ margin to saturation.
+
+* Fix some minor compiler warnings.
+
+* Added direction indicators to xy values in dispcal interactive
+ monitor adjustments.
+
+Version 1.2.1 (9 August 2010)
+-------------
+
+* Fix problem with ColorMunki reporting erroneous inconsistent
+ measurement errors. This shows up on display calibration.
+
+* 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.
+
+Version 1.2.0 (30 July 2010)
+-------------
+
+* Added EV calculation to spotread -a
+
+* Updates included libtiff to V3.9.4
+
+* 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.
+
+* Fixed scale by 100 bug in spec2cie -f spectral output values.
+
+* Fixed memory allocation bug in spectro/fakeread.c.
+ (Also fix memory allocation leak in xicc/mpp.c)
+
+* Fixed bug in target/targen where .mpp pre-conditioning profiles
+ ink limits wern't being handled properly.
+
+* Reduced i1pro high res mode from 750 to 740 nm because of
+ unreliable sensor values.
+
+* Added support for filter in chartread.
+
+* 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.
+
+* Fixed bug in installing profile on MSWin Vista/Win 7 in system scope.
+
+* Fixed bug in xsp_Tdensity() table values.
+
+* Enable -C option in dispcal.
+
+* Increase target/ofps.c vertex intersection retries from 10 to 40
+ to give it a better chance of working with difficult profiles.
+
+* Fixed printcal -D problem.
+
+* Fixed average spectral output problems.
+
+* Changed i1pro & Munki driver to save instrument calibration
+ file in $XDG_CACHE_HOME/color/ (or the XDG fallback)
+ rather than in the directory that the executable
+ exists in. Also changed spyd2en to save the PLD pattern
+ in the $XDG_DATA_HOME or $XDG_DATA_DIRS.
+
+* 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.
+
+* 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()).
+
+* Changed CMYK black point to be neutral, 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 beter uniformity.
+
+* Fixed bug in ColorMunki driver scan mode calibration
+ when instrument is more sensitive than usual.
+
+* Fix usage of dispread, -V option was missing.
+
+* Fix plot bug in printcal
+
+Version 1.1.1 (21 February 2010)
+-------------
+
+* Altered xpsect FWA code to reduce overshoot artefacts due to filetering.
+
+* Updated ref/CMP_Digital_Target-3.cht as it seems that the reference
+ chart has columns labeled "2A - 2D" rather than the "AA - AD" that
+ is actually printed on the chart...
+
+* 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.
+
+* Changed printcal so that it will create .AMP file with more
+ than 4 channels.
+ Also fixed up plotting to plot up to 10 channels.
+
+* Renamed the following tools:
+
+ cb2cgats -> cb2ti3
+ kodak2cgats -> kodak2ti3
+ logo2cgats -> txt2ti3
+ splitcgats -> splitti3
+ mpprof -> mppprof
+
+* Modified scanin so that it ignores any alpha channels
+ in the input .tif file.
+
+* Change spotread so that it takes spectral readings by
+ default so that FWA comensation readings can be used.
+
+* 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.
+
+* Fixed colprof so that the per channel input curves for
+ XYZ PCS B2A tables are actually scaled correctly.
+
+* Re-organized imdi/cctiff to allow for the possibility of
+ the Y to L* linearization being applied to actual XYZ input
+ spaces, not just Y like device spaces.
+
+* Modifed target/targen to cope better with case where adding
+ nodes fails to determine vertex positions a lot of the time, causing
+ extreme slowdown. Re-shuffle node order and retry now.
+ Also change appoach of adding fixed nodes to temporarily
+ skip fixed nodes that fail to add due to vertex positioning
+ failures. Also removed special node as this doesn't seem to
+ be required for reasonable positioning, and caused problems
+ in at least one case (media fixed node could never be added).
+
+* 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
+
+* Added matrix only/linear algorithm option to
+ profile/colprof, for raw camera profiling.
+
+* Fixed bug in input matrix profiles introduced by the XYZ cLUT
+ display matrix profile change, where the correct white and
+ black point wern't being written.
+
+* Changed tiffgamut to use one pass gamut hull finding,
+ since this seems to be more reliable on the odd shaped
+ image gamuts, as well as use a convex hull surface that
+ more closely wraps the raster colors.
+
+* Added standards references to the viewing condition pre-set
+ descriptions, and also added a preset for the ISO Critical
+ print viewing lighting level.
+
+* Fixed bug in profile/colprof -u, this wasn't being
+ applied properly to matrix profiles.
+
+* Fixed several build bugs in imdi code related to 64 bits.
+ The 64 bit code was sometimes being compiled on non-native 64
+ bit architectures, and not being compiled on native 64 bit
+ architectures. The table setup code was not handling 64 bit
+ setup correctly on 32 bit architectures.
+
+* Tried to improve dispcal -E (verify) behavior
+ by switching to native response for base measurement used
+ to establish black aim point. Probably would be better to
+ store all aim info in .cal file, and verify against that
+ rather than altering verification target by the current response...
+
+* Added documentation for specplot.
+
+* Added -M option to printtarg, for the case where the TIFF
+ file is to include the margin.
+
+* Fixed bug in ucmm/ucmm.c where wrong malloc length
+ causes crash when installing/unintstalling profiles
+ with long filenames.
+
+* Modified black curve to make sure that smoothed
+ curve meets target level at boundaries, and to
+ reduce smoothing filter width.
+
+Version 1.1.0 (17th January 2010)
+-------------
+
+* Added some warnings to colprof for strange combinations
+ of -s -S and -t -T and -g.
+
+* Fixed problem in perceptual gamut mapping that resulting in
+ less deep blacks than desirable. Also tweaked gamut mapping
+ to try and maintain luminance gradation near black
+ for chromatic colors.
+
+* Simplified the Linux instalation instructions, particularly
+ with regard to USB and serial permissions. Permissions use groups now,
+ or ACL if it is available.
+
+* Added working MSWindows 64 bit libusb drivers, which will work
+ on Vista 64 and MSWindows 7 64 bit. Because of
+ Microsofts driver signing requirements though, they won't be
+ usable unless a driver code signing workaround is used.
+
+* 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.
+
+* Added -O option to scanin and colprof, to allow overriding the
+ default output filename/location.
+
+* There was a regression in the black inking fixes, the K target
+ was corresponding to the pre-1D Lut values, this is now fixed.
+
+* Fixed another glitch in rspl/rev.c when computing black solution -
+ the auxiliary target was not always the closest one possible.
+ This fix may also help smoothness near black.
+
+Version 1.1.0 RC4 (6th January 2010)
+-----------------
+
+* Fixed bug in xicclu -pz that caused maximum rather than minimum ink. Also
+ fixed tolerance glitch in rspl/rev.c that was causing non-exact black
+ values to be returned.
+
+* 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.
+
+* Fixed bug in colprof -aX which caused crash when there are calibration
+ curves.
+
+* Fixed bug in printcal, changed first -n option to -d to distinguish it
+ from second -n parameter.
+
+Version 1.1.0 RC3 (4th January 2010)
+-----------------
+
+* Fixed bug in Linux profile uninstall (dispwin -U)
+ (Typo in path causes uninstall to fail).
+
+* Changed MSWindows athread implementation to kill a thread
+ that hasn't terminated on thread object deletion. This
+ isn't nice, but avoids the problem of the i1pro switch handler
+ thread exiting after 600 seconds and then accessing
+ a free'd structure when dispread -K is used.
+
+* Change colprof XYZ B2A table scaling to make better
+ use of the cLUT table grid resolution.
+
+* Fixed bugs in black generation rule to do with white->black point
+ calculations, scale and input/output curve handling. Changed
+ xicclu -g to better correspond with -k p parameters.
+ Changed xlut CMYK black locus handling to pick largest K value
+ when there are multiple K locus segments and the desired K
+ doesn't fall on any segment, to give better K continuity.
+ Added "skew" adjustment to K generation rule to make
+ the curve it better fit typical device behaviour.
+ Updated tutorial to reflect these changes.
+ Note that the -kp parameter values will have to
+ be re-established for a particular device using V1.1.0 RC3.
+ (This may improve the "bumpy black" problem ?)
+
+* 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
+ so that it is obvious if the matrix is being used instead of the cLUT, and so it does
+ not increase profiling time. Using -aX will create real matrix tags.
+
+* Removed deprecated imdi/cctiff -o option, and added per profile -o option to set the
+ tag search order so as to be able to test profiles that have both matrix and
+ cLUT tags.
+
+* Removed general cLUT clip warnings, and added a specific RGB display/output
+ device warning if a primary can't be encoded in L*a*b* PCS.
+
+* Fixed bug in i1pro driver - the linearization factors were being swapped
+ between low and high gain. This improves the absolute luminance calibration,
+ and may have subtle effects on the accuracy of other readings.
+
+* Added -V option to dispcal and dispread to allow using the
+ adaptive mode of the i1pro for display measurement.
+ This may give better low level readings ?
+
+* Improved targen so that it doesn't slow down as badly
+ when a very large number of fixed points are used together
+ with full spread points.
+
+* Improved profile/logo2cgats so that it errors
+ on a wrong spectral field type.
+
+* Change spectro/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. This may give
+ better fit and lessen the chance of color tints
+ due to a poor fit.
+
+* Increased profile/printcal curve smoothing to reduce
+ the effect of noise.
+
+* Changed chartread strip reading mode to allow navigating about the
+ strips, saving a partially read chart, and resuming a partially
+ read chart (chartread -r).
+ Also added a "next unread patch" key to the patch by patch mode.
+ Chartread won't exeit automaticcaly now, once all the patches have
+ been read (in case any patches need to be re-read), so the 'd'
+ key must be hit to finish.
+ Removed chartread -a option (it always saves the patch locations now).
+ Added a -I option to allow re-using .ti2 files on a chart printed
+ with different calibration curves.
+
+* Modified xicc/cam02 to clip the blue to avoid
+ crazy behaviour outside the spectrum locus.
+ Removed previous attempt at spectrum locus clipping.
+
+* Fixed bug in Spyder 3 driver that can cause readings
+ to be scaled by a factor of 16. (This depends on
+ when the Spyder was manufactured.)
+
+* Fixed bug in adding CIE illuminant C to spectral support.
+
+* Change printtarg last row padding to be media color
+ for both random and non-random layout.
+
+Version 1.1.0 RC2 (7th December 2009)
+-----------------
+
+* Re-worked gamut mapping to improve saturation levels
+ within the bulk of the gamut, as well as improve
+ hue preservation.
+
+* Changed "la" intent (luminance matched appearance) to have
+ zero luminance matching enhancement "knee", to make
+ it more appropriate for assessing transformations
+ in light of their estimated appearance.
+
+* Added CIE C type illuminant spectrum support.
+
+* Modified DTP20 driver to double check for an offline
+ read chart in case it is running old firmware.
+
+* Added device power value for targen to allow
+ calibrating devices that have extreme non linearity.
+
+* Fixed bug in targen when full spread patches were
+ mixed with other test patch types.
+
+* Updated yajl library to latest version.
+
+* Improved X11 XRandR CRTC detection
+
+* Added verbosity level to profcheck to match invprofcheck.
+
+* Clarified licensing of various files (GPLv2+ files, reference
+ files and documentation).
+
+Version 1.1.0 RC1 (6 November 2009)
+-----------------
+
+* Added flash measurement support to i1pro and Munki, + corresponding
+ option in spotread.
+
+* Added new link/collink flags -fcmy that force pure 100% C, M and/or Y
+ colorant input values to be pure output values. Gamut mapping
+ is adjusted sympathetically with these options too.
+
+* Fixed link/collink so that the -f, fk and -F options used
+ to force K only output also trigger gammut mapping
+ to the K only destination range. Also made these
+ options set black generation and intent in a sympathetic
+ way by default. The result is that there now should be
+ no discontinuity between the K only mapped colors and
+ others in the gamut, and the source gamut should be
+ mapped to be within the range of the K only black device.
+
+* Modified and improved gamut mapping to fix perceptual uniformity,
+ and also greatly improves smoothness and preservation of
+ source detail.. Re-tuned gamut mapping parameters.
+ Added support for K only black gamut mapping from source
+ and/or destination.
+
+* Fixed most CIECAM02 usages so as to clip values against
+ the spectrum locus before converting to Jab. This
+ may help avoid poor CIECAM behaviour for imaginary color values.
+
+* Fixed bug in rspl/inv.c that was causing innacurate
+ inverse lookups in some corner cases. This may have been
+ afecting black generation accuracy and general B2A table
+ and device link accuracy.
+
+* Added support for Spyder3Express (ie. disable ambient capability
+ if it's an Express).
+
+* Added workalike sRGB and Adobe1998 ICC profiles to /ref
+ Note that the sRGB profile has slightly higher accuracy
+ (better matching of matrix to white point) than the
+ original H.P./Microsoft profile.
+ Also provided lab2lab profile to use with collink.
+
+* Add support for the ColorMunki Create colorimeter.
+
+* Fixed xicc/xicc.x and xicc/xlut.c to be more robust in
+ computing a CMYK black point. Fixed bug in K limit handling.
+
+* Changed xicc/xfit to use higher order delta E metric, so that
+ maximum errors do not blow out. This seems to make the
+ output curves a much better fit, and reduces the error
+ when higher rspl smoothing factors are used. Curve stiffness
+ has been increased to improve smoothness ant match higher order error
+ values.
+
+* Added support for the Christophe Mtairie's Digital Target-3 chart with 570
+ patches. (Thanks to Nikolay Pokhilchenko & Ben Goren).
+
+* Changed the rspl/rev "> colprof: Error - rev: bwd vertex 0 is not prime or secondary"
+ error to a warning. This seems to be triggered by odd data sets (ie. monochrome).
+
+* Created a new tool extractttag to extract text tags from an ICC
+ profile. This can be used to extract the original target data
+ (ie. .ti3 file) and/or CAL curves from an ICC profile.
+
+* Fixed all the ink limit calculations to work in post-calibrated
+ final device values when per-channel calibration is being used,
+ and the calibration curves are embedded in the .ti3 file or ICC profile.
+
+* Added printer calibration capability:
+ Added printcal utility to create and verify printer calibrations.
+ Added calibration file support to printtarg.
+ Added calibration file support to cctiff.
+ New utility "applycal" to apply calibration to ICC profiles.
+ Modified targen etc. to distiguish between real RGB and fake
+ printer RGB.
+
+* Changed targen ofps point distribution to maintain
+ any initial gamut surface points during itterative
+ refinement, and to distribute them independently in
+ the sub-dimension they lie in. Changed adaptive operation
+ to be the default, and to use a much more sophisticated error
+ estimation model in determining the points locations.
+
+* Fixed problem with reliably detecting backward read strips
+ using the i1pro & Munki, by making target/printtarg optimize the
+ random patch layout to maximize the difference between
+ patches read from each direction. (This problem was more
+ prevalent with large charts with lots of strips.)
+
+* Added support for the LaserSoft DCPro scanner/camera
+ target chart.
+
+* Changed profile/logo2cats.c spectral scaling heuristic threshold
+ from 2 to 10 to allow more margin.
+
+* Fixed bug in spectro/dispwin.c for 256 byte EDID's (thanks to Omari Stephens).
+
+* Fixed bug in scanin/scanrd.c that caused crash due to diagnositic
+ output when a gross chart recognition mismatch occures.
+
+* Added warnings to colprof, collink and tweak if any values
+ get clipped when setting the cLUTs.
+
+* Fix bug in xicc/xfit.c where too little memory was being allocated.
+
+* Fix dispwin/dispcal problem on X11 with compositing WMs displaying
+ transparent test window.
+
+* Fix spectro/dispcal to fall back if Jacobian inversion fails.
+
+* Reduce default reverse cache memory limits to avoid thrashing.
+
+* Changed all code with my copyright to the
+ GNU AFFERO GENERAL PUBLIC LICENSE Version 3.
+ This may be of significance to anyone using
+ this code to provide a service over the Internet.
+
+* Modified spyder 2 & 3 driver to change how adaptive works.
+ Now increases the integration time to try and get
+ a minimum transition count. This speeds Spyder 2
+ readings (at some cost to accuracy), while helping
+ make the Spyder 3 a bit more useful on dark displays
+ (at the cost of a long read time). Also added workaround
+ to the Spyder 3 not having a reset command - drain
+ any pending read data on startup, so that it doesn't
+ corrupt calibration or initial readings.
+
+* Fix USB instruments so that a comms failure doesn't try
+ and re-establish communications. Fix i1pro & Munki so
+ that they don't return a comms error on a short measurement.
+
+* For the ColorMunki on OS X, kill the manufacturers daemon process that
+ has it open, when Argyll wants to open it. (daemon will automatically
+ restart).
+
+* Changed spectro/dispsup.c to show test window without
+ black background to position instrument, and
+ then re-create the test window with black backgroud.
+
+* Fixed memory allocation bug in i1pro & Munki drivers
+ when sensor gets saturated during display measurement.
+
+* Tweaked Jambase to work with Microsoft VC++8 and 9
+ when the Platform SDK February 2003 is used.
+
+* Removed need for DDK to access HID devices on MSWindows.
+ This simplifies compiling with Microsoft VC++ and
+ means that a MingW compile can use HID.
+
+* Enhanced plot library to aid debugging target/ofps.
+
+* Added a -M "command" option to dispcal and dispread, that
+ allows an external command to supply display readings.
+ This could be used to interface to an instrument not directly
+ supported by Argyll.
+
+* Fix spectrum -> XYZ conversion scale factor for absolute readings.
+ It was in error by 100/(10.685 * 6.83) = 1.37. This affected display
+ and emission readings for the i1pro.
+
+* Modified printtarg to allow creating of a ColorMunki chart.
+ By default the rows are as wide as the instrument, but -h will
+ double the row density.
+
+* Added -p for projector mode to spotread, dispcal and dispread.
+
+* Change dispread, dispcal & dispwin to use -P to position test window,
+ so that -p can be used for projector mode.
+
+* Added ColorMunki spectrometer driver.
+
+* Changed most code that reports progress on optimization
+ to aproximate percentage rather than ".....".
+
+* Added interactive option to spotread to allow saving specrums
+ to a CGATS ".sp" spectral file, suitable for use as an illuminant.
+
+* Added Spyder3 colorimeter driver.
+
+* Modified libusb/linux.c to make sure that a single large
+ request is broken down into overlapping 16K reads, so that
+ the i1pro rev A/B doesn't time out on SuSE Linux.
+
+* Fix bug in spectro/ntio.c involving error() and warning()
+ declarations. This causes crashes on machines with no serial ports.
+
+* Added another challenge/response key for DTP22.
+
+* Fix bug in gamut creation that caused internal error if
+ .gam points matches fake initial gamut tetrahedron.
+
+* Fix two problems in spectro/i1pro_imp.c:
+ The way that calibration files were detected as invalid
+ was insufficiently sesitive to the parameters being
+ changed in the driver. This meant reading and partially
+ re-using some parameters when the previous calibratin
+ should really have been ignored.
+
+ The second issue was in not being sufficiently sensitive
+ to sensor saturation for display measurement. Fix by
+ now having a zero tollerance, and allowing for 3 different
+ display measurement exposures.
+
+* Fix bug in link/collink -ke where the K value was being
+ distorted by not taking into account the B2A per channel output curves.
+
+* Fix bug in spectro/hidio.c that can cause a crash (bus error) on OS X
+ for any program that accesses the instruments.
+
+* Make cgats lib easier to use from C++ (Thanks to Alastair M. Robinson).
+
+* Fix ICC spec. compliance issue with minimum
+ description tag length in Profile Sequence Description
+ tag type.
+
+* Fix bug in spectro/dispwin that prevented DPMS being
+ re-enabled if the process is killed.
+
+* Fix bug in xicc/tiffgamut.c that prevented it working for
+ Lab TIFF input. Fixed issues with doing image specific gamut mapping
+ in collink.
+
+* Make sure CGATS file identifiers are always a minimum of 7 characters.
+
+* Add 'targ' tag to hold chart data in profiles.
+
+* Fix problem where rev would fail on systems with lots
+ of RAM, due to running out of Virtual Memory space.
+ This happens mostly on OS X, because its malloc
+ routine use a lot more VM for small allocations
+ than the actual memory consumed.
+
+* Fixed problem with Spyder 2 driver, where errors or user
+ terminating/aborting measurements leaves the instrument
+ in a hung or corrupted state. Fix by making sure that
+ a measurement is always completed before returning.
+
+* Added Color Rendering Ra Index to measurements returned
+ from spotread for ambient or with the -T flag.
+
+* Add an option to tweak/refine to improve matching for
+ white point relative test chart data (Relative Colorimetric
+ intent matching).
+
+* Fix a memory leak in gamut.c, plus a few other 1-off minor leaks
+ elsewhere. (Thanks to Jordi Nodal for pointing these out.)
+
+* Add -U scale option to colprof so that input profiles can be created
+ that have a media white that is whiter than PCS white.
+
+* Fixed bug introduced in V1.0.0 in matrix input profiles where white point
+ was being normalized rather than being left absolute.
+ Also changed Lut based display profiles so that the white
+ point is forced to have a Y value of 1.0, to bring it into
+ line with matrix profiles. (This may worsen the verification
+ match to the original data though.)
+
+* Change rev cache RAM allocation to make sure
+ ARGYLL_REV_CACHE_MULT scaled value can't exceed VM size.
+
+* Added -A option to displcal, so that the neutral axis to
+ black point blend rate can be altered, and changed default to 4.0
+ to improve the off axis visual appearance with some LCD displays.
+
+* Made verify and refine a bit more robust in the face
+ of different format .ti3 files, partucularly those created
+ by logo2cgats.
+
+* Added a -O parameter to tiffgamut, to allow the resulting gamut
+ file to be located somewhere other that the directory the last .tiff
+ file is in.
+
+Version 1.0.4 bug fix release (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.
+
+
+Version 1.0.3 bug fix release (3rd September 2008)
+-----------------------------
+
+* Modified tiffgamut so that it processes an arbitrary number
+ of raster files. Also added a filter option, that filters out
+ little used colors from the raster gamut.
+
+* Changed gamut mapping to fix problem in which the gamut
+ mapping for profiles didn't match that in collink by
+ fixeing out of gamut mapping to make extended source
+ gamut of B2A table more sensible without afecting
+ primary gamut hull fidelity. Tweaked the gamut mapping
+ to de-emphasise luminence matching slightly, resulting
+ in more saturated but darker primaries for the typical
+ RGB->CMYK gamut mapping.
+
+* Fixed problem with i1display in which it would
+ time out for some particular inputs (low level dynamic
+ input ?)
+
+* Fixed MSWindows screensaver reset to work on
+ Vista by adding fake mouse move event.
+
+* Changes rspl/rev to have a "fast setup" mode
+ that trades a faster setup time for slower
+ reverse lookups. This is to improve the
+ responsiveness of xicclu.
+
+* Fixed bug in dispcal when using -a with -t
+
+* Added -L option to printtarg to suppress the i1pro target holder
+ clip margin.
+
+* Fix yet another PPC GCC optimizer bug in spectro/dispread.c
+
+* Modifed rspl/rev cache allocation to make sure
+ that it is somewhat less than the maximum virtual
+ memory that a process can allocate. On some systems
+ with lots of RAM, it is possible to have malloc() fail
+ due to this.
+
+* Added support for i1 Monitor instrument,
+ which is an i1pro without reflective capability.
+
+Version 1.0.2 bug fix release 19th August 2008
+-----------------------------
+
+* Fixed two typo bugs in colprof (xicc/xfit.c) to do with output
+ per curve optimization - the symptoms were gcc based compiles
+ taking a long time to create the A2B tables.
+
+* Added workaround to strange i1pro Rev A upgrade/Rev B quirk,
+ that causes extra time to be taken for reads.
+
+* Added some extra verbose output when creating profiles (rspl/rev)
+ to show the system RAM detected and the limit imposed on
+ each rev cache. Also changed code to prevent failure when
+ there is not enough memory to allocate a single cell
+ to search, and to fix memory limit setting for systems that
+ may have 4 Gbytes or more of memory.
+
+* Added new option to collink -fk, that forces 000K input
+ to K only output.
+
+* Fix dispwin.c so that -K option (calibrate instrument)
+ doesn't fail when it thinks two dispwin's are being requested.
+
+* Change spectro/hidio.c so that HidD_GetAttributes() fail is ignored.
+
+* Fixed bug in dispcal which causes a numerical fault if a Yxy white point
+ is specified and ambient correction is used.
+
+* Changed colprof -bn to be the same effect as -B (ie. a minimal resolution
+ B2A table).
+
+* Fixed dispwin -R "Effective LUT entry depth" report to work without -v.
+
+* Modified MSWindows display enumeration to not ignore displays
+ that have EnumDisplayDevices() fail, but ignore displays
+ with a name \\.\\DISPLAYV*. This us to get it working under VMWARE.
+
+* Added device target value quantization option to
+ target/printtarg, as well as making it default for TIFF output files.
+
+* Fixed a bad memory leak in render/render.c, that was
+ affecting target/printtarg. Probably improved the
+ anti-aliased rendering speed too.
+
+* Fix typo in spectro/dispwin.c that sometimes causes a crash
+ when the system has XRandR 1.2.
+
+* Fix latent bug in xicc/xfit.c that could affect
+ profiles that are not white point corrected (ie. colorof -u inputdevice).
+
+* Fixed problem with an i1pro that has had it's
+ EEProm reset after a firmware upgrade - a previous
+ calibration EEPRom integration time of 0.0 is increased
+ to the minimum integration time to prevent divide by zero etc.
+
+* Added Argyll version number to the i1pro calibration file,
+ to try and make sure that old files are invalidated with
+ each potentialy incompatible update.
+
+* Fix LUT entry depth reporting bug, and add yet another
+ workaround for the GCC/PPC optimizer bug.
+
+Version 1.0.1 bug fix release (14th July 2008)
+-----------------------------
+
+* Changed XRandR code to index the _ICC_PROFILE property
+ such than inactive displays are ignored.
+
+* Fixed problem in rspl/rev.c where the memory consuption
+ was sometimes exceeding the maximum RAM limit.
+
+* Changed XRandR code to fall back to other extensions
+ if it fails simple VideoLUT access tests.
+* Add environment variable "ARGYLL_IGNORE_XRANDR1_2" to
+ cause XRandR 1.2 to be ignored on X11 systems
+ that have buggy XRandR 1.2 implementation.
+
+* Fixed problem with locating displays on MSWindows with
+ some particular configurations.
+
+* Fixed bug introduced into cam02.c that ignored
+ enumerated viewing condition.
+
+* Changed udev USB matches to lower case, since
+ apparently udev does a text match rather than matching
+ the integers...
+
+* Fixed malloc size bug in profile/logo2cgats.c
+ (thanks to Steven Greaves).
+
+* Fix dispwin so that the lack of an EDID_DATA atome is
+ not a fatal error.
+
+* Fixed jcnf so that the temporary file is in the same directory
+ as the file it will be renamed to.
+
+* Added debug option to dispwin/ucmm to help with diagnosis of
+ locating displays.
+
+Version 1.0.0 changes (1st July 2008)
+---------------------
+
+* Changed input device profile creation to create B2A table
+ by default. This can be disabled with the -b option.
+
+* Changed scanin to pass spectral information from reference file
+ to .ti3 file, and also changed coloprof to honour observer and
+ illuminant options for input profile creation.
+
+* Added check to using libusb to check that it has
+ been patched to work properly with Argyll supported instruments.
+
+* Remove termination character setting from ntio.c and unixio.c
+ to work around problem with Prolific 2302 USB<->Serial converted.
+
+* Fixed bug in MingW build that caused a run time
+ "(null) DLL cannot be found" error, for any
+ program that linked to the libusb library.
+
+* Modified profile/logo2cgats to output the sample name,
+ to make it more useful. Added -n flag to spectro/spec2cie
+ to optionaly suppress spectral output. Documented spec2cie-p
+ (plot spectrum) flag.
+
+* Modified gamut/nearsmth.c to change optimization search
+ from 3D to 2D to improve speed.
+
+* Added experimental "Daemon" mode to dispwin, so that it
+ monitors an X11 server and keeps each screen up to date
+ with the corresponding profile and calibration using XRandR 1.2.
+
+* Tweaked dispcal to try and improve behaviour and resulting
+ smoothness of curves. Added black brightness option -B.
+ Added extra report to -R to show VideoLUT entry bits of significance.
+
+* The i1pro fixed integration time of 2.0 seconds for display
+ calibration turns out to be too long for some very bright
+ displays. To cope, an alternat 1.0 second integration
+ time is calibrated, and switched to if the display
+ is bright enough.
+
+* Changed distribution archives so that they have a top
+ level directory. Changed OS X and Linux to gzip'd tar
+ archives rather than .zip, so as to preserve the
+ UNIX style permissions better.
+
+* Modified rspl/rev.c to add improved nearest acceleration
+ lookup grid structure, to tackle performance issues.
+ Changed aceleration grids to only hold fwd cells that
+ are within the ink limit. Changes sub-simplex handling
+ to make common face sub-simplexes shared between cells.
+ Fixed bug in ink limit bug that was causing many sub-simplexes
+ to be treated as if they straddled the ink boundary, slowing
+ down inversions with ink limits applied. Changed reverse
+ memory size accounting from cells to bytes, for more
+ accurate containtment of memory usage below the swap
+ threshold. Made default memory limit automatically adapt
+ to available system RAM. Increased default reverse
+ acceleration grid resolution to be twice the forward grid
+ resolution, for much improved speed. Added another performance
+ tuning environment variable ARGYLL_REV_ACC_GRID_RES_MULT to
+ allow altering the reverse acceleration grid resolution.
+
+* Fixed cctiff so that it will copy a tiff file
+ with no color transformation. This allows embedding
+ an ICC profile in the output. Note that the TIFF file
+ will have been modified, the format may have changed,
+ and tags may be lost (ie., this is not the same as
+ an "in place" embedding).
+
+* Added a simple utility "extracticc" to extract
+ embedded ICC profiles from TIF files.
+
+* Modify tiffgamut, cctiff colprof and collink so that a TIFF file
+ with an embedded profile may be used to supply ICC profiles.
+ Also added an option to cctiff of embedding a profile in the
+ destination raster file.
+
+* Added a micro cmm to Linux port, to supord recording
+ the installed display profile to monitor association
+ in the file system. dispwin uses this for installing
+ display profiles, as well as setting a display
+ to the currently installed profile.
+
+* Changed dispwin operation on OS X to be able
+ to set the display calibration in a semi-persistent
+ way that is similar to the behaviour on other systems.
+
+* Fixed imdi/cctiff and link/collink so that they
+ no longer rely on a Matrix profile device space
+ being roughtly perceptualy linear - instead
+ use the per channel curves and convert them
+ to an L* type space for indexing the CLUT grid,
+ and also make a Matrix output space L* like
+ for interpolation.
+
+* Changed colprof to extract the source gamuts
+ for the perceptual and saturation gamut
+ mapping from the perceptual and saturation
+ A2B tables of the source profile (if they exist).
+ This makes for a better match of the gamut
+ mapping to that particular source profile
+ when subsequently linked with a CMM that
+ chooses the same intent table for source
+ and destination profiles. Changed iccgamut, tiffgamut
+ and xicclu to correspond - make Jab appearance space
+ selection orthogonal to intent table used.
+
+* Checked and adjsted ambient calibration (Lux etc.).
+ The Eye-One pro, Huey etc. now give reasonable readings.
+
+* Changed dispcal to make handling of input and/or
+ output black offset consistent across all calibration
+ curve selections, as well as make it selectable/blendable.
+ Added some other standard video calibration curves.
+ Added a viewing conditions transform based on CIECAM02
+ to adjust for the effect of ambient light on display
+ visual contrast, plus option of measuring the ambient
+ light with the instrument.
+
+* Made cam02 set_view() argument order consistent.
+
+* Added battery status report to spotread and chartread
+ for DTP20.
+
+* Enhanced dispwin to take care of installing
+ and uninstalling profiles for a chosen display.
+ Also allow setting the display calibration to the
+ appropriate installed profile.
+
+* Changed colprof so that the .ti3 data is
+ included in a 'DevD' and 'CIED' text tag in the profile.
+
+* Added X11 RandR 1.2 support, and use this in
+ preference to Xinerama and XF86VidMode extensions.
+ Support the _ICC_PROFILE atom in the Xrandr output
+ object, as well as the usual RootWindow properties.
+
+* Added TIFF file output support to target/printtarg,
+ as well as an identification string on each page.
+
+* Enhance argyll/render to support text (using Hershey fonts),
+ solid and dotted lines, improve speed, plus add
+ anti-aliased output. This is in order to make
+ it usable with printtarg.
+
+* Completely re-wrote the Jambase & Jamfiles to make
+ a build system thaht works from the top and within
+ sub-directories, as well as cleaning up the Jamfiles
+ and improving the build system capabilities.
+ This solves the circular dependency issues,
+ makes a full build faster and cleaner,
+ and makes it easier to ensure that a full
+ build has consistent build flags and completes
+ sucessfuly. The system TIFF library will
+ now be used if available. Argyll project setup
+ is now in "Jamtop" in the project root directory.
+
+* Added ability to dispwin to display test patches
+ from a CGATS file, so that it can be used for manual
+ patch measurement.
+
+* Improved ability of cctiff to cope with input
+ files that have extra planes.
+
+* Changed tiffgamut to accept Lab encoded TIFF files without
+ using an ICC profile, as well as accepting a colorspace
+ ICC profile.
+
+* Removed limititation that VideoLUTs have exactly 256 entries.
+
+* Fixed problem with accuracy of dispcal -o profiles.
+ [There were two issues, one being that the fitting was
+ weighting smoothness to the detrement of accuracy,
+ and the other being that there are unconstrained
+ parameters that allow the model curves not to
+ go through 1,1]
+
+* Fixed problem with Linux PolicyKit/Hal permission
+ files not enabling serial ports and Huey.
+
+* Fixed and verified that the major Linux/X11 screensavers
+ (X11 saver, xscreensaver, gnome & kde screensavers) and DPMS
+ are disabled properly, and now we avoid doing an exec()
+ every 60 seconds!
+
+* Modified libusb to address Linux intr/bulk polling
+ and reliability issues.
+
+* Improved install documentation in the light of current
+ Linux distributions, and MSWindows versions.
+
+* Renamed "profile" to "colprof", and "icclink" to "collink"
+ to avoid clashes that have arisen with other executable names.
+
+* Fixed bug in scanin/scanrd.c that sometimes caused
+ a double free crash on Linux. (Thanks to Guy K. Kloss)
+
+* Modified dispwin to open a device context to a particular
+ MSWindows display differently, for better compatibility with
+ MS Vista.
+
+* Changed dispwin to allow several of the commands
+ to operate in one call. Clearing the LUT,
+ setting the X11 ICC_PROFILE, loading the profile or
+ X11 ICC_PROFILE can now be done with one
+ invokation of dispwin.
+
+* Fixed bug in dispcal that affected black level
+ adjustment and calibration. Symptom was a black
+ level not quite as low as it should be.
+ [Thanks to Hal V. Engel for noticing this]
+
+* Made sure that display profiles have the luminance tag
+ value set, so that it's possible to recover the
+ actual instrument reading.
+
+* Fixed dispcal and dispread -dfake so that
+ they will take notice of a -kcal file.
+
+[Beta 8 Snapshot 2008/1/15]
+
+* Added -S and -L options to spectro/dispwin for Unix/X11
+ systems, to allow setting and using the _ICC_PROFILE
+ root window property to store the displays profile
+ and calibration.
+
+* Changed MSWindows and OS X dispwin/dispcal/dispread test
+ window to be title and borderless, and also have
+ an option (-B) to mask the whole screen behind the
+ test window with black.
+
+* Added a "create intersection gamut" method
+ to the gamut class, and also added a companion
+ -i/-I flag to viewgam to print out the intersecting
+ volume of the first two gamuts, and oprionaly
+ save the intersecting gamut. Improved robustness of
+ the gamut "radial" point test methods slightly.
+
+* Fixed spotread so that it doesn't display any
+ color information when reading the Huey ambient
+ sensor, and added an option (-T) to show
+ color temperature for each reading.
+
+* Added gamut volume report (with -v) to tiffgamut.
+
+* Changed spectro/spyd2setup.h to only set the
+ loaded flag after sucessfuly loaded a firmware file.
+
+* Changed numlib/numsup.c error, warning and verbose
+ functions into function pointers so that they
+ can be overridden by callers of library functions
+ that make use of them (lprof).
+
+* Switched icc and cgats library from
+ the "BSD like" license to the "MIT" license.
+
+* Added better DTP22 support to driver and
+ printtarg.c (thanks to Nigel Rowe)
+
+* Fixed spectro/ntio.c to cope gracefully with systems
+ that don't have any serial ports.
+
+* Renamed spectro/printread to spectro/chartread.
+
+* Fixed problem in spectro/usbio.c where on
+ some systems usb_detach_kernel_driver_np() needs
+ to be called before usb_set_configuration().
+
+* Added option to dispread (-C) to allow a shell callout
+ with each color being tested, to allow relaying the
+ test patch value to a remote display via a script.
+
+* Removed spectro/filmread.c and target/filmtarg.c
+ until their licensing compatibility with GPLv3 is
+ figured out.
+
+* Added -W parameter to instrument using programs,
+ that allows overriding the default serial flow
+ control protocol. This may allow working around
+ problems caused by flow control not working
+ on certain systems.
+
+* Added quick ICC profile creation to dispcal,
+ so that single operation calibration & profile
+ is now possible.
+
+* Fixed some bugs in cctiff handling of Lab PCS and/or
+ -p operation.
+
+* Added a new test chart type to render/timage, for
+ testing profile B2A tables.
+
+* Added -V option to spectro/dispwin, that verifies
+ the currently loaded calibration.
+
+* Added (yet another!) variation of the spectral
+ field names to support colorport output,
+ to profile/logo2cgats.
+
+* Fixed problem with dispcal -u (and possibly
+ other cases, ie. profile) where an out of range
+ VideoLUT calibration value can wrap around
+ rather than saturating.
+
+* Improved black point setting in dispcal,
+ so that it doesn't get lighter if the white point
+ is reset during the run. Also changed the white
+ point cliping to use the device model, rather than
+ relying in the cube clipping code, which was not
+ so accurate.
+
+* Modified profout per channel curve algorithm
+ to be encapsulated in an independent module (xicc/xfit.c),
+ and to create input curves that adjust the curve shape and
+ clut grid locations independently of each other.
+ This has similar performance to the old code in many
+ cases, but reduces fit errors for certain types
+ of device characteristics.
+
+[Beta 7 Snapshot 2007/10/15]
+
+* Fixed minor bug in icc.c - was double freeing while
+ a V4 profile was being rejected.
+ Also changed SYMETRICAL_DEFAULT_LAB_RANGE
+ B2A input curve tweak for 16 bit -
+ the range can be almost -128 to 128 and still
+ remain symetrical.
+
+* Improved robustness of dispcal in zeroing in
+ on the neutral patches. Got Jacobian matrix
+ refinement going, added device value clipping,
+ and made it revert back to the best ever
+ value as a worst case result. Tested all the colorimeters
+ on every platform, fixed bugs with spyder on
+ different platforms (USB bugs ?).
+
+* Tweaked spyder driver to improve repeatability
+ for low light conditions - made integration
+ time adaptive.
+
+* Added Huey colorimeter support, including driving
+ it through the HID drivers on MSWindows and OS X.
+
+* Added Spyder 2 Colorimeter support, including the
+ firware transfer utility spyd2en, to allow the
+ end user to get their instrument workings.
+
+* Fixed a problem in dispwin/dispcal/dispread not keeping
+ the Gnome screensaver at bay.
+
+* Fixed very minor error in profile that caused a crash
+ if -taw was used without a -s.
+
+* Hopefully fixed the last lingering issues with the
+ gamut function "split plane" problem. Improved
+ the split plane choice criteria too, reducing
+ the structure size and (presumably)
+ improving interogation speed slightly.
+ (Visualizing things always helps a lot!)
+
+[Beta 6 Snapshot 2007/9/15]
+
+* Fixed bugs in dispcal target curve - the curves
+ didn't seem to be as neutral as they should be.
+
+* Changed HCFR setup to assume no special 2mm apatures
+ on its sensors, since this is the default hardware configuration.
+
+* Added support for more scan targets. The list is now:
+ IT8.7/2, ColorCheckerDC, ColorCheckerSG,
+ Eye-One Pro Scan Target 1.4 and HutchColor HCT.
+
+* Fixed bug in printread -xl :- XYZ wasn't being scaled to 100
+ (thanks to Duane Ruck for pointing this out).
+
+* Fixed bug that affected printread handling a chart with
+ the patch location identifier that has patch location
+ before strip location. This was affecting reading the
+ Eye-One Pro Scan Target 1.4 chart.
+
+* Added a -a flag to printread, to cause the patch locations
+ to be saved to the output, so that a chart read can be used
+ to create a scan/input CIE reference file.
+
+* Added good/bad beeps to printread for the Eye-One Pro,
+ to speed up chart reading.
+
+* Added a -B flag to print read, to disable bi-directional
+ strip recognition if the reference patch values are not to
+ be relied upon.
+
+* Modified i1pro patch recognition to make it more
+ sensitive to differences in just some wavelength bands
+ - this fixes Eye-One Scan Target 1.4 patch recognition,
+ and generally helps robustness for all charts.
+
+* Supressed "There is at least one patch with an very unexpected response!"
+ warning in printread unless the expected values were created using
+ a specific device model such as an ICC or MPP profile in targen.
+
+[Beta5a Snapshot 2007/9/10]
+
+* Fixed bug that had crept into profile/profout.c
+ that wreckes the contents of the gamut lut.
+
+* Added a manual chart recognition fiducial marks to
+ print charts that are intended to be scanned in (printtar -s),
+ so that manual chart recognition can be used on these too.
+
+[Beta5 Snapshot 2007/8/28]
+
+* Fixed serious bug in dispcal & dispread on Linux -
+ screensaver suppression using fork() was causing
+ programs to execute twice at the same time.
+
+* Changed spectro/dispcal.c calibration algorithm
+ to be faster, more precise, and more robust.
+ Improved handling of "native white" mode
+ to better hit the target 1.0 RGB values.
+ This should contain the worst case errors better.
+
+* Changed printtarg to pad i1 test chart last row,
+ since the printread logic can't cope otherwise.
+
+* Added a manual chart recognition option (-F) to scanin,
+ that makes use of fiducial marks defined in the .cht file.
+
+* Added a -G gamma option to scanin/scanin to allow
+ some flexibility in the face of extreme device behaviour.
+
+* (Hopefully) fixed DTP02Q thanks to feedback from Udo Lembke.
+
+* Changed all of my code and other GPL code that allows upgrading,
+ to the GPL Version 3 license. Corrected "licence" to "license"
+ in many (but probably not all) places.
+
+* Modified DTP51 driver to ignore a "bad command"
+ error to the GI command (allow for old firmware ?)
+
+* Modifed dtp20 on-line reading to be more forgiving
+ of unexpected status after a strip read.
+
+* Added some fudge scale factors for i1pro emission
+ and ambient modes. I'm not sure at the moment where the
+ real scale factors come from, so I've roughly matched
+ the scale to what the GM driver returns.
+ Also add fudge factor for i1display2 ambient mode.
+
+* Fixed some bugs that had crept into DTP20
+ offline chart reading (not reading, heap corruption on free).
+
+* Added diagnostic for DTP20 offline chart reading
+ to hint at what strip hasn't been read.
+
+* Changed printtarg to optimise contrast between
+ test patches and spacers.
+
+* Added "aproximate least squares" setting mode
+ to icc set_lut and rspl set_rspl to improve average
+ accuract when setting interpolation arrays from
+ a function (ie. when inverting A2B).
+
+* Added a "display with normalized brightness" to spot
+ read to make it easier to verify spot readings
+ for a display profile.
+
+* Fixed "r" and "rl" intents so that the white points
+ are linearly mapped, as is the normal expectation with
+ relative colorimetric intents.
+
+[Beta4 Snapshot 2007/5/16]
+
+* Fixed icclib to handle unknown tag types now,
+ as well as cope more gracefully with ProfileMaker4
+ profiles that have an illegal flag value in their
+ data tagtype flag field.
+
+* Modified gamut mapping to improve coherence of mapping
+ outside the source gamut when used to create B2A table.
+
+* Created first cut of VRML debug plot library in plot/vrml.c,
+ and switched gamut/gammap.c to use it. Other diagnostics
+ could be switched to use it too (ie gamut/gamut.c).
+
+* Modified ciecam02 to improve handling of imaginary colors,
+ and coherence in those regions.
+
+* Added a delay between setting a screen color (spectro/dispwin.c)
+ and starting to read the patch with a display instrument.
+
+* Fixed issue on OS X with locating displays - IO dictionary
+ string handling.
+
+* Made the dispcal/dispread calibration a bit friendlier if the
+ instrument doesn't actually support calibration.
+
+* Added profile comment options to link/icclink.
+
+* Fixed bugs in xicc/xicc.c and xicc/xlut.c that were affecting
+ how black generation was controlled by the input luminence
+ value for a -kp option. This affected profile/profile the
+ most, but could also have changed how link/icclink -G
+ generates black as well. The black generation should now
+ match quite closelgy between the B2A tables generated
+ by profile/profile, and the black generation generated
+ by link/icclink -G.
+
+* Added "patch by patch" mode to print read, that allows
+ reading media where strip recognition is unreliable.
+
+* Added patch consistency tolerance modifier to
+ printread and the i1pro driver.
+
+[Beta3 Snapshot 2007/4/10]
+
+* Modified i1pro driver to do scan measurements with
+ single USB read, to avoid read latency issues.
+
+* Added display/emission distinction for i1pro,
+ to speed up display measurement, while still allowing general
+ ambient measurements to be adaptive. Added display mode
+ to spotread.
+
+* Added workaround to the i1pro rev D crashing on
+ close under Linux. It's reset rather than closed.
+
+* Modified libusb-win32 to fix problem with i1pro rev D
+ crashing on a get_configuration.
+
+* Reworked scan patch recognition to work for reflective
+ or emissive scans, and to be more tolerant of noisy media.
+
+* Added support for emission scans to i1pro and printreaf.
+
+* Fixed ref/*.sp files, as well as adding back in D50*.sp
+ variations that seem to have gone missing.
+
+* Change i1pro trigger/read logic to ensure that
+ process scheduling latency doesn't cause the read to
+ be late, causing read failure. Add trigger/read timing diagnostics.
+
+* Fix i1pro switch thread cleanup to avoid memory access fault.
+
+* Tweak xicc/xspect.c FWA to have better estimation accuracy
+ with a range of paper stocks, as verified by xicc/spectest2.c
+ and xicc/spectest.c
+
+* Fixed spotread to display FWA corrected spectra correctly,
+ as well as fix some bugs with the reference spectra.
+
+[Beta2 Snapshot 2007/3/29]
+
+* Fixed gcc 3.3 optimiser problems on OS X which were
+ causing crashes in spotread -S and i1pro high res.
+
+* Modified spec2cie to look for specific device values to
+ identify white, since some devices fool looking for maximum Y.
+
+* Fix triggering to make FWA spotreads work.
+
+* Fix bug in Spectrolino calibration with filter messages
+ work properly.
+
+* Fix bugs with DTP41 and DTP51 triggering.
+
+* Change how rows per strip are stored in .ti2 file,
+ to remove base 62 limit.
+
+* Increase scope of target/printtarg scale options,
+ and add extra scale for spacers.
+
+* Changed Linux serial port location to look
+ for /dev/ttyUSB* as well as /dev/ttyS*,
+ and only offer them if they can be opened.
+
+* Fix i1pro driver so that it does not return
+ spectral data unless asked.
+
+[Beta1 Snapshot 2007/3/22]
+
+* Finished i1pro driver by adding highres spectral mode
+ (+ matching changes in dispcal, dispread, printread, spotread),
+ and making the calibrations non-volatile so that
+ they can be retained between utility starts.
+
+* Changed the default observer backto the 1931 2 degree
+ observer in various programs (profile etc.), so there
+ is less surprise at the discrepancy between the
+ default instrument values and the values when
+ spectral data is used.
+
+* Changed profile/logo2cgats so that it uses a heuristic to
+ determine if the spectral data needs scaling by 1.0 or
+ 100.0, since it seems the type of file cannot be relied upon
+ as an indicator.
+
+* Fixed link/icclink to record a more accurate summary of
+ overall intent in the header.
+
+* Re-worked tweak/refine.c slightly, to try and improve how
+ it copes with out of gamut points. Added automatic
+ extra weight (5) for lightest patch.
+
+* Added new black generation feature to link/icclink. It can
+ now take the output inking from that of the output profile
+ B2A table, just like revfix.
+
+* Fix bug in link/icclink - the changeover to using K target rather than
+ locus had a bug in it. It was still partially defaulting to locus rather
+ than K value target (some C library has a global called locus ?)
+
+* Made it so Eye-One pro can recognise strips when read in either direction.
+
+* Re-worked instrument calibration and measurement triggering
+ to support instrument operated buttons.
+
+* Added support for DTP20 spectrometer.
+
+* Added support for Eye-One Pro spectrometer.
+
+* Fixed bug in profile where RGB space profiles didn't handle FWA correctly.
+
+* Fixed some bugs in cctiff that were causing inacurate results.
+
+* Added support for the DTP22/Digital Swatchbook.
+
+* Changed serial port driven instruments type to be automatically
+ recognized, eliminating the need for the -i option on
+ all the instrument using utilities (dispcal, dispread, printread, spotread).
+
+* Reworked gamut hull triangulation, hopefully making it more
+ robust against any numerical issues.
+
+* Fix bug in printtarg that caused green spacers instead of white ones.
+
+* Added -c flag to spectro/dispwin. This clears a display
+ calibration.
+
+* Added support for Eye-One Display 1 and 2 colorimeters.
+
+* Added extra configuration for DTP92 to cope with
+ a firmware bug for certain early DTP92Q instruments.
+
+* Fixed bug in logo2cgats - X-Rite ColorPort spectral data
+ is already scaled to 100, so only do this for Gretag files.
+
+* Added the -m flag to scanin/scanin, to allow it to
+ return true mean values, rather than robust mean values
+ (but see latter bugfix).
+
+* Fixed a bug in profile/profout.c that caused some matrix shaper
+ profile to generate colorant XYZ values slightly less than
+ 0.0, due to numerical inacuracy, triggering an assert.
+
+* Added a new option to spectro/spot read to allow use of
+ the Spectrolino with filters fitted.
+
+* Added error handler to spectro/dispwin.c, so that there
+ is not a fatal error triggered in just listing the
+ screens on an X11 system running TwinView or MergedFB.
+
+* Fixed problem with USB/DTP94 that caused instrument
+ coms to fail after doing calibration.
+
+* Fix bug in render/timage.c that caused central wedge to be
+ corrupted.
+
+
+Version 0.60 changes (July 17 2006)
+--------------------
+
+* Changed both gamut mapping intents, and enumerated
+ viewing conditions to be symbolic mnemonics, so that
+ the options don't change as intents and viewing conditions
+ are added, deleted or re-ordered. Selection of
+ intents or viewinging conditions using a numerical
+ enumerator is no longer supported, to help
+ catch problems caused by changes to the list
+ with this releas.
+
+* Fixed bug in profile/profile.c when creation XYZ PCS
+ LUT profiles - the gamut tag was being created with the
+ wrong color space, and often this would cause an
+ internal fault in gamut surface creation.
+
+* Changed profile/profile so that if a source
+ gamut/profile is supplied for display LUT type
+ profile creation, an ICC V2.4.0 profile is created
+ with all 3 intent tables, rather than the single
+ colorimetric intent that is default for ICC V2.2.0 and
+ earlier. Fixed icc/icc.c to properly support the
+ possibility of a full set of intent Luts in
+ display and input profiles. (Profile does
+ not yet support intents for input profiles.)
+
+* Added new intent to link/icclink and profile/profile.c,
+ that does an absolute colorimetric link, but
+ will scale the brightness down if needed to
+ avoid clipping the source white point. This
+ is useful in soft-proofing situatations.
+
+* Went through with both gcc -Wall, and Vc++ -w3
+ and reduced the number of waring messages.
+ Fixed some very minor bugs along the way.
+
+* Made additional changes to spectro/dispcal.c, to
+ improve behaviour when adjusting controls with and
+ without targets. When adjusting without a white target,
+ the control hints now help you adjust to be on
+ the chosen black body or daylight locus.
+
+* Changed profile smoothing factors that are different
+ for the L* a* and b* channels.
+
+* Made profile/profile.c label the profile with the platform
+ it was created on.
+
+* Improved the device model used by dispcal, including
+ optimising the model, so that it zero's in on
+ calibration faster, and handles the black point
+ more accurately. Added a variable -k option to
+ dispcal.
+
+* Added display controls addjustment mode to dispcal,
+ and altered the target gamma curve to better take the
+ black point into account.
+
+* Added report option to dispcal, to measure and report on
+ the current display behaviour.
+
+* Added verification mode to dispcal (-E), to
+ allow checking how well a display meets its calibration
+ targets.
+
+* Added -N option to dispcal, dispread and spotread to
+ allow instrument calibration to be bypassed. This makes
+ repeatedly operating some instruments (ie. Spectrolino)
+ more convenient in emission mode.
+
+* Added a "load video LUT" mode to dispwin, so it can now
+ be used to initialse the displays from either ICC profiles,
+ or Argyll .cal files. Can be used on all platforms (but
+ particularly MSWindows and X11) in startup scripts.
+
+* Fixed bug in X11 disable screensaver, and disabled
+ the cursor over the test window.
+
+* Added proper multiscreen support on all platforms
+ (Even X11 Xinerama!).
+
+* Fixed bug in dispcal that was causing the achievable
+ brightness calculation to misbehave.
+
+* Added -u "update" option to dispcal, to speed up
+ maintenance of display calibration.
+
+* Added separate options in dispcal for a daylight or
+ black body color temperature target.
+
+* Added "plot spectra" option to spotread.
+
+* Added support for the X-Rite DTP94 (AKA OPTIX) to spotread, dispcal,
+ dispread. Added -y option to allow specifying whether a CRT or LCD
+ is being read.
+
+* Streamlined instalation (particularly on Unix and OSX),
+ so that tifflib and libusb don't need special handling.
+ Changes to Jambase to accomodate this.
+
+* Added support for USB connected instruments using libusb.
+
+* Added support in profile/logo2cgats for converting from
+ X-Rite ColorPort format.
+
+* Added extra facilities to imdi to suppport arbitrary
+ colorant order, arbitrary pixel padding, reduced
+ runtime code size and improved cross platform
+ compatibility.
+
+* Added warnings in all the instrument driver
+ code, that instrument companies are not to be
+ expected to support anything involving these drivers.
+
+* Completed new version of cctiff, that deals with an
+ arbitrary sequence of profiles, as well as supporting
+ L*a*B* encoded TIFF I/O.
+
+* Added alternate sort algorithm to imdi/cgen.c, for
+ 16 bit input support, speeding up higher dimensional
+ input conversions.
+
+* Changed icc/iccdump so that the -t parameter can
+ be specified multiple times.
+
+* Added extra PCS curve for BtoA table of XYZ LUT
+ profiles :- this greatly improves the accuracy
+ of the BtoA lookup of XYZ LUT profiles.
+
+* Added greytiff utlity to binary distribution,
+ and also added option to convert using CIECAM02
+ space, for lighter chromatic colors.
+
+* Added ColorantTable tag to profiles created by
+ profile/profile.
+
+* Added a new option to dispcal and dispread, to allow
+ the test window to be positioned and sized. This
+ allows some people to cope with multiple displays
+ better, and may give some flexibility in applying
+ these utilities to projectors etc.
+
+* Added three stage overal conversions to icc/icclib.c,
+ for monochrome, matrix and lut conversion classes.
+ This is to make it convenient to split up every conversion
+ into input per component, core intercomponent conversion,
+ and per component output, to match the capabilities
+ of imdi.
+
+* Modifed xicc/xicclu, xicc/revfix.c, profile/profile.c
+ and link/icclink.c, to default the -k black generation
+ to setting black level targets, instead of locus targets.
+ In pratcice it seems easier to create smooth black curves
+ this way, especially when meshing with the black behaviour
+ forced by ink limits and L target levels.
+ Backward compatibility with the previous controls is provided
+ via the -K flag. Default black generation has generally
+ been switched to -kr. xicc/xicclu has had the -kq option
+ added, so that the behaviour of icclink -kq can be
+ explored. Some bugs in -kq may have been fixed.
+
+* Added full verbosity levels to icc/icclu and xicc/icclu,
+ so that -v0 can be used to capture batch output that
+ is ready for further batch processing.
+
+* Enabled proper gamut tag creation in profiles.
+
+* Fixed numerical issue in xicc/xicc.c:icxdCIE94sq(),
+ that was causing profile to fail when optimising
+ matrix and curves.
+
+* Bumped up the default profile smoothing factors,
+ as the resulting gamut boundaries were noticably
+ bumpy. Default profile -r is 0.5%, and internal
+ factors within rspl/scat.c have also been increased.
+ This seems to be favouring smoothness over accuracy
+ somewhat, but is still on the shallow part of the
+ "knee", where further increasing smoothness would
+ start to strongly decrease fit.
+
+* Fixed problem in profile (xicc/xlut.c) in locating
+ the black point. Doing one search is not robust
+ given the behaviour of many profiles, so
+ several searches are now used to avoid local
+ minima. The same fix is applied to xicc/mpp.c
+ (Thanks to Gerhard Fuernkranz for discovering
+ the problem.)
+
+* Fixed target/targen, link/icclink, xicc/iccgamut,
+ xicc/fakeCMY, xicc/revfx, xicc/xfbview and xicc/xicclu
+ to have estimated default ink limit values. Added input
+ profile ink limit options to link/icclink.
+
+* Added a function to icc/icc.c to estimate the
+ total link limit and per channel limits of
+ an ICC profile. This is to workaround the lack
+ of a standard tag in the ICC profiles.
+ A function built on top of this in xicc/xicc.c
+ (icxDefaultLimits()) established default total
+ and black ink limits for a profile.
+
+* Modified gammap.c & nearsmth.c to increase
+ the control over gamut mapping, and add new features.
+ The controll weightings within gammap.c are now
+ tables rather than #defines, and can be segmented
+ by color, to fine tune particular areas. Only
+ yellow uses this feature, to keep the gamut mapping
+ universal. Two aditional features have been added,
+ cusp mapping, that applies a degree of rotation to
+ areas surounding source primary/secondary colorant
+ cusps to partially align them with the destination
+ cusps. The radius of influence of this mapping is
+ settable. Another factor called "elevation" has been
+ added, that simulates the effect of inflating the
+ source gamut, allowing more complience in the
+ mapping of the control vectors.
+ Just perceptual and saturation tables are present.
+ In nearsmth, expansion of the gamut is finessed a little
+ by termporarily reversing the direction of the mapping
+ when expansion is present. There are lots of
+ other changes in nearsmth.c aimed at improving the robustness
+ and behaviour of the nearsmooth function.
+ The gammap tuning factors are aimed at providing good saturation
+ while maintaining smoothness at the gamut surface.
+
+* Added code to the gamut hull finding, to locate and
+ store the primary and secondary colorant "cusps" in
+ the gamut file, as well as adding options to
+ the various vrml utilities to mark the cusps.
+ The cusps can be used within the new gamut mapping
+ to align or partially align the colorants
+ of the source to the destination.
+
+* Modified gamut boundary code to improve detail and acuracy
+ of the gamut hulls. The smoothness of the destination
+ hull affects the smoothness of the resulting gamut
+ mapping to some degree.
+
+* Changed gamut mapping so that "full" neutral axis alignment
+ no longer aligns the black point a*b* to the destination.
+ The L/J range is mapped as if the black points are
+ fully aligned, so the contrast ratio is not compromised.
+ This approach seems to give a better subjective neutral result.
+ (There appears to be no such thing as black point hue adaptation.)
+
+* Modified enumerated viewing conditions list to tweak
+ ambient values slihtly, and introduce "monitor in bright
+ work environment".
+
+* Added new option to spectro/fakeread to allow manipulation
+ of the black point of the fake readings, to allow creation
+ of test profiles with different black points.
+
+* Added another numerical problem workaround to
+ xicc/cam02.c, to deal with Jab->XYZ issues when J == 0
+
+* Created utility render/itest to generate RGB test images
+ for checking gamut mapping behaviour.
+
+* Created new sub project "render", for a simple 2d raster rendering
+ system. This is intended for use in generating test images, as
+ well as rendering measurment test charts directly to rasters,
+ rather than just postscript.
+
+* Added a -m option to target/printtarg, so that the paper margins
+ can be increased from the default.
+
+* Added documentation for the .ti3 and .cal file formats.
+
+* Fixed bug in spectro/unixio.c, which caused long strips read
+ on the DTP41 on OSX or Linux to fail when spectral readings
+ were enabled. The canonical input buffer size was being exceeded.
+ Switched to non-canonical input mode. (Also seemed to fix
+ problem with Xon/Xoff flow control on OSX.)
+
+* Added flow control to serio I/O, to make instrument
+ communications more robust. Hardware handshaking
+ seems to be the most reliable (but see above).
+
+* Converted icc/fbtest into profile/invprofcheck,
+ and added some more features to make it comparible to
+ profile/profcheck.
+
+* Added VRML L*a*b* axis labels to gamut/viewgam, profile/*profcheck.
+
+* Increased gamut mapping RSPL smoothness, to compensate for
+ RSPL changes in V0.53. Smooths out bumps in saturation mapping
+ somewhat better, and should eliminate the "non-monotonic" warning
+ message.
+
+Version 0.53 changes (16 December 2005)
+--------------------
+
+* Fixed serious bug in target/ofps.c, that made
+ the default distribution of points very non-optimal.
+
+* Added CIEDE2000 Delta E function to icc/icc.c, and
+ also added this as an option to profile/profcheck,
+ profile/mppcheck and profile/verify.
+
+* Added new utilities rspl/smtmpp.c and profile/splitcgats.c
+ to allow testing and verification of profile optimised smoothness
+ factors with more realistic device data. Use splitcgats in
+ combination with profcheck and the hidden "-rs" flag in
+ profile to cross validate the optimised smoothness factors.
+
+* Added new "-r" parameter to profile/profile to allow
+ the profile smoothness factor to be adjusted to suite
+ the uncertaintly of the device and instrument readings.
+
+* Created more in depth simulation of device behaviour to
+ verify profiling operation (rspl/smtnd.c). Running this
+ indicated that no single smoothness factor will suite
+ all combinations of dimension, number of sample points
+ and sample point uncertainty. Create a interpolation table
+ lookup to provide an "optimised" smoothness factor,
+ determined from the simulations. Used new profile/splitcgats
+ to cross validate
+
+* Fixed serious bug in rspl/scat.c - new smoothness tracking
+ factors were seriously wrong. Figured out correct approach
+ and fixed it. Will affect various components including
+ profile, icclink and refine.
+
+* Added support for hexagonal layout of charts on XY instruments.
+ Supports aprox 14% more patches on the same sized chart.
+ Changed default patch size for Spectrolino to 7mm, since
+ this fits more patches on a page while remaining more
+ reliable than the 6mm patches used in charts such as the
+ ECI2002. (Changes to target/printtarg and spectro/printread)
+
+* Added extra check code for argument handling in link/icclink.c
+ - we now switch to appropriate linking mode if options that
+ require it are selected.
+
+* Added better algorithm for weakly tending rspl's to
+ a particular mapping. Added weak default function
+ API to scattered fit, and now make use of this
+ in tweak/refine. This should eliminate an "overshoot"
+ issue that was present with the simple grid of weak
+ mapping points previously used (Thanks to Gerhard Fuernkranz
+ for pointing out the problem.) Affects tweak/refine.
+ tweak/refine has also been afected by problems with RSPL
+ scattered data fit functionality - see above.
+
+* Modified spectro/dispcal.c to more acurately compute clip
+ of target white with device gamut, and also use matrix to
+ compute aprox. inverse more quickly and acurately, to
+ give faster and more accurate convergence. Needs some
+ more testing, may not work well on real monitors ?
+
+* Started adding support for ICC V4 Lab encoding into icc.c
+
+Version 0.52 changes (3 November 2005)
+--------------------
+
+* Added a display calibration utility, dispcal,
+ to create appropriate display lookup curves.
+ Modified dispread and profile to carry the display
+ curves through to the vcgt tag in the profile.
+ Not extensively tested yet.
+
+* Added spectro/spec2cie.c from Gerhard Fuernkranz.
+
+* Changed clut profile input and output curve optimisation
+ code to use conjgrad() instead of powell(). Aim was to
+ speed up profiling, but speed seems to be about even.
+ Added "optimise all" step since conjgrad() makes this
+ feasible, getting slightly better fit.
+
+* Modified the rspl code to support non-equal grid resolutions.
+ This was to support display calibration, but may come in handy
+ for support of V4 profiles. Noticed that the smoothness tracking
+ with different resolutions and dimensions wasn't working very well.
+ Improved the test code (c1, t2d, t3d) to help reveal this, and
+ fixed the problem. Now operates faster, more accurately, more
+ smooth output with a better fit to the input points. Should
+ improve the quality of forward profiles somewhat.
+ The fitting error is more noticably improved from -ql through -qu.
+ Gamut mapping seems to be a little smoother.
+
+* Completed the tweak/refine tool, useful for improving the accuracy
+ of proofing systems. Changes were made to profile, icclink and
+ revfix to support simple use of abstract correction profiles created
+ using refine.
+
+* Added option to printread, to allow CIE data to be saved
+ as D50 L*a*b*, for more flexibility for other purposes.
+
+* Fixed minor bug in DTP51 reading, where the guide setting
+ was wrong for strips with less than the 6 passes.
+ Also added fix code for DTP51 "off by one" patch
+ problem - the error should be corrected automatically.
+
+* Fixed problem in reverse lookup of per channel curves,
+ that affected performance of profile and icclink -G.
+ This problem became evident when CAM was switched to CIECAM02.
+ Note this problem seems only significant when CIECAM02 is used,
+ ie. when the -c and -d flags are used to specify viewing conditions.
+
+* Added support for alternate test patch indexing, to
+ better support non Argyll test charts (ie. ECI2002)
+
+* Renamed printspot to spotread, and expanded the range
+ of instrument modes supported.
+
+* Added emmisive measurement mode support to printspot.
+
+* Added independent Gretag Spectrlino/SpectroScan
+ interface library to cleanup some minor problems,
+ and add some more features (such as a fake transmission
+ measurement mode using a light table, etc.)
+
+* Added extra option to targen that allows creating test
+ points targetted at a specified portion of the devices
+ colorspace.
+
+* Fixed problem with imid & cctiff, where a profile that returns
+ device values > 1.0 causes pixel value wraparound.
+
+* Added an extra option to printtarg to scale the size of the test
+ patches. This can be used to allow for coarse screening, poor
+ registration, and packing more test patches onto a page.
+
+* Added extra support in fakeread to allow monochrome test charts to
+ be faked using RGB/CMYK profiles.
+
+* Added extra options to printtarg, to allow greyscale test charts to
+ be represented in a number of different postscript color representations.
+
+* Fixed bug in targen when > 4 colorants are used, and -v is turned on.
+ Diagnostic fails for > 4 colorants. (Thanks to Andrej Javorsek).
+
+* Fixed bugs in matrix/shaper profiling :- -ve offsets in shaper don't
+ make any sense, so removed them; weighting of parameter values was
+ faulty, so suppression of unsconstrained bumps in curves wasn't always
+ effective. This change may improve matrix/shaper profile quality slightly.
+
+Version 0.51 changes (11 March 2005)
+--------------------
+
+* Added new option to xicc/xicclu to allow plotting of the neutral
+ axis to examine black generation behaviour.
+
+* scanin has problems with new correlation code. Revert to
+ old code until problems are figured out.
+
+* Added support for a black channel ink limit
+ in nearly all utilities that currently support
+ a total ink limit.
+
+* Created cam02plot to explore discontinuities in
+ CIECAM02 conversions. To support this, the usage
+ of Helmholtz-Kohlraush effect is now a runtime flag.
+
+* A few changes in icc/ moving towards V4 support
+
+* Modify Jamfiles to support a more restricted "install" of
+ executables and other files to bin/
+
+Version 0.5 changes (7 November 2004)
+-------------------
+
+* Got the GUI and serial coms dependent parts running
+ under Mac OSX. Changes to Jambase and Jamfiles to make this work.
+
+* Modified Jambase to allow for Mac OSX Carbon GUI applications
+ needing a minimal resource fork to run properly.
+
+* Added incremental rspl scattered point suport, to allow
+ for us in an error driven targen point generation routine.
+
+* Added "EXTRAFIT" option to rspl, that allows for better fitting
+ to scattered data points that have a high error after normal
+ fitting. May improve profile accuracy when large test charts are used.
+
+* Add a special purpose "-f" and "-F" option to icclink, that causes
+ K only or all output for RGB/CMY in to CMYK out devices for neutral
+ (R=G=B) input.
+
+* Switched around gamut mapping high level controls into
+ a simple "Perceptual" and "Saturation" set of pre-canned
+ surface point weighting values. This allows more detail
+ in setting the two different styles. A saturation enhancement
+ control has also been made available, although this may need
+ a little more work to be fully effective.
+
+* Switched over to CIECAM02 for better blue gamut mappings.
+ Fix CIECAM02 so that it is robust given arbitrary Jab input values.
+
+* Fixed bug in gretag spectroscan print chart reader - it wasn't
+ recalibrating every 50 readings.
+
+* Added support in spectro/fakeread.c for a "separation" device
+ link profile to preceed the real device profile. This allows
+ simulating the response of a device that used an explicit
+ separation in its rendering pipeline.
+
+* Creating a hack CMY to CMYK separation creation support tool
+ called xicc/fakeCMY.c This creates a dummy CMY->PCS .ti3 file
+ from a CMYK device profile, that can then be turned into a CMY
+ device profile that can then be linked with the CMYK device profile
+ to create a CMY->CMYK device link separation profile. This program
+ will be redundant when profile/sepgen is completed.
+
+* Add support for the Spectrocam illuminant spectrum (Xenon Lamp),
+ even though this instrument is not supported directly. This
+ allows the FWA to be used on spectral readings from this instrument.
+ (Thanks to Gerhard Fuernkranz for providing this information).
+
+* Add method to gamut object to compute a gamuts volume,
+ and report the total volume in xicc/iccgamut if verbose
+ is set.
+
+* Modified scanin to work with scan of Gretag ColorCheckerDC.
+ Needed to modify edge detection filter to reduce noise,
+ modify edge matching code to support a wider range of
+ scales, change matching logic to ignore target edges
+ with no matching reference edge, stop using crossings
+ as part of edge matching.
+
+* Added new entries to test chart recognition template, to
+ allow scanin to determine correct rotation, even when the
+ chart has no asymetric elements. This works similarly
+ to the strip reading code, in checking correlation
+ between expected and measured color values.
+ Printtarg has also been modified to support
+ this new scan recognition template entries.
+
+* Fixed up Gretag Spectroscan operation so that
+ emission readings (for displays) etc. modes are
+ correctly set and calibrated.
+
+* Added new facility to cgats library, to allow for a
+ wildcard table keyword, as well as a variable "CGATS.XX"
+ table keyword.
+
+* Switched to CIE94 delta E for shaper/matrix profile
+ model fitting.
+
+* Introduce new flag ICX_CAM_CLIP to xicc, to allow full
+ accuracy lookups within gamut, and clipping in CAM Jab space
+ for out of gamut values. Turned this flag on in profile/profile,
+ to improve clipping behaviour of colorimetric B2A table, and
+ in link/icclink, to do the same for absolute and appearance
+ indents.
+
+* fix argument '-t' processing error in profile/profile.c
+
+* gamut/gammap.c: Change over to better vector alignment code.
+
+* Improved some of the black point handling precision in icclink
+ to reduce some innacuracies noticed by Gerhard Fuernkranz.
+
+* Modified Absolute Appearance intent to use
+ a common white point between the input and
+ output profiles, as well as scaling it to
+ Y = 1.0, to try and prevent Jab values
+ exceeding J = 100.0
+
+* Improved profile/logo2cgats to cope with the latest
+ formats of data files from Gretag. They seems to
+ have moved over to including the device values in
+ the readings file, just like Argyll :-).
+
+* Changed rspl/rev.c so that instead of failing
+ when it runs out of room to cache all the cells
+ being searched in a query, it proceeds with the
+ search in chunks. This allows the memory usage to
+ be curtailed, without risking the reverse lookup
+ being aborted. There will be a slight performance
+ loss if this happens though.
+
+* Fixed imdi/cctiff when linking profiles,
+ to not use explicit per channel curves when
+ the PCS is XYZ. This was causing excessive
+ quantization, because XYZ is a non-perceptual
+ space. (Same problem noticed in link/icclink some
+ time ago!)
+
+* Fixed old bug in target/ppoint.c,
+ that caused a crash under Linux in targen.
+ (Thanks to Greg Sullivan for bringing this to my attention.)
+
+* Improved robustness of cam97s3 some more,
+ some cases encountered in b2a table creation
+ triggered problems with out of range values.
+
+* Added grid range override for gamut creation,
+ to assist uniform handling of gamut compression
+ in b2a table creation.
+
+* Added perceptual and saturation gamut mapping
+ support to the profile creator (profile.c,
+ profout.c). This takes an input profile as a parameter,
+ to determine the necessary gamut mapping.
+
+* Added new function to icclib to allow setting
+ of up to 3 Lut tags simultaniously.
+ This is to allow the multiple intent B2A table
+ values to be set while getting the best possible speed
+ of inverse A2B lookup.
+
+* Added two new functions (fwd_relpcs_outpcs,
+ bwd_outpcs_relpcs) to xicclu, to allow
+ converting between native relative PCS and the
+ appearance space configured in the space conversion.
+ This is to allow converting to/from source/destination
+ CAM Jab space for gamut mapping during profile creation.
+
+* 2003/12/9 Unstable release
+
+* Started HTML documentation in the doc directory.
+ This is work in progress, and is not yet complete.
+ See doc/Index.html
+
+* Changed per channel curve algorithm in xicc/profout.c,
+ xicc/mpp.c and xicc/xmatrix.c, to improve accuracy
+ of profile, and markedly reduce "wiggles" in certain
+ cases, as well as improving the accuracy of the
+ profile compared to the "true" underlying device
+ characteristic. Changed how the white point is preserved
+ once again, this time by simply adjusting the order 0
+ a*b* curve harmonic to map 0.0 to 0.0. Tuned curve
+ weighting. Checked that the rspl scatterd data smoothing
+ default is still an approproate compromise.
+
+* Added support for a TI3 file as reference for
+ profile/fakeread, to improve reference set generation.
+
+* Fixed a bug that was causing the A2B output curve
+ ranges to be excessive (160%, rather than the intended
+ 110%). Altered profile/profile.c to remove the code that disables
+ the use of A2B output curves when a high quality B2A is needed,
+ now that there is a way of ensuring that the a*b* curves go
+ through 0.0.
+
+* Tweaked xicc/mpp.c to improve accuracy with
+ a very small number of points, by improving the
+ sophistication of its estimation of ink 100% overlap
+ values in the "anchor points" (which become defaults
+ if measured values are missing), as well as strengthening
+ the weight given to minimising the transfer curve and
+ ink interaction "shape" values.
+
+* Added comment support in icclink, similar
+ to that in profile.
+
+* Added support for MPP profile in profile/fakeread,
+ to permit a simple way of creating an ICC profile
+ from an MPP profile for <= 4 colorants. Spectral
+ values can be generated using an MPP profile.
+ This provides a path to creating a useful
+ profile when very few measurements are available.
+
+* Changed -n flag in profile/profile.c to allow
+ disabling input (-ni) and/or output (-no) clut lut
+ curves. This allows testing of the effects of
+ per channel curves.
+
+* Added -r flag to link/icclink.c to allow
+ overriding the device link clut resolution.
+
+* Add some filtering to the K locus curve
+ generation in profile, icclink etc., to smooth
+ out mixing behaviour. Transition to ink limiting
+ isn't smoothed at the moment.
+ This may improve problems with banded colorization,
+ but only if high resolution, reverse AtoB linking
+ is being performed.
+
+* Correct Gamut boundary table support has been added
+ to profile/profout.c, but isn't enabled or debugged yet.
+
+* Add spectral lookup support to mpplu.c utility.
+
+* Fix bug in spectro/dispread.c - we hadn't
+ updated it for the latest .ti1 format.
+
+* Added a special "simple" mpp model mode
+ to profile/mpprof.c and xicc/mpp.c,
+ to support a more simple Neugenbauer
+ like model for possible proofing standards use.
+
+* Added support in diagnostic plot for up to 6 curves,
+ with do_plot6() function.
+
+* Disable USE_MERGE_CLUT_OPT from icclink, since
+ it compromises accuracy, without a noticable
+ improvement in speed.
+
+* Added simple link support into cctiff
+ for convenience, and to serve as an
+ example of how to link and convert pixel data
+ in one step.
+
+* 2003/4/23 Unstable release
+
+* Modify gamut/gamut.c to #undefine ADD_EXTRA. This
+ code doesn't seem to add much, and seems to go
+ crazy with some profiles, using endless amounts
+ of memory.
+
+* Changed rev.c allocation code to make sure
+ doubles get allocated on their natural boundaries.
+ This may fix problems with some processors (MIPS).
+ (Thanks to Daniel Borenstein for pointing out the issue.).
+
+* Changed Absolute intent to clip in CIECAM97 space,
+ for improved out of gamut color handling.
+ (link/icclink.c, xicc/xicc.h, xicc/xicc.c, xicc/xlut.x xicc/xicclu.x).
+ CIECAM97 is tricked into an absolute mode
+ by forcing a D50 adapted white point for both source
+ and destination profiles. The other appearance
+ parameters still have an effect.
+
+* Hopefully removed the last problems involving
+ the confusion about whether RGB device values ranges
+ are 0-100 or 0-255. Argyll should now be consistent
+ in using 0-100 for all its CGATS data files.
+ [Changes mainly to scanin/scanin.c, plus warning
+ code in profile/profout.c and profile/profin.c]
+
+* Added support in targen for using an mpp model
+ to set test point distribution.
+
+* MPP profile format and creation now complete.
+ Using much more complicated derivative minimisation
+ equations to get adequate speed out of it.
+ Overall accuracy of the profiles hasn't yet been
+ established.
+
+* 2003/2/8 Unstable release
+
+* Added a slight refinement to the CIECAM97 model -
+ rather than using linear interpolation for computing
+ the eccentricity factor, use a spline blend
+ to smooth out the slight "kink" at the
+ knot points.
+
+* Updates mpp.c - work in progress.
+
+* 2002/12/25 Unstable release
+
+* Completed Gretag Macbeth Spectroscan support
+ for print profiling. Most changess in spectro/printread.c,
+ spectro/gretag.[ch] and spectro/spm.[ch].
+
+* Tuned gamut mapping to improve perceptual. Fixed
+ gamut/gammap.c so that separate luminance, chrominance
+ and hue weighting works properly. Added variable chrominance
+ weighting so that blues will be mapped with high L weight,
+ while yellows will map to closest. This exploits the
+ extra blue lightness added by allowing for the
+ Helmholtz-Kohlraush effect in conversion to CIECAM97 Jab
+ colorspace. Tweaked xicc/xicc.c gamut mapping control
+ parameters to improve perceptual and saturation
+ gamut mapping. Made extra gamut mapping surface point code
+ in gamut/gamut.c more robust so that it can be turned
+ on by default (since disabled again).
+
+* Added Helmholtz-Kohlraush effect modeling
+ in xicc/cam97s3, using the equation from
+ Bradford-Hunt 96C, as detailed in Mark Fairchilds
+ "Color Appearance Models". CIECAM97 was derived
+ from Bradford-Hunt 96S Simple model.
+ It turns out that this effect is crucuial in
+ gamut mapping CRT blues onto printing blues,
+ and making sure that they take into account
+ the subjective lightness of the highly saturated
+ CRT blue.
+
+* Added more elaborate "thru Black" controll to
+ link/icclink.c, allowing a CMYK to CMYK with a partial
+ through black. This is implemented using two
+ "upper" and "lower" limit black generation curves.
+
+* Added hack program profile/logo3 to
+ allow for a smaller number of test
+ sheets read on the Spectrolino.
+
+* Added new test point generation module
+ target/ifarp.c, an "Incremental Far Point"
+ generation algorithm, intended for N dimention
+ test chart generation. This is none too quick, but
+ seems to generate reasonably well distributed
+ test points at a steady rate. Any reasonable
+ algorithm in N dimensions needs to create test
+ points starting with some in gamut "seed" point,
+ as the valid gamut space becomes smaller and smaller
+ as N increases.
+
+* 2002/12/2 Unstable release
+
+* Increased imdi code to handle at least
+ 8 channels in and out.
+ Added tables to generate all
+ possible dimension combinations
+ in and out from 3 to 8.
+ Added -q and -s flags to itest to
+ increase testing speed.
+
+* Added full 16 bit processing support
+ to the imdi code. This also allows
+ the handling of > 4 channel input conversions.
+ Configured generation of 8 bit to 16 bit
+ conversion kernels. The per channel output
+ table value is 16 bits, useful for final device
+ linearisation without the penalty of 16 bit
+ precision thruout.
+ Cleaned up the cgen code to more gracefully
+ handle the differences between sort and simplex
+ table code, as well as better handle 64 bit
+ capability properly.
+
+* Changes imdi_gen to, by default generate
+ all the imdi kernel code in a single
+ file, reducing clutter. The -i flag
+ invokes the previous behaviour.
+
+* Added -w flag to icclink, which enables
+ a white point matching hack during linking.
+ If set, the white points are forced to match
+ regardless of the intent or gamut mapping.
+
+* Modified rspl to separate out the functions
+ that are limited in the maximum input
+ dimensions, and those that aren't,
+ so that some rspl functionality can
+ be used with larger numbers of colors.
+ This translates through to increased number
+ of colors support in some of xicc.
+
+* Fixed memory leak in imdi/imdi_tab.c
+ (thanks to Krzysztof Spera)
+
+* Merged back basic changes to support compiling
+ under Mac OSX. GUI and serial port dependent
+ code isn't finished though.
+
+* Made allowance in CGATS and icc
+ library for compiling without support
+ of the usual system file and memory
+ allocation calls, to increase flexibility
+ when using these libraries in non
+ standard environments.
+
+* Changed CGATS library to support
+ alternate allocator and/or file I/O,
+ for broader system compatibiliy.
+ Added error return codes for all methods,
+ to eliminate any calls to error().
+ Added new method error() to avoid having to
+ check every method for a return code.
+
+* Finished first cut at the model printer profile
+ object (xicc/mpp.[ch], profile/mpprof.c),
+ that supports profiling N color printing devices.
+ Note that ink modeling is not supported at the moment,
+ but there is enough support for optimised seprations.
+
+* Added -u flag to profile/profile,
+ that forces input Lut based profiles
+ to be stored as an absolute profile.
+ This is non-standard, but very useful for
+ avoiding Lab range clipping when using
+ a image as a colorimiter.
+
+* Added hack program profile/logo4 to
+ convert four separate spectral files read
+ using the logo software, to a single
+ argyll .ti3 file. This won't be needed
+ once Argyll can run the SpectroScan
+ directly.
+
+* Added numerical library support for
+ a Sobol sub-random multi-dimentional
+ sequence generator, to support an
+ alternate means of creating greater than
+ 4 dimentional test chart values, plus
+ first cut point support using it in
+ target/qrand.c (This doesn't seem useful in
+ practice though.)
+
+* Added -s option to iccdump to enable
+ searching and dumping embedded profiles.
+
+* Fix bug in profile white point adjustment
+ (xlut.c). The actual white point didn't
+ match the specified white point to the degree
+ of accuracy desired. There may also have been
+ issues with clipping values in Lab PCS.
+
+* Added option to spectral to CIE module to
+ compensate for the presense of FWA (Fluorescent
+ Whitener Additive) in paper. This improves the
+ accuracy of the CIE color values when a media
+ measured under one illuminant is going to be
+ viewer under a different illuminant. This works
+ if you are using a spectral measurment instrument.
+ (See poster in proceedings of the IS&T/SID
+ 11th Color Imaging Conference, November 2003 page 248).
+
+* Added shaper/matrix input profile support.
+ (profile/profin.c, xicc/xmatrix.c)
+ This may be more accurate for scanner profiles,
+ given the poor coverage of test points provided
+ by an IT8 chart (but doesn't appear to be in practice).
+
+* Added support in scanin.c and scanrd.c for
+ processing 16 bit TIFFs, allowing for higher
+ precision scans (useful when using the image to
+ measure color).
+
+* Added support in scanin.c and scanrd.c for
+ using a scan of a print test chart, plus a
+ profile for the scanner, to be able to measure
+ color for printer calibration. This
+ new mode handles multi-page test charts.
+
+* Added support in printtarg, for producing a scan
+ recognition template (.cht) for each page.
+
+* Added patch optimisation module to target/printtarg,
+ to arrange patches to maximise their contrast for
+ strip reading instruments.
+
+* Removed the color directory, since it's functionality
+ has been taken over by the xcolorants library,
+ and the (yet to be completed) MPP profile library.
+
+* Added DTP41T (tranmission) support in target/printtarg.c
+ and spectro/printread.c etc.
+
+* Made changes to target/targen.c, target/printtarg.c
+ and spectro/printread.c to be able to generate
+ and then read >4 color test charts, to be able to
+ characterise 6 to 8 color devices.
+
+* Added support in xicc/xspect.c for measuring
+ StatusT and Visual density from a spectral
+ reading, as well as an aproximate XYZ to
+ density conversion, to support spectrometer
+ patch spacer contrast determination.
+ Also added an XYZ to sRGB conversion
+ function to support RGB previews of N color
+ devices, as well as scanner recognition template files.
+
+* Expanded xicc/xcolorants.c to incorporate
+ an approximate device model for arbitrary
+ colorant combinations. This is used to
+ be able to approximate expected density readings,
+ as well as preview colors and scanner recognition templates.
+
+* Create a new test point creation module,
+ target/simplat.c, to create higher dimentional,
+ regular simplex latice test pointsi (this seems
+ rather slow and has difficulty arriving at the
+ desired number of test points.)
+
+
+Fourth snapshot changes: (25 March 2002)
+------------------------
+
+* Removed gamut/iccgamut, and renamed
+ xicc/xiccgamut to xicc/iccgamut.
+
+* Modified tiffgamut to be able to emit CIECAM97 style
+ colorspace gamuts, so that it can be used to
+ generate appropriate gamut files as input to
+ icclink. Moved it to the xicc subdirectory,
+ as it depends on xicc, just like xiccgamut.
+
+* Fixed up icclink.c, gammap.c and nearsmth.c to
+ more correctly handle gammut mapping for a particular
+ image gamut, rather than a source colorspace.
+
+* Added text description option to profile utility.
+
+* Made significant modifications to the perceptual
+ gamut mapping. Turned gammap into an object, rather
+ than merely returning a rspl to allow for a separate
+ L mapping step. Added #define to control this.
+ Made the source to destination surface point a weighted
+ optimisation algorithm for more control over the absolute
+ vs. relative error introduced, and setup some initial
+ weighting values. This is intended to combat the
+ tendency of the "smallest absolute error" mapping
+ to map many to one in the most saturated regions,
+ leading to a loss of detail. The weighting scheme
+ could probably use some more fine tuning, or even
+ some alteration to make it vary with respect to (say)
+ the absolute L value, or the absolute C value.
+
+* Added first cut at a model based forward profile
+ creation (profile/mpprof.c). This is intended for
+ profiling 6 or more color devices, and using as
+ the profile driving optimised separations.
+
+* Added xcolorants resource to allow specifying and defining
+ device colorant combinations. This is needed as a foundation
+ to profiling 6 or more color printing devices.
+
+* Tweaked targen to concentrate test patch points
+ at regions of higher curvature. This should improve profiling
+ efficiency slightly.
+
+* Fix bug in xlut.c where creating a gamut cleared
+ any ink limit set on a rspl. This caused the ink limit
+ to be ignored in any icclink that used gamut mapping.
+
+* Modified printtarg.c to try and get more reliable
+ DTP41 operation. Switch to black and white patch
+ spacers by default. It's difficult to know what the
+ instrument really requires to reliably pick up
+ the test spacers.
+
+* Fixed bug in gamut where it was still hanging on to
+ vertex points that disapear below the log convex hull.
+ This has no consequences.
+
+* Added option in icclink to allow specifying an explicit source
+ gamut for the gamut mapping. This allows tailoring the gamut
+ compression to be optimised for a particular image.
+
+* Added profile checking utility, that checks measured device points
+ against an icc profile.
+
+* Fixed probem with linking when any of the profiles native PCS is XYX.
+ The device linearisation curve should not be preserved if the
+ native device profile PCS is XYZ.
+
+* Fixed bug in xmatrix.c & xmono.c when finding the gamuts of
+ matrix and mono transforms when a Bwd transform is used.
+ Showed up in icclink when the output profile was a matrix
+ of monochrome transform.
+
+* Fixed bug in icclib when PCS overide is used with a
+ Bwd transform. Similar problem to above for matrix & mono
+ profiles, but at the icclib level.
+
+* Added function in icclink.c to allow the generation of
+ a device linearisation curve for XYZ profiles. This was
+ expected to improve the result when linking to XYZ profiles,
+ but currently seems to make things worse. This feature is
+ therefore off by default. :-( (This should be changed
+ to work the same as the current xlut.c profile code!)
+
+* Added preliminary support in printtarg for the SpectroScan
+ spectrodensitometer. Also added preliminary support for
+ scanner recognisable test charts.
+
+* Added option to icclink to turn off the use of linearisation
+ curves in the output link, since this sometimes seems to
+ make the accuracy worse given profiles with odd device
+ linearisation curves.
+
+* Added custom page size support to printtarg.
+
+* Modified icc library defines to use INR32 rather than INT32
+ definition, to avoid clashes with system typdefs etc.
+
+* Added CIE94 delta E support to profchek utility, changed
+ peak reading to be peak delta E rather than peak individual
+ L, a or b, and made the same change in the check code
+ in profout.c
+
+* Added utility to do reflective spot readings using appropriate
+ instrument (printspot). DTP41 supported.
+
+* Fixed bug in profile.c that meant that the spectral mode
+ was ignored unless an observer was specified (ie. it wasn't
+ defaulting to 1978_2).
+
+* Modified targen.c so that when a previous profile is used
+ to pre-condition test points, the neutral axis has a higher
+ density of points, in line with the higher sensitivity the
+ CIE94 delta E formula has in this region. This should improve
+ the tolerance of the resulting profile in the important
+ neutral gray area.
+
+* Fixed bug in printread.c that is triggered when more than
+ 26 strips are being read.
+
+* Modified targen.c so that the 4 dimentional auxiliary chanel
+ weighting (ie. K chanel in CMYK) is 150% of the Lab spacing,
+ rather than being 50% of it, when ICC profile pre-conditioning
+ is being used. This seems to improve both the worst case, and
+ average error of the resulting profile for at least some devices.
+
+* Switched to (now working) xlut2.c code, for creating clut
+ based profiles. This version creates both input and output
+ 1D luts by optimising the accuracy of the profile for a linear clut.
+ The result seems to be more accurate profiles, since the underlying
+ device characteristic is better modeled. It also seems to aleviate
+ some of the issues when linking and preserving the device 1D luts
+ in the linked profile.
+
+* Added verification function to icclink.c, to check the
+ accuracy of a link profile.
+
+* Fixed numsup.c 2d array malloc/free to be more efficient
+ by allocating the main array as a single block.
+
+* Fixed bugs in handling XYZ lut based profiles.
+
+* Fixed bug in setting white and black points for input
+ profiles.
+
+* Added support for selecting algorithm type for all
+ types of profiles - input, display and output.
+ (XYZ lut doesn't seem to work properly yet though!)
+
+* Merged Raph Levien's cleanups to icc.c, to quiet gcc
+ warnings.
+
+* Improved new xlut2.c to handle pathalogical input data
+ from gridded charts. The order of the curves is now
+ adjusted so that it is not greater than what can
+ be supported by the data. Also changed shaper curve
+ parameter action to be more progressive, and tied
+ the parameters into the optimisation goal so that
+ parameters that have no effect are minimised, resulting
+ in less "ringing". Fixed bug in shaper curve transform
+ that was clipping parameters, resulting in gross errors
+ before the white point was exactly fixed on.
+
+* Added new features to profcheck: Sorting feature to
+ indicate support for a particular device->pcs value,
+ + VRML output of errors between profile and datapoints.
+
+* Modified scanin/scanrd to allow for Grey and CMYK .tiff
+ files, as well as just outputing a CGATS data file,
+ rather than only performing the data collection needed
+ for and RGB scan calibration. This is useful for capturing
+ the patch values from a test chart only available as a
+ TIFF file. Removed automatic extention stuff.
+
+* Added black wedge generation to targen, and extra checking
+ to elminate redundant test patches.
+
+* Added EPS output support to printtarg.
+
+* Added a couple of options to cctiff to aid diagnostics.
+
+
+Third snapshot changes: (17 July 2001)
+----------------------
+
+* Changed targen to allow full spread test points to take account
+ of the others sorts of test points.
+
+* Changed icclib to use the Bradford chromatic adaption for
+ white point shifting in profile creation and absolute profiles
+ lookup. This creates some minor incompatiblity with profiles
+ produced with earlier versions, but is likely to be more
+ compatible with other CMMs.
+
+* Added support in icclib for abstract file accesor type (icmFile), and included
+ implementations for standard file and memory image.
+
+* Added support in icclib for abstract memory allocator, and included
+ implementation for standard alloc/free.
+
+* 25/2/2001 Changed targen to use ICC profile for perceptual even
+ point generation. Includes support for Gray and RGB as well as CMYK
+ perceptual support.
+
+* Film profiling using the Spectroscan-T care of Niel Okamoto.
+
+* Print charts suitable for the Xrite DTP41 are
+ now supported, and print chart reading using the DTP41
+ is now supported.
+
+* Added DTP92 support and Lut and matrix profile support for
+ display profiles.
+
+* Added spectral reading support to the DTP41 readings.
+
+* Added support in profile for using spectral data with choice
+ of observers and builtin or loadable illuminant spectra.
+
+* Modified the gammap code to precicely match the white and black
+ points. Solves "background color" problems in linking RGB and CMYK etc.
+
+* Changed K generation curve parameters to be easier to control.
+ Have two breakpoints and curve shape along the luminance axis.
+
+* Added more sophisticated auxiliary chanel locus finder in rspl/rev.c,
+ to be able to detect profile anomolies (not made use of in current code).
+
+* Added underlying support for optimised separations into
+ 4 to 8 separations in rspl/opt.[ch] . This is intended to be
+ used internally as an option for driving a CMYK device, and
+ also explicitly to support 6 or more color devices. Not tested
+ or made use of just yet.
+
+* Added development area for Java GUI development. The intention
+ is to use Java as a sophisticated scripting front end, to
+ make the command line commands more palatable.
+
+Second snapshot changes: (30 November 2000)
+------------------------
+
+ Neil Okamoto has contributed support for generating
+ RGB TIFF targets suitable for film recorder output,
+ as well as Gretag Spectrolino support for reading them
+ in again.
+
+ The target patch generation now uses ICC profile to
+ pre-condition the test points. This now works for
+ RGB and Grey targets.
+
+ Finished port to Linux.
+ Cleaned up build automation somewhat.
+
+ Added RGB output device profile generation support.
+ Added RGB scanner device profile generation support.
+
+ Added a couple of spectrometer conversion utilities for
+ raw data files from other CMSs.
+
+ Added gamut boundary mapping and visualization tools (VRML)
+
+ Added CIECAM97s Color Appearance Model (CAM) colorspace support.
+
+ Added experimental gamut mapping code.
+
+ Enhanced linker to use CAM and gamut mapping.
+
+ Numerous bug fixes and enhancement.
+
+First snapshot (28 October 2000)
+--------------