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.