A brief tour of all the directories in the Argyll source code archive:
TARGET
This directory contains routines that generate calibration test charts, based on various distribution algorithms suitable for reading using an Xrite DTP51 or DTP41 colorimeter, or scanner for print charts, the Gretag Spectrolino for film charts, or the Xrite DTP92 pr DTP94 for monitor calibration. The generated file is a PostScript file for the print chart, and a series of TIFF files for the film chart.
SPECTRO
This directory contains the implementation of all the instrument drivers, as well as the tools to calibrate a display, take readings from a display, or read a test chart. It also contains the tool that supports installing and uninstalling display profiles.
PROFILE
This directory has code for taking raw device information (created from, xxxread.exe or scanin.exe), and creating an ICC device profile from it. It takes care of the top level details of creating profiles, and relies on the XICC and RSPL libraries to do the underlying hard work,
LINK
This directory holds the ICC profile linking code. Linking two device profiles creates a device link profile, that embodies a direct device to device colorspace conversion.
IMDI
This is the development area for IMDI, the Integer Multi-Dimensional Interpolation routines. They provide a flexible and high performance system for applying color transforms to typical raster pixel data. The system has two parts, one that generates tailored, optimized source code for the transformation kernels, and the run time code that matches a transform request to a compiled kernel, and initializes the appropriate run time lookup tables.
The kernel source generator is intended to accommodate various optimizations, such as assembly code, vector instruction set (ie. MMX, AltiVec etc.) version, but at present only generates the more portable 'C' code kernels.
ICC
ICC profile I/O library (icclib). This distribution contains source code which implements the reading and writing of color profile files that conform to the International Color Consortium (ICC) Profile Format Specification, Version 3.4.
XICC
This directory holds the "extension" icc libraries. These supplement the base icc library with enhanced profile functionality, such as smoothed interpolation, reverse interpolation, table creation from scattered data etc.
Most of this functionality is based on the rspl and icc libraries. This is where ink limiting and black generation policies for CMYK devices is implemented. The CIECAM97s and CIECAM02 Color Appearance Model libraries live here. Support for spectral to CIE conversions (including FWA compensation) lives here. A simple model, notation and classification system for n-color printing devices (MPP) lives here too.
RSPL
This is the second generation Regular Spline library. It contains scattered data point to regular grid interpolation, as well as spline smoothing, and the reverse interpolation code. This version is more modular, and uses better solution algorithms than the earlier REGSPL, and generally replaces it. As well as creation from scattered data, there is support for lookup, re-processing and reverse interpolation (inversion). The reverse interpolation algorithms support features needed for devices like CMYK printers, such as total ink limiting, black locus selection, gamut boundary detection, vector and nearest gamut clipping.
NUMLIB
Collection of numerical routines used by various other (mainly color) code.
Included are:
numsup Support routines, array and vector malloc/free, macros
dnsq Non-linear equation solver
powell Powell multi dimensional minimizer
ludecomp LU decomposition matrix solver
svd Singular Value decomposition matrix solver
zbrent 1 dimensional brent root search
rand Random number generators
sobol Sobol pseudo-random sequence generator.
SCANIN
This directory contains the code to extract charts from TIFF scan files, and output the patch values using the CGATS file format. Typically this is used to get the patch information from a scan of an IT8 calibration chart. It also has a mode to use a scanned image to measure color, and convert a print test chart into approximate CIE values.
GAMUT
This directory contains the gamut boundary creation, and usage code. It also contains the gamut mapping code.
CGATS
This directory contains a library for reading and writing CGATS format color data files. These files are used extensively for holding color related information in a human readable form.
TIFF
Sam Lefflers standard TIFF library.
PLOT
A simple 2D graph plot library, to quickly display 2D graphs for debug purposes.
H
Where project common #include files live.
BIN
Where the main executables are copied to, when install.ksh or install.bat is run. Other useful files get copied here too.
LIBUSB, LIBUSBW
The necessary libraries to access USB devices live here
TWEAK
Tools that allow adjustment and improvement of profiles or links live here. Currently the tool refine is the only member.
RENDER
This is a library and set of tools for rendering to raster images. It supports creating a test images, and the raster output of printtarg.
JCNF
Implementation of color configuration file format using JSON, used by ucmm.
UCMM
Unix micro Color Management Module implementation, for supporting the installation and access to display profiles.
REF
Miscellaneous useful reference files, such as scanin recognition templates for standard charts, live here.
DOC
All the Argyll HTML documentation lives here.