diff --git a/.cvsignore b/.cvsignore
index 9056df7..a35c86d 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
Argyll_V1.0.1_autotools.patch.gz
-Argyll_V1.0.1_src.zip
+Argyll_V1.0.2_src.zip
diff --git a/V1.0.1_patches.txt b/V1.0.1_patches.txt
deleted file mode 100644
index 3ffd9dc..0000000
--- a/V1.0.1_patches.txt
+++ /dev/null
@@ -1,1322 +0,0 @@
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/doc/printtarg.html Argyll_V1.0.2/doc/printtarg.html
-*** Argyll_V1.0.1/doc/printtarg.html Mon Jul 14 14:11:45 2008
---- Argyll_V1.0.2/doc/printtarg.html Sun Jul 20 02:25:32 2008
-***************
-*** 95,101 ****
- href="#C">-C
- Don't use TIFF compression
- -N
-! Use TIFF alpha N channels more than 4
- -R rsnum
---- 95,103 ----
- href="#C">-C
- Don't use TIFF compression
- -N
-! Use TIFF alpha N channels more than 4
-! -Q nbits
-! Quantize test values to fit in nbits
- -R rsnum
-***************
-*** 320,325 ****
---- 322,343 ----
- flag causes all the channels greater than 4 to be labelled as "Alpha"
- channels, which may be more palatable.
-
-+ -Q: Normally
-+ the target device values are floating point numbers that may get
-+ rounded and quantized in the process of printing them or reproducing
-+ them on the printing or display device. If some of this quantization
-+ can be accounted for, it may improve the accuracy of the resulting
-+ profile, and the Q parameter
-+ allows this quantization to be specified. The parameter is the number
-+ of binary digits (bits) that the device values should be quantized to.
-+ In many systems the right value would be 8 bits. Note that if 8 bit TIFF output is selected (-t) that the values will by default
-+ be quanized to 8 bits, and that if 16 bit TIFF output is selected (-T) that the values will by default
-+ be quanized to 16 bits.
-+
- The -R parameter allows setting the random
- layout seed. Normally the seed is chosen at random, but sometimes it is
- useful to be able to generate a chart with the same layout, so a
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/h/config.h Argyll_V1.0.2/h/config.h
-*** Argyll_V1.0.1/h/config.h Mon Jul 14 14:11:41 2008
---- Argyll_V1.0.2/h/config.h Sun Jul 20 02:25:28 2008
-***************
-*** 10,17 ****
- /* minor number = 8 bits */
- /* major number = 8 bits */
-
-! #define ARGYLL_VERSION 0x01001
-! #define ARGYLL_VERSION_STR "1.0.1"
-
- /* Maximum file path length */
- #define MAXNAMEL 512
---- 10,17 ----
- /* minor number = 8 bits */
- /* major number = 8 bits */
-
-! #define ARGYLL_VERSION 0x01002
-! #define ARGYLL_VERSION_STR "1.0.2"
-
- /* Maximum file path length */
- #define MAXNAMEL 512
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/imdi/Jamfile Argyll_V1.0.2/imdi/Jamfile
-*** Argyll_V1.0.1/imdi/Jamfile Mon Jul 14 14:11:32 2008
---- Argyll_V1.0.2/imdi/Jamfile Sun Jul 20 02:25:18 2008
-***************
-*** 49,55 ****
- # TIFF file monochrome conversion utlity
- #Main greytiff : greytiff.c ;
- Main greytiff : greytiff.c : : : ../spectro ../xicc ../gamut ../rspl ../cgats $(TIFFINC)
-! : : ../xicc/libxicc ../gamut/libgamut ../rspl/librspl ../cgats/libcgats $(TIFFLIB) ;
-
- # ssort generation code
- #Main ssort : ssort.c ;
---- 49,56 ----
- # TIFF file monochrome conversion utlity
- #Main greytiff : greytiff.c ;
- Main greytiff : greytiff.c : : : ../spectro ../xicc ../gamut ../rspl ../cgats $(TIFFINC)
-! : : ../xicc/libxicc ../gamut/libgamut ../rspl/librspl ../cgats/libcgats
-! ../plot/libplot $(TIFFLIB) ;
-
- # ssort generation code
- #Main ssort : ssort.c ;
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/log.txt Argyll_V1.0.2/log.txt
-*** Argyll_V1.0.1/log.txt Mon Jul 14 14:11:03 2008
---- Argyll_V1.0.2/log.txt Sun Jul 20 02:24:46 2008
-***************
-*** 3,8 ****
---- 3,40 ----
- =====================
-
-
-+ Version 1.0.2 bug fix release (open)
-+ -----------------------------
-+
-+ * 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)
- -----------------------------
-
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/makepackagebin.sh Argyll_V1.0.2/makepackagebin.sh
-*** Argyll_V1.0.1/makepackagebin.sh Mon Jul 14 14:11:03 2008
---- Argyll_V1.0.2/makepackagebin.sh Sun Jul 20 02:24:46 2008
-***************
-*** 25,30 ****
---- 25,32 ----
- # Set the environment string VERSION from the #define, ie 1.0.0
- VERSION=`grep ARGYLL_VERSION_STR h/config.h | sed 's/#define ARGYLL_VERSION_STR //' | sed 's/"//g'`
-
-+ echo "About to make Argyll binary distribution $PACKAGE"
-+
- TOPDIR=Argyll_V$VERSION
-
- if [ X$OS != "XWindows_NT" ] ; then
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/profile/Jamfile Argyll_V1.0.2/profile/Jamfile
-*** Argyll_V1.0.1/profile/Jamfile Mon Jul 14 14:11:35 2008
---- Argyll_V1.0.2/profile/Jamfile Sun Jul 20 02:25:21 2008
-***************
-*** 26,32 ****
- Library libprof : profin.c profout.c ;
-
-
-! LINKLIBS = ../rspl/librspl ../icc/libicc ../cgats/libcgats ../numlib/libnum ;
-
- # Simple profile generator
- Main simpprof : simpprof.c ;
---- 26,32 ----
- Library libprof : profin.c profout.c ;
-
-
-! LINKLIBS = ../rspl/librspl ../icc/libicc ../cgats/libcgats ../numlib/libnum ../plot/libplot ;
-
- # Simple profile generator
- Main simpprof : simpprof.c ;
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/render/render.c Argyll_V1.0.2/render/render.c
-*** Argyll_V1.0.1/render/render.c Mon Jul 14 14:11:37 2008
---- Argyll_V1.0.2/render/render.c Sun Jul 20 02:25:23 2008
-***************
-*** 162,172 ****
---- 162,176 ----
- int noix; /* Number in x list */
- color2d *pixv0, *_pixv0; /* Storage for pixel values around current */
- color2d *pixv1, *_pixv1;
-+ sobol *so; /* Random sampler for anti-aliasing */
- int i, j;
-
- double rx0, rx1, ry0, ry1; /* Box being processed, newest sample is rx1, ry1 */
- int x, y; /* Pixel x & y index */
-
-+ if ((so = new_sobol(2)) == NULL)
-+ return 1;
-+
- switch (s->csp) {
- case w_2d: /* Video style grey */
- samplesperpixel = 1;
-***************
-*** 373,382 ****
- || pixv0[x-1][PRIX2D] != cc[PRIX2D] && colordiff(s, pixv0[x-1], cc)
- || pixv1[x-1][PRIX2D] != cc[PRIX2D] && colordiff(s, pixv1[x-1], cc)) {
- double nn = 0;
-- sobol *so;
-
-! if ((so = new_sobol(2)) == NULL)
-! return 1;
-
- for (j = 0; j < s->ncc; j++)
- cc[j] = 0.0;
---- 377,384 ----
- || pixv0[x-1][PRIX2D] != cc[PRIX2D] && colordiff(s, pixv0[x-1], cc)
- || pixv1[x-1][PRIX2D] != cc[PRIX2D] && colordiff(s, pixv1[x-1], cc)) {
- double nn = 0;
-
-! so->reset(so);
-
- for (j = 0; j < s->ncc; j++)
- cc[j] = 0.0;
-***************
-*** 418,424 ****
- cc[1] = 0.0;
- cc[2] = 1.0;
- #endif
--
- } else {
-
- /* Compute output value as mean of surrounding samples */
---- 420,425 ----
-***************
-*** 451,457 ****
- p[j] = (int)(cc[j] + 0.5);
- } else {
- for (j = 0; j < s->ncc; j++)
-! p[j] = (int)(65525.0 * cc[j] + 0.5);
- }
- }
- }
---- 452,458 ----
- p[j] = (int)(cc[j] + 0.5);
- } else {
- for (j = 0; j < s->ncc; j++)
-! p[j] = (int)(65535.0 * cc[j] + 0.5);
- }
- }
- }
-***************
-*** 479,484 ****
---- 480,487 ----
- _TIFFfree(outbuf);
- TIFFClose(wh); /* Close Output file */
-
-+ so->del(so);
-+
- return 0;
- }
-
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/Jamfile Argyll_V1.0.2/spectro/Jamfile
-*** Argyll_V1.0.1/spectro/Jamfile Mon Jul 14 14:11:29 2008
---- Argyll_V1.0.2/spectro/Jamfile Sun Jul 20 02:25:15 2008
-***************
-*** 1,7 ****
-
-
-! PREF_CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on
-! #PREF_CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags
- PREF_LINKFLAGS += $(LINKDEBUGFLAG) ;
-
- # Setup the right hardware access libraries
---- 1,7 ----
-
-
-! #PREF_CCFLAGS += $(CCOPTFLAG) ; # Turn optimisation on
-! PREF_CCFLAGS += $(CCDEBUGFLAG) ; # Debugging flags
- PREF_LINKFLAGS += $(LINKDEBUGFLAG) ;
-
- # Setup the right hardware access libraries
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/dispcal.c Argyll_V1.0.2/spectro/dispcal.c
-*** Argyll_V1.0.1/spectro/dispcal.c Mon Jul 14 14:11:29 2008
---- Argyll_V1.0.2/spectro/dispcal.c Sun Jul 20 02:25:15 2008
-***************
-*** 766,771 ****
---- 766,774 ----
- #if defined(__APPLE__) && defined(__POWERPC__)
-
- /* Workaround for a ppc gcc 3.3 optimiser bug... */
-+ /* It seems to cause a segmentation fault instead of */
-+ /* converting an integer loop index into a float, */
-+ /* when there are sufficient variables in play. */
- static int gcc_bug_fix(int i) {
- static int nn;
- nn += i;
-***************
-*** 1737,1743 ****
- double vct, vct_de;
- double vdt, vdt_de;
- double cgamma, w[3], wp[2];
-! int sigbits; /* Number of significant bits in VideoLUT/display/instrument */
-
- if ((rv = dr->read(dr, tcols, 3, 1, 3, 1, 0)) != 0) {
- dr->del(dr);
---- 1740,1746 ----
- double vct, vct_de;
- double vdt, vdt_de;
- double cgamma, w[3], wp[2];
-! int sigbits = 0; /* Number of significant bits in VideoLUT/display/instrument */
-
- if ((rv = dr->read(dr, tcols, 3, 1, 3, 1, 0)) != 0) {
- dr->del(dr);
-***************
-*** 1785,1790 ****
---- 1788,1796 ----
- /* Do the test */
- for (n = 0; n < res_samps; n++) {
- double v;
-+ #if defined(__APPLE__) && defined(__POWERPC__)
-+ gcc_bug_fix(sigbits);
-+ #endif
- v = (5 << (sigbits-3))/((1 << sigbits) - 1.0);
- if ((n % 3) == 2)
- v += 1.0/((1 << sigbits) - 1.0);
-***************
-*** 1900,1909 ****
- printf("White Visual Color Temperature = %.0fK, DE to locus = %4.1f\n",vct,vct_de);
- printf("White Visual Daylight Temperature = %.0fK, DE to locus = %4.1f\n",vdt,vdt_de);
- #ifdef MEAS_RES
-! if (sigbits == 0) {
-! warning("Unable to determine LUT entry bit depth - problems ?");
-! } else if (verb) {
-! printf("Effective LUT entry depth seems to be %d bits\n",sigbits);
- }
- #endif /* MEAS_RES */
- dr->del(dr);
---- 1906,1917 ----
- printf("White Visual Color Temperature = %.0fK, DE to locus = %4.1f\n",vct,vct_de);
- printf("White Visual Daylight Temperature = %.0fK, DE to locus = %4.1f\n",vdt,vdt_de);
- #ifdef MEAS_RES
-! if (doreport == 1) {
-! if (sigbits == 0) {
-! warning("Unable to determine LUT entry bit depth - problems ?");
-! } else if (verb) {
-! printf("Effective LUT entry depth seems to be %d bits\n",sigbits);
-! }
- }
- #endif /* MEAS_RES */
- dr->del(dr);
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/dispwin.c Argyll_V1.0.2/spectro/dispwin.c
-*** Argyll_V1.0.1/spectro/dispwin.c Mon Jul 14 14:11:31 2008
---- Argyll_V1.0.2/spectro/dispwin.c Sun Jul 20 02:25:17 2008
-***************
-*** 108,113 ****
---- 108,126 ----
-
- debugrr2((errout, "MonitorEnumProc() called with hMonitor = 0x%x\n",hMonitor));
-
-+ /* Get some more information */
-+ pmi.cbSize = sizeof(MONITORINFOEX);
-+ if (GetMonitorInfo(hMonitor, (MONITORINFO *)&pmi) == 0) {
-+ debugrr("get_displays failed GetMonitorInfo - ignoring display\n");
-+ return TRUE;
-+ }
-+
-+ /* See if it seems to be a pseudo-display */
-+ if (strncmp(pmi.szDevice, "\\\\.\\DISPLAYV", 12) == 0) {
-+ debugrr("Seems to be invisible pseudo-display - ignoring it\n");
-+ return TRUE;
-+ }
-+
- /* Add the display to the list */
- if (disps == NULL) {
- if ((disps = (disppath **)calloc(sizeof(disppath *), 1 + 1)) == NULL) {
-***************
-*** 131,142 ****
- return FALSE;
- }
-
-- pmi.cbSize = sizeof(MONITORINFOEX);
-- if (GetMonitorInfo(hMonitor, (MONITORINFO *)&pmi) == 0) {
-- debugrr("get_displays failed GetMonitorInfo\n");
-- return FALSE;
-- }
--
- if ((disps[ndisps]->name = strdup(pmi.szDevice)) == NULL) {
- debugrr("malloc failed\n");
- return FALSE;
---- 144,149 ----
-***************
-*** 240,246 ****
-
- /* Now locate detailed information about displays */
- for (i = 0; ; i++) {
-! if (disps[i] == NULL)
- break;
-
- dd.cb = sizeof(dd);
---- 247,253 ----
-
- /* Now locate detailed information about displays */
- for (i = 0; ; i++) {
-! if (disps == NULL || disps[i] == NULL)
- break;
-
- dd.cb = sizeof(dd);
-***************
-*** 250,255 ****
---- 257,265 ----
- for (j = 0; ;j++) {
- if ((*pEnumDisplayDevices)(disps[i]->name, j, &dd, 0) == 0) {
- debugrr2((errout,"EnumDisplayDevices failed on '%s' Mon = %d\n",disps[i]->name,j));
-+ if (j == 0) {
-+ strcpy(disps[i]->monid, ""); /* We won't be able to set a profile */
-+ }
- break;
- }
- if (callback_ddebug) {
-***************
-*** 260,274 ****
- fprintf(errout,"Mon %d, key '%s'\n",j,dd.DeviceKey);
- }
- if (j == 0) {
-- strcpy(disps[i]->monname, dd.DeviceName);
- strcpy(disps[i]->monid, dd.DeviceID);
- }
- }
-- if (j == 0) { /* Hmm. Ignore this display */
-- del_disppath(disps, i);
-- i--;
-- continue;
-- }
-
- sprintf(buf,"%s, at %d, %d, width %d, height %d%s",disps[i]->name+4,
- disps[i]->sx, disps[i]->sy, disps[i]->sw, disps[i]->sh,
---- 270,278 ----
-***************
-*** 626,632 ****
- disps[ndisps]->sx, disps[ndisps]->sy, disps[ndisps]->sw, disps[ndisps]->sh);
-
- /* See if it is a clone */
-! for (k = 0; 0 < ndisps; k++) {
- if (disps[k]->crtc == disps[ndisps]->crtc) {
- sprintf(desc1, "[ Clone of %d ]",k+1);
- strcat(desc2, desc1);
---- 630,636 ----
- disps[ndisps]->sx, disps[ndisps]->sy, disps[ndisps]->sw, disps[ndisps]->sh);
-
- /* See if it is a clone */
-! for (k = 0; k < ndisps; k++) {
- if (disps[k]->crtc == disps[ndisps]->crtc) {
- sprintf(desc1, "[ Clone of %d ]",k+1);
- strcat(desc2, desc1);
-***************
-*** 2832,2838 ****
- dispwin_del(p);
- return NULL;
- }
-- strcpy(p->monname, disp->monname);
- strcpy(p->monid, disp->monid);
-
- disp_hsz = GetDeviceCaps(p->hdc, HORZSIZE); /* mm */
---- 2836,2841 ----
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/dispwin.h Argyll_V1.0.2/spectro/dispwin.h
-*** Argyll_V1.0.1/spectro/dispwin.h Mon Jul 14 14:11:31 2008
---- Argyll_V1.0.2/spectro/dispwin.h Sun Jul 20 02:25:17 2008
-***************
-*** 78,84 ****
- int sx,sy; /* Displays offset in pixels */
- int sw,sh; /* Displays width and height in pixels*/
- #ifdef NT
-- char monname[32]; /* Monitor Name */
- char monid[128]; /* Monitor ID */
- int prim; /* NZ if primary display monitor */
- #endif /* NT */
---- 78,83 ----
-***************
-*** 163,169 ****
- char *callout; /* if not NULL - set color Shell callout routine */
-
- #ifdef NT
-- char monname[32]; /* Monitor Name (ie. '\\.\DISPLAY1\Monitor0') */
- char monid[128]; /* Monitor ID (ie. 'Monitor\MEA1773\{4D36E96E-E325-11CE-BFC1-08002BE10318}\0015'*/
- HDC hdc; /* Handle to display */
- char *AppName;
---- 162,167 ----
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/huey.c Argyll_V1.0.2/spectro/huey.c
-*** Argyll_V1.0.1/spectro/huey.c Mon Jul 14 14:11:30 2008
---- Argyll_V1.0.2/spectro/huey.c Sun Jul 20 02:25:16 2008
-***************
-*** 62,68 ****
- static inst_code huey_check_unlock(huey *p);
-
- #define CALFACTOR 3.428 /* Emissive magic calibration factor */
-! #define AMB_SCALE_FACTOR 7.806e-3 /* Ambient mode scale factor */
- /* This is only approximate, and were derived */
- /* by matching readings from the i1pro. */
-
---- 62,69 ----
- static inst_code huey_check_unlock(huey *p);
-
- #define CALFACTOR 3.428 /* Emissive magic calibration factor */
-! //#define AMB_SCALE_FACTOR 7.806e-3 /* Ambient mode scale factor */
-! #define AMB_SCALE_FACTOR 5.772e-3 /* Ambient mode scale factor */
- /* This is only approximate, and were derived */
- /* by matching readings from the i1pro. */
-
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/spectro/i1pro_imp.c Argyll_V1.0.2/spectro/i1pro_imp.c
-*** Argyll_V1.0.1/spectro/i1pro_imp.c Mon Jul 14 14:11:30 2008
---- Argyll_V1.0.2/spectro/i1pro_imp.c Sun Jul 20 02:25:16 2008
-***************
-*** 232,238 ****
- if ((m = (i1proimp *)calloc(1, sizeof(i1proimp))) == NULL) {
- DBG((dbgo,"add_i1proimp malloc %d bytes failed (1)\n",sizeof(i1proimp)))
- if (p->verb) printf("Malloc %d bytes failed (1)\n",sizeof(i1proimp));
-! I1PRO_INT_MALLOC;
- }
- m->p = p;
-
---- 232,238 ----
- if ((m = (i1proimp *)calloc(1, sizeof(i1proimp))) == NULL) {
- DBG((dbgo,"add_i1proimp malloc %d bytes failed (1)\n",sizeof(i1proimp)))
- if (p->verb) printf("Malloc %d bytes failed (1)\n",sizeof(i1proimp));
-! return I1PRO_INT_MALLOC;
- }
- m->p = p;
-
-***************
-*** 553,559 ****
- case i1p_refl_spot:
- s->reflective = 1;
- s->adaptive = 1;
-! s->inttime = 0.02366; /* Should get this from the log */
-
- s->dadaptime = 0.10;
- s->wadaptime = 0.10;
---- 553,559 ----
- case i1p_refl_spot:
- s->reflective = 1;
- s->adaptive = 1;
-! s->inttime = 0.02366; /* Should get this from the log ?? */
-
- s->dadaptime = 0.10;
- s->wadaptime = 0.10;
-***************
-*** 962,975 ****
- || (s->emiss && !s->adaptive && *calc == inst_calc_man_em_dark)
- || (s->trans && !s->adaptive && *calc == inst_calc_man_trans_dark)) {
-
-- DBG((dbgo,"Doing initial black calibration with current int_time %f, gainmode %d\n", s->inttime, s->gainmode))
--
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime, s->gainmode))
- != I1PRO_OK)
- return ev;
- if (s->emiss && !s->scan && !s->adaptive) {
- nummeas = i1pro_comp_nummeas(p, s->dcaltime2, s->dark_int_time2);
- if ((ev = i1pro_dark_measure(p, s->dark_data2, nummeas, &s->dark_int_time2,
- s->gainmode)) != I1PRO_OK)
- return ev;
---- 962,976 ----
- || (s->emiss && !s->adaptive && *calc == inst_calc_man_em_dark)
- || (s->trans && !s->adaptive && *calc == inst_calc_man_trans_dark)) {
-
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
-+
-+ DBG((dbgo,"Doing initial black calibration with dcaltime %f, int_time %f, nummeas %d, gainmode %d\n", s->dcaltime, s->inttime, nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime, s->gainmode))
- != I1PRO_OK)
- return ev;
- if (s->emiss && !s->scan && !s->adaptive) {
- nummeas = i1pro_comp_nummeas(p, s->dcaltime2, s->dark_int_time2);
-+ DBG((dbgo,"Doing 2nd initial black calibration with dcaltime2 %f, dark_int_time2 %f, nummeas %d, gainmode %d\n", s->dcaltime2, s->dark_int_time2, nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->dark_data2, nummeas, &s->dark_int_time2,
- s->gainmode)) != I1PRO_OK)
- return ev;
-***************
-*** 990,1016 ****
- /* The black reference is probably temeprature dependent, but */
- /* there's not much we can do about this. */
-
-- DBG((dbgo,"Doing adaptive interpolated black calibration\n"))
-
- s->idark_int_time[0] = 0.01;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[0]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[0], nummeas, &s->idark_int_time[0], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[1] = 1.0;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[1]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[1], nummeas, &s->idark_int_time[1], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[2] = 0.01;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[2]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[2], nummeas, &s->idark_int_time[2], 1))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[3] = 1.0;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[3]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[3], nummeas, &s->idark_int_time[3], 1))
- != I1PRO_OK)
---- 991,1020 ----
- /* The black reference is probably temeprature dependent, but */
- /* there's not much we can do about this. */
-
-
- s->idark_int_time[0] = 0.01;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[0]);
-+ DBG((dbgo,"Doing adaptive interpolated black calibration, dcaltime %f, idark_int_time[0] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[0], nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->idark_data[0], nummeas, &s->idark_int_time[0], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[1] = 1.0;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[1]);
-+ DBG((dbgo,"Doing adaptive interpolated black calibration, dcaltime %f, idark_int_time[1] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[1], nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->idark_data[1], nummeas, &s->idark_int_time[1], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[2] = 0.01;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[2]);
-+ DBG((dbgo,"Doing adaptive interpolated black calibration, dcaltime %f, idark_int_time[2] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[2], nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->idark_data[2], nummeas, &s->idark_int_time[2], 1))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[3] = 1.0;
-+ DBG((dbgo,"Doing adaptive interpolated black calibration, dcaltime %f, idark_int_time[3] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[3], nummeas, s->gainmode))
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[3]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[3], nummeas, &s->idark_int_time[3], 1))
- != I1PRO_OK)
-***************
-*** 1062,1068 ****
-
- }
-
-! /* Deal with an emsisive/transmisive adaptive black reference */
- /* when in scan mode. */
- if ((s->emiss && s->adaptive && s->scan && *calc == inst_calc_man_em_dark)
- || (s->trans && s->adaptive && s->scan && *calc == inst_calc_man_trans_dark)) {
---- 1066,1072 ----
-
- }
-
-! /* Deal with an emissive/transmisive adaptive black reference */
- /* when in scan mode. */
- if ((s->emiss && s->adaptive && s->scan && *calc == inst_calc_man_em_dark)
- || (s->trans && s->adaptive && s->scan && *calc == inst_calc_man_trans_dark)) {
-***************
-*** 1072,1087 ****
- /* but we don't know what gain mode will be used, so measure both, */
- /* and choose the appropriate one on the fly. */
-
-- DBG((dbgo,"Doing adaptive scan black calibration\n"))
-
- s->idark_int_time[0] = s->inttime;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[0]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[0], nummeas, &s->idark_int_time[0], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[2] = s->inttime;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[2]);
- if ((ev = i1pro_dark_measure(p, s->idark_data[2], nummeas, &s->idark_int_time[2], 1))
- != I1PRO_OK)
- return ev;
---- 1076,1092 ----
- /* but we don't know what gain mode will be used, so measure both, */
- /* and choose the appropriate one on the fly. */
-
-
- s->idark_int_time[0] = s->inttime;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[0]);
-+ DBG((dbgo,"Doing adaptive scan black calibration, dcaltime %f, idark_int_time[0] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[0], nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->idark_data[0], nummeas, &s->idark_int_time[0], 0))
- != I1PRO_OK)
- return ev;
-
- s->idark_int_time[2] = s->inttime;
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->idark_int_time[2]);
-+ DBG((dbgo,"Doing adaptive scan black calibration, dcaltime %f, idark_int_time[2] %f, nummeas %d, gainmode %d\n", s->dcaltime, s->idark_int_time[2], nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->idark_data[2], nummeas, &s->idark_int_time[2], 1))
- != I1PRO_OK)
- return ev;
-***************
-*** 1146,1154 ****
- s->cal_valid = 0;
-
- if (*calc == inst_calc_man_ref_white) {
-- DBG((dbgo,"Doing another black calibration with min inttime %f, gainmode %d\n",
-- s->inttime,s->gainmode))
- nummeas = i1pro_comp_nummeas(p, s->dadaptime, s->inttime);
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
---- 1151,1158 ----
- s->cal_valid = 0;
-
- if (*calc == inst_calc_man_ref_white) {
- nummeas = i1pro_comp_nummeas(p, s->dadaptime, s->inttime);
-+ DBG((dbgo,"Doing another black calibration with dadaptime %f, min inttime %f, nummeas %d, gainmode %d\n", s->dadaptime, s->inttime, nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
-***************
-*** 1186,1194 ****
- s->inttime,s->gainmode))
-
- if (*calc == inst_calc_man_ref_white) {
-- DBG((dbgo,"Doing final black calibration with opt inttime %f, gainmode %d\n",
-- s->inttime,s->gainmode))
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
---- 1190,1197 ----
- s->inttime,s->gainmode))
-
- if (*calc == inst_calc_man_ref_white) {
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
-+ DBG((dbgo,"Doing final black calibration with dcaltime %f, opt inttime %f, nummeas %d, gainmode %d\n", s->dcaltime, s->inttime, nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
-***************
-*** 1254,1262 ****
- }
-
- if (*calc == inst_calc_man_ref_white) {
-- DBG((dbgo,"Doing final black calibration with opt inttime %f, gainmode %d\n",
-- s->inttime,s->gainmode))
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
---- 1257,1264 ----
- }
-
- if (*calc == inst_calc_man_ref_white) {
- nummeas = i1pro_comp_nummeas(p, s->dcaltime, s->inttime);
-+ DBG((dbgo,"Doing final black calibration with dcaltime %f, opt inttime %f, nummeas %d, gainmode %d\n", s->dcaltime, s->inttime, nummeas, s->gainmode))
- if ((ev = i1pro_dark_measure(p, s->dark_data, nummeas, &s->inttime,
- s->gainmode)) != I1PRO_OK)
- return ev;
-***************
-*** 1616,1622 ****
-
- DISDPLOT
-
-! DBG((dbgo,"Doing on the fly black calibration with nummeas %d int_time %f, gainmode %d\n",
- nummeas, s->inttime, s->gainmode))
-
- if ((ev = i1pro_dark_measure_1(p, nummeas, &s->inttime, s->gainmode, buf, bsize))
---- 1618,1624 ----
-
- DISDPLOT
-
-! DBG((dbgo,"Doing on the fly black calibration_1 with nummeas %d int_time %f, gainmode %d\n",
- nummeas, s->inttime, s->gainmode))
-
- if ((ev = i1pro_dark_measure_1(p, nummeas, &s->inttime, s->gainmode, buf, bsize))
-***************
-*** 1658,1663 ****
---- 1660,1666 ----
-
- /* Complete black reference measurement */
- if (s->reflective) {
-+ DBG((dbgo,"Doing black calibration_2 with nummeas %d, inttime %f, gainmode %d\n", nummeas, s->inttime,s->gainmode))
- if ((ev = i1pro_dark_measure_2(p, s->dark_data, nummeas, s->inttime, s->gainmode,
- buf, bsize)) != I1PRO_OK) {
- free_dmatrix(specrd, 0, nvals-1, 0, m->nwav-1);
-***************
-*** 1743,1748 ****
---- 1746,1753 ----
- i1key offst = 0; /* Offset to copy to use */
- i1pro_code ev = I1PRO_OK;
-
-+ DBG((dbgo,"Doing Restoring reflective spot calibration information from the EEProm\n"))
-+
- chsum1 = m->data->checksum(m->data, 0);
- if ((chsum2 = m->data->get_int(m->data, key_checksum, 0)) == NULL || chsum1 != *chsum2) {
- offst = key_2logoff;
-***************
-*** 1770,1775 ****
---- 1775,1782 ----
- return I1PRO_OK;
- }
- s->inttime = dp[0];
-+ if (s->inttime < m->min_int_time) /* Hmm. EEprom is occasionaly screwed up */
-+ s->inttime = m->min_int_time;
-
- /* Get the dark data */
- if ((ip = m->data->get_ints(m->data, &count, key_darkreading + offst)) == NULL
-***************
-*** 1785,1790 ****
---- 1792,1798 ----
- }
-
- /* Convert to calibration data */
-+ DBG((dbgo,"Doing black calibration_2 with nummeas %d, inttime %f, gainmode %d\n", 1, s->inttime,s->gainmode))
- if ((ev = i1pro_dark_measure_2(p, s->dark_data, 1, s->inttime, s->gainmode,
- buf, 256)) != I1PRO_OK) {
- if (p->verb) printf("Failed to convert EEProm dark data to calibration\n");
-***************
-*** 2074,2079 ****
---- 2082,2088 ----
- FILE *fp;
- i1pnonv x;
- int ss;
-+ int argyllversion = ARGYLL_VERSION;
-
- strcpy(nmode, "w");
- #if defined(O_BINARY) || defined(_O_BINARY)
-***************
-*** 2101,2106 ****
---- 2110,2116 ----
- ss = sizeof(i1pro_state) + sizeof(i1proimp);
-
- /* Some file identification */
-+ write_ints(&x, fp, &argyllversion, 1);
- write_ints(&x, fp, &ss, 1);
- write_ints(&x, fp, &m->serno, 1);
- write_ints(&x, fp, &m->nraw, 1);
-***************
-*** 2174,2179 ****
---- 2184,2190 ----
- char *path;
- FILE *fp;
- i1pnonv x;
-+ int argyllversion;
- int ss, serno, nraw, nwav1, nwav2, chsum1, chsum2;
-
- strcpy(nmode, "r");
-***************
-*** 2199,2210 ****
---- 2210,2223 ----
- x.chsum = 0;
-
- /* Check the file identification */
-+ read_ints(&x, fp, &argyllversion, 1);
- read_ints(&x, fp, &ss, 1);
- read_ints(&x, fp, &serno, 1);
- read_ints(&x, fp, &nraw, 1);
- read_ints(&x, fp, &nwav1, 1);
- read_ints(&x, fp, &nwav2, 1);
- if (x.ef != 0
-+ || argyllversion != ARGYLL_VERSION
- || ss != (sizeof(i1pro_state) + sizeof(i1proimp))
- || serno != m->serno
- || nraw != m->nraw
-***************
-*** 2294,2299 ****
---- 2307,2313 ----
- rewind(fp);
-
- /* Read the identification */
-+ read_ints(&x, fp, &argyllversion, 1);
- read_ints(&x, fp, &ss, 1);
- read_ints(&x, fp, &m->serno, 1);
- read_ints(&x, fp, &m->nraw, 1);
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/target/printtarg.c Argyll_V1.0.2/target/printtarg.c
-*** Argyll_V1.0.1/target/printtarg.c Mon Jul 14 14:11:33 2008
---- Argyll_V1.0.2/target/printtarg.c Sun Jul 20 02:25:19 2008
-***************
-*** 2497,2502 ****
---- 2497,2503 ----
- fprintf(stderr," -T [res] Output 16 bit TIFF raster file, optional res DPI (default 100)\n");
- fprintf(stderr," -C Don't use TIFF compression\n");
- fprintf(stderr," -N Use TIFF alpha N channels more than 4\n");
-+ fprintf(stderr," -Q nbits Quantize test values to fit in nbits\n");
- fprintf(stderr," -R rsnum Use given random start number\n");
- fprintf(stderr," -x pattern Use given strip indexing pattern (Default = \"%s\")\n",DEF_SIXPAT);
- fprintf(stderr," -y pattern Use given patch indexing pattern (Default = \"%s\")\n",DEF_PIXPAT);
-***************
-*** 2521,2526 ****
---- 2522,2528 ----
- double pscale = 1.0; /* Patch size scale */
- double sscale = 1.0; /* Spacer size scale */
- int rand = 1;
-+ int qbits = 0; /* Quantization bits */
- int oft = 0; /* Ouput File type, 0 = PS, 1 = EPS , 2 = TIFF */
- depth2d tiffdpth = bpc8_2d; /* TIFF pixel depth */
- double tiffres = 100.0; /* TIFF resolution in DPI */
-***************
-*** 2662,2671 ****
- /* Specify random seed */
- else if (argv[fa][1] == 'R') {
- fa = nfa;
-! if (na == NULL) usage("Expected argument to -t");
- rstart = atoi(na);
- if (rstart < 0)
-! usage("Argument to -t must be positive");
- }
-
- /* Enable DeviceN color fallback */
---- 2664,2673 ----
- /* Specify random seed */
- else if (argv[fa][1] == 'R') {
- fa = nfa;
-! if (na == NULL) usage("Expected argument to -R");
- rstart = atoi(na);
- if (rstart < 0)
-! usage("Argument to -R must be positive");
- }
-
- /* Enable DeviceN color fallback */
-***************
-*** 2752,2757 ****
---- 2754,2768 ----
- tiffcomp = 0;
- }
-
-+ /* Specify quantization bits */
-+ else if (argv[fa][1] == 'Q') {
-+ fa = nfa;
-+ if (na == NULL) usage("Expected argument to -Q");
-+ qbits = atoi(na);
-+ if (qbits < 1 || qbits > 32)
-+ usage("Argument to -Q must be between 1 and 32");
-+ }
-+
- /* Specify strip index pattern */
- else if (argv[fa][1] == 'x' || argv[fa][1] == 'X') {
- fa = nfa;
-***************
-*** 2829,2834 ****
---- 2840,2853 ----
- strcat(inname,".ti1");
- strcat(outname,".ti2");
-
-+ /* Set default qantization for known output */
-+ if (qbits == 0 && oft == 2) {
-+ if (tiffdpth == bpc16_2d)
-+ qbits = 16;
-+ else if (tiffdpth == bpc8_2d)
-+ qbits = 8;
-+ }
-+
- if (hex && itype != instSpectroScan) {
- if (verb)
- printf("Can only select hexagonal patches for SpectrScan - ignored!\n");
-***************
-*** 2923,2928 ****
---- 2942,2948 ----
- int xyzix[3]; /* XYZ chanel indexes */
- char *ident;
- char *xyzfname[3] = { "XYZ_X", "XYZ_Y", "XYZ_Z" };
-+ double qscale = (1 << qbits) - 1.0;
-
- if ((ii = icg->find_kword(icg, 0, "TOTAL_INK_LIMIT")) >= 0)
- ocg->add_kword(ocg, 0, "TOTAL_INK_LIMIT",icg->t[0].kdata[ii], NULL);
-***************
-*** 2959,2965 ****
-
- ocg->add_kword(ocg, 0, "COLOR_REP", ident, NULL);
-
-! /* Read all the test patches in */
- for (i = 0; i < npat; i++) {
- cols[i].i = i;
- cols[i].t = T_N | T_XYZ;
---- 2979,2985 ----
-
- ocg->add_kword(ocg, 0, "COLOR_REP", ident, NULL);
-
-! /* Read all the test patches in, and quantize them */
- for (i = 0; i < npat; i++) {
- cols[i].i = i;
- cols[i].t = T_N | T_XYZ;
-***************
-*** 2970,2977 ****
- cols[i].n = nchan;
- cols[i].id = ((char *)icg->t[0].fdata[i][si]);
- sprintf(cols[i].loc, "???");
-! for (j = 0; j < nchan; j++)
-! cols[i].dev[j] = *((double *)icg->t[0].fdata[i][chix[j]]) / 100.0;
- for (j = 0; j < 3; j++)
- cols[i].XYZ[j] = *((double *)icg->t[0].fdata[i][xyzix[j]]) / 100.0;
- col_convert(&cols[i], wp); /* Ensure other representations */
---- 2990,3006 ----
- cols[i].n = nchan;
- cols[i].id = ((char *)icg->t[0].fdata[i][si]);
- sprintf(cols[i].loc, "???");
-! for (j = 0; j < nchan; j++) {
-! double vr, vv = *((double *)icg->t[0].fdata[i][chix[j]]) / 100.0;
-! if (qbits > 0) {
-! vv *= qscale;
-! vr = floor(vv + 0.5);
-! if ((vr - vv) == 0.5 && (((int)vr) & 1) != 0) /* Round to even */
-! vr -= 1.0;
-! vv = vr/qscale;
-! }
-! cols[i].dev[j] = vv;
-! }
- for (j = 0; j < 3; j++)
- cols[i].XYZ[j] = *((double *)icg->t[0].fdata[i][xyzix[j]]) / 100.0;
- col_convert(&cols[i], wp); /* Ensure other representations */
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/target/targen.c Argyll_V1.0.2/target/targen.c
-*** Argyll_V1.0.1/target/targen.c Mon Jul 14 14:11:33 2008
---- Argyll_V1.0.2/target/targen.c Sun Jul 20 02:25:19 2008
-***************
-*** 17,31 ****
-
- /* TTBD:
-
-! Should add an option to quantize the device values -
-! ie. to 8 bits, so that quantizing error isn't introduced
-! through a reproduction path. Should this be a default ?
-
- Using adaptive patch creation for grey colorspace is broken.
- This should really be disabled for grey space, or fixed.
-
- Adaptive only does a first go placement, itterative improvement
- is turned off, because the algorithm doesn't work.
- The useful level for the -A parameter (degree of adapatation)
- hasn't been determined.
-
---- 17,31 ----
-
- /* TTBD:
-
-! Should add an option to generate grey and near grey
-! test points based on the previous profile.
-
- Using adaptive patch creation for grey colorspace is broken.
- This should really be disabled for grey space, or fixed.
-
- Adaptive only does a first go placement, itterative improvement
- is turned off, because the algorithm doesn't work.
-+ It would be good to figure out a way of fixing this.
- The useful level for the -A parameter (degree of adapatation)
- hasn't been determined.
-
-diff --strip-trailing-cr -c -r Argyll_V1.0.1/xicc/xfit.c Argyll_V1.0.2/xicc/xfit.c
-*** Argyll_V1.0.1/xicc/xfit.c Mon Jul 14 14:11:27 2008
---- Argyll_V1.0.2/xicc/xfit.c Sun Jul 20 02:25:13 2008
-***************
-*** 87,93 ****
-
- /* - - - - - - - - - - - - - - - - - */
-
-! #ifdef NEVER /* Not currently used */
-
- /* Lookup a value though an input position curve */
- static double xfit_poscurve(xfit *p, double in, int chan) {
---- 87,93 ----
-
- /* - - - - - - - - - - - - - - - - - */
-
-! #ifdef DEBUG_PLOT /* Not currently used in runtime code*/
-
- /* Lookup a value though an input position curve */
- static double xfit_poscurve(xfit *p, double in, int chan) {
-***************
-*** 132,138 ****
- out[e] = val;
- }
- }
-! #endif /* NEVER */
-
- /* - - - - - - - - - - - - - - - - - */
- /* Lookup a value though input shape curve */
---- 132,138 ----
- out[e] = val;
- }
- }
-! #endif /* DEBUG_PLOT */
-
- /* - - - - - - - - - - - - - - - - - */
- /* Lookup a value though input shape curve */
-***************
-*** 482,487 ****
---- 482,491 ----
- } else {
- icmMulBy3x3(out, p->fromAbs, in);
- }
-+ } else {
-+ out[0] = in[0];
-+ out[1] = in[1];
-+ out[2] = in[2];
- }
- }
-
-***************
-*** 661,667 ****
- } else {
- del = p->to_de2(p->cntx2, out, p->rpoints[i].v);
- }
--
- tw += p->rpoints[i].w;
- ev += p->rpoints[i].w * del;
- }
---- 665,670 ----
-***************
-*** 1384,1397 ****
- break; /* Don't bother looking further */
- }
- }
--
- xfit_abs_to_rel(p, ov, p->ipoints[bk].v);
-
- for (f = 0; f < fdi; f++)
- b[f * (1 << di) + e] = ov[f];
- }
-
--
- /* Setup output curves to be linear initially */
- b = p->v + p->out_off;
- for (f = 0; f < fdi; b += p->oluord[f], f++) {
---- 1387,1398 ----
-***************
-*** 1446,1451 ****
---- 1447,1453 ----
-
- if ((p->tcomb & oc_ipo) != 0
- && (p->tcomb & oc_m) == oc_m) { /* Only bother with matrix if in and/or out */
-+ double rerr;
-
- if (p->verb)
- printf("About to optimise temporary matrix\n");
-***************
-*** 1464,1474 ****
- setup_xfit(p, p->wv, p->sa, 0.0, 0.5);
-
- #ifdef NODDV
-! if (powell(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge");
- #else
-! if (conjgrad(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge");
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
---- 1466,1476 ----
- setup_xfit(p, p->wv, p->sa, 0.0, 0.5);
-
- #ifdef NODDV
-! if (powell(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge, residual error = %f",rerr);
- #else
-! if (conjgrad(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge, residual error = %f", rerr);
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
-***************
-*** 1481,1486 ****
---- 1483,1489 ----
-
- /* Optimise input and matrix together */
- if ((p->tcomb & oc_im) == oc_im) {
-+ double rerr;
-
- if (p->verb)
- printf("\nAbout to optimise input curves and matrix\n");
-***************
-*** 1492,1504 ****
- p->opt_ch = -1;
- p->opt_msk = oc_im;
- setup_xfit(p, p->wv, p->sa, 0.5, 0.3);
- #ifdef NODDV
-! if (powell(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge");
- #else
-! if (conjgrad(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge");
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
- #ifdef DEBUG
---- 1495,1516 ----
- p->opt_ch = -1;
- p->opt_msk = oc_im;
- setup_xfit(p, p->wv, p->sa, 0.5, 0.3);
-+ /* Supress the warnings the first time through - it's better to cut off the */
-+ /* itterations and move on to the output curve, and worry about it not */
-+ /* converging the second time through. */
- #ifdef NODDV
-! if (powell(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0) {
-! #ifdef DEBUG
-! warning("xfit_fit: Powell failed to converge, residual error = %f",rerr);
-! #endif
-! }
- #else
-! if (conjgrad(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0) {
-! #ifdef DEBUG
-! warning("xfit_fit: Conjgrad failed to converge, residual error = %f",rerr);
- #endif
-+ }
-+ #endif /* !NODDV */
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
- #ifdef DEBUG
-***************
-*** 1509,1514 ****
---- 1521,1527 ----
-
- /* Optimise the matrix and output curves together */
- if ((p->tcomb & oc_mo) == oc_mo) {
-+ double rerr;
-
- if (p->verb)
- printf("\nAbout to optimise output curves and matrix\n");
-***************
-*** 1521,1531 ****
- p->opt_msk = oc_mo;
- setup_xfit(p, p->wv, p->sa, 0.3, 0.3);
- #ifdef NODDV
-! if (powell(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge");
- #else
-! if (conjgrad(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge");
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
---- 1534,1544 ----
- p->opt_msk = oc_mo;
- setup_xfit(p, p->wv, p->sa, 0.3, 0.3);
- #ifdef NODDV
-! if (powell(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge, residual error = %f",rerr);
- #else
-! if (conjgrad(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge, residual error = %f",rerr);
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
-***************
-*** 1548,1558 ****
- p->opt_msk = oc_im;
- setup_xfit(p, p->wv, p->sa, 0.2, 0.2);
- #ifdef NODDV
-! if (powell(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge");
- #else
-! if (conjgrad(NULL, p->opt_cnt, p->v, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge");
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
---- 1561,1571 ----
- p->opt_msk = oc_im;
- setup_xfit(p, p->wv, p->sa, 0.2, 0.2);
- #ifdef NODDV
-! if (powell(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Powell failed to converge, residual error = %f",rerr);
- #else
-! if (conjgrad(&rerr, p->opt_cnt, p->v, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge, residual error = %f",rerr);
- #endif
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
-***************
-*** 1576,1583 ****
- p->opt_ch = -1;
- p->opt_msk = oc_imo;
- setup_xfit(p, p->wv, p->sa, 0.1, 0.1);
-! if (conjgrad(NULL, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge");
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
-
---- 1589,1596 ----
- p->opt_ch = -1;
- p->opt_msk = oc_imo;
- setup_xfit(p, p->wv, p->sa, 0.1, 0.1);
-! if (conjgrad(&rerr, p->opt_cnt, p->wv, p->sa, POWTOL, MAXITS, xfitfunc, dxfitfunc, (void *)p) != 0)
-! warning("xfit_fit: Conjgrad failed to converge, residual error = %f",rerr);
- for (i = 0; i < p->opt_cnt; i++) /* Copy optimised values back */
- p->v[p->opt_off + i] = p->wv[i];
-
-***************
-*** 1604,1611 ****
- p->opt_ch = f;
- p->wv[0] = p->v[p->out_offs[f]]; /* Current parameter value */
- p->sa[0] = 0.1; /* Search radius */
-! if (powell(NULL, 1, p->wv, p->sa, 0.0000001, 1000, symoptfunc, (void *)p) != 0)
-! error("xfit_fit: Powell failed to converge");
- p->v[p->out_offs[f]] = p->wv[0]; /* Copy results back */
- }
- }
---- 1617,1624 ----
- p->opt_ch = f;
- p->wv[0] = p->v[p->out_offs[f]]; /* Current parameter value */
- p->sa[0] = 0.1; /* Search radius */
-! if (powell(&rerr, 1, p->wv, p->sa, 0.0000001, 1000, symoptfunc, (void *)p) != 0)
-! error("xfit_fit: Powell failed to converge, residual error = %f",rerr);
- p->v[p->out_offs[f]] = p->wv[0]; /* Copy results back */
- }
- }
-***************
-*** 1867,1873 ****
- p->rpoints[i].v[f] = p->ipoints[i].v[f];
- xfit_abs_to_rel(p, p->rpoints[i].v, p->rpoints[i].v);
- xfit_invoutcurves(p, p->rpoints[i].v, p->rpoints[i].v);
-- // ~~999
- //printf("~1 point %d, w %f, %f %f %f %f -> %f %f %f\n",
- //i,p->rpoints[i].w,p->rpoints[i].p[0], p->rpoints[i].p[1], p->rpoints[i].p[2], p->rpoints[i].p[3],
- //p->rpoints[i].v[0], p->rpoints[i].v[1], p->rpoints[i].v[2]);
---- 1880,1885 ----
-***************
-*** 1923,1931 ****
- if (p->verb)
- printf("Create final clut from scattered data\n");
-
-- // ~~~999
-- //out_max[0] = 100.390625;
--
- p->clut->fit_rspl_w(p->clut, rsplflags, p->rpoints, p->nodp, in_min, in_max, gres,
- out_min, out_max, smooth, oavgdev, iwidth);
- if (p->verb) printf("\n");
---- 1935,1940 ----
-***************
-*** 2079,2085 ****
- maxe = ev;
- avee += ev;
- }
-! printf("Max err = %f, avg err = %f\n",maxe, avee/(double)p->nodp);
-
- /* Evaluate each input axis in turn */
- for (ee = 0; ee < p->di; ee++) {
---- 2088,2094 ----
- maxe = ev;
- avee += ev;
- }
-! printf("Max resid err = %f, avg err = %f\n",maxe, avee/(double)p->nodp);
-
- /* Evaluate each input axis in turn */
- for (ee = 0; ee < p->di; ee++) {
diff --git a/argyllcms-1.0.1-legal.patch b/argyllcms-1.0.1-legal.patch
deleted file mode 100644
index cf41df5..0000000
--- a/argyllcms-1.0.1-legal.patch
+++ /dev/null
@@ -1,726 +0,0 @@
-diff -uNr Argyll_V1.0.1.orig/doc/ArgyllDoc.html Argyll_V1.0.1/doc/ArgyllDoc.html
---- Argyll_V1.0.1.orig/doc/ArgyllDoc.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/ArgyllDoc.html 2008-07-27 11:39:29.000000000 +0200
-@@ -18,7 +18,7 @@
- Author: Graeme Gill
- Introduction
- Argyll is an open source, ICC compatible color management
--system. It supports accurate ICC profile creation for scanners, CMYK
-+system. It supports accurate ICC profile creation for acquisition devices, CMYK
- printers,
- film recorders and calibration and profiling of displays.
- Spectral sample data is supported,
-diff -uNr Argyll_V1.0.1.orig/doc/chartread.html Argyll_V1.0.1/doc/chartread.html
---- Argyll_V1.0.1.orig/doc/chartread.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/chartread.html 2008-07-27 11:40:27.000000000 +0200
-@@ -206,7 +206,7 @@
-
- Normally the patch locations are not needed in the
- output, but if a chart is being read as an input reference (for use in
--profiling a scanner or a camera), then the patch locations will still
-+profiling an acquisition device), then the patch locations will still
- be needed. The -a flag adds
- the locations to the output .ti3 file.
-
-diff -uNr Argyll_V1.0.1.orig/doc/colprof.html Argyll_V1.0.1/doc/colprof.html
---- Argyll_V1.0.1.orig/doc/colprof.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/colprof.html 2008-07-27 11:41:01.000000000 +0200
-@@ -617,8 +617,8 @@
- absolute value, and any values whiter than that, will not be clipped by
- the profile. The profile effectively operates in an absolute intent
- mode, irrespective of what intent is selected when it is used.
--This flag can be useful when an input profile is needed for using a
--scanner as a "poor mans" colorimeter, or if the white point of the test
-+This flag can be useful when an input profile is needed for using an
-+acquisition device as a "poor mans" colorimeter, or if the white point of the test
- chart doesn't represent the white points of media
- that will be used in practice, and that white point adjustment will be
- done individually in some downstream application.
-diff -uNr Argyll_V1.0.1.orig/doc/Installing_Linux.html Argyll_V1.0.1/doc/Installing_Linux.html
---- Argyll_V1.0.1.orig/doc/Installing_Linux.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/Installing_Linux.html 2008-07-27 11:42:29.000000000 +0200
-@@ -30,7 +30,7 @@
- variable to give access to the executables from your command line
- environment.
- The .tgz file also contains several useful reference files (such as
--scanner
-+acquisition device
- chart recognition templates, sample illumination spectrum etc.) in the
- ref sub-directory, as
- well
-diff -uNr Argyll_V1.0.1.orig/doc/Installing_MSWindows.html Argyll_V1.0.1/doc/Installing_MSWindows.html
---- Argyll_V1.0.1.orig/doc/Installing_MSWindows.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/Installing_MSWindows.html 2008-07-27 11:42:50.000000000 +0200
-@@ -69,7 +69,7 @@
-
- The .zip file also contains several useful reference files
- (such as
--scanner
-+acquisition device
- chart recognition templates, sample illumination spectrum etc.) in the
- ref sub-directory, all the current documentation in a doc
- sub-directory, and instrument USB drivers in the libusbw directory.
-diff -uNr Argyll_V1.0.1.orig/doc/Installing_OSX.html Argyll_V1.0.1/doc/Installing_OSX.html
---- Argyll_V1.0.1.orig/doc/Installing_OSX.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/Installing_OSX.html 2008-07-27 11:39:58.000000000 +0200
-@@ -30,7 +30,7 @@
- with how to do this, consult an appropriate tutorial, e.g. <ShellIntro>.
- The .tgz file also contains several useful reference files (such as
--scanner chart recognition templates, sample illumination spectrum
-+acquisition device chart recognition templates, sample illumination spectrum
- etc.) in the ref sub-directory, as well as
- all the current documentation in a doc sub-directory.
-
-diff -uNr Argyll_V1.0.1.orig/doc/Organisation.html Argyll_V1.0.1/doc/Organisation.html
---- Argyll_V1.0.1.orig/doc/Organisation.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/Organisation.html 2008-07-27 11:36:55.000000000 +0200
-@@ -13,7 +13,7 @@
- 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
-+reading using an Xrite DTP51 or DTP41 colorimeter, or acquisition device for print
- charts,
- the Gretag Spectrolino for film charts, or the Xrite DTP92 pr DTP94 for
- monitor
-diff -uNr Argyll_V1.0.1.orig/doc/printtarg.html Argyll_V1.0.1/doc/printtarg.html
---- Argyll_V1.0.1.orig/doc/printtarg.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/printtarg.html 2008-07-27 11:36:27.000000000 +0200
-@@ -167,7 +167,7 @@
- file, and a .ti2 file containing the device test values together with
- the layout information needed to identify the patch location. This
- module can also generate the image recognition templates needed to read
--the print targets in using a scanner.
-+the print targets in using an acquisition device.
-
- The -v flag turns on verbose mode. Prints
- information about how many patches there are in a row, how many patches
-diff -uNr Argyll_V1.0.1.orig/doc/scanin.html Argyll_V1.0.1/doc/scanin.html
---- Argyll_V1.0.1.orig/doc/scanin.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/scanin.html 2008-07-27 11:34:18.000000000 +0200
-@@ -23,7 +23,7 @@
- recogin.cht
- valin.cie [diag.tif]
- :- inputs
--'input.tif', and outputs scanner
-+'input.tif', and outputs device
- 'input.ti3', or
-
- usage
- Replace device values in .ti3
-
--Default is to create a scanner .ti3 file
-+Default is to create a device .ti3 file
- -F x1,y1,x2,y2,x3,y3,x4,y4
-@@ -187,10 +187,10 @@
- of the chart are visible within the image, and if the image is cropped
- to exclude the chart edges, it may well not recognize the chart
- properly. It is designed to cope with a variety of resolutions, and
--will cope with some degree of noise in the scan (due to screening
-+will cope with some degree of noise in the acquisition (due to screening
- artefacts on the original, or film grain), but it isn't really designed
- to accept very high resolution input. For anything over 600DPI, you
--should consider down sampling the scan using a filtering downsample,
-+should consider down sampling the image using a filtering downsample,
- before submitting the file to scanin.
-
- There are 5 basic modes that scanin operates in.
-@@ -199,7 +199,7 @@
- assumed to be parsing an input device characterization chart (ie. an
- IT8.7/2 chart), for the purpose of creating a .ti3 data file containing
--the CIE test values and the corresponding RGB scanner values. The .ti3 file can then be used for
- creating
- an input profile using colprof. The file
-@@ -221,7 +221,7 @@
- file in
- this situation, should be a good quality image, perhaps synthetically
- generated
--(rather than being scanned), and perfectly oriented, to make
-+(rather than being parsed), and perfectly oriented, to make
- specification
- of the patch locations easier. The file arguments are: The
- TIFF file that
-@@ -245,7 +245,7 @@
- input devices to be used as a crude replacement for a color measuring
- instrument. The icc profile has
- (presumably) been
--created by scanning an IT8.7/2 chart (or similar) through the RGB input
-+created with an image of a IT8.7/2 chart (or similar) through the RGB input
- device,
- and
- then using scanin to create the .ti3 file needed to feed to colprof to
-@@ -267,7 +267,7 @@
- The resulting .ti3 file will have the same base name as the input TIFF
- file.
- If there is more than one page in the test chart, then scanin will need
--to be run multiple times, once for each scan file made from each test
-+to be run multiple times, once for each image file made from each test
- chart. The -ca flag combination should be
- used
- for all pages after the first,
-@@ -339,7 +339,7 @@
-
- By default the automatic chart recognition copes with
- rotation, scale and stretch in the chart image, making it suitable for
--charts that have been scanned, or shot squarely with a camera. If a
-+charts that have been acquired, or shot squarely with a camera. If a
- chart has been shot not exactly facing the camera (perhaps to avoid
- reflection, or to get more even lighting), then it will suffer from
- perspective distortion as well. The Normally scanin computes an average of the pixel values
- within a sample square, using a "robust" mean, that discards pixel
- values that are too far from the average ("outlier" pixel values). This
--is done in an attempt to discard value that are due to scanning
-+is done in an attempt to discard value that are due to acquisition
- artefacts such as dust, scratches etc. You can force scanin to return
- the true mean values for the sample squares that includes all the pixel
- values, by using the -m flag.
-@@ -357,9 +357,9 @@
- Normally scanin has reasonably robust feature
- recognition, but the default assumption is that the input chart has an
- approximately even visual distribution of patch values, and has been
--scanned and converted to a typical gamma 2.2 corrected image, meaning
-+acquired and converted to a typical gamma 2.2 corrected image, meaning
- that the average patch pixel value is expected to be about 50%. If this
--is not the case (for instance if the input chart has been scanned with
-+is not the case (for instance if the input chart has been processed with
- linear light or "raw" encoding), then it may enhance the image
- recognition to provide the approximate gamma encoding of the image. For
- instance, if linear light encoding ("Raw") is used, a Installing a
- display profile
-
-+Profiling Acquisition Devices
-
--
--
-+
-+
-
-
-
-
-+using an acquisition device
-
-
-@@ -353,14 +353,14 @@
- the connected display.
-
-
--Profiling Scanners
--Because a scanner is an input device, it is necessary to go about
-+Profiling Acquisition Devices
-+Because a acquisition device is an input device, it is necessary to go about
- profiling it in quite a different way to an output device. To profile
--it, a test chart is needed to exercise the scanner response, to which
-+it, a test chart is needed to exercise the device response, to which
- the CIE values for each test patch is known. Generally standard
- reflection or transparency test charts are used for this purpose.
- Types of test charts
--The most common and popular test chart for scanner profiling is the
-+The most common and popular test chart for acquisiton device profiling is the
- IT8.7/2 chart. This is a standard format chart generally reproduced on
- photographic film, containing about 264 test patches. The Kodak Q-60
- Color Input Target is a typical example:
-@@ -400,18 +400,18 @@
-
-
--Taking readings from a scanner
--The test chart you are using needs to be placed on the scanner, and the
--scanner needs to be configured to a suitable state, and restored to
-+Taking readings from an acquisition device
-+The test chart you are using needs to be exposed to the device, and the
-+acquisition device needs to be configured to a suitable state, and restored to
- that
- same state when used subsequently with the resulting profile. The chart
- should
- be scanned, and saved to a TIFF format file. I will assume the
- resulting
--file is called scanner.tif. The raster file need only be roughly
-+file is called device.tif. The raster file need only be roughly
- cropped so as to contain the test chart (including the charts edges).
-
--The second step is to extract the RGB values from the scanner.tif file,
-+The second step is to extract the RGB values from the device.tif file,
- and match then to the reference CIE values.
- To locate the patch values in the scan, the scanin utility
- needs to
-@@ -485,32 +485,32 @@
- chart recognition template file will need to be created (this is beyond
- the scope of the current documentation).
-
--To create the scanner .ti3 file, run the scanin utility as
-+To create the device .ti3 file, run the scanin utility as
- follows
- (assuming an IT8 chart is being used):
-
-- scanin -v scanner.tif It8.cht It8ref.txt
-+ scanin -v device.tif It8.cht It8ref.txt
-
- "It8ref.txt" is assumed to be the name of the CIE reference file
--supplied by the chart manufacturer. The resulting file will be named "scanner.ti3".
-+supplied by the chart manufacturer. The resulting file will be named "device.ti3".
-
- scanin will process 16 bit per
--component .tiff files, which (if the scanner is capable of creating
-+component .tiff files, which (if the device is capable of creating
- such files), may improve the quality of the profile.
-
- If you have any doubts about the correctness of the chart recognition,
- or the subsequent profile's delta E report is unusual, then use the
- scanin diagnostic flags -dipn and examine
- the diag.tif diagnostic file.
--Creating a scanner profile
--Similar to a display profile, a scanner profile can be either a
--shaper/matrix or LUT based profile. Well behaved scanners will
-+Creating an acquisition device profile
-+Similar to a display profile, an acquisition device profile can be either a
-+shaper/matrix or LUT based profile. Well behaved devices will
- probably give the best results
- with a shaper/matrix profile, but if the fit is poor, consider using a
- LUT
- type profile.
-
--If the purpose of the scanner profile is to use it as a substitute for
-+If the purpose of the device profile is to use it as a substitute for
- a
- colorimeter, then the -u flag should be used to avoid clipping
- values above the white point. Unless the shaper/matrix type profile is
-@@ -520,24 +520,24 @@
- To create a matrix/shaper profile, the following suffices:
-
- colprof -v -D"Scanner A" -D"Device A" -qm -as
--scanner
-+device
-
- For a LUT based profile then the following would be used:
-
- colprof -v -D"Scanner A"
-+ href="colprof.html#E">-D"Device A"
- -qm
--scanner
-+device
-
- For the purposes of a poor mans colorimeter, the following would
- generally be used:
-
- colprof -v -D"Scanner A"
-+ href="colprof.html#E">-D"Device A"
- -qm -u
--scanner
-+device
-
- Make sure you check the delta E report at the end of the profile
- creation, to see if the profile is behaving reasonably.
-@@ -703,7 +703,7 @@
- -ii1 -pA4
- PrinterA
-
--For using with a scanner as a colorimeter, the Gretag Spectroscan
-+For using with an acquisition device as a colorimeter, the Gretag Spectroscan
- layout is suitable, but the -s flag
- should be used so as to generate a layout suitable for scan
- recognition, as well as generating the scan recognition template
-@@ -804,28 +804,27 @@
- for each type of instrument. Continue with Creating
- a printer profile.
-
--Reading a print test chart using a scanner or
--camera
-+Reading a print test chart using an acquisition device
-
-
--Argyll supports using a scanner or even a camera as a substitute for a
-+Argyll supports using any acquisition device as a substitute for a
- colorimeter.
--While a scanner or camera is no replacement for a color measurement
-+While most are no replacement for a color measurement
- instrument, it may give acceptable results in some situations, and may
- give better results than a generic profile for a printing device.
-
--The main limitation of the scanner-as-colorimeter approach are:
-+The main limitation of the any-device-as-colorimeter approach are:
-
--* The scanner dynamic range and/or precision may not match the printers
-+* The acquisition device dynamic range and/or precision may not match the printers
- or what is required for a good profile.
--* The spectral interaction of the scanner test chart and printer test
--chart with the scanner
-+* The spectral interaction of the device test chart and printer test
-+chart with the device
- spectral response can cause color errors.
- * Spectral differences caused by different black amounts in the print
- test chart can cause
- color errors.
- * The IT8 chart gamut may be so much smaller than the printers that the
--scanner profile is too inaccurate.
-+acquisition device profile is too inaccurate.
-
- As well as some of the above, a camera may not be suitable if it
- automatically adjusts exposure or white point when taking a picture,
-@@ -834,23 +833,23 @@
- The end result is often a profile that has a slight color cast to,
- compared to a profile created using a colorimeter or spectrometer..
-
--It is assumed that you have created a scanner or camera profile
-+It is assumed that you have created an acquisition device profile
- following the procedure
- outline above. For best possible results it
--is advisable to both profile the scanner or camera, and use it in
-+is advisable to both profile the acquisition device, and use it in
- scanning the
- printed test chart, in as "raw" mode as possible (i.e. using 16 bits
--per component images, if the scanner or camera is
-+per component images, if the acquisition device is
- capable of doing so; not setting white or black points, using a fixed
- exposure etc.). It is
- generally advisable to create a LUT type input profile, and use the -u flag to
- avoid clipping scanned value whiter than the input calibration chart.
-
--Scan or photograph your printer chart (or charts) on the scanner or
--camera previously profiled.
-+Scan or photograph your printer chart (or charts) on the acquisition device
-+previously profiled.
- The
--scanner or camera must be configured and used exactly the same as it
-+acquisition device must be configured and used exactly the same as it
- was when it
- was profiled.
-
-@@ -858,21 +857,21 @@
- style="font-weight: bold;">PrinterB.tif
(or PrinterB1.tif, PrinterB2.tif etc. in the case of
--multiple charts). As with profiling the scanner or camera, the raster
-+multiple charts). As with profiling the acquisition device, the raster
- file need
- only be roughly cropped so as to contain the test chart.
-
--The scanner recognition files
-+The acquisition device recognition files
- created when printtarg was run
- is assumed to be called PrinterB.cht.
--Using the scanner profile created previously (assumed to be called scanner.icm), the printer test chart
-+Using the device profile created previously (assumed to be called device.icm), the printer test chart
- scan patches are converted to CIE values using the scanin utility:
-
- scanin -v -c PrinterB.tif
--PrinterB.cht scanner.icm
-+PrinterB.cht device.icm
- PrinterB
-
- If there were multiple test chart pages, the results would be
-@@ -881,15 +880,15 @@
-
- scanin -v -c PrinterB1.tif
--PrinterB1.cht scanner.icm
-+PrinterB1.cht device.icm
- PrinterB
- scanin -v -ca PrinterB2.tif
--PrinterB2.cht scanner.icm
-+PrinterB2.cht device.icm
- PrinterB
- scanin -v -ca PrinterB3.tif
--PrinterB3.cht scanner.icm
-+PrinterB3.cht device.icm
- PrinterB
-
- Now that the PrinterB.ti3 data
-diff -uNr Argyll_V1.0.1.orig/doc/targen.html Argyll_V1.0.1/doc/targen.html
---- Argyll_V1.0.1.orig/doc/targen.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/targen.html 2008-07-27 11:53:34.000000000 +0200
-@@ -615,7 +615,7 @@
- 3 x Letter 1386
- 4 x Letter 1848
-
-- Scanner (printtarg with -iSS -s options):
-+ Acquisition device (printtarg with -iSS -s options):
-
- 1 x A4R 1014
- 2 x A4R 2028
-diff -uNr Argyll_V1.0.1.orig/doc/ti3_format.html Argyll_V1.0.1/doc/ti3_format.html
---- Argyll_V1.0.1.orig/doc/ti3_format.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/ti3_format.html 2008-07-27 11:42:04.000000000 +0200
-@@ -173,7 +173,7 @@
- or "RGB_LAB" for an RGB printer
- or display, "CMYK_XYZ" for a
- printer, "XYZ_RGB" for an RGB
--scanner.
-+acquisition device.
-
- If spectral values are going to be included in the file, the following
- keywords and values shall be used:
-diff -uNr Argyll_V1.0.1.orig/doc/ucmm.html Argyll_V1.0.1/doc/ucmm.html
---- Argyll_V1.0.1.orig/doc/ucmm.html 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/doc/ucmm.html 2008-07-27 11:41:27.000000000 +0200
-@@ -13,7 +13,7 @@
- designed just to handle the necessary configuration needed to track the
- installation and association of ICC profiles with Unix/Linux X11
- displays. It could be expanded at some point to also hold the
--associations for other devices such as scanner and printers.
-+associations for other devices such as acquisition devices and printers.
-
- It consists primarily of a small configuration database that associates
- a display monitor (identified by its EDID or the X11 display name if an
-diff -uNr Argyll_V1.0.1.orig/log.txt Argyll_V1.0.1/log.txt
---- Argyll_V1.0.1.orig/log.txt 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/log.txt 2008-07-27 11:35:38.000000000 +0200
-@@ -1648,7 +1648,7 @@
-
- * Added shaper/matrix input profile support.
- (profile/profin.c, xicc/xmatrix.c)
-- This may be more accurate for scanner profiles,
-+ This may be more accurate for device profiles,
- given the poor coverage of test points provided
- by an IT8 chart (but doesn't appear to be in practice).
-
-@@ -1659,7 +1659,7 @@
-
- * 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
-+ profile for the device, to be able to measure
- color for printer calibration. This
- new mode handles multi-page test charts.
-
-@@ -1689,13 +1689,13 @@
- 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.
-+ devices, as well as device 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.
-+ as well as preview colors and device recognition templates.
-
- * Create a new test point creation module,
- target/simplat.c, to create higher dimentional,
-@@ -1793,7 +1793,7 @@
-
- * Added preliminary support in printtarg for the SpectroScan
- spectrodensitometer. Also added preliminary support for
-- scanner recognisable test charts.
-+ device recognisable test charts.
-
- * Added option to icclink to turn off the use of linearisation
- curves in the output link, since this sometimes seems to
-@@ -1960,7 +1960,7 @@
- Cleaned up build automation somewhat.
-
- Added RGB output device profile generation support.
-- Added RGB scanner device profile generation support.
-+ Added RGB device profile generation support.
-
- Added a couple of spectrometer conversion utilities for
- raw data files from other CMSs.
-diff -uNr Argyll_V1.0.1.orig/profile/profcheck.c Argyll_V1.0.1/profile/profcheck.c
---- Argyll_V1.0.1.orig/profile/profcheck.c 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/profile/profcheck.c 2008-07-27 11:54:01.000000000 +0200
-@@ -360,7 +360,7 @@
- devchan = 3;
- isLab = 1;
- isAdditive = 1;
-- /* Scanner .ti3 files: */
-+ /* Acquisition Device .ti3 files: */
- } else if (strcmp(icg->t[0].kdata[ti],"XYZ_RGB") == 0) {
- devspace = icSigRgbData;
- devchan = 3;
-diff -uNr Argyll_V1.0.1.orig/profile/profin.c Argyll_V1.0.1/profile/profin.c
---- Argyll_V1.0.1.orig/profile/profin.c 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/profile/profin.c 2008-07-27 11:53:08.000000000 +0200
-@@ -49,7 +49,7 @@
- /*
- Basic algorithm outline:
-
-- Scanner:
-+ Acquisition Device:
-
- Figure out the input curves to give
- the flattest grid.
-diff -uNr Argyll_V1.0.1.orig/Readme.txt Argyll_V1.0.1/Readme.txt
---- Argyll_V1.0.1.orig/Readme.txt 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/Readme.txt 2008-07-27 11:38:54.000000000 +0200
-@@ -1,36 +1,36 @@
-
--Argyll CMS README file - Version 1.0.0
-+Argyll CMS README file - Version 1.0.1
- --------------------------------------
-
- Date: 27th June 2008
- Author: Graeme Gill
-
--Argyll is an open source, ICC compatible color management system. It supports
--accurate ICC profile creation for scanners, CMYK printers, film recorders and
--calibration and profiling of displays. Spectral sample data is supported,
--allowing a selection of illuminants observer types, and paper fluorescent
--whitener additive compensation. Profiles can also incorporate source specific
--gamut mappings for perceptual and saturation intents. Gamut mapping and profile
--linking uses the CIECAM02 appearance model, a unique gamut mapping algorithm,
--and a wide selection of rendering intents. It also includes code for the
--fastest portable 8 bit raster color conversion engine available anywhere,
--as well as support for fast, fully accurate 16 bit conversion. Device color
--gamuts can also be viewed and compared using a VRML viewer. Comprehensive
--documentation is provided for each utility, and a general guide to using
--the tools for typical color management tasks is also available. A mailing
--list provides support for more advanced usage.
--
--This is Version 1.00. The last full release was in December 2005,
--with V0.7 Beta releases in between. The first public release of
--icclib was in November 1998, and of Argyll was in July 2000.
--Code development commenced in 1995. See Changes Summary for an
--overview of changes since the last release. Changes between
--revisions is detailed in the log.txt file that accompanies
--the source code.
-+Argyll is an open source, ICC compatible color management system. It supports
-+accurate ICC profile creation for acquisition devices, CMYK printers, film
-+recorders and calibration and profiling of displays. Spectral sample data is
-+supported, allowing a selection of illuminants observer types, and paper
-+fluorescent whitener additive compensation. Profiles can also incorporate
-+source specific gamut mappings for perceptual and saturation intents. Gamut
-+mapping and profile linking uses the CIECAM02 appearance model, a unique gamut
-+mapping algorithm, and a wide selection of rendering intents. It also includes
-+code for the fastest portable 8 bit raster color conversion engine available
-+anywhere, as well as support for fast, fully accurate 16 bit conversion. Device
-+color gamuts can also be viewed and compared using a VRML viewer. Comprehensive
-+documentation is provided for each utility, and a general guide to using the
-+tools for typical color management tasks is also available. A mailing list
-+provides support for more advanced usage.
-+
-+This is Version 1.0.1. The last full release was in December 2005, with V0.7
-+Beta releases in between. The first public release of icclib was in November
-+1998, and of Argyll was in July 2000. Code development commenced in 1995. See
-+Changes Summary for an overview of changes since the last release. Changes
-+between revisions is detailed in the log.txt file that accompanies the source
-+code.
-
- It is licensed under the GNU Version 3 license.
-
--For more information, please consult the HTML documentation in ,
-+For more information, please consult the HTML documentation in
-+,
- or .
-
- For the most recent source code start at .
-diff -uNr Argyll_V1.0.1.orig/scanin/scanin.c Argyll_V1.0.1/scanin/scanin.c
---- Argyll_V1.0.1.orig/scanin/scanin.c 2008-07-27 11:18:53.000000000 +0200
-+++ Argyll_V1.0.1/scanin/scanin.c 2008-07-27 11:26:37.000000000 +0200
-@@ -2,7 +2,7 @@
- /*
- * Argyll Color Correction System
- *
-- * Scanin: Input the scan of a test chart, and output cgats data
-+ * Scanin: Input the image of a test chart, and output cgats data
- * Uses scanrd to do the hard work.
- *
- * Author: Graeme W. Gill
-@@ -72,7 +72,7 @@
- fprintf(stderr,"Author: Graeme W. Gill, licensed under the GPL Version 3\n");
- fprintf(stderr,"\n");
- fprintf(stderr,"usage: scanin [options] input.tif recogin.cht valin.cie [diag.tif]\n");
-- fprintf(stderr," :- inputs 'input.tif' and outputs scanner 'input.ti3', or\n");
-+ fprintf(stderr," :- inputs 'input.tif' and outputs device 'input.ti3', or\n");
- fprintf(stderr,"\n");
- fprintf(stderr,"usage: scanin -g [options] input.tif recogout.cht [diag.tif]\n");
- fprintf(stderr," :- outputs file 'recogout.cht', or\n");
-@@ -92,7 +92,7 @@
- fprintf(stderr," -ca Same as -c, but accumulates more values to .ti3\n");
- fprintf(stderr," from subsequent pages\n");
- fprintf(stderr," -r Replace device values in .ti2/.ti3\n");
-- fprintf(stderr," Default is to create a scanner .ti3 file\n");
-+ fprintf(stderr," Default is to create a device .ti3 file\n");
- fprintf(stderr," -F x1,y1,x2,y2,x3,y3,x4,y4\n");
- fprintf(stderr," Don't auto recognize, locate using four fiducual marks\n");
- fprintf(stderr," -p Compensate for perspective distortion\n");
-@@ -127,12 +127,12 @@
- static char datin_name[200] = { 0 }; /* Data input name (.cie/.q60) */
- static char datout_name[200] = { 0 }; /* Data output name (.ti3/.val) */
- static char recog_name[200] = { 0 }; /* Reference chart name (.cht) */
-- static char prof_name[200] = { 0 }; /* scanner profile name (.cht) */
-+ static char prof_name[200] = { 0 }; /* device profile name (.cht) */
- static char diag_name[200] = { 0 }; /* Diagnostic Output (.tif) name, if used */
- int verb = 1;
- int tmean = 0; /* Return true mean, rather than robust mean */
- int repl = 0; /* Replace .ti3 device values from raster file */
-- int outo = 0; /* Output the values read, rather than creating scanner .ti3 */
-+ int outo = 0; /* Output the values read, rather than creating device .ti3 */
- int colm = 0; /* Use inage values to measure color for print profile. > 1 == append */
- int flags = SI_GENERAL_ROT; /* Default allow all rotations */
-
-@@ -153,7 +153,7 @@
- scanrd *sr; /* Scanrd object */
- int err;
- char *errm;
-- int pnotscan = 0; /* Number of patches that wern't scanned */
-+ int pnotscan = 0; /* Number of patches that weren't processed */
-
- if (argc <= 1)
- usage();
-diff -uNr Argyll_V1.0.1.orig/target/printtarg.c Argyll_V1.0.1/target/printtarg.c
---- Argyll_V1.0.1.orig/target/printtarg.c 2008-07-27 11:18:52.000000000 +0200
-+++ Argyll_V1.0.1/target/printtarg.c 2008-07-27 11:37:20.000000000 +0200
-@@ -3252,7 +3252,7 @@
- }
-
- /******************************************************************/
--/* Edge tracking support, for generating the scanner image */
-+/* Edge tracking support, for generating the device image */
- /* recognition reference chart file. */
-
- /* Establish width and height to convert between topleft and */
-diff -uNr Argyll_V1.0.1.orig/ttbd.txt Argyll_V1.0.1/ttbd.txt
---- Argyll_V1.0.1.orig/ttbd.txt 2008-07-27 11:18:54.000000000 +0200
-+++ Argyll_V1.0.1/ttbd.txt 2008-07-27 11:54:46.000000000 +0200
-@@ -123,7 +123,7 @@
-
- * Should create a .ti2 template file for some standard charts,
- such as an IT8.7/3, ECI2002 random and non-random etc.
-- Scanner recognition files too ??
-+ Device recognition files too ??
-
- * Add an option to targen, that allows generation of
- test points down the neutral axis (how does this work
-@@ -293,7 +293,7 @@
- patch variance is too high (probable faulty read).
-
- * Add spectral fix options to scanin code to allow compensation
-- for scanner and media errors when using a scanned image to
-+ for device and media errors when using an acquired image to
- measure color.
- This means figuring out how it will work, as well as creating
- to tools to create the spectral fix data (or just add general
diff --git a/argyllcms-1.0.1-printf.patch b/argyllcms-1.0.1-printf.patch
deleted file mode 100644
index 1a917ce..0000000
--- a/argyllcms-1.0.1-printf.patch
+++ /dev/null
@@ -1,1090 +0,0 @@
-diff -uNr Argyll_V1.0.1.orig/icc/icc.c Argyll_V1.0.1/icc/icc.c
---- Argyll_V1.0.1.orig/icc/icc.c 2008-07-14 06:11:23.000000000 +0200
-+++ Argyll_V1.0.1/icc/icc.c 2008-07-27 13:38:24.000000000 +0200
-@@ -1772,8 +1772,8 @@
- if (verb <= 1)
- return;
-
-- op->printf(op,"Unknown:\n");
-- op->printf(op," Payload size in bytes = %u\n",p->size);
-+ (op->printf)(op,"Unknown:\n");
-+ (op->printf)(op," Payload size in bytes = %u\n",p->size);
-
- /* Print one row of binary and ASCII interpretation if verb == 2, All if == 3 */
- /* else print all of it. */
-@@ -1783,35 +1783,35 @@
-
- c = 1;
- if (ph != 0) { /* Print ASCII under binary */
-- op->printf(op," ");
-+ (op->printf)(op," ");
- i = ii; /* Swap */
- c += 11;
- } else {
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- ii = i; /* Swap */
- c += 10;
- }
- while (i < p->size && c < 75) {
- if (ph == 0)
-- op->printf(op,"%02x ",p->data[i]);
-+ (op->printf)(op,"%02x ",p->data[i]);
- else {
- if (isprint(p->data[i]))
-- op->printf(op," %c ",p->data[i]);
-+ (op->printf)(op," %c ",p->data[i]);
- else
-- op->printf(op," ",p->data[i]);
-+ (op->printf)(op," ",p->data[i]);
- }
- c += 3;
- i++;
- }
- if (ph == 0 || i < p->size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
-
- if (ph == 1 && i >= p->size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (ph == 1 && r > 1 && verb < 3) {
-- op->printf(op," ...\n");
-+ (op->printf)(op," ...\n");
- break; /* Print 1 row if not verbose */
- }
-
-@@ -2002,12 +2002,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"UInt8Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"UInt8Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: %u\n",i,p->data[i]);
-+ (op->printf)(op," %lu: %u\n",i,p->data[i]);
- }
- }
-
-@@ -2189,12 +2189,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"UInt16Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"UInt16Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: %u\n",i,p->data[i]);
-+ (op->printf)(op," %lu: %u\n",i,p->data[i]);
- }
- }
-
-@@ -2376,12 +2376,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"UInt32Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"UInt32Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: %u\n",i,p->data[i]);
-+ (op->printf)(op," %lu: %u\n",i,p->data[i]);
- }
- }
-
-@@ -2563,12 +2563,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"UInt64Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"UInt64Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: h=%lu, l=%lu\n",i,p->data[i].h,p->data[i].l);
-+ (op->printf)(op," %lu: h=%lu, l=%lu\n",i,p->data[i].h,p->data[i].l);
- }
- }
-
-@@ -2750,12 +2750,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"U16Fixed16Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"U16Fixed16Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: %f\n",i,p->data[i]);
-+ (op->printf)(op," %lu: %f\n",i,p->data[i]);
- }
- }
-
-@@ -2937,12 +2937,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"S15Fixed16Array:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"S15Fixed16Array:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %lu: %f\n",i,p->data[i]);
-+ (op->printf)(op," %lu: %f\n",i,p->data[i]);
- }
- }
-
-@@ -3166,12 +3166,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"XYZArray:\n");
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op,"XYZArray:\n");
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++) {
-- op->printf(op," %lu: %s\n",i,string_XYZNumber_and_Lab(&p->data[i]));
-+ (op->printf)(op," %lu: %s\n",i,string_XYZNumber_and_Lab(&p->data[i]));
-
- }
- }
-@@ -3640,18 +3640,18 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Curve:\n");
-+ (op->printf)(op,"Curve:\n");
-
- if (p->flag == icmCurveLin) {
-- op->printf(op," Curve is linear\n");
-+ (op->printf)(op," Curve is linear\n");
- } else if (p->flag == icmCurveGamma) {
-- op->printf(op," Curve is gamma of %f\n",p->data[0]);
-+ (op->printf)(op," Curve is gamma of %f\n",p->data[0]);
- } else {
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op," No. elements = %lu\n",p->size);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->size; i++)
-- op->printf(op," %3lu: %f\n",i,p->data[i]);
-+ (op->printf)(op," %3lu: %f\n",i,p->data[i]);
- }
- }
- }
-@@ -3892,68 +3892,68 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Data:\n");
-+ (op->printf)(op,"Data:\n");
- switch(p->flag) {
- case icmDataASCII:
-- op->printf(op," ASCII data\n");
-+ (op->printf)(op," ASCII data\n");
- size = p->size > 0 ? p->size-1 : 0;
- break;
- case icmDataBin:
-- op->printf(op," Binary data\n");
-+ (op->printf)(op," Binary data\n");
- size = p->size;
- break;
- case icmDataUndef:
-- op->printf(op," Undefined data\n");
-+ (op->printf)(op," Undefined data\n");
- size = p->size;
- break;
- }
-- op->printf(op," No. elements = %lu\n",p->size);
-+ (op->printf)(op," No. elements = %lu\n",p->size);
-
- ii = i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
-
- c = 1;
- if (ph != 0) { /* Print ASCII under binary */
-- op->printf(op," ");
-+ (op->printf)(op," ");
- i = ii;
- c += 11;
- } else {
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- ii = i;
- c += 10;
- }
- while (i < size && c < 75) {
- if (p->flag == icmDataASCII) {
- if (isprint(p->data[i])) {
-- op->printf(op,"%c",p->data[i]);
-+ (op->printf)(op,"%c",p->data[i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->data[i]);
-+ (op->printf)(op,"\\%03o",p->data[i]);
- c += 4;
- }
- } else {
- if (ph == 0)
-- op->printf(op,"%02x ",p->data[i]);
-+ (op->printf)(op,"%02x ",p->data[i]);
- else {
- if (isprint(p->data[i]))
-- op->printf(op," %c ",p->data[i]);
-+ (op->printf)(op," %c ",p->data[i]);
- else
-- op->printf(op," ",p->data[i]);
-+ (op->printf)(op," ",p->data[i]);
- }
- c += 3;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- if (verb > 2 && p->flag != icmDataASCII && ph == 0)
- ph = 1;
- else
-@@ -4143,35 +4143,35 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Text:\n");
-- op->printf(op," No. chars = %lu\n",p->size);
-+ (op->printf)(op,"Text:\n");
-+ (op->printf)(op," No. chars = %lu\n",p->size);
-
- size = p->size > 0 ? p->size-1 : 0;
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 75) {
- if (isprint(p->data[i])) {
-- op->printf(op,"%c",p->data[i]);
-+ (op->printf)(op,"%c",p->data[i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->data[i]);
-+ (op->printf)(op,"\\%03o",p->data[i]);
- c += 4;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
-
-@@ -4476,8 +4476,8 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"DateTimeNumber:\n");
-- op->printf(op," Date = %s\n", string_DateTimeNumber(p));
-+ (op->printf)(op,"DateTimeNumber:\n");
-+ (op->printf)(op," Date = %s\n", string_DateTimeNumber(p));
- }
-
- /* Allocate variable sized data elements */
-@@ -5988,34 +5988,34 @@
- return;
-
- if (p->ttype == icSigLut8Type) {
-- op->printf(op,"Lut8:\n");
-+ (op->printf)(op,"Lut8:\n");
- } else {
-- op->printf(op,"Lut16:\n");
-+ (op->printf)(op,"Lut16:\n");
- }
-- op->printf(op," Input Channels = %u\n",p->inputChan);
-- op->printf(op," Output Channels = %u\n",p->outputChan);
-- op->printf(op," CLUT resolution = %u\n",p->clutPoints);
-- op->printf(op," Input Table entries = %u\n",p->inputEnt);
-- op->printf(op," Output Table entries = %u\n",p->outputEnt);
-- op->printf(op," XYZ matrix = %f, %f, %f\n",p->e[0][0],p->e[0][1],p->e[0][2]);
-- op->printf(op," %f, %f, %f\n",p->e[1][0],p->e[1][1],p->e[1][2]);
-- op->printf(op," %f, %f, %f\n",p->e[2][0],p->e[2][1],p->e[2][2]);
-+ (op->printf)(op," Input Channels = %u\n",p->inputChan);
-+ (op->printf)(op," Output Channels = %u\n",p->outputChan);
-+ (op->printf)(op," CLUT resolution = %u\n",p->clutPoints);
-+ (op->printf)(op," Input Table entries = %u\n",p->inputEnt);
-+ (op->printf)(op," Output Table entries = %u\n",p->outputEnt);
-+ (op->printf)(op," XYZ matrix = %f, %f, %f\n",p->e[0][0],p->e[0][1],p->e[0][2]);
-+ (op->printf)(op," %f, %f, %f\n",p->e[1][0],p->e[1][1],p->e[1][2]);
-+ (op->printf)(op," %f, %f, %f\n",p->e[2][0],p->e[2][1],p->e[2][2]);
-
- if (verb >= 2) {
- unsigned int i, j, size;
- unsigned int ii[MAX_CHAN]; /* maximum no of input channels */
-
-- op->printf(op," Input table:\n");
-+ (op->printf)(op," Input table:\n");
- for (i = 0; i < p->inputEnt; i++) {
-- op->printf(op," %3u: ",i);
-+ (op->printf)(op," %3u: ",i);
- for (j = 0; j < p->inputChan; j++)
-- op->printf(op," %1.10f",p->inputTable[j * p->inputEnt + i]);
-- op->printf(op,"\n");
-+ (op->printf)(op," %1.10f",p->inputTable[j * p->inputEnt + i]);
-+ (op->printf)(op,"\n");
- }
-
-- op->printf(op,"\n CLUT table:\n");
-+ (op->printf)(op,"\n CLUT table:\n");
- if (p->inputChan > MAX_CHAN) {
-- op->printf(op," !!Can't dump > %d input channel CLUT table!!\n",MAX_CHAN);
-+ (op->printf)(op," !!Can't dump > %d input channel CLUT table!!\n",MAX_CHAN);
- } else {
- size = (p->outputChan * uipow(p->clutPoints,p->inputChan));
- for (j = 0; j < p->inputChan; j++)
-@@ -6023,14 +6023,14 @@
- for (i = 0; i < size;) {
- unsigned int k;
- /* Print table entry index */
-- op->printf(op," ");
-+ (op->printf)(op," ");
- for (j = p->inputChan-1; j < p->inputChan; j--)
-- op->printf(op," %2u",ii[j]);
-- op->printf(op,":");
-+ (op->printf)(op," %2u",ii[j]);
-+ (op->printf)(op,":");
- /* Print table entry contents */
- for (k = 0; k < p->outputChan; k++, i++)
-- op->printf(op," %1.10f",p->clutTable[i]);
-- op->printf(op,"\n");
-+ (op->printf)(op," %1.10f",p->clutTable[i]);
-+ (op->printf)(op,"\n");
-
- for (j = 0; j < p->inputChan; j++) { /* Increment index */
- ii[j]++;
-@@ -6041,12 +6041,12 @@
- }
- }
-
-- op->printf(op,"\n Output table:\n");
-+ (op->printf)(op,"\n Output table:\n");
- for (i = 0; i < p->outputEnt; i++) {
-- op->printf(op," %3u: ",i);
-+ (op->printf)(op," %3u: ",i);
- for (j = 0; j < p->outputChan; j++)
-- op->printf(op," %1.10f",p->outputTable[j * p->outputEnt + i]);
-- op->printf(op,"\n");
-+ (op->printf)(op," %1.10f",p->outputTable[j * p->outputEnt + i]);
-+ (op->printf)(op,"\n");
- }
-
- }
-@@ -6356,12 +6356,12 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Measurement:\n");
-- op->printf(op," Standard Observer = %s\n", string_StandardObserver(p->observer));
-- op->printf(op," XYZ for Measurement Backing = %s\n", string_XYZNumber_and_Lab(&p->backing));
-- op->printf(op," Measurement Geometry = %s\n", string_MeasurementGeometry(p->geometry));
-- op->printf(op," Measurement Flare = %5.1f%%\n", p->flare * 100.0);
-- op->printf(op," Standard Illuminant = %s\n", string_Illuminant(p->illuminant));
-+ (op->printf)(op,"Measurement:\n");
-+ (op->printf)(op," Standard Observer = %s\n", string_StandardObserver(p->observer));
-+ (op->printf)(op," XYZ for Measurement Backing = %s\n", string_XYZNumber_and_Lab(&p->backing));
-+ (op->printf)(op," Measurement Geometry = %s\n", string_MeasurementGeometry(p->geometry));
-+ (op->printf)(op," Measurement Flare = %5.1f%%\n", p->flare * 100.0);
-+ (op->printf)(op," Standard Illuminant = %s\n", string_Illuminant(p->illuminant));
- }
-
- /* Allocate variable sized data elements */
-@@ -6839,45 +6839,45 @@
- return;
-
- if (p->ttype == icSigNamedColorType)
-- op->printf(op,"NamedColor:\n");
-+ (op->printf)(op,"NamedColor:\n");
- else
-- op->printf(op,"NamedColor2:\n");
-- op->printf(op," Vendor Flag = 0x%x\n",p->vendorFlag);
-- op->printf(op," No. colors = %u\n",p->count);
-- op->printf(op," No. dev. coords = %u\n",p->nDeviceCoords);
-- op->printf(op," Name prefix = '%s'\n",p->prefix);
-- op->printf(op," Name suffix = '%s'\n",p->suffix);
-+ (op->printf)(op,"NamedColor2:\n");
-+ (op->printf)(op," Vendor Flag = 0x%x\n",p->vendorFlag);
-+ (op->printf)(op," No. colors = %u\n",p->count);
-+ (op->printf)(op," No. dev. coords = %u\n",p->nDeviceCoords);
-+ (op->printf)(op," Name prefix = '%s'\n",p->prefix);
-+ (op->printf)(op," Name suffix = '%s'\n",p->suffix);
- if (verb >= 2) {
- unsigned long i, n;
- icmNamedColorVal *vp;
- for (i = 0; i < p->count; i++) {
- vp = p->data + i;
-- op->printf(op," Color %lu:\n",i);
-- op->printf(op," Name root = '%s'\n",vp->root);
-+ (op->printf)(op," Color %lu:\n",i);
-+ (op->printf)(op," Name root = '%s'\n",vp->root);
-
- if (p->ttype == icSigNamedColor2Type) {
- switch(icp->header->pcs) {
- case icSigXYZData:
-- op->printf(op," XYZ = %f, %f, %f\n",
-+ (op->printf)(op," XYZ = %f, %f, %f\n",
- vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]);
- break;
- case icSigLabData:
-- op->printf(op," Lab = %f, %f, %f\n",
-+ (op->printf)(op," Lab = %f, %f, %f\n",
- vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]);
- break;
- default:
-- op->printf(op," Unexpected PCS\n");
-+ (op->printf)(op," Unexpected PCS\n");
- break;
- }
- }
- if (p->nDeviceCoords > 0) {
-- op->printf(op," Device Coords = ");
-+ (op->printf)(op," Device Coords = ");
- for (n = 0; n < p->nDeviceCoords; n++) {
- if (n > 0)
-- op->printf(op,", ");
-- op->printf(op,"%f",vp->deviceCoords[n]);
-+ (op->printf)(op,", ");
-+ (op->printf)(op,"%f",vp->deviceCoords[n]);
- }
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
- }
-@@ -7177,28 +7177,28 @@
- return;
-
- if (p->ttype == icSigColorantTableType)
-- op->printf(op,"ColorantTable:\n");
-- op->printf(op," No. colorants = %u\n",p->count);
-+ (op->printf)(op,"ColorantTable:\n");
-+ (op->printf)(op," No. colorants = %u\n",p->count);
- if (verb >= 2) {
- unsigned long i;
- icmColorantTableVal *vp;
- for (i = 0; i < p->count; i++) {
- vp = p->data + i;
-- op->printf(op," Colorant %lu:\n",i);
-- op->printf(op," Name = '%s'\n",vp->name);
-+ (op->printf)(op," Colorant %lu:\n",i);
-+ (op->printf)(op," Name = '%s'\n",vp->name);
-
- if (p->ttype == icSigColorantTableType) {
- switch(pcs) {
- case icSigXYZData:
-- op->printf(op," XYZ = %f, %f, %f\n",
-+ (op->printf)(op," XYZ = %f, %f, %f\n",
- vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]);
- break;
- case icSigLabData:
-- op->printf(op," Lab = %f, %f, %f\n",
-+ (op->printf)(op," Lab = %f, %f, %f\n",
- vp->pcsCoords[0],vp->pcsCoords[1],vp->pcsCoords[2]);
- break;
- default:
-- op->printf(op," Unexpected PCS\n");
-+ (op->printf)(op," Unexpected PCS\n");
- break;
- }
- }
-@@ -7596,98 +7596,98 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"TextDescription:\n");
-+ (op->printf)(op,"TextDescription:\n");
-
- if (p->size > 0) {
- unsigned long size = p->size > 0 ? p->size-1 : 0;
-- op->printf(op," ASCII data, length %lu chars:\n",p->size);
-+ (op->printf)(op," ASCII data, length %lu chars:\n",p->size);
-
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 75) {
- if (isprint(p->desc[i])) {
-- op->printf(op,"%c",p->desc[i]);
-+ (op->printf)(op,"%c",p->desc[i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->desc[i]);
-+ (op->printf)(op,"\\%03o",p->desc[i]);
- c += 4;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- } else {
-- op->printf(op," No ASCII data\n");
-+ (op->printf)(op," No ASCII data\n");
- }
-
- /* Can't dump Unicode or ScriptCode as text with portable code */
- if (p->ucSize > 0) {
- unsigned long size = p->ucSize;
-- op->printf(op," Unicode Data, Language code 0x%x, length %lu chars\n",
-+ (op->printf)(op," Unicode Data, Language code 0x%x, length %lu chars\n",
- p->ucLangCode, p->ucSize);
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 75) {
-- op->printf(op,"%04x ",p->ucDesc[i]);
-+ (op->printf)(op,"%04x ",p->ucDesc[i]);
- c += 5;
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- } else {
-- op->printf(op," No Unicode data\n");
-+ (op->printf)(op," No Unicode data\n");
- }
- if (p->scSize > 0) {
- unsigned long size = p->scSize;
-- op->printf(op," ScriptCode Data, Code 0x%x, length %lu chars\n",
-+ (op->printf)(op," ScriptCode Data, Code 0x%x, length %lu chars\n",
- p->scCode, p->scSize);
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 75) {
-- op->printf(op,"%02x ",p->scDesc[i]);
-+ (op->printf)(op,"%02x ",p->scDesc[i]);
- c += 3;
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- } else {
-- op->printf(op," No ScriptCode data\n");
-+ (op->printf)(op," No ScriptCode data\n");
- }
- }
-
-@@ -7879,15 +7879,15 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"DescStruct %u:\n",index);
-+ (op->printf)(op,"DescStruct %u:\n",index);
- if (verb >= 1) {
-- op->printf(op," Dev. Mnfctr. = %s\n",tag2str(p->deviceMfg)); /* ~~~ */
-- op->printf(op," Dev. Model = %s\n",tag2str(p->deviceModel)); /* ~~~ */
-- op->printf(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l));
-- op->printf(op," Dev. Technology = %s\n", string_TechnologySignature(p->technology));
-+ (op->printf)(op," Dev. Mnfctr. = %s\n",tag2str(p->deviceMfg)); /* ~~~ */
-+ (op->printf)(op," Dev. Model = %s\n",tag2str(p->deviceModel)); /* ~~~ */
-+ (op->printf)(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l));
-+ (op->printf)(op," Dev. Technology = %s\n", string_TechnologySignature(p->technology));
- p->device.dump((icmBase *)&p->device, op,verb);
- p->model.dump((icmBase *)&p->model, op,verb);
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
-
-@@ -8068,8 +8068,8 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"ProfileSequenceDesc:\n");
-- op->printf(op," No. elements = %u\n",p->count);
-+ (op->printf)(op,"ProfileSequenceDesc:\n");
-+ (op->printf)(op," No. elements = %u\n",p->count);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->count; i++)
-@@ -8249,8 +8249,8 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Signature\n");
-- op->printf(op," Technology = %s\n", string_TechnologySignature(p->sig));
-+ (op->printf)(op,"Signature\n");
-+ (op->printf)(op," Technology = %s\n", string_TechnologySignature(p->sig));
- }
-
- /* Allocate variable sized data elements */
-@@ -8457,16 +8457,16 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Screening:\n");
-- op->printf(op," Flags = %s\n", string_ScreenEncodings(p->screeningFlag));
-- op->printf(op," No. channels = %u\n",p->channels);
-+ (op->printf)(op,"Screening:\n");
-+ (op->printf)(op," Flags = %s\n", string_ScreenEncodings(p->screeningFlag));
-+ (op->printf)(op," No. channels = %u\n",p->channels);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->channels; i++) {
-- op->printf(op," %lu:\n",i);
-- op->printf(op," Frequency: %f\n",p->data[i].frequency);
-- op->printf(op," Angle: %f\n",p->data[i].angle);
-- op->printf(op," Spot shape: %s\n", string_SpotShape(p->data[i].spotShape));
-+ (op->printf)(op," %lu:\n",i);
-+ (op->printf)(op," Frequency: %f\n",p->data[i].frequency);
-+ (op->printf)(op," Angle: %f\n",p->data[i].angle);
-+ (op->printf)(op," Spot shape: %s\n", string_SpotShape(p->data[i].spotShape));
- }
- }
- }
-@@ -8757,64 +8757,64 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Undercolor Removal Curve & Black Generation:\n");
-+ (op->printf)(op,"Undercolor Removal Curve & Black Generation:\n");
-
- if (p->UCRcount == 0) {
-- op->printf(op," UCR: Not specified\n");
-+ (op->printf)(op," UCR: Not specified\n");
- } else if (p->UCRcount == 1) {
-- op->printf(op," UCR: %f%%\n",p->UCRcurve[0]);
-+ (op->printf)(op," UCR: %f%%\n",p->UCRcurve[0]);
- } else {
-- op->printf(op," UCR curve no. elements = %u\n",p->UCRcount);
-+ (op->printf)(op," UCR curve no. elements = %u\n",p->UCRcount);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->UCRcount; i++)
-- op->printf(op," %3lu: %f\n",i,p->UCRcurve[i]);
-+ (op->printf)(op," %3lu: %f\n",i,p->UCRcurve[i]);
- }
- }
- if (p->BGcount == 0) {
-- op->printf(op," BG: Not specified\n");
-+ (op->printf)(op," BG: Not specified\n");
- } else if (p->BGcount == 1) {
-- op->printf(op," BG: %f%%\n",p->BGcurve[0]);
-+ (op->printf)(op," BG: %f%%\n",p->BGcurve[0]);
- } else {
-- op->printf(op," BG curve no. elements = %u\n",p->BGcount);
-+ (op->printf)(op," BG curve no. elements = %u\n",p->BGcount);
- if (verb >= 2) {
- unsigned long i;
- for (i = 0; i < p->BGcount; i++)
-- op->printf(op," %3lu: %f\n",i,p->BGcurve[i]);
-+ (op->printf)(op," %3lu: %f\n",i,p->BGcurve[i]);
- }
- }
-
- {
- unsigned long i, r, c, size;
-- op->printf(op," Description:\n");
-- op->printf(op," No. chars = %lu\n",p->size);
-+ (op->printf)(op," Description:\n");
-+ (op->printf)(op," No. chars = %lu\n",p->size);
-
- size = p->size > 0 ? p->size-1 : 0;
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 73) {
- if (isprint(p->string[i])) {
-- op->printf(op,"%c",p->string[i]);
-+ (op->printf)(op,"%c",p->string[i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->string[i]);
-+ (op->printf)(op,"\\%03o",p->string[i]);
- c += 4;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
- }
-@@ -9171,37 +9171,37 @@
- return;
-
- if (p->tagType == icmVideoCardGammaTableType) {
-- op->printf(op,"VideoCardGammaTable:\n");
-- op->printf(op," channels = %d\n", p->u.table.channels);
-- op->printf(op," entries = %d\n", p->u.table.entryCount);
-- op->printf(op," entrysize = %d\n", p->u.table.entrySize);
-+ (op->printf)(op,"VideoCardGammaTable:\n");
-+ (op->printf)(op," channels = %d\n", p->u.table.channels);
-+ (op->printf)(op," entries = %d\n", p->u.table.entryCount);
-+ (op->printf)(op," entrysize = %d\n", p->u.table.entrySize);
- if (verb >= 2) {
- /* dump array contents also */
- for (c=0; cu.table.channels; c++) {
-- op->printf(op," channel #%d\n",c);
-+ (op->printf)(op," channel #%d\n",c);
- for (i=0; iu.table.entryCount; i++) {
- if (p->u.table.entrySize == 1) {
-- op->printf(op," %d: %d\n",i,((ORD8 *)p->u.table.data)[c*p->u.table.entryCount+i]);
-+ (op->printf)(op," %d: %d\n",i,((ORD8 *)p->u.table.data)[c*p->u.table.entryCount+i]);
- }
- else if (p->u.table.entrySize == 2) {
-- op->printf(op," %d: %d\n",i,((ORD16 *)p->u.table.data)[c*p->u.table.entryCount+i]);
-+ (op->printf)(op," %d: %d\n",i,((ORD16 *)p->u.table.data)[c*p->u.table.entryCount+i]);
- }
- }
- }
- }
- } else if (p->tagType == icmVideoCardGammaFormulaType) {
-- op->printf(op,"VideoCardGammaFormula:\n");
-- op->printf(op," red gamma = %f\n", p->u.formula.redGamma);
-- op->printf(op," red min = %f\n", p->u.formula.redMin);
-- op->printf(op," red max = %f\n", p->u.formula.redMax);
-- op->printf(op," green gamma = %f\n", p->u.formula.greenGamma);
-- op->printf(op," green min = %f\n", p->u.formula.greenMin);
-- op->printf(op," green max = %f\n", p->u.formula.greenMax);
-- op->printf(op," blue gamma = %f\n", p->u.formula.blueGamma);
-- op->printf(op," blue min = %f\n", p->u.formula.blueMin);
-- op->printf(op," blue max = %f\n", p->u.formula.blueMax);
-+ (op->printf)(op,"VideoCardGammaFormula:\n");
-+ (op->printf)(op," red gamma = %f\n", p->u.formula.redGamma);
-+ (op->printf)(op," red min = %f\n", p->u.formula.redMin);
-+ (op->printf)(op," red max = %f\n", p->u.formula.redMax);
-+ (op->printf)(op," green gamma = %f\n", p->u.formula.greenGamma);
-+ (op->printf)(op," green min = %f\n", p->u.formula.greenMin);
-+ (op->printf)(op," green max = %f\n", p->u.formula.greenMax);
-+ (op->printf)(op," blue gamma = %f\n", p->u.formula.blueGamma);
-+ (op->printf)(op," blue min = %f\n", p->u.formula.blueMin);
-+ (op->printf)(op," blue max = %f\n", p->u.formula.blueMax);
- } else {
-- op->printf(op," Unknown tag format\n");
-+ (op->printf)(op," Unknown tag format\n");
- }
- }
-
-@@ -9484,10 +9484,10 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Viewing Conditions:\n");
-- op->printf(op," XYZ value of illuminant in cd/m^2 = %s\n", string_XYZNumber(&p->illuminant));
-- op->printf(op," XYZ value of surround in cd/m^2 = %s\n", string_XYZNumber(&p->surround));
-- op->printf(op," Illuminant type = %s\n", string_Illuminant(p->stdIlluminant));
-+ (op->printf)(op,"Viewing Conditions:\n");
-+ (op->printf)(op," XYZ value of illuminant in cd/m^2 = %s\n", string_XYZNumber(&p->illuminant));
-+ (op->printf)(op," XYZ value of surround in cd/m^2 = %s\n", string_XYZNumber(&p->surround));
-+ (op->printf)(op," Illuminant type = %s\n", string_Illuminant(p->stdIlluminant));
- }
-
- /* Allocate variable sized data elements */
-@@ -9734,69 +9734,69 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"PostScript Product name and CRD names:\n");
-+ (op->printf)(op,"PostScript Product name and CRD names:\n");
-
-- op->printf(op," Product name:\n");
-- op->printf(op," No. chars = %lu\n",p->ppsize);
-+ (op->printf)(op," Product name:\n");
-+ (op->printf)(op," No. chars = %lu\n",p->ppsize);
-
- size = p->ppsize > 0 ? p->ppsize-1 : 0;
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 73) {
- if (isprint(p->ppname[i])) {
-- op->printf(op,"%c",p->ppname[i]);
-+ (op->printf)(op,"%c",p->ppname[i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->ppname[i]);
-+ (op->printf)(op,"\\%03o",p->ppname[i]);
- c += 4;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
-
- for (t = 0; t < 4; t++) { /* For all 4 intents */
-- op->printf(op," CRD%ld name:\n",t);
-- op->printf(op," No. chars = %lu\n",p->crdsize[t]);
-+ (op->printf)(op," CRD%ld name:\n",t);
-+ (op->printf)(op," No. chars = %lu\n",p->crdsize[t]);
-
- size = p->crdsize[t] > 0 ? p->crdsize[t]-1 : 0;
- i = 0;
- for (r = 1;; r++) { /* count rows */
- if (i >= size) {
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- break;
- }
- if (r > 1 && verb < 2) {
-- op->printf(op,"...\n");
-+ (op->printf)(op,"...\n");
- break; /* Print 1 row if not verbose */
- }
- c = 1;
-- op->printf(op," 0x%04lx: ",i);
-+ (op->printf)(op," 0x%04lx: ",i);
- c += 10;
- while (i < size && c < 73) {
- if (isprint(p->crdname[t][i])) {
-- op->printf(op,"%c",p->crdname[t][i]);
-+ (op->printf)(op,"%c",p->crdname[t][i]);
- c++;
- } else {
-- op->printf(op,"\\%03o",p->crdname[t][i]);
-+ (op->printf)(op,"\\%03o",p->crdname[t][i]);
- c += 4;
- }
- i++;
- }
- if (i < size)
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
- }
-@@ -10108,36 +10108,36 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"Header:\n");
-- op->printf(op," size = %d bytes\n",p->size);
-- op->printf(op," CMM = %s\n",tag2str(p->cmmId));
-- op->printf(op," Version = %d.%d.%d\n",p->majv, p->minv, p->bfv);
-- op->printf(op," Device Class = %s\n", string_ProfileClassSignature(p->deviceClass));
-- op->printf(op," Color Space = %s\n", string_ColorSpaceSignature(p->colorSpace));
-- op->printf(op," Conn. Space = %s\n", string_ColorSpaceSignature(p->pcs));
-- op->printf(op," Date, Time = %s\n", string_DateTimeNumber(&p->date));
-- op->printf(op," Platform = %s\n", string_PlatformSignature(p->platform));
-- op->printf(op," Flags = %s\n", string_ProfileHeaderFlags(p->flags));
-- op->printf(op," Dev. Mnfctr. = %s\n", tag2str(p->manufacturer)); /* ~~~ */
-- op->printf(op," Dev. Model = %s\n", tag2str(p->model)); /* ~~~ */
-- op->printf(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l));
-- op->printf(op," Rndrng Intnt = %s\n", string_RenderingIntent(p->renderingIntent));
-- op->printf(op," Illuminant = %s\n", string_XYZNumber_and_Lab(&p->illuminant));
-- op->printf(op," Creator = %s\n", tag2str(p->creator)); /* ~~~ */
-+ (op->printf)(op,"Header:\n");
-+ (op->printf)(op," size = %d bytes\n",p->size);
-+ (op->printf)(op," CMM = %s\n",tag2str(p->cmmId));
-+ (op->printf)(op," Version = %d.%d.%d\n",p->majv, p->minv, p->bfv);
-+ (op->printf)(op," Device Class = %s\n", string_ProfileClassSignature(p->deviceClass));
-+ (op->printf)(op," Color Space = %s\n", string_ColorSpaceSignature(p->colorSpace));
-+ (op->printf)(op," Conn. Space = %s\n", string_ColorSpaceSignature(p->pcs));
-+ (op->printf)(op," Date, Time = %s\n", string_DateTimeNumber(&p->date));
-+ (op->printf)(op," Platform = %s\n", string_PlatformSignature(p->platform));
-+ (op->printf)(op," Flags = %s\n", string_ProfileHeaderFlags(p->flags));
-+ (op->printf)(op," Dev. Mnfctr. = %s\n", tag2str(p->manufacturer)); /* ~~~ */
-+ (op->printf)(op," Dev. Model = %s\n", tag2str(p->model)); /* ~~~ */
-+ (op->printf)(op," Dev. Attrbts = %s\n", string_DeviceAttributes(p->attributes.l));
-+ (op->printf)(op," Rndrng Intnt = %s\n", string_RenderingIntent(p->renderingIntent));
-+ (op->printf)(op," Illuminant = %s\n", string_XYZNumber_and_Lab(&p->illuminant));
-+ (op->printf)(op," Creator = %s\n", tag2str(p->creator)); /* ~~~ */
- if (p->icp->ver) { /* V4.0+ feature */
- for (i = 0; i < 16; i++) { /* Check if ID has been set */
- if (p->id[i] != 0)
- break;
- }
- if (i < 16)
-- op->printf(op," ID = %02X%02X%02X%02X%02X%02X%02X%02X"
-+ (op->printf)(op," ID = %02X%02X%02X%02X%02X%02X%02X%02X"
- "%02X%02X%02X%02X%02X%02X%02X%02X\n",
- p->id[0], p->id[1], p->id[2], p->id[3], p->id[4], p->id[5], p->id[6], p->id[7],
- p->id[8], p->id[9], p->id[10], p->id[11], p->id[12], p->id[13], p->id[14], p->id[15]);
- else
-- op->printf(op," ID = \n");
-+ (op->printf)(op," ID = \n");
- }
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
-
- static void icmHeader_delete(
-@@ -11420,7 +11420,7 @@
- if (verb <= 0)
- return;
-
-- op->printf(op,"icc:\n");
-+ (op->printf)(op,"icc:\n");
-
- /* Dump the header */
- if (p->header != NULL)
-@@ -11430,21 +11430,21 @@
- for (i = 0; i < p->count; i++) { /* For all the tag element data */
- icmBase *ob;
- int tr;
-- op->printf(op,"tag %d:\n",i);
-- op->printf(op," sig %s\n",tag2str(p->data[i].sig));
-- op->printf(op," type %s\n",tag2str(p->data[i].ttype));
-- op->printf(op," offset %d\n", p->data[i].offset);
-- op->printf(op," size %d\n", p->data[i].size);
-+ (op->printf)(op,"tag %d:\n",i);
-+ (op->printf)(op," sig %s\n",tag2str(p->data[i].sig));
-+ (op->printf)(op," type %s\n",tag2str(p->data[i].ttype));
-+ (op->printf)(op," offset %d\n", p->data[i].offset);
-+ (op->printf)(op," size %d\n", p->data[i].size);
- tr = 0;
- if ((ob = p->data[i].objp) == NULL) {
- /* The object is not loaded, so load it then free it */
- if ((ob = p->read_tag(p, p->data[i].sig)) == NULL) {
-- op->printf(op,"Unable to read: %d, %s\n",p->errc,p->err);
-+ (op->printf)(op,"Unable to read: %d, %s\n",p->errc,p->err);
- }
- tr = 1;
- }
- if (ob != NULL) {
-- /* op->printf(op," refcount %d\n", ob->refcount); */
-+ /* (op->printf)(op," refcount %d\n", ob->refcount); */
- ob->dump(ob,op,verb-1);
-
- if (tr != 0) { /* Cleanup if temporary */
-@@ -11453,7 +11453,7 @@
- p->data[i].objp = NULL;
- }
- }
-- op->printf(op,"\n");
-+ (op->printf)(op,"\n");
- }
- }
-
-diff -uNr Argyll_V1.0.1.orig/icc/iccdump.c Argyll_V1.0.1/icc/iccdump.c
---- Argyll_V1.0.1.orig/icc/iccdump.c 2008-07-14 06:11:23.000000000 +0200
-+++ Argyll_V1.0.1/icc/iccdump.c 2008-07-27 13:38:24.000000000 +0200
-@@ -216,13 +216,13 @@
- else if (rv == 2) {
- icmHeader *p = icco->header;
- printf("Id check fails:\n");
-- op->printf(op," ID is = %02X%02X%02X%02X%02X%02X%02X%02X"
-+ (op->printf)(op," ID is = %02X%02X%02X%02X%02X%02X%02X%02X"
- "%02X%02X%02X%02X%02X%02X%02X%02X\n",
- p->id[0], p->id[1], p->id[2], p->id[3],
- p->id[4], p->id[5], p->id[6], p->id[7],
- p->id[8], p->id[9], p->id[10], p->id[11],
- p->id[12], p->id[13], p->id[14], p->id[15]);
-- op->printf(op," ID should be = %02X%02X%02X%02X%02X%02X%02X%02X"
-+ (op->printf)(op," ID should be = %02X%02X%02X%02X%02X%02X%02X%02X"
- "%02X%02X%02X%02X%02X%02X%02X%02X\n",
- id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7],
- id[8], id[9], id[10], id[11], id[12], id[13], id[14], id[15]);
diff --git a/argyllcms-1.0.2-legal.patch b/argyllcms-1.0.2-legal.patch
new file mode 100644
index 0000000..3c6ea6e
--- /dev/null
+++ b/argyllcms-1.0.2-legal.patch
@@ -0,0 +1,662 @@
+diff -uNr Argyll_V1.0.1.orig/doc/ArgyllDoc.html Argyll_V1.0.1/doc/ArgyllDoc.html
+--- Argyll_V1.0.1.orig/doc/ArgyllDoc.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/ArgyllDoc.html 2008-07-27 11:39:29.000000000 +0200
+@@ -18,7 +18,7 @@
+ Author: Graeme Gill
+ Introduction
+ Argyll is an open source, ICC compatible color management
+-system. It supports accurate ICC profile creation for scanners, CMYK
++system. It supports accurate ICC profile creation for acquisition devices, CMYK
+ printers,
+ film recorders and calibration and profiling of displays.
+ Spectral sample data is supported,
+diff -uNr Argyll_V1.0.1.orig/doc/chartread.html Argyll_V1.0.1/doc/chartread.html
+--- Argyll_V1.0.1.orig/doc/chartread.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/chartread.html 2008-07-27 11:40:27.000000000 +0200
+@@ -206,7 +206,7 @@
+
+ Normally the patch locations are not needed in the
+ output, but if a chart is being read as an input reference (for use in
+-profiling a scanner or a camera), then the patch locations will still
++profiling an acquisition device), then the patch locations will still
+ be needed. The -a flag adds
+ the locations to the output .ti3 file.
+
+diff -uNr Argyll_V1.0.1.orig/doc/colprof.html Argyll_V1.0.1/doc/colprof.html
+--- Argyll_V1.0.1.orig/doc/colprof.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/colprof.html 2008-07-27 11:41:01.000000000 +0200
+@@ -617,8 +617,8 @@
+ absolute value, and any values whiter than that, will not be clipped by
+ the profile. The profile effectively operates in an absolute intent
+ mode, irrespective of what intent is selected when it is used.
+-This flag can be useful when an input profile is needed for using a
+-scanner as a "poor mans" colorimeter, or if the white point of the test
++This flag can be useful when an input profile is needed for using an
++acquisition device as a "poor mans" colorimeter, or if the white point of the test
+ chart doesn't represent the white points of media
+ that will be used in practice, and that white point adjustment will be
+ done individually in some downstream application.
+diff -uNr Argyll_V1.0.1.orig/doc/Installing_Linux.html Argyll_V1.0.1/doc/Installing_Linux.html
+--- Argyll_V1.0.1.orig/doc/Installing_Linux.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/Installing_Linux.html 2008-07-27 11:42:29.000000000 +0200
+@@ -30,7 +30,7 @@
+ variable to give access to the executables from your command line
+ environment.
+ The .tgz file also contains several useful reference files (such as
+-scanner
++acquisition device
+ chart recognition templates, sample illumination spectrum etc.) in the
+ ref sub-directory, as
+ well
+diff -uNr Argyll_V1.0.1.orig/doc/Installing_MSWindows.html Argyll_V1.0.1/doc/Installing_MSWindows.html
+--- Argyll_V1.0.1.orig/doc/Installing_MSWindows.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/Installing_MSWindows.html 2008-07-27 11:42:50.000000000 +0200
+@@ -69,7 +69,7 @@
+
+ The .zip file also contains several useful reference files
+ (such as
+-scanner
++acquisition device
+ chart recognition templates, sample illumination spectrum etc.) in the
+ ref sub-directory, all the current documentation in a doc
+ sub-directory, and instrument USB drivers in the libusbw directory.
+diff -uNr Argyll_V1.0.1.orig/doc/Installing_OSX.html Argyll_V1.0.1/doc/Installing_OSX.html
+--- Argyll_V1.0.1.orig/doc/Installing_OSX.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/Installing_OSX.html 2008-07-27 11:39:58.000000000 +0200
+@@ -30,7 +30,7 @@
+ with how to do this, consult an appropriate tutorial, e.g. <ShellIntro>.
+ The .tgz file also contains several useful reference files (such as
+-scanner chart recognition templates, sample illumination spectrum
++acquisition device chart recognition templates, sample illumination spectrum
+ etc.) in the ref sub-directory, as well as
+ all the current documentation in a doc sub-directory.
+
+diff -uNr Argyll_V1.0.1.orig/doc/Organisation.html Argyll_V1.0.1/doc/Organisation.html
+--- Argyll_V1.0.1.orig/doc/Organisation.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/Organisation.html 2008-07-27 11:36:55.000000000 +0200
+@@ -13,7 +13,7 @@
+ 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
++reading using an Xrite DTP51 or DTP41 colorimeter, or acquisition device for print
+ charts,
+ the Gretag Spectrolino for film charts, or the Xrite DTP92 pr DTP94 for
+ monitor
+diff -uNr Argyll_V1.0.1.orig/doc/printtarg.html Argyll_V1.0.1/doc/printtarg.html
+--- Argyll_V1.0.1.orig/doc/printtarg.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/printtarg.html 2008-07-27 11:36:27.000000000 +0200
+@@ -167,7 +167,7 @@
+ file, and a .ti2 file containing the device test values together with
+ the layout information needed to identify the patch location. This
+ module can also generate the image recognition templates needed to read
+-the print targets in using a scanner.
++the print targets in using an acquisition device.
+
+ The -v flag turns on verbose mode. Prints
+ information about how many patches there are in a row, how many patches
+diff -uNr Argyll_V1.0.1.orig/doc/scanin.html Argyll_V1.0.1/doc/scanin.html
+--- Argyll_V1.0.1.orig/doc/scanin.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/scanin.html 2008-07-27 11:34:18.000000000 +0200
+@@ -23,7 +23,7 @@
+ recogin.cht
+ valin.cie [diag.tif]
+ :- inputs
+-'input.tif', and outputs scanner
++'input.tif', and outputs device
+ 'input.ti3', or
+
+ usage
+ Replace device values in .ti3
+
+-Default is to create a scanner .ti3 file
++Default is to create a device .ti3 file
+ -F x1,y1,x2,y2,x3,y3,x4,y4
+@@ -187,10 +187,10 @@
+ of the chart are visible within the image, and if the image is cropped
+ to exclude the chart edges, it may well not recognize the chart
+ properly. It is designed to cope with a variety of resolutions, and
+-will cope with some degree of noise in the scan (due to screening
++will cope with some degree of noise in the acquisition (due to screening
+ artefacts on the original, or film grain), but it isn't really designed
+ to accept very high resolution input. For anything over 600DPI, you
+-should consider down sampling the scan using a filtering downsample,
++should consider down sampling the image using a filtering downsample,
+ before submitting the file to scanin.
+
+ There are 5 basic modes that scanin operates in.
+@@ -199,7 +199,7 @@
+ assumed to be parsing an input device characterization chart (ie. an
+ IT8.7/2 chart), for the purpose of creating a .ti3 data file containing
+-the CIE test values and the corresponding RGB scanner values. The .ti3 file can then be used for
+ creating
+ an input profile using colprof. The file
+@@ -221,7 +221,7 @@
+ file in
+ this situation, should be a good quality image, perhaps synthetically
+ generated
+-(rather than being scanned), and perfectly oriented, to make
++(rather than being parsed), and perfectly oriented, to make
+ specification
+ of the patch locations easier. The file arguments are: The
+ TIFF file that
+@@ -245,7 +245,7 @@
+ input devices to be used as a crude replacement for a color measuring
+ instrument. The icc profile has
+ (presumably) been
+-created by scanning an IT8.7/2 chart (or similar) through the RGB input
++created with an image of a IT8.7/2 chart (or similar) through the RGB input
+ device,
+ and
+ then using scanin to create the .ti3 file needed to feed to colprof to
+@@ -267,7 +267,7 @@
+ The resulting .ti3 file will have the same base name as the input TIFF
+ file.
+ If there is more than one page in the test chart, then scanin will need
+-to be run multiple times, once for each scan file made from each test
++to be run multiple times, once for each image file made from each test
+ chart. The -ca flag combination should be
+ used
+ for all pages after the first,
+@@ -339,7 +339,7 @@
+
+ By default the automatic chart recognition copes with
+ rotation, scale and stretch in the chart image, making it suitable for
+-charts that have been scanned, or shot squarely with a camera. If a
++charts that have been acquired, or shot squarely with a camera. If a
+ chart has been shot not exactly facing the camera (perhaps to avoid
+ reflection, or to get more even lighting), then it will suffer from
+ perspective distortion as well. The Normally scanin computes an average of the pixel values
+ within a sample square, using a "robust" mean, that discards pixel
+ values that are too far from the average ("outlier" pixel values). This
+-is done in an attempt to discard value that are due to scanning
++is done in an attempt to discard value that are due to acquisition
+ artefacts such as dust, scratches etc. You can force scanin to return
+ the true mean values for the sample squares that includes all the pixel
+ values, by using the -m flag.
+@@ -357,9 +357,9 @@
+ Normally scanin has reasonably robust feature
+ recognition, but the default assumption is that the input chart has an
+ approximately even visual distribution of patch values, and has been
+-scanned and converted to a typical gamma 2.2 corrected image, meaning
++acquired and converted to a typical gamma 2.2 corrected image, meaning
+ that the average patch pixel value is expected to be about 50%. If this
+-is not the case (for instance if the input chart has been scanned with
++is not the case (for instance if the input chart has been processed with
+ linear light or "raw" encoding), then it may enhance the image
+ recognition to provide the approximate gamma encoding of the image. For
+ instance, if linear light encoding ("Raw") is used, a Installing a
+ display profile
+
++Profiling Acquisition Devices
+
+-
+-
++
++
+
+
+
+
++using an acquisition device
+
+
+@@ -353,14 +353,14 @@
+ the connected display.
+
+
+-Profiling Scanners
+-Because a scanner is an input device, it is necessary to go about
++Profiling Acquisition Devices
++Because a acquisition device is an input device, it is necessary to go about
+ profiling it in quite a different way to an output device. To profile
+-it, a test chart is needed to exercise the scanner response, to which
++it, a test chart is needed to exercise the device response, to which
+ the CIE values for each test patch is known. Generally standard
+ reflection or transparency test charts are used for this purpose.
+ Types of test charts
+-The most common and popular test chart for scanner profiling is the
++The most common and popular test chart for acquisiton device profiling is the
+ IT8.7/2 chart. This is a standard format chart generally reproduced on
+ photographic film, containing about 264 test patches. The Kodak Q-60
+ Color Input Target is a typical example:
+@@ -400,18 +400,18 @@
+
+
+-Taking readings from a scanner
+-The test chart you are using needs to be placed on the scanner, and the
+-scanner needs to be configured to a suitable state, and restored to
++Taking readings from an acquisition device
++The test chart you are using needs to be exposed to the device, and the
++acquisition device needs to be configured to a suitable state, and restored to
+ that
+ same state when used subsequently with the resulting profile. The chart
+ should
+ be scanned, and saved to a TIFF format file. I will assume the
+ resulting
+-file is called scanner.tif. The raster file need only be roughly
++file is called device.tif. The raster file need only be roughly
+ cropped so as to contain the test chart (including the charts edges).
+
+-The second step is to extract the RGB values from the scanner.tif file,
++The second step is to extract the RGB values from the device.tif file,
+ and match then to the reference CIE values.
+ To locate the patch values in the scan, the scanin utility
+ needs to
+@@ -485,32 +485,32 @@
+ chart recognition template file will need to be created (this is beyond
+ the scope of the current documentation).
+
+-To create the scanner .ti3 file, run the scanin utility as
++To create the device .ti3 file, run the scanin utility as
+ follows
+ (assuming an IT8 chart is being used):
+
+- scanin -v scanner.tif It8.cht It8ref.txt
++ scanin -v device.tif It8.cht It8ref.txt
+
+ "It8ref.txt" is assumed to be the name of the CIE reference file
+-supplied by the chart manufacturer. The resulting file will be named "scanner.ti3".
++supplied by the chart manufacturer. The resulting file will be named "device.ti3".
+
+ scanin will process 16 bit per
+-component .tiff files, which (if the scanner is capable of creating
++component .tiff files, which (if the device is capable of creating
+ such files), may improve the quality of the profile.
+
+ If you have any doubts about the correctness of the chart recognition,
+ or the subsequent profile's delta E report is unusual, then use the
+ scanin diagnostic flags -dipn and examine
+ the diag.tif diagnostic file.
+-Creating a scanner profile
+-Similar to a display profile, a scanner profile can be either a
+-shaper/matrix or LUT based profile. Well behaved scanners will
++Creating an acquisition device profile
++Similar to a display profile, an acquisition device profile can be either a
++shaper/matrix or LUT based profile. Well behaved devices will
+ probably give the best results
+ with a shaper/matrix profile, but if the fit is poor, consider using a
+ LUT
+ type profile.
+
+-If the purpose of the scanner profile is to use it as a substitute for
++If the purpose of the device profile is to use it as a substitute for
+ a
+ colorimeter, then the -u flag should be used to avoid clipping
+ values above the white point. Unless the shaper/matrix type profile is
+@@ -520,24 +520,24 @@
+ To create a matrix/shaper profile, the following suffices:
+
+ colprof -v -D"Scanner A" -D"Device A" -qm -as
+-scanner
++device
+
+ For a LUT based profile then the following would be used:
+
+ colprof -v -D"Scanner A"
++ href="colprof.html#E">-D"Device A"
+ -qm
+-scanner
++device
+
+ For the purposes of a poor mans colorimeter, the following would
+ generally be used:
+
+ colprof -v -D"Scanner A"
++ href="colprof.html#E">-D"Device A"
+ -qm -u
+-scanner
++device
+
+ Make sure you check the delta E report at the end of the profile
+ creation, to see if the profile is behaving reasonably.
+@@ -703,7 +703,7 @@
+ -ii1 -pA4
+ PrinterA
+
+-For using with a scanner as a colorimeter, the Gretag Spectroscan
++For using with an acquisition device as a colorimeter, the Gretag Spectroscan
+ layout is suitable, but the -s flag
+ should be used so as to generate a layout suitable for scan
+ recognition, as well as generating the scan recognition template
+@@ -804,28 +804,27 @@
+ for each type of instrument. Continue with Creating
+ a printer profile.
+
+-Reading a print test chart using a scanner or
+-camera
++Reading a print test chart using an acquisition device
+
+
+-Argyll supports using a scanner or even a camera as a substitute for a
++Argyll supports using any acquisition device as a substitute for a
+ colorimeter.
+-While a scanner or camera is no replacement for a color measurement
++While most are no replacement for a color measurement
+ instrument, it may give acceptable results in some situations, and may
+ give better results than a generic profile for a printing device.
+
+-The main limitation of the scanner-as-colorimeter approach are:
++The main limitation of the any-device-as-colorimeter approach are:
+
+-* The scanner dynamic range and/or precision may not match the printers
++* The acquisition device dynamic range and/or precision may not match the printers
+ or what is required for a good profile.
+-* The spectral interaction of the scanner test chart and printer test
+-chart with the scanner
++* The spectral interaction of the device test chart and printer test
++chart with the device
+ spectral response can cause color errors.
+ * Spectral differences caused by different black amounts in the print
+ test chart can cause
+ color errors.
+ * The IT8 chart gamut may be so much smaller than the printers that the
+-scanner profile is too inaccurate.
++acquisition device profile is too inaccurate.
+
+ As well as some of the above, a camera may not be suitable if it
+ automatically adjusts exposure or white point when taking a picture,
+@@ -834,23 +833,23 @@
+ The end result is often a profile that has a slight color cast to,
+ compared to a profile created using a colorimeter or spectrometer..
+
+-It is assumed that you have created a scanner or camera profile
++It is assumed that you have created an acquisition device profile
+ following the procedure
+ outline above. For best possible results it
+-is advisable to both profile the scanner or camera, and use it in
++is advisable to both profile the acquisition device, and use it in
+ scanning the
+ printed test chart, in as "raw" mode as possible (i.e. using 16 bits
+-per component images, if the scanner or camera is
++per component images, if the acquisition device is
+ capable of doing so; not setting white or black points, using a fixed
+ exposure etc.). It is
+ generally advisable to create a LUT type input profile, and use the -u flag to
+ avoid clipping scanned value whiter than the input calibration chart.
+
+-Scan or photograph your printer chart (or charts) on the scanner or
+-camera previously profiled.
++Scan or photograph your printer chart (or charts) on the acquisition device
++previously profiled.
+ The
+-scanner or camera must be configured and used exactly the same as it
++acquisition device must be configured and used exactly the same as it
+ was when it
+ was profiled.
+
+@@ -858,21 +857,21 @@
+ style="font-weight: bold;">PrinterB.tif
(or PrinterB1.tif, PrinterB2.tif etc. in the case of
+-multiple charts). As with profiling the scanner or camera, the raster
++multiple charts). As with profiling the acquisition device, the raster
+ file need
+ only be roughly cropped so as to contain the test chart.
+
+-The scanner recognition files
++The acquisition device recognition files
+ created when printtarg was run
+ is assumed to be called PrinterB.cht.
+-Using the scanner profile created previously (assumed to be called scanner.icm), the printer test chart
++Using the device profile created previously (assumed to be called device.icm), the printer test chart
+ scan patches are converted to CIE values using the scanin utility:
+
+ scanin -v -c PrinterB.tif
+-PrinterB.cht scanner.icm
++PrinterB.cht device.icm
+ PrinterB
+
+ If there were multiple test chart pages, the results would be
+@@ -881,15 +880,15 @@
+
+ scanin -v -c PrinterB1.tif
+-PrinterB1.cht scanner.icm
++PrinterB1.cht device.icm
+ PrinterB
+ scanin -v -ca PrinterB2.tif
+-PrinterB2.cht scanner.icm
++PrinterB2.cht device.icm
+ PrinterB
+ scanin -v -ca PrinterB3.tif
+-PrinterB3.cht scanner.icm
++PrinterB3.cht device.icm
+ PrinterB
+
+ Now that the PrinterB.ti3 data
+diff -uNr Argyll_V1.0.1.orig/doc/targen.html Argyll_V1.0.1/doc/targen.html
+--- Argyll_V1.0.1.orig/doc/targen.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/targen.html 2008-07-27 11:53:34.000000000 +0200
+@@ -615,7 +615,7 @@
+ 3 x Letter 1386
+ 4 x Letter 1848
+
+- Scanner (printtarg with -iSS -s options):
++ Acquisition device (printtarg with -iSS -s options):
+
+ 1 x A4R 1014
+ 2 x A4R 2028
+diff -uNr Argyll_V1.0.1.orig/doc/ti3_format.html Argyll_V1.0.1/doc/ti3_format.html
+--- Argyll_V1.0.1.orig/doc/ti3_format.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/ti3_format.html 2008-07-27 11:42:04.000000000 +0200
+@@ -173,7 +173,7 @@
+ or "RGB_LAB" for an RGB printer
+ or display, "CMYK_XYZ" for a
+ printer, "XYZ_RGB" for an RGB
+-scanner.
++acquisition device.
+
+ If spectral values are going to be included in the file, the following
+ keywords and values shall be used:
+diff -uNr Argyll_V1.0.1.orig/doc/ucmm.html Argyll_V1.0.1/doc/ucmm.html
+--- Argyll_V1.0.1.orig/doc/ucmm.html 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/doc/ucmm.html 2008-07-27 11:41:27.000000000 +0200
+@@ -13,7 +13,7 @@
+ designed just to handle the necessary configuration needed to track the
+ installation and association of ICC profiles with Unix/Linux X11
+ displays. It could be expanded at some point to also hold the
+-associations for other devices such as scanner and printers.
++associations for other devices such as acquisition devices and printers.
+
+ It consists primarily of a small configuration database that associates
+ a display monitor (identified by its EDID or the X11 display name if an
+diff -uNr Argyll_V1.0.1.orig/log.txt Argyll_V1.0.1/log.txt
+--- Argyll_V1.0.1.orig/log.txt 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/log.txt 2008-07-27 11:35:38.000000000 +0200
+@@ -1648,7 +1648,7 @@
+
+ * Added shaper/matrix input profile support.
+ (profile/profin.c, xicc/xmatrix.c)
+- This may be more accurate for scanner profiles,
++ This may be more accurate for device profiles,
+ given the poor coverage of test points provided
+ by an IT8 chart (but doesn't appear to be in practice).
+
+@@ -1659,7 +1659,7 @@
+
+ * 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
++ profile for the device, to be able to measure
+ color for printer calibration. This
+ new mode handles multi-page test charts.
+
+@@ -1689,13 +1689,13 @@
+ 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.
++ devices, as well as device 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.
++ as well as preview colors and device recognition templates.
+
+ * Create a new test point creation module,
+ target/simplat.c, to create higher dimentional,
+@@ -1793,7 +1793,7 @@
+
+ * Added preliminary support in printtarg for the SpectroScan
+ spectrodensitometer. Also added preliminary support for
+- scanner recognisable test charts.
++ device recognisable test charts.
+
+ * Added option to icclink to turn off the use of linearisation
+ curves in the output link, since this sometimes seems to
+@@ -1960,7 +1960,7 @@
+ Cleaned up build automation somewhat.
+
+ Added RGB output device profile generation support.
+- Added RGB scanner device profile generation support.
++ Added RGB device profile generation support.
+
+ Added a couple of spectrometer conversion utilities for
+ raw data files from other CMSs.
+diff -uNr Argyll_V1.0.1.orig/profile/profcheck.c Argyll_V1.0.1/profile/profcheck.c
+--- Argyll_V1.0.1.orig/profile/profcheck.c 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/profile/profcheck.c 2008-07-27 11:54:01.000000000 +0200
+@@ -360,7 +360,7 @@
+ devchan = 3;
+ isLab = 1;
+ isAdditive = 1;
+- /* Scanner .ti3 files: */
++ /* Acquisition Device .ti3 files: */
+ } else if (strcmp(icg->t[0].kdata[ti],"XYZ_RGB") == 0) {
+ devspace = icSigRgbData;
+ devchan = 3;
+diff -uNr Argyll_V1.0.1.orig/profile/profin.c Argyll_V1.0.1/profile/profin.c
+--- Argyll_V1.0.1.orig/profile/profin.c 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/profile/profin.c 2008-07-27 11:53:08.000000000 +0200
+@@ -49,7 +49,7 @@
+ /*
+ Basic algorithm outline:
+
+- Scanner:
++ Acquisition Device:
+
+ Figure out the input curves to give
+ the flattest grid.
+diff -uNr Argyll_V1.0.1.orig/scanin/scanin.c Argyll_V1.0.1/scanin/scanin.c
+--- Argyll_V1.0.1.orig/scanin/scanin.c 2008-07-27 11:18:53.000000000 +0200
++++ Argyll_V1.0.1/scanin/scanin.c 2008-07-27 11:26:37.000000000 +0200
+@@ -2,7 +2,7 @@
+ /*
+ * Argyll Color Correction System
+ *
+- * Scanin: Input the scan of a test chart, and output cgats data
++ * Scanin: Input the image of a test chart, and output cgats data
+ * Uses scanrd to do the hard work.
+ *
+ * Author: Graeme W. Gill
+@@ -72,7 +72,7 @@
+ fprintf(stderr,"Author: Graeme W. Gill, licensed under the GPL Version 3\n");
+ fprintf(stderr,"\n");
+ fprintf(stderr,"usage: scanin [options] input.tif recogin.cht valin.cie [diag.tif]\n");
+- fprintf(stderr," :- inputs 'input.tif' and outputs scanner 'input.ti3', or\n");
++ fprintf(stderr," :- inputs 'input.tif' and outputs device 'input.ti3', or\n");
+ fprintf(stderr,"\n");
+ fprintf(stderr,"usage: scanin -g [options] input.tif recogout.cht [diag.tif]\n");
+ fprintf(stderr," :- outputs file 'recogout.cht', or\n");
+@@ -92,7 +92,7 @@
+ fprintf(stderr," -ca Same as -c, but accumulates more values to .ti3\n");
+ fprintf(stderr," from subsequent pages\n");
+ fprintf(stderr," -r Replace device values in .ti2/.ti3\n");
+- fprintf(stderr," Default is to create a scanner .ti3 file\n");
++ fprintf(stderr," Default is to create a device .ti3 file\n");
+ fprintf(stderr," -F x1,y1,x2,y2,x3,y3,x4,y4\n");
+ fprintf(stderr," Don't auto recognize, locate using four fiducual marks\n");
+ fprintf(stderr," -p Compensate for perspective distortion\n");
+@@ -127,12 +127,12 @@
+ static char datin_name[200] = { 0 }; /* Data input name (.cie/.q60) */
+ static char datout_name[200] = { 0 }; /* Data output name (.ti3/.val) */
+ static char recog_name[200] = { 0 }; /* Reference chart name (.cht) */
+- static char prof_name[200] = { 0 }; /* scanner profile name (.cht) */
++ static char prof_name[200] = { 0 }; /* device profile name (.cht) */
+ static char diag_name[200] = { 0 }; /* Diagnostic Output (.tif) name, if used */
+ int verb = 1;
+ int tmean = 0; /* Return true mean, rather than robust mean */
+ int repl = 0; /* Replace .ti3 device values from raster file */
+- int outo = 0; /* Output the values read, rather than creating scanner .ti3 */
++ int outo = 0; /* Output the values read, rather than creating device .ti3 */
+ int colm = 0; /* Use inage values to measure color for print profile. > 1 == append */
+ int flags = SI_GENERAL_ROT; /* Default allow all rotations */
+
+@@ -153,7 +153,7 @@
+ scanrd *sr; /* Scanrd object */
+ int err;
+ char *errm;
+- int pnotscan = 0; /* Number of patches that wern't scanned */
++ int pnotscan = 0; /* Number of patches that weren't processed */
+
+ if (argc <= 1)
+ usage();
+diff -uNr Argyll_V1.0.1.orig/target/printtarg.c Argyll_V1.0.1/target/printtarg.c
+--- Argyll_V1.0.1.orig/target/printtarg.c 2008-07-27 11:18:52.000000000 +0200
++++ Argyll_V1.0.1/target/printtarg.c 2008-07-27 11:37:20.000000000 +0200
+@@ -3252,7 +3252,7 @@
+ }
+
+ /******************************************************************/
+-/* Edge tracking support, for generating the scanner image */
++/* Edge tracking support, for generating the device image */
+ /* recognition reference chart file. */
+
+ /* Establish width and height to convert between topleft and */
+diff -uNr Argyll_V1.0.1.orig/ttbd.txt Argyll_V1.0.1/ttbd.txt
+--- Argyll_V1.0.1.orig/ttbd.txt 2008-07-27 11:18:54.000000000 +0200
++++ Argyll_V1.0.1/ttbd.txt 2008-07-27 11:54:46.000000000 +0200
+@@ -123,7 +123,7 @@
+
+ * Should create a .ti2 template file for some standard charts,
+ such as an IT8.7/3, ECI2002 random and non-random etc.
+- Scanner recognition files too ??
++ Device recognition files too ??
+
+ * Add an option to targen, that allows generation of
+ test points down the neutral axis (how does this work
+@@ -293,7 +293,7 @@
+ patch variance is too high (probable faulty read).
+
+ * Add spectral fix options to scanin code to allow compensation
+- for scanner and media errors when using a scanned image to
++ for device and media errors when using an acquired image to
+ measure color.
+ This means figuring out how it will work, as well as creating
+ to tools to create the spectral fix data (or just add general
diff --git a/argyllcms.spec b/argyllcms.spec
index c13233e..784054b 100644
--- a/argyllcms.spec
+++ b/argyllcms.spec
@@ -4,7 +4,7 @@
%define archivename Argyll_V%{version}%{?alphaversion}_src.zip
Name: argyllcms
-Version: 1.0.1
+Version: 1.0.2
Release: 1%{?alphatag}%{?dist}
Summary: ICC compatible color management system
@@ -15,14 +15,11 @@ URL: http://www.%{name}.com/
Source0: %{url}%{archivename}
Source1: %{name}-1.0.1-19-color.fdi
Source2: %{name}-0.70-color-device-file.policy
-Patch0: %{url}V%{version}_patches.txt
# Many thanks to Alastair M. Robinson!
Patch1: http://www.blackfiveservices.co.uk/Argyll_V1.0.1_autotools.patch.gz
Patch2: %{name}-1.0.1-remove-libusb-fork-check.patch
-# Patch by Stefan Brüns, bz421921#c18
-Patch3: %{name}-1.0.1-printf.patch
# Patch applied for legal reasons
-Patch4: %{name}-1.0.1-legal.patch
+Patch4: %{name}-1.0.2-legal.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: libtiff-devel, libusb-devel
@@ -63,14 +60,10 @@ This package contains the Argyll color management system documentation.
%prep
%setup -q -n Argyll_V%{version}
-# Post-release fixes
-%patch0 -p1 -b .fix
# Autotools support
%patch1 -p1 -b .auto
# Use the system libusb. If there is a ***REPORTED*** problem the distro will fix it
%patch2 -p1 -b .sysusb
-# Printf fixes
-%patch3 -p1 -b .printf
# Legal patch required
%patch4 -p1 -b .legal
@@ -120,6 +113,10 @@ rm -rf %{buildroot}
%changelog
+* Mon Sep 1 2008 Nicolas Mailhot
+- 1.0.2-1
+ᾢ Bugfix release
+
* Sun Jul 27 2008 Nicolas Mailhot
- 1.0.1-1
☻ Lots of workarounds dropped — Argyll continues progressing towards “normal
diff --git a/import.log b/import.log
index 25e34de..43cf798 100644
--- a/import.log
+++ b/import.log
@@ -1 +1,2 @@
argyllcms-1_0_1-1_fc10_nim:HEAD:argyllcms-1.0.1-1.fc10.nim.src.rpm:1217165503
+argyllcms-1_0_2-1_fc10:HEAD:argyllcms-1.0.2-1.fc10.src.rpm:1220272108
diff --git a/sources b/sources
index 9b48382..b4996c3 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
cdb94385421c2fae1cf6fb068069cd9e Argyll_V1.0.1_autotools.patch.gz
-e9f32b852b49ffcf28b854cecab00e67 Argyll_V1.0.1_src.zip
+fd56b470873cbca980a37836adc41095 Argyll_V1.0.2_src.zip