From 22f703cab05b7cd368f4de9e03991b7664dc5022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 1 Sep 2014 13:56:46 +0200 Subject: Initial import of argyll version 1.5.1-8 --- log.txt | 3581 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3581 insertions(+) create mode 100644 log.txt (limited to 'log.txt') 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) +-------------- -- cgit v1.2.3