Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > a09757cf7e287c7b4a85bae207244d5f > files > 124

argyllcms-0.70-0.1.Beta8.1mdv2008.1.i586.rpm


Argyll CMS change log
=====================


Version 0.70 changes - open version (beta)
--------------------

[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 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 (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
--------------------

*   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
--------------------

*   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
-------------------

*   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 scanner 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 scanner as
    a crude colorimeter).

*   Added support in scanin.c and scanrd.c for
    using a scan of a print test chart, plus a
    profile for the scanner, to act as a crude
    colorimeter in 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:
------------------------

*   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:
----------------------

*	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:
----------------------

  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.