forked from pool/argyllcms
Accepting request 99876 from multimedia:photo
let's move argyllcms there, so we could use this project as devel repository for factory submission OBS-URL: https://build.opensuse.org/request/show/99876 OBS-URL: https://build.opensuse.org/package/show/multimedia:color_management/argyllcms?expand=0&rev=1
This commit is contained in:
commit
bd101b881b
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
92
19-color.fdi
Normal file
92
19-color.fdi
Normal file
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<deviceinfo version="0.2">
|
||||
<!-- This file normally lives at "/usr/share/hal/fdi/policy/10osvendor/19-color.fdi" -->
|
||||
<!-- Color meter devices known to Argyll CMS
|
||||
FDI creation: Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
with input from David Zeuthen and Frdric Crozat,
|
||||
maintained by Graeme Gill.
|
||||
-->
|
||||
<device>
|
||||
<!-- Serial Connected Color Instruments -->
|
||||
<match key="serial.device" exists="true">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- HCFR association -->
|
||||
<match key="usb_device.vendor_id" int="0x04DB">
|
||||
<!-- Display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0x005B">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
</match>
|
||||
<!-- MonacoOPTIX -->
|
||||
<match key="usb_device.vendor_id" int="0x0670">
|
||||
<!-- Eye-One Display 1 - display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0x0001">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
</match>
|
||||
<!-- X-Rite -->
|
||||
<match key="usb_device.vendor_id" int="0x0765">
|
||||
<!-- DTP20 "Pulse" - "swipe" type reflective spectrometer, that can be used un-tethered. -->
|
||||
<match key="usb_device.product_id" int="0xd020">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- DTP92Q - CRT display colorimeter. (Not tested) -->
|
||||
<match key="usb_device.product_id" int="0xd092">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- DTP94 "Optix XR" or "Optix XR2" - display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0xd094">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
</match>
|
||||
<!-- ColorVision -->
|
||||
<match key="usb_device.vendor_id" int="0x085C">
|
||||
<!-- Spyder 2 - display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0x0200">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
</match>
|
||||
<!-- Gretag-Macbeth -->
|
||||
<match key="usb_device.vendor_id" int="0x0971">
|
||||
<!-- Eye-One Monitor - spot emissive spectrometer -->
|
||||
<match key="usb_device.product_id" int="0x2001">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- Eye-One Pro - spot and "swipe" reflective/emissive spectrometer -->
|
||||
<match key="usb_device.product_id" int="0x2000">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- Eye-One Display - display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0x2003">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
<!-- Huey - display colorimeter -->
|
||||
<match key="usb_device.product_id" int="0x2005">
|
||||
<append key="info.capabilities" type="strlist">access_control</append>
|
||||
<merge key="access_control.type" type="string">color</merge>
|
||||
<merge key="access_control.file" type="copy_property">linux.device_file</merge>
|
||||
</match>
|
||||
</match>
|
||||
</device>
|
||||
</deviceinfo>
|
1208
Argyll_V1.3.0_autotools.patch
Normal file
1208
Argyll_V1.3.0_autotools.patch
Normal file
File diff suppressed because it is too large
Load Diff
57
Argyll_V1.3.5_autotools.patch
Normal file
57
Argyll_V1.3.5_autotools.patch
Normal file
@ -0,0 +1,57 @@
|
||||
diff -wruN ../orig-Argyll_V1.3.5/profile/Makefile.am ./profile/Makefile.am
|
||||
--- ../orig-Argyll_V1.3.5/profile/Makefile.am 2012-01-11 20:53:56.448041068 +0100
|
||||
+++ ./profile/Makefile.am 2012-01-11 21:43:19.152803748 +0100
|
||||
@@ -11,8 +11,8 @@
|
||||
../numlib/libargyllnum.la ../spectro/libinsttypes.la \
|
||||
../xicc/libxutils.la ../libargyll.la
|
||||
|
||||
-LDADD = ./libprof.la ../xicc/libxutils.la ../spectro/libinst.la \
|
||||
- ../xicc/libxicc.la ../spectro/libinsttypes.la \
|
||||
+LDADD = ./libprof.la ../xicc/libxutils.la ../xicc/libxicc.la \
|
||||
+ ../spectro/libinst.la ../spectro/libinsttypes.la \
|
||||
../gamut/libgamut.la ../gamut/libgammap.la ../plot/libvrml.la \
|
||||
../plot/libplot.la ../rspl/librspl.la \
|
||||
../numlib/libargyllnum.la $(ICC_LIBS) ../cgats/libcgats.la \
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/Makefile.am ./spectro/Makefile.am
|
||||
--- ../orig-Argyll_V1.3.5/spectro/Makefile.am 2012-01-11 20:53:56.448041068 +0100
|
||||
+++ ./spectro/Makefile.am 2012-01-11 21:51:16.265039580 +0100
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
libinst_la_SOURCES = inst.h inst.c insttypes.c dtp20.c dtp20.h dtp22.c \
|
||||
dtp22.h dtp41.c dtp41.h dtp51.c dtp51.h dtp92.c dtp92.h \
|
||||
+ i1d3.c i1d3.h \
|
||||
+ colorhug.c colorhug.h \
|
||||
i1disp.c i1disp.h i1pro.c i1pro.h i1pro_imp.c i1pro_imp.h \
|
||||
munki.c munki_imp.c ss.c ss.h ss_imp.c ss_imp.h hcfr.c hcfr.h \
|
||||
spyd2.c spyd2.h spyd2setup.h spyd2PLD.h huey.c huey.h unixio.c \
|
||||
@@ -33,7 +35,7 @@
|
||||
../libargyllusb.la ../libargyll.la
|
||||
|
||||
bin_PROGRAMS = synthcal dispwin dispread dispcal fakeread synthread \
|
||||
- chartread spotread illumread ccmxmake spec2cie average spyd2en
|
||||
+ chartread spotread illumread ccxxmake spec2cie average spyd2en
|
||||
|
||||
dispwin_CFLAGS = $(AM_CFLAGS) -DSTANDALONE_TEST
|
||||
|
||||
diff -wruN ../orig-Argyll_V1.3.5/target/Makefile.am ./target/Makefile.am
|
||||
--- ../orig-Argyll_V1.3.5/target/Makefile.am 2012-01-11 20:53:56.448041068 +0100
|
||||
+++ ./target/Makefile.am 2012-01-11 21:19:48.114575843 +0100
|
||||
@@ -11,6 +11,7 @@
|
||||
$(ICC_LIBS) ../render/librender.la ../cgats/libcgats.la \
|
||||
../xicc/libxicc.la ../gamut/libgamut.la \
|
||||
../spectro/libinsttypes.la ../spectro/libconv.la \
|
||||
+ ../spectro/libinst.la \
|
||||
../numlib/libargyllnum.la $(TIFF_LIBS)
|
||||
|
||||
bin_PROGRAMS = targen printtarg
|
||||
diff -wruN ../orig-Argyll_V1.3.5/xicc/Makefile.am ./xicc/Makefile.am
|
||||
--- ../orig-Argyll_V1.3.5/xicc/Makefile.am 2012-01-11 20:53:56.448041068 +0100
|
||||
+++ ./xicc/Makefile.am 2012-01-11 20:53:22.997984221 +0100
|
||||
@@ -8,6 +8,7 @@
|
||||
libxicc_la_SOURCES = xicc.h xicc.c xlutfix.c xspect.c xspect.h xsep.c \
|
||||
xsep.h xdevlin.c xdevlin.h xcam.c xcam.h cam97s3.c cam97s3.h \
|
||||
cam02.c cam02.h mpp.c ccmx.c xfit.c xfit.h moncurve.c \
|
||||
+ ccss.h ccss.c \
|
||||
moncurve.h mpp.h xdgb.c
|
||||
libxicc_la_LIBADD = $(ICC_LIBS) ../gamut/libgamut.la \
|
||||
../numlib/libargyllnum.la ../spectro/libinsttypes.la \
|
3
Argyll_V1.3.5_src.zip
Normal file
3
Argyll_V1.3.5_src.zip
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:905dc6b5493e02eee76ef7384d619d1135704650a14d27b13c549002a1d9908c
|
||||
size 12892085
|
959
ColorHug-sensor-driver.patch
Normal file
959
ColorHug-sensor-driver.patch
Normal file
@ -0,0 +1,959 @@
|
||||
diff -wruN ../orig-Argyll_V1.3.5/libusb1/55-Argyll.rules ./libusb1/55-Argyll.rules
|
||||
--- ../orig-Argyll_V1.3.5/libusb1/55-Argyll.rules 2012-01-11 21:54:38.365302389 +0100
|
||||
+++ ./libusb1/55-Argyll.rules 2012-01-11 21:56:39.478274483 +0100
|
||||
@@ -46,6 +46,9 @@
|
||||
# Huey
|
||||
ATTRS{idVendor}=="0971", ATTRS{idProduct}=="2005", ENV{COLOR_MEASUREMENT_DEVICE}="1"
|
||||
|
||||
+# ColorHug
|
||||
+ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="f8dA", ENV{COLOR_MEASUREMENT_DEVICE}="1"
|
||||
+
|
||||
# Set ID_VENDOR and ID_MODEL acording to VID and PID
|
||||
IMPORT{program}="usb-db %p"
|
||||
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/afiles ./spectro/afiles
|
||||
--- ../orig-Argyll_V1.3.5/spectro/afiles 2011-10-24 14:10:26.000000000 +0200
|
||||
+++ ./spectro/afiles 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -60,6 +60,8 @@
|
||||
LzmaDec.c
|
||||
huey.c
|
||||
huey.h
|
||||
+colorhug.c
|
||||
+colorhug.h
|
||||
spec2cie.c
|
||||
average.c
|
||||
conv.h
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/colorhug.c ./spectro/colorhug.c
|
||||
--- ../orig-Argyll_V1.3.5/spectro/colorhug.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./spectro/colorhug.c 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -0,0 +1,752 @@
|
||||
+/*
|
||||
+ * Argyll Color Correction System
|
||||
+ *
|
||||
+ * Hughski ColorHug related functions
|
||||
+ *
|
||||
+ * Author: Richard Hughes
|
||||
+ * Date: 30/11/2011
|
||||
+ *
|
||||
+ * Copyright 2006 - 2007, Graeme W. Gill
|
||||
+ * Copyright 2011, Richard Hughes
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * (Based on huey.c)
|
||||
+ *
|
||||
+ * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :-
|
||||
+ * see the License2.txt file for licencing details.
|
||||
+ */
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <ctype.h>
|
||||
+#include <string.h>
|
||||
+#include <time.h>
|
||||
+#include <stdarg.h>
|
||||
+#include <math.h>
|
||||
+#ifndef SALONEINSTLIB
|
||||
+#include "copyright.h"
|
||||
+#include "aconfig.h"
|
||||
+#include "numlib.h"
|
||||
+#else /* SALONEINSTLIB */
|
||||
+#include "sa_config.h"
|
||||
+#include "numsup.h"
|
||||
+#endif /* SALONEINSTLIB */
|
||||
+#include "xspect.h"
|
||||
+#include "insttypes.h"
|
||||
+#include "icoms.h"
|
||||
+#include "conv.h"
|
||||
+#include "colorhug.h"
|
||||
+
|
||||
+static inst_code colorhug_interp_code(inst *pp, int ec);
|
||||
+
|
||||
+/* Interpret an icoms error into a ColorHug error */
|
||||
+static int icoms2colorhug_err(int se) {
|
||||
+ if (se & ICOM_USERM) {
|
||||
+ se &= ICOM_USERM;
|
||||
+ if (se == ICOM_USER)
|
||||
+ return COLORHUG_USER_ABORT;
|
||||
+ if (se == ICOM_TERM)
|
||||
+ return COLORHUG_USER_TERM;
|
||||
+ if (se == ICOM_TRIG)
|
||||
+ return COLORHUG_USER_TRIG;
|
||||
+ if (se == ICOM_CMND)
|
||||
+ return COLORHUG_USER_CMND;
|
||||
+ }
|
||||
+ if (se != ICOM_OK)
|
||||
+ return COLORHUG_COMS_FAIL;
|
||||
+ return COLORHUG_OK;
|
||||
+}
|
||||
+
|
||||
+/* ColorHug commands that we care about */
|
||||
+typedef enum {
|
||||
+ ch_set_mult = 0x04, /* Set multiplier value */
|
||||
+ ch_set_integral = 0x06, /* Set integral time */
|
||||
+ ch_get_serial = 0x0b, /* Gets the serial number */
|
||||
+ ch_set_leds = 0x0e, /* Sets the LEDs */
|
||||
+ ch_take_reading = 0x23 /* Takes an XYZ reading */
|
||||
+} ColorHugCmd;
|
||||
+
|
||||
+/* Diagnostic - return a description given the instruction code */
|
||||
+static char *inst_desc(int cc) {
|
||||
+ static char buf[40];
|
||||
+ switch(cc) {
|
||||
+ case 0x04:
|
||||
+ return "SetMultiplier";
|
||||
+ case 0x06:
|
||||
+ return "SetIntegral";
|
||||
+ case 0x0b:
|
||||
+ return "GetSerial";
|
||||
+ case 0x0e:
|
||||
+ return "SetLeds";
|
||||
+ case 0x23:
|
||||
+ return "TakeReadingXYZ";
|
||||
+ }
|
||||
+ sprintf(buf,"Unknown %02x",cc);
|
||||
+ return buf;
|
||||
+}
|
||||
+
|
||||
+/* Error codes interpretation */
|
||||
+static char *
|
||||
+colorhug_interp_error(inst *pp, int ec) {
|
||||
+ ec &= inst_imask;
|
||||
+ switch (ec) {
|
||||
+ case COLORHUG_INTERNAL_ERROR:
|
||||
+ return "Internal software error";
|
||||
+ case COLORHUG_COMS_FAIL:
|
||||
+ return "Communications failure";
|
||||
+ case COLORHUG_UNKNOWN_MODEL:
|
||||
+ return "Not a known ColorHug Model";
|
||||
+ case COLORHUG_USER_ABORT:
|
||||
+ return "User hit Abort key";
|
||||
+ case COLORHUG_USER_TERM:
|
||||
+ return "User hit Terminate key";
|
||||
+ case COLORHUG_USER_TRIG:
|
||||
+ return "User hit Trigger key";
|
||||
+ case COLORHUG_USER_CMND:
|
||||
+ return "User hit a Command key";
|
||||
+
|
||||
+ case COLORHUG_OK:
|
||||
+ return "OK";
|
||||
+ case COLORHUG_UNKNOWN_CMD:
|
||||
+ return "Unknown connamd";
|
||||
+ case COLORHUG_WRONG_UNLOCK_CODE:
|
||||
+ return "Wrong unlock code";
|
||||
+ case COLORHUG_NOT_IMPLEMENTED:
|
||||
+ return "Not implemented";
|
||||
+ case COLORHUG_UNDERFLOW_SENSOR:
|
||||
+ return "Sensor underflow";
|
||||
+ case COLORHUG_NO_SERIAL:
|
||||
+ return "No serial";
|
||||
+ case COLORHUG_WATCHDOG:
|
||||
+ return "Watchdog";
|
||||
+ case COLORHUG_INVALID_ADDRESS:
|
||||
+ return "Invalid address";
|
||||
+ case COLORHUG_INVALID_LENGTH:
|
||||
+ return "Invalid length";
|
||||
+ case COLORHUG_INVALID_CHECKSUM:
|
||||
+ return "Invlid checksum";
|
||||
+ case COLORHUG_INVALID_VALUE:
|
||||
+ return "Invalid value";
|
||||
+ case COLORHUG_UNKNOWN_CMD_FOR_BOOTLOADER:
|
||||
+ return "Unknown command for bootloader";
|
||||
+ case COLORHUG_NO_CALIBRATION:
|
||||
+ return "No calibration";
|
||||
+ case COLORHUG_OVERFLOW_MULTIPLY:
|
||||
+ return "Multiply overflow";
|
||||
+ case COLORHUG_OVERFLOW_ADDITION:
|
||||
+ return "Addition overflow";
|
||||
+ case COLORHUG_OVERFLOW_SENSOR:
|
||||
+ return "Sensor overflow";
|
||||
+ case COLORHUG_OVERFLOW_STACK:
|
||||
+ return "Stack overflow";
|
||||
+
|
||||
+ /* Internal errors */
|
||||
+ case COLORHUG_NO_COMS:
|
||||
+ return "Communications hasn't been established";
|
||||
+ case COLORHUG_NOT_INITED:
|
||||
+ return "Insrument hasn't been initialised";
|
||||
+ default:
|
||||
+ return "Unknown error code";
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/* Do a command/response exchange with the colorhug */
|
||||
+static inst_code
|
||||
+colorhug_command(colorhug *p,
|
||||
+ ColorHugCmd cmd,
|
||||
+ unsigned char *in, uint in_size,
|
||||
+ unsigned char *out, uint out_size,
|
||||
+ double timeout)
|
||||
+{
|
||||
+ int i;
|
||||
+ unsigned char buf[64];
|
||||
+ int wbytes;
|
||||
+ int rbytes;
|
||||
+ int se, ua = 0, rv = inst_ok;
|
||||
+ int isdeb = 0;
|
||||
+
|
||||
+ /* Turn off low level debug messages, and sumarise them here */
|
||||
+ isdeb = p->icom->debug;
|
||||
+ if (isdeb <= 2)
|
||||
+ p->icom->debug = 0;
|
||||
+
|
||||
+ if (isdeb) {
|
||||
+ fprintf(stderr,"colorhug: Sending cmd '%s' args '%s'\n",
|
||||
+ inst_desc(cmd), icoms_tohex(in, in_size));
|
||||
+ }
|
||||
+
|
||||
+ /* Send the command with any specified data */
|
||||
+ buf[0] = cmd;
|
||||
+ if (in != NULL)
|
||||
+ memcpy(buf + 1, in, in_size);
|
||||
+ if (p->icom->is_hid) {
|
||||
+ se = p->icom->hid_write(p->icom, buf, in_size + 1, &wbytes, timeout);
|
||||
+ } else {
|
||||
+ se = p->icom->usb_write(p->icom, 0x01, buf, in_size + 1, &wbytes, timeout);
|
||||
+ }
|
||||
+ if (se != 0) {
|
||||
+ if (se & ICOM_USERM) {
|
||||
+ ua = (se & ICOM_USERM);
|
||||
+ }
|
||||
+ if (se & ~ICOM_USERM) {
|
||||
+ if (isdeb)
|
||||
+ fprintf(stderr,"colorhug: Command send failed with ICOM err 0x%x\n", se);
|
||||
+ p->icom->debug = isdeb;
|
||||
+ return colorhug_interp_code((inst *)p, COLORHUG_COMS_FAIL);
|
||||
+ }
|
||||
+ }
|
||||
+ rv = colorhug_interp_code((inst *)p, icoms2colorhug_err(ua));
|
||||
+ if (isdeb)
|
||||
+ fprintf(stderr,"colorhug: ICOM err 0x%x\n",ua);
|
||||
+ if (wbytes != in_size + 1)
|
||||
+ rv = colorhug_interp_code((inst *)p, COLORHUG_BAD_WR_LENGTH);
|
||||
+ if (rv != inst_ok) {
|
||||
+ p->icom->debug = isdeb;
|
||||
+ return rv;
|
||||
+ }
|
||||
+
|
||||
+ /* Now fetch the response */
|
||||
+ if (isdeb)
|
||||
+ fprintf(stderr,"colorhug: Reading response\n");
|
||||
+
|
||||
+ if (p->icom->is_hid) {
|
||||
+ se = p->icom->hid_read(p->icom, buf, out_size + 2, &rbytes, timeout);
|
||||
+ } else {
|
||||
+ se = p->icom->usb_read(p->icom, 0x81, buf, out_size + 2, &rbytes, timeout);
|
||||
+ }
|
||||
+
|
||||
+ if (isdeb && rbytes >= 2) {
|
||||
+ fprintf(stderr,"Recieved cmd '%s' error '%s' args '%s'\n",
|
||||
+ inst_desc(buf[1]),
|
||||
+ colorhug_interp_error((inst *) p, buf[0]),
|
||||
+ icoms_tohex(buf, rbytes - 2));
|
||||
+ }
|
||||
+
|
||||
+ if (se != 0) {
|
||||
+
|
||||
+ /* deal with command error */
|
||||
+ if (rbytes == 2 && buf[0] != COLORHUG_OK) {
|
||||
+ rv = colorhug_interp_code((inst *)p, buf[0]);
|
||||
+ return rv;
|
||||
+ }
|
||||
+
|
||||
+ /* deal with underrun or overrun */
|
||||
+ if (rbytes != out_size + 2) {
|
||||
+ rv = colorhug_interp_code((inst *)p, COLORHUG_BAD_RD_LENGTH);
|
||||
+ return rv;
|
||||
+ }
|
||||
+
|
||||
+ /* there's another reason it failed */
|
||||
+ if (se & ICOM_USERM) {
|
||||
+ ua = (se & ICOM_USERM);
|
||||
+ }
|
||||
+ if (se & ~ICOM_USERM) {
|
||||
+ if (isdeb)
|
||||
+ fprintf(stderr,"colorhug: Response read failed with ICOM err 0x%x\n",se);
|
||||
+ p->icom->debug = isdeb;
|
||||
+ return colorhug_interp_code((inst *)p, COLORHUG_COMS_FAIL);
|
||||
+ }
|
||||
+ }
|
||||
+ rv = colorhug_interp_code((inst *)p, icoms2colorhug_err(ua));
|
||||
+ if (rv != inst_ok)
|
||||
+ return rv;
|
||||
+
|
||||
+ /* check the command was the same */
|
||||
+ if (buf[1] != cmd) {
|
||||
+ rv = colorhug_interp_code((inst *)p, COLORHUG_BAD_RET_CMD);
|
||||
+ return rv;
|
||||
+ }
|
||||
+ if (out != NULL) {
|
||||
+ memcpy(out, buf + 2, out_size);
|
||||
+ }
|
||||
+ if (isdeb) {
|
||||
+ fprintf(stderr,"colorhug: '%s' ICOM err 0x%x\n",
|
||||
+ icoms_tohex(buf + 2, out_size),ua);
|
||||
+ }
|
||||
+ p->icom->debug = isdeb;
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+/* Take a short, and convert it into a byte buffer */
|
||||
+static void short2buf(unsigned char *buf, int inv)
|
||||
+{
|
||||
+ buf[0] = (inv >> 0) & 0xff;
|
||||
+ buf[1] = (inv >> 8) & 0xff;
|
||||
+}
|
||||
+
|
||||
+/* Converts a packed float to a double */
|
||||
+static double packed_float_to_double (uint32_t pf)
|
||||
+{
|
||||
+ return (double) pf / (double) 0x10000;
|
||||
+}
|
||||
+
|
||||
+/* Set the device LED state */
|
||||
+static inst_code
|
||||
+colorhug_set_LEDs(colorhug *p, int mask)
|
||||
+{
|
||||
+ int i;
|
||||
+ unsigned char ibuf[4];
|
||||
+ inst_code ev;
|
||||
+
|
||||
+ mask &= 0x3;
|
||||
+ p->led_state = mask;
|
||||
+
|
||||
+ ibuf[0] = mask;
|
||||
+ ibuf[1] = 0; /* repeat */
|
||||
+ ibuf[2] = 0; /* on */
|
||||
+ ibuf[3] = 0; /* off */
|
||||
+
|
||||
+ /* Do command */
|
||||
+ ev = colorhug_command(p, ch_set_leds,
|
||||
+ ibuf, sizeof (ibuf), /* input */
|
||||
+ NULL, 0, /* output */
|
||||
+ 1.0);
|
||||
+ return ev;
|
||||
+}
|
||||
+
|
||||
+/* Take a XYZ measurement from the device */
|
||||
+static inst_code
|
||||
+colorhug_take_XYZ_measurement(colorhug *p, double XYZ[3])
|
||||
+{
|
||||
+ inst_code ev;
|
||||
+ int i;
|
||||
+ uint8_t ibuf[2];
|
||||
+ uint32_t obuf[3];
|
||||
+
|
||||
+ if (!p->inited)
|
||||
+ return colorhug_interp_code((inst *)p, COLORHUG_NOT_INITED);
|
||||
+
|
||||
+ /* Choose the calibration matrix */
|
||||
+ short2buf(ibuf + 0, p->crt ? 65 : 64);
|
||||
+
|
||||
+ /* Do the measurement, and return the values */
|
||||
+ ev = colorhug_command(p, ch_take_reading,
|
||||
+ ibuf, sizeof (ibuf),
|
||||
+ (unsigned char *) obuf, sizeof (obuf),
|
||||
+ 1.0);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+
|
||||
+ /* Convert to doubles */
|
||||
+ for (i = 0; i < 3; i++)
|
||||
+ XYZ[i] = packed_float_to_double (obuf[i]);
|
||||
+
|
||||
+ /* Apply the colorimeter correction matrix */
|
||||
+ icmMulBy3x3(XYZ, p->ccmat, XYZ);
|
||||
+
|
||||
+ if (p->debug) {
|
||||
+ fprintf(stderr,"colorhug: returning XYZ = %f %f %f\n",
|
||||
+ XYZ[0],XYZ[1],XYZ[2]);
|
||||
+ }
|
||||
+ return inst_ok;
|
||||
+}
|
||||
+
|
||||
+/* Establish communications with a ColorHug */
|
||||
+static inst_code
|
||||
+colorhug_init_coms(inst *pp, int port, baud_rate br, flow_control fc, double tout) {
|
||||
+ colorhug *p = (colorhug *) pp;
|
||||
+
|
||||
+ if (p->debug) {
|
||||
+ p->icom->debug = p->debug; /* Turn on debugging */
|
||||
+ fprintf(stderr,"colorhug: About to init coms\n");
|
||||
+ }
|
||||
+
|
||||
+ /* Open as an HID if available */
|
||||
+ if (p->icom->is_hid_portno(p->icom, port) != instUnknown) {
|
||||
+
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: About to init HID\n");
|
||||
+
|
||||
+ /* Set config, interface */
|
||||
+ p->icom->set_hid_port(p->icom, port, icomuf_none, 0, NULL);
|
||||
+
|
||||
+ } else if (p->icom->is_usb_portno(p->icom, port) != instUnknown) {
|
||||
+
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: About to init USB\n");
|
||||
+
|
||||
+ /* Set config, interface, write end point, read end point */
|
||||
+ p->icom->set_usb_port(p->icom, port, 1, 0x00, 0x00, icomuf_detach, 0, NULL);
|
||||
+
|
||||
+ } else {
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: init_coms called to wrong device!\n");
|
||||
+ return colorhug_interp_code((inst *)p, COLORHUG_UNKNOWN_MODEL);
|
||||
+ }
|
||||
+
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: init coms has suceeded\n");
|
||||
+
|
||||
+ p->gotcoms = 1;
|
||||
+ return inst_ok;
|
||||
+}
|
||||
+
|
||||
+/* Set the device multiplier */
|
||||
+static inst_code
|
||||
+colorhug_set_multiplier (colorhug *p, int multiplier)
|
||||
+{
|
||||
+ inst_code ev;
|
||||
+ unsigned char ibuf[1];
|
||||
+
|
||||
+ /* Set the desired multiplier */
|
||||
+ ibuf[0] = multiplier;
|
||||
+ ev = colorhug_command(p, ch_set_mult,
|
||||
+ ibuf, sizeof (ibuf),
|
||||
+ NULL, 0,
|
||||
+ 1.0);
|
||||
+ return ev;
|
||||
+}
|
||||
+
|
||||
+/* Set the device integral time */
|
||||
+static inst_code
|
||||
+colorhug_set_integral (colorhug *p, int integral)
|
||||
+{
|
||||
+ inst_code ev;
|
||||
+ unsigned char ibuf[2];
|
||||
+
|
||||
+ /* Set the desired integral time */
|
||||
+ short2buf(ibuf + 0, integral);
|
||||
+ ev = colorhug_command(p, ch_set_integral,
|
||||
+ ibuf, sizeof (ibuf),
|
||||
+ NULL, 0,
|
||||
+ 1.0);
|
||||
+ return ev;
|
||||
+}
|
||||
+
|
||||
+/* Initialise the ColorHug */
|
||||
+static inst_code
|
||||
+colorhug_init_inst(inst *pp)
|
||||
+{
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ inst_code ev;
|
||||
+
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: About to init instrument\n");
|
||||
+
|
||||
+ /* Must establish coms first */
|
||||
+ if (p->gotcoms == 0)
|
||||
+ return colorhug_interp_code((inst *)p, COLORHUG_NO_COMS);
|
||||
+
|
||||
+ /* Turn the LEDs off */
|
||||
+ ev = colorhug_set_LEDs(p, 0x0);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+
|
||||
+ /* Turn the sensor on */
|
||||
+ ev = colorhug_set_multiplier(p, 0x03);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+
|
||||
+ /* Set the integral time to maximum precision */
|
||||
+ ev = colorhug_set_integral(p, 0xffff);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+
|
||||
+ p->itype = instColorHug;
|
||||
+ p->trig = inst_opt_trig_keyb;
|
||||
+ p->inited = 1;
|
||||
+ if (p->debug)
|
||||
+ fprintf(stderr,"colorhug: instrument inited OK\n");
|
||||
+
|
||||
+ /* Flash the LEDs */
|
||||
+ ev = colorhug_set_LEDs(p, 0x1);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+ msec_sleep(50);
|
||||
+ ev = colorhug_set_LEDs(p, 0x2);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+ msec_sleep(50);
|
||||
+ ev = colorhug_set_LEDs(p, 0x1);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+ msec_sleep(50);
|
||||
+ ev = colorhug_set_LEDs(p, 0x0);
|
||||
+ if (ev != inst_ok)
|
||||
+ return ev;
|
||||
+
|
||||
+ return ev;
|
||||
+}
|
||||
+
|
||||
+/* Read a single sample */
|
||||
+static inst_code
|
||||
+colorhug_read_sample(
|
||||
+inst *pp,
|
||||
+char *name, /* Strip name (7 chars) */
|
||||
+ipatch *val) { /* Pointer to instrument patch value */
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ int user_trig = 0;
|
||||
+ int rv = inst_protocol_error;
|
||||
+
|
||||
+ if (p->trig == inst_opt_trig_keyb) {
|
||||
+ int se;
|
||||
+ if ((se = icoms_poll_user(p->icom, 1)) != ICOM_TRIG) {
|
||||
+ /* Abort, term or command */
|
||||
+ return colorhug_interp_code((inst *)p, icoms2colorhug_err(se));
|
||||
+ }
|
||||
+ user_trig = 1;
|
||||
+ if (p->trig_return)
|
||||
+ printf("\n");
|
||||
+ }
|
||||
+
|
||||
+ /* Read the XYZ value */
|
||||
+ if ((rv = colorhug_take_XYZ_measurement(p, val->aXYZ)) != inst_ok) {
|
||||
+ return rv;
|
||||
+ }
|
||||
+
|
||||
+ val->XYZ_v = 0;
|
||||
+ val->aXYZ_v = 1; /* These are absolute XYZ readings ? */
|
||||
+ val->Lab_v = 0;
|
||||
+ val->sp.spec_n = 0;
|
||||
+ val->duration = 0.0;
|
||||
+
|
||||
+ if (user_trig)
|
||||
+ return inst_user_trig;
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+/* Insert a colorimetric correction matrix */
|
||||
+inst_code colorhug_col_cor_mat(
|
||||
+inst *pp,
|
||||
+double mtx[3][3]
|
||||
+) {
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+
|
||||
+ if (mtx == NULL)
|
||||
+ icmSetUnity3x3(p->ccmat);
|
||||
+ else
|
||||
+ icmCpy3x3(p->ccmat, mtx);
|
||||
+
|
||||
+ return inst_ok;
|
||||
+}
|
||||
+
|
||||
+/* Determine if a calibration is needed */
|
||||
+inst_cal_type colorhug_needs_calibration(inst *pp) {
|
||||
+ return inst_ok;
|
||||
+}
|
||||
+
|
||||
+/* Request an instrument calibration */
|
||||
+inst_code colorhug_calibrate(
|
||||
+inst *pp,
|
||||
+inst_cal_type calt, /* Calibration type. inst_calt_all for all neeeded */
|
||||
+inst_cal_cond *calc, /* Current condition/desired condition */
|
||||
+char id[CALIDLEN] /* Condition identifier (ie. white reference ID) */
|
||||
+) {
|
||||
+ id[0] = '\000';
|
||||
+ return inst_unsupported;
|
||||
+}
|
||||
+
|
||||
+/* Convert a machine specific error code into an abstract dtp code */
|
||||
+static inst_code
|
||||
+colorhug_interp_code(inst *pp, int ec) {
|
||||
+ ec &= inst_imask;
|
||||
+ switch (ec) {
|
||||
+
|
||||
+ case COLORHUG_OK:
|
||||
+ return inst_ok;
|
||||
+
|
||||
+ case COLORHUG_INTERNAL_ERROR:
|
||||
+ case COLORHUG_NO_COMS:
|
||||
+ case COLORHUG_NOT_INITED:
|
||||
+ return inst_internal_error | ec;
|
||||
+
|
||||
+ case COLORHUG_COMS_FAIL:
|
||||
+ return inst_coms_fail | ec;
|
||||
+
|
||||
+ case COLORHUG_UNKNOWN_MODEL:
|
||||
+ return inst_unknown_model | ec;
|
||||
+
|
||||
+ case COLORHUG_UNKNOWN_CMD:
|
||||
+ case COLORHUG_WRONG_UNLOCK_CODE:
|
||||
+ case COLORHUG_NOT_IMPLEMENTED:
|
||||
+ case COLORHUG_UNDERFLOW_SENSOR:
|
||||
+ case COLORHUG_NO_SERIAL:
|
||||
+ case COLORHUG_WATCHDOG:
|
||||
+ case COLORHUG_INVALID_ADDRESS:
|
||||
+ case COLORHUG_INVALID_LENGTH:
|
||||
+ case COLORHUG_INVALID_CHECKSUM:
|
||||
+ case COLORHUG_INVALID_VALUE:
|
||||
+ case COLORHUG_UNKNOWN_CMD_FOR_BOOTLOADER:
|
||||
+ case COLORHUG_NO_CALIBRATION:
|
||||
+ case COLORHUG_OVERFLOW_MULTIPLY:
|
||||
+ case COLORHUG_OVERFLOW_ADDITION:
|
||||
+ case COLORHUG_OVERFLOW_SENSOR:
|
||||
+ case COLORHUG_OVERFLOW_STACK:
|
||||
+ case COLORHUG_BAD_WR_LENGTH:
|
||||
+ case COLORHUG_BAD_RD_LENGTH:
|
||||
+ case COLORHUG_BAD_RET_CMD:
|
||||
+ case COLORHUG_BAD_RET_STAT:
|
||||
+ return inst_protocol_error | ec;
|
||||
+
|
||||
+ case COLORHUG_USER_ABORT:
|
||||
+ return inst_user_abort | ec;
|
||||
+ case COLORHUG_USER_TERM:
|
||||
+ return inst_user_term | ec;
|
||||
+ case COLORHUG_USER_TRIG:
|
||||
+ return inst_user_trig | ec;
|
||||
+ case COLORHUG_USER_CMND:
|
||||
+ return inst_user_cmnd | ec;
|
||||
+ }
|
||||
+ return inst_other_error | ec;
|
||||
+}
|
||||
+
|
||||
+/* Destroy ourselves */
|
||||
+static void
|
||||
+colorhug_del(inst *pp) {
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ if (p->icom != NULL)
|
||||
+ p->icom->del(p->icom);
|
||||
+ free(p);
|
||||
+}
|
||||
+
|
||||
+/* Return the instrument capabilities */
|
||||
+inst_capability colorhug_capabilities(inst *pp) {
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ inst_capability rv;
|
||||
+
|
||||
+ rv = inst_emis_spot
|
||||
+ | inst_emis_disp
|
||||
+ | inst_emis_disp_lcd
|
||||
+ | inst_colorimeter
|
||||
+ | inst_ccmx
|
||||
+ ;
|
||||
+
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+/* Return the instrument capabilities 2 */
|
||||
+inst2_capability colorhug_capabilities2(inst *pp) {
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ inst2_capability rv = 0;
|
||||
+
|
||||
+ rv |= inst2_prog_trig;
|
||||
+ rv |= inst2_keyb_trig;
|
||||
+ rv |= inst2_has_leds;
|
||||
+
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+/* Set device measurement mode */
|
||||
+inst_code colorhug_set_mode(inst *pp, inst_mode m)
|
||||
+{
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ inst_mode mm; /* Measurement mode */
|
||||
+
|
||||
+ /* The measurement mode portion of the mode */
|
||||
+ mm = m & inst_mode_measurement_mask;
|
||||
+
|
||||
+ /* only display emission mode and ambient supported */
|
||||
+ if (mm != inst_mode_emis_spot
|
||||
+ && mm != inst_mode_emis_disp
|
||||
+ && mm != inst_mode_emis_ambient) {
|
||||
+ return inst_unsupported;
|
||||
+ }
|
||||
+
|
||||
+ /* Spectral mode is not supported */
|
||||
+ if (m & inst_mode_spectral)
|
||||
+ return inst_unsupported;
|
||||
+
|
||||
+ p->mode = m;
|
||||
+ return inst_ok;
|
||||
+}
|
||||
+
|
||||
+/* Set or reset an optional mode */
|
||||
+static inst_code
|
||||
+colorhug_set_opt_mode(inst *pp, inst_opt_mode m, ...)
|
||||
+{
|
||||
+ colorhug *p = (colorhug *)pp;
|
||||
+ inst_code ev = inst_ok;
|
||||
+
|
||||
+ /* Select CRT/LCD */
|
||||
+ if (m == inst_opt_disp_crt) {
|
||||
+ if (p->crt == 0)
|
||||
+ p->crt = 1;
|
||||
+ return inst_ok;
|
||||
+ } else if (m == inst_opt_disp_lcd) {
|
||||
+ if (p->crt != 0)
|
||||
+ p->crt = 0;
|
||||
+ return inst_ok;
|
||||
+
|
||||
+ }
|
||||
+ /* Record the trigger mode */
|
||||
+ if (m == inst_opt_trig_prog
|
||||
+ || m == inst_opt_trig_keyb) {
|
||||
+ p->trig = m;
|
||||
+ return inst_ok;
|
||||
+ }
|
||||
+ if (m == inst_opt_trig_return) {
|
||||
+ p->trig_return = 1;
|
||||
+ return inst_ok;
|
||||
+ } else if (m == inst_opt_trig_no_return) {
|
||||
+ p->trig_return = 0;
|
||||
+ return inst_ok;
|
||||
+ }
|
||||
+
|
||||
+ /* Operate the LEDs */
|
||||
+ if (m == inst_opt_get_gen_ledmask) {
|
||||
+ va_list args;
|
||||
+ int *mask = NULL;
|
||||
+
|
||||
+ va_start(args, m);
|
||||
+ mask = va_arg(args, int *);
|
||||
+ va_end(args);
|
||||
+ *mask = 0x3; /* Two general LEDs */
|
||||
+ return inst_ok;
|
||||
+ } else if (m == inst_opt_get_led_state) {
|
||||
+ va_list args;
|
||||
+ int *mask = NULL;
|
||||
+
|
||||
+ va_start(args, m);
|
||||
+ mask = va_arg(args, int *);
|
||||
+ va_end(args);
|
||||
+ *mask = p->led_state;
|
||||
+ return inst_ok;
|
||||
+ } else if (m == inst_opt_set_led_state) {
|
||||
+ va_list args;
|
||||
+ int mask = 0;
|
||||
+
|
||||
+ va_start(args, m);
|
||||
+ mask = va_arg(args, int);
|
||||
+ va_end(args);
|
||||
+ return colorhug_set_LEDs(p, mask);
|
||||
+ }
|
||||
+
|
||||
+ return inst_unsupported;
|
||||
+}
|
||||
+
|
||||
+/* Constructor */
|
||||
+extern colorhug *new_colorhug(icoms *icom, int debug, int verb)
|
||||
+{
|
||||
+ colorhug *p;
|
||||
+ if ((p = (colorhug *)calloc(sizeof(colorhug),1)) == NULL)
|
||||
+ error("colorhug: malloc failed!");
|
||||
+
|
||||
+ if (icom == NULL)
|
||||
+ p->icom = new_icoms();
|
||||
+ else
|
||||
+ p->icom = icom;
|
||||
+
|
||||
+ p->debug = debug;
|
||||
+ p->verb = verb;
|
||||
+
|
||||
+ /* Set the colorimeter correction matrix to do nothing */
|
||||
+ icmSetUnity3x3(p->ccmat);
|
||||
+
|
||||
+ p->init_coms = colorhug_init_coms;
|
||||
+ p->init_inst = colorhug_init_inst;
|
||||
+ p->capabilities = colorhug_capabilities;
|
||||
+ p->capabilities2 = colorhug_capabilities2;
|
||||
+ p->set_mode = colorhug_set_mode;
|
||||
+ p->set_opt_mode = colorhug_set_opt_mode;
|
||||
+ p->read_sample = colorhug_read_sample;
|
||||
+ p->needs_calibration = colorhug_needs_calibration;
|
||||
+ p->col_cor_mat = colorhug_col_cor_mat;
|
||||
+ p->calibrate = colorhug_calibrate;
|
||||
+ p->interp_error = colorhug_interp_error;
|
||||
+ p->del = colorhug_del;
|
||||
+
|
||||
+ /* Until initalisation */
|
||||
+ p->itype = instUnknown;
|
||||
+
|
||||
+ return p;
|
||||
+}
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/colorhug.h ./spectro/colorhug.h
|
||||
--- ../orig-Argyll_V1.3.5/spectro/colorhug.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./spectro/colorhug.h 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -0,0 +1,85 @@
|
||||
+/*
|
||||
+ * Argyll Color Correction System
|
||||
+ *
|
||||
+ * Hughski ColorHug related defines
|
||||
+ *
|
||||
+ * Author: Richard Hughes
|
||||
+ * Date: 30/11/2011
|
||||
+ *
|
||||
+ * Copyright 2006 - 2007, Graeme W. Gill
|
||||
+ * Copyright 2011, Richard Hughes
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * (Based on huey.h)
|
||||
+ *
|
||||
+ * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :-
|
||||
+ * see the License2.txt file for licencing details.
|
||||
+ */
|
||||
+
|
||||
+#ifndef COLORHUG_H
|
||||
+
|
||||
+#include "inst.h"
|
||||
+
|
||||
+/* Note: update colorhug_interp_error() and colorhug_interp_code() in colorhug.c */
|
||||
+/* if anything of these #defines are added or subtracted */
|
||||
+
|
||||
+/* Fake Error codes */
|
||||
+#define COLORHUG_INTERNAL_ERROR 0x61 /* Internal software error */
|
||||
+#define COLORHUG_COMS_FAIL 0x62 /* Communication failure */
|
||||
+#define COLORHUG_UNKNOWN_MODEL 0x63 /* Not an colorhug */
|
||||
+#define COLORHUG_DATA_PARSE_ERROR 0x64 /* Read data parsing error */
|
||||
+#define COLORHUG_USER_ABORT 0x65 /* User hit abort */
|
||||
+#define COLORHUG_USER_TERM 0x66 /* User hit terminate */
|
||||
+#define COLORHUG_USER_TRIG 0x67 /* User hit trigger */
|
||||
+#define COLORHUG_USER_CMND 0x68 /* User hit command */
|
||||
+
|
||||
+/* Real error codes */
|
||||
+#define COLORHUG_OK 0x00
|
||||
+#define COLORHUG_UNKNOWN_CMD 0x01
|
||||
+#define COLORHUG_WRONG_UNLOCK_CODE 0x02
|
||||
+#define COLORHUG_NOT_IMPLEMENTED 0x03
|
||||
+#define COLORHUG_UNDERFLOW_SENSOR 0x04
|
||||
+#define COLORHUG_NO_SERIAL 0x05
|
||||
+#define COLORHUG_WATCHDOG 0x06
|
||||
+#define COLORHUG_INVALID_ADDRESS 0x07
|
||||
+#define COLORHUG_INVALID_LENGTH 0x08
|
||||
+#define COLORHUG_INVALID_CHECKSUM 0x09
|
||||
+#define COLORHUG_INVALID_VALUE 0x0a
|
||||
+#define COLORHUG_UNKNOWN_CMD_FOR_BOOTLOADER 0x0b
|
||||
+#define COLORHUG_NO_CALIBRATION 0x0c
|
||||
+#define COLORHUG_OVERFLOW_MULTIPLY 0x0d
|
||||
+#define COLORHUG_OVERFLOW_ADDITION 0x0e
|
||||
+#define COLORHUG_OVERFLOW_SENSOR 0x0f
|
||||
+#define COLORHUG_OVERFLOW_STACK 0x10
|
||||
+
|
||||
+/* Internal errors */
|
||||
+#define COLORHUG_NO_COMS 0x22
|
||||
+#define COLORHUG_NOT_INITED 0x23
|
||||
+#define COLORHUG_BAD_WR_LENGTH 0x25
|
||||
+#define COLORHUG_BAD_RD_LENGTH 0x26
|
||||
+#define COLORHUG_BAD_RET_CMD 0x27
|
||||
+#define COLORHUG_BAD_RET_STAT 0x28
|
||||
+
|
||||
+
|
||||
+/* COLORHUG communication object */
|
||||
+struct _colorhug {
|
||||
+ INST_OBJ_BASE
|
||||
+
|
||||
+ inst_mode mode; /* Currently selected mode */
|
||||
+
|
||||
+ inst_opt_mode trig; /* Reading trigger mode */
|
||||
+ int trig_return; /* Emit "\n" after trigger */
|
||||
+
|
||||
+ int ser_no; /* Serial number */
|
||||
+ int crt; /* NZ if set to CRT */
|
||||
+ double ccmat[3][3]; /* Colorimeter correction matrix */
|
||||
+ int led_state; /* Current LED state */
|
||||
+
|
||||
+}; typedef struct _colorhug colorhug;
|
||||
+
|
||||
+/* Constructor */
|
||||
+extern colorhug *new_colorhug(icoms *icom, int debug, int verb);
|
||||
+
|
||||
+
|
||||
+#define COLORHUG_H
|
||||
+#endif /* COLORHUG_H */
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/inst.c ./spectro/inst.c
|
||||
--- ../orig-Argyll_V1.3.5/spectro/inst.c 2011-10-24 14:10:27.000000000 +0200
|
||||
+++ ./spectro/inst.c 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -476,6 +476,8 @@
|
||||
p = (inst *)new_spyd2(icom, debug, verb);
|
||||
else if (itype == instHuey)
|
||||
p = (inst *)new_huey(icom, debug, verb);
|
||||
+ else if (itype == instColorHug)
|
||||
+ p = (inst *)new_colorhug(icom, debug, verb);
|
||||
else {
|
||||
return NULL;
|
||||
}
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/instlib.ksh ./spectro/instlib.ksh
|
||||
--- ../orig-Argyll_V1.3.5/spectro/instlib.ksh 2011-10-24 14:10:26.000000000 +0200
|
||||
+++ ./spectro/instlib.ksh 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
echo "Making standalone GPLv2 instrument archive instlib.zip "
|
||||
|
||||
-FILES="License2.txt Makefile.OSX Makefile.UNIX Makefile.WNT pollem.h pollem.c conv.h conv.c hidio.h hidio.c icoms.h inst.h inst.c insttypes.c insttypes.h insttypeinst.h dtp20.c dtp20.h dtp22.c dtp22.h dtp41.c dtp41.h dtp51.c dtp51.h dtp92.c dtp92.h ss.h ss.c ss_imp.h ss_imp.c i1disp.c i1disp.h i1d3.h i1d3.c i1pro.h i1pro.c i1pro_imp.h i1pro_imp.c munki.h munki.c munki_imp.h munki_imp.c hcfr.c hcfr.h huey.c huey.h spyd2.c spyd2.h spyd2setup.h spyd2PLD.h spyd2en.c i1d3ccss.c vinflate.c inflate.c LzmaDec.c LzmaDec.h LzmaTypes.h ntio.c unixio.c usbio.h usbio.c xdg_bds.c xdg_bds.h ../xicc/xspect.h ../xicc/xspect.c ../xicc/ccss.h ../xicc/ccss.c ../rspl/rspl1.h ../rspl/rspl1.c ../h/sort.h ../numlib/numsup.h ../numlib/numsup.c ../cgats/pars.h ../cgats/pars.c ../cgats/parsstd.c ../cgats/cgats.h ../cgats/cgats.c ../cgats/cgatsstd.c spotread.c"
|
||||
+FILES="License2.txt Makefile.OSX Makefile.UNIX Makefile.WNT pollem.h pollem.c conv.h conv.c hidio.h hidio.c icoms.h inst.h inst.c insttypes.c insttypes.h insttypeinst.h dtp20.c dtp20.h dtp22.c dtp22.h dtp41.c dtp41.h dtp51.c dtp51.h dtp92.c dtp92.h ss.h ss.c ss_imp.h ss_imp.c i1disp.c i1disp.h i1d3.h i1d3.c i1pro.h i1pro.c i1pro_imp.h i1pro_imp.c munki.h munki.c munki_imp.h munki_imp.c hcfr.c hcfr.h huey.c huey.h colorhug.c colorhug.h spyd2.c spyd2.h spyd2setup.h spyd2PLD.h spyd2en.c i1d3ccss.c vinflate.c inflate.c LzmaDec.c LzmaDec.h LzmaTypes.h ntio.c unixio.c usbio.h usbio.c xdg_bds.c xdg_bds.h ../xicc/xspect.h ../xicc/xspect.c ../xicc/ccss.h ../xicc/ccss.c ../rspl/rspl1.h ../rspl/rspl1.c ../h/sort.h ../numlib/numsup.h ../numlib/numsup.c ../cgats/pars.h ../cgats/pars.c ../cgats/parsstd.c ../cgats/cgats.h ../cgats/cgats.c ../cgats/cgatsstd.c spotread.c"
|
||||
|
||||
rm -f instlib.zip
|
||||
rm -rf _zipdir
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/insttypes.c ./spectro/insttypes.c
|
||||
--- ../orig-Argyll_V1.3.5/spectro/insttypes.c 2011-10-24 14:10:27.000000000 +0200
|
||||
+++ ./spectro/insttypes.c 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -73,6 +73,8 @@
|
||||
return "Datacolor Spyder3";
|
||||
case instHuey:
|
||||
return "GretagMacbeth Huey";
|
||||
+ case instColorHug:
|
||||
+ return "Hughski ColorHug";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -124,6 +126,8 @@
|
||||
return instSpyder3;
|
||||
else if (strcmp(name, "GretagMacbeth Huey") == 0)
|
||||
return instHuey;
|
||||
+ else if (strcmp(name, "Hughski ColorHug") == 0)
|
||||
+ return instColorHug;
|
||||
|
||||
return instUnknown;
|
||||
}
|
||||
@@ -183,6 +187,11 @@
|
||||
return instSpyder3;
|
||||
}
|
||||
|
||||
+ if (idVendor == 0x04d8) { /* Microchip */
|
||||
+ if (idProduct == 0xf8da) /* Hughski ColorHug */
|
||||
+ return instColorHug;
|
||||
+ }
|
||||
+
|
||||
/* Add other instruments here */
|
||||
|
||||
return instUnknown;
|
||||
@@ -260,6 +269,8 @@
|
||||
case instHuey:
|
||||
return 1; /* Not applicable */
|
||||
|
||||
+ case instColorHug:
|
||||
+ return 1; /* Not applicable */
|
||||
|
||||
default:
|
||||
break;
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/insttypes.h ./spectro/insttypes.h
|
||||
--- ../orig-Argyll_V1.3.5/spectro/insttypes.h 2011-10-24 14:10:26.000000000 +0200
|
||||
+++ ./spectro/insttypes.h 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -44,6 +44,7 @@
|
||||
instSpyder2, /* Datacolor/ColorVision Spyder2 */
|
||||
instSpyder3, /* Datacolor Spyder3 */
|
||||
instHuey, /* GretagMacbeth Huey */
|
||||
+ instColorHug, /* Hughski ColorHug */
|
||||
|
||||
} instType;
|
||||
|
||||
diff -wruN ../orig-Argyll_V1.3.5/spectro/Jamfile ./spectro/Jamfile
|
||||
--- ../orig-Argyll_V1.3.5/spectro/Jamfile 2011-10-24 14:10:26.000000000 +0200
|
||||
+++ ./spectro/Jamfile 2012-01-11 21:56:05.116268005 +0100
|
||||
@@ -69,7 +69,7 @@
|
||||
../plot $(LIBUSBHDRS) $(CMMHDRS) ;
|
||||
|
||||
# Instrument access library library
|
||||
-Library libinst : inst.c insttypes.c dtp20.c dtp22.c dtp41.c dtp51.c dtp92.c i1disp.c i1d3.c i1pro.c i1pro_imp.c munki.c munki_imp.c ss.c ss_imp.c hcfr.c spyd2.c huey.c $(IOFILE) usbio.c hidio.c ;
|
||||
+Library libinst : inst.c insttypes.c dtp20.c dtp22.c dtp41.c dtp51.c dtp92.c i1disp.c i1d3.c i1pro.c i1pro_imp.c munki.c munki_imp.c ss.c ss_imp.c hcfr.c spyd2.c huey.c colorhug.c $(IOFILE) usbio.c hidio.c ;
|
||||
|
||||
# Display access library
|
||||
Library libdisp : dispsup.c dispwin.c : : : $(LibWinH) ;
|
662
argyllcms-1.0.2-legal.patch
Normal file
662
argyllcms-1.0.2-legal.patch
Normal file
@ -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
|
||||
<h2><u>Introduction</u></h2>
|
||||
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 @@
|
||||
<br>
|
||||
<a name="a"></a> 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 <span style="font-weight: bold;">-a</span> flag adds
|
||||
the locations to the output .ti3 file.<br>
|
||||
<br>
|
||||
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.<br>
|
||||
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 @@
|
||||
<br>
|
||||
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.<br>
|
||||
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. <<a
|
||||
href="http://heather.cs.ucdavis.edu/%7Ematloff/UnixAndC/Unix/ShellIntro.html#tth_sEc1">ShellIntro</a>>.
|
||||
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.<br>
|
||||
<br>
|
||||
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.<br>
|
||||
+the print targets in using an acquisition device.<br>
|
||||
<br>
|
||||
<a name="v"></a> The <b>-v</b> 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]</span><br style="font-family: monospace;">
|
||||
<span style="font-family: monospace;"> :- inputs
|
||||
-'input.tif', and outputs scanner
|
||||
+'input.tif', and outputs device
|
||||
'input.ti3', or</span><br style="font-family: monospace;">
|
||||
<br style="font-family: monospace;">
|
||||
<a style="font-family: monospace;" href="#g"> usage</a><span
|
||||
@@ -85,7 +85,7 @@
|
||||
style="font-family: monospace;">
|
||||
Replace device values in .ti3</span><br style="font-family: monospace;">
|
||||
<span style="font-family: monospace;">
|
||||
-Default is to create a scanner .ti3 file<br>
|
||||
+Default is to create a device .ti3 file<br>
|
||||
</span></small><small><span style="font-family: monospace;"> </span><a
|
||||
style="font-family: monospace;" href="#F">-F x1,y1,x2,y2,x3,y3,x4,y4</a><span
|
||||
style="font-family: monospace;"> <br>
|
||||
@@ -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.<br>
|
||||
<br>
|
||||
There are 5 basic modes that <b>scanin</b> operates in.<br>
|
||||
@@ -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 <a
|
||||
href="File_Formats.html#.ti3">.ti3</a> data file containing
|
||||
-the CIE test values and the corresponding RGB scanner values. The <a
|
||||
+the CIE test values and the corresponding RGB device values. The <a
|
||||
href="File_Formats.html#.ti3">.ti3</a> file can then be used for
|
||||
creating
|
||||
an input profile using <a href="colprof.html">colprof</a>. 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: <a name="gp1"></a>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. <a name="ca"></a>The <b>-ca</b> flag combination should be
|
||||
used
|
||||
for all pages after the first,
|
||||
@@ -339,7 +339,7 @@
|
||||
<br>
|
||||
<a name="p"></a>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 <span style="font-weight: bold;"><span
|
||||
@@ -349,7 +349,7 @@
|
||||
<a name="m"></a>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 <span style="font-weight: bold;">-m</span> flag.<br>
|
||||
@@ -357,9 +357,9 @@
|
||||
<a name="G"></a>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 <span
|
||||
diff -uNr Argyll_V1.0.1.orig/doc/Scenarios.html Argyll_V1.0.1/doc/Scenarios.html
|
||||
--- Argyll_V1.0.1.orig/doc/Scenarios.html 2008-07-27 11:18:52.000000000 +0200
|
||||
+++ Argyll_V1.0.1/doc/Scenarios.html 2008-07-27 11:52:05.000000000 +0200
|
||||
@@ -32,17 +32,17 @@
|
||||
href="#PM5">Installing a
|
||||
display profile</a></h4>
|
||||
<h4><br>
|
||||
-<a href="#PS1">Profiling Scanners</a></h4>
|
||||
+<a href="#PS1">Profiling Acquisition Devices</a></h4>
|
||||
<h4> <a href="#PS2">Types of test charts</a></h4>
|
||||
-<h4> <a href="#PS3">Taking readings from a scanner</a></h4>
|
||||
-<h4> <a href="#PS4">Creating a scanner profile</a></h4>
|
||||
+<h4> <a href="#PS3">Taking readings from an acquisition device</a></h4>
|
||||
+<h4> <a href="#PS4">Creating an acquisition device profile</a></h4>
|
||||
<h4><br>
|
||||
<a href="#PP1">Profiling Printers</a></h4>
|
||||
<h4> <a href="#PP2">Creating a print test chart</a></h4>
|
||||
<h4> <a href="#PP3">Reading a print test chart
|
||||
using an instrument</a></h4>
|
||||
<h4> <a href="#PP4">Reading a print test chart
|
||||
-using a scanner</a></h4>
|
||||
+using an acquisition device</a></h4>
|
||||
<h4> </h4>
|
||||
<h4> <a href="#PP5">Creating a printer profile<br>
|
||||
</a></h4>
|
||||
@@ -353,14 +353,14 @@
|
||||
the connected display.<br>
|
||||
<br>
|
||||
<hr size="2" width="100%">
|
||||
-<h3><a name="PS1"></a>Profiling Scanners</h3>
|
||||
-Because a scanner is an input device, it is necessary to go about
|
||||
+<h3><a name="PS1"></a>Profiling Acquisition Devices</h3>
|
||||
+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.<br>
|
||||
<h4><a name="PS2"></a>Types of test charts</h4>
|
||||
-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:<br>
|
||||
@@ -400,18 +400,18 @@
|
||||
<img alt="CMP_DT_003" src="CMP_DT_003.jpg"
|
||||
style="width: 186px; height: 141px;"><br>
|
||||
<br>
|
||||
-<h4><a name="PS3"></a>Taking readings from a scanner</h4>
|
||||
-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
|
||||
+<h4><a name="PS3"></a>Taking readings from an acquisition device</h4>
|
||||
+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).<br>
|
||||
<br>
|
||||
-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 <b>scanin</b> 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).<br>
|
||||
<br>
|
||||
-To create the scanner .ti3 file, run the <b>scanin</b> utility as
|
||||
+To create the device .ti3 file, run the <b>scanin</b> utility as
|
||||
follows
|
||||
(assuming an IT8 chart is being used):<br>
|
||||
<br>
|
||||
-<a href="scanin.html"> scanin</a> -v scanner.tif It8.cht It8ref.txt<br>
|
||||
+<a href="scanin.html"> scanin</a> -v device.tif It8.cht It8ref.txt<br>
|
||||
<br>
|
||||
"It8ref.txt" is assumed to be the name of the CIE reference file
|
||||
-supplied by the chart manufacturer. The resulting file will be named "<b>scanner.ti3</b>".<br>
|
||||
+supplied by the chart manufacturer. The resulting file will be named "<b>device.ti3</b>".<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;">scanin</span> 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. <br>
|
||||
<br>
|
||||
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 <a href="scanin.html#d">-dipn</a> and examine
|
||||
the <span style="font-weight: bold;">diag.tif</span> diagnostic file.<br>
|
||||
-<h4><a name="PS4"></a>Creating a scanner profile</h4>
|
||||
-Similar to a display profile, a scanner profile can be either a
|
||||
-shaper/matrix or LUT based profile. Well behaved scanners will
|
||||
+<h4><a name="PS4"></a>Creating an acquisition device profile</h4>
|
||||
+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.<br>
|
||||
<br>
|
||||
-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 <b>-u</b> 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:<br>
|
||||
<br>
|
||||
<a href="colprof.html">colprof</a> <a href="colprof.html#v">-v</a> <a
|
||||
- href="colprof.html#E">-D"Scanner</a> <a href="colprof.html#E">A"</a> <a
|
||||
+ href="colprof.html#E">-D"Device</a> <a href="colprof.html#E">A"</a> <a
|
||||
href="colprof.html#q">-qm</a> <a href="colprof.html#a">-as</a>
|
||||
-<a href="colprof.html#p1">scanner</a><br>
|
||||
+<a href="colprof.html#p1">device</a><br>
|
||||
<br>
|
||||
For a LUT based profile then the following would be used:<br>
|
||||
<br>
|
||||
<a href="colprof.html">colprof</a> <a href="colprof.html#v">-v</a> <a
|
||||
- href="colprof.html#E">-D"Scanner A"</a>
|
||||
+ href="colprof.html#E">-D"Device A"</a>
|
||||
<a href="colprof.html#q">-qm</a>
|
||||
-<a href="colprof.html#p1">scanner</a><br>
|
||||
+<a href="colprof.html#p1">device</a><br>
|
||||
<br>
|
||||
For the purposes of a poor mans colorimeter, the following would
|
||||
generally be used:<br>
|
||||
<br>
|
||||
<a href="colprof.html">colprof</a> <a href="colprof.html#v">-v</a> <a
|
||||
- href="colprof.html#E">-D"Scanner A"</a>
|
||||
+ href="colprof.html#E">-D"Device A"</a>
|
||||
<a href="colprof.html#q">-qm</a> <a href="colprof.html#u">-u</a>
|
||||
-<a href="colprof.html#p1">scanner</a><br>
|
||||
+<a href="colprof.html#p1">device</a><br>
|
||||
<br>
|
||||
Make sure you check the delta E report at the end of the profile
|
||||
creation, to see if the profile is behaving reasonably.<br>
|
||||
@@ -703,7 +703,7 @@
|
||||
<a href="printtarg.html#i">-ii1</a> <a href="printtarg.html#p">-pA4</a>
|
||||
<a href="printtarg.html#p1">PrinterA</a><br>
|
||||
<br>
|
||||
-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 <a href="printtarg.html#s">-s</a> 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 <a href="Scenarios.html#PP5">Creating
|
||||
a printer profile</a>.<br>
|
||||
<br>
|
||||
-<h4><a name="PP4"></a>Reading a print test chart using a scanner or
|
||||
-camera<br>
|
||||
+<h4><a name="PP4"></a>Reading a print test chart using an acquisition device<br>
|
||||
</h4>
|
||||
<br>
|
||||
-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.<br>
|
||||
<br>
|
||||
-The main limitation of the scanner-as-colorimeter approach are:<br>
|
||||
+The main limitation of the any-device-as-colorimeter approach are:<br>
|
||||
<br>
|
||||
-* 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.<br>
|
||||
-* 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.<br>
|
||||
* Spectral differences caused by different black amounts in the print
|
||||
test chart can cause
|
||||
color errors. <br>
|
||||
* The IT8 chart gamut may be so much smaller than the printers that the
|
||||
-scanner profile is too inaccurate. <br>
|
||||
+acquisition device profile is too inaccurate. <br>
|
||||
<br>
|
||||
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..<br>
|
||||
<br>
|
||||
-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 <a href="http://www.argyllcms.com/doc/Scenarios.html#PS1">procedure</a>
|
||||
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 <a
|
||||
href="http://www.argyllcms.com/doc/colprof.html#u">-u</a> flag to
|
||||
avoid clipping scanned value whiter than the input calibration chart.<br>
|
||||
<br>
|
||||
-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.
|
||||
<big><span style="font-weight: bold;">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.</span></big><br>
|
||||
<br>
|
||||
@@ -858,21 +857,21 @@
|
||||
style="font-weight: bold;">PrinterB.tif</span> (or <span
|
||||
style="font-weight: bold;">PrinterB1.tif</span>, <span
|
||||
style="font-weight: bold;">PrinterB2.tif</span> 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.<br>
|
||||
<br>
|
||||
-The scanner recognition files
|
||||
+The acquisition device recognition files
|
||||
created when <span style="font-weight: bold;">printtarg</span> was run
|
||||
is assumed to be called <span style="font-weight: bold;">PrinterB.cht</span>.
|
||||
-Using the scanner profile created previously (assumed to be called <span
|
||||
- style="font-weight: bold;">scanner.icm</span>), the printer test chart
|
||||
+Using the device profile created previously (assumed to be called <span
|
||||
+ style="font-weight: bold;">device.icm</span>), the printer test chart
|
||||
scan patches are converted to CIE values using the <span
|
||||
style="font-weight: bold;">scanin</span> utility:<br>
|
||||
<br>
|
||||
<a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a
|
||||
href="scanin.html#c">-c</a> <a href="scanin.html#cp1">PrinterB.tif</a>
|
||||
-<a href="scanin.html#cp2">PrinterB.cht</a> <a href="scanin.html#cp3">scanner.icm</a>
|
||||
+<a href="scanin.html#cp2">PrinterB.cht</a> <a href="scanin.html#cp3">device.icm</a>
|
||||
<a href="scanin.html#cp4">PrinterB</a><br>
|
||||
<br>
|
||||
If there were multiple test chart pages, the results would be
|
||||
@@ -881,15 +880,15 @@
|
||||
<br>
|
||||
<a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a
|
||||
href="scanin.html#c">-c</a> <a href="scanin.html#cp1">PrinterB1.tif</a>
|
||||
-<a href="scanin.html#cp2">PrinterB1.cht</a> <a href="scanin.html#cp3">scanner.icm</a>
|
||||
+<a href="scanin.html#cp2">PrinterB1.cht</a> <a href="scanin.html#cp3">device.icm</a>
|
||||
<a href="scanin.html#cp4">PrinterB</a><br>
|
||||
<a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a
|
||||
href="scanin.html#ca">-ca</a> <a href="scanin.html#cp1">PrinterB2.tif</a>
|
||||
-<a href="scanin.html#cp2">PrinterB2.cht</a> <a href="scanin.html#cp3">scanner.icm</a>
|
||||
+<a href="scanin.html#cp2">PrinterB2.cht</a> <a href="scanin.html#cp3">device.icm</a>
|
||||
<a href="scanin.html#cp4">PrinterB</a><br>
|
||||
<a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a
|
||||
href="scanin.html#ca">-ca</a> <a href="scanin.html#cp1">PrinterB3.tif</a>
|
||||
-<a href="scanin.html#cp2">PrinterB3.cht</a> <a href="scanin.html#cp3">scanner.icm</a>
|
||||
+<a href="scanin.html#cp2">PrinterB3.cht</a> <a href="scanin.html#cp3">device.icm</a>
|
||||
<a href="scanin.html#cp4">PrinterB</a><br>
|
||||
<br>
|
||||
Now that the <span style="font-weight: bold;">PrinterB.ti3</span> 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<br>
|
||||
4 x Letter 1848<br>
|
||||
<br>
|
||||
- Scanner (printtarg with -iSS -s options):<br>
|
||||
+ Acquisition device (printtarg with -iSS -s options):<br>
|
||||
<br>
|
||||
1 x A4R 1014<br>
|
||||
2 x A4R 2028<br>
|
||||
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 "<span style="font-weight: bold;">RGB_LAB</span>" for an RGB printer
|
||||
or display, "<span style="font-weight: bold;">CMYK_XYZ</span>" for a
|
||||
printer, "<span style="font-weight: bold;">XYZ_RGB"</span> for an RGB
|
||||
-scanner.<br>
|
||||
+acquisition device.<br>
|
||||
<br>
|
||||
If spectral values are going to be included in the file, the following
|
||||
keywords and values shall be used:<br>
|
||||
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.<br>
|
||||
+associations for other devices such as acquisition devices and printers.<br>
|
||||
<br>
|
||||
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
|
17
argyllcms-1.3.0-udev151.patch
Normal file
17
argyllcms-1.3.0-udev151.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff -up Argyll_V1.3.0/libusb1/55-Argyll.rules.udev151 Argyll_V1.3.0/libusb1/55-Argyll.rules
|
||||
--- Argyll_V1.3.0/libusb1/55-Argyll.rules.udev151 2010-09-23 11:42:00.784827088 +0200
|
||||
+++ Argyll_V1.3.0/libusb1/55-Argyll.rules 2010-09-23 11:42:10.586231594 +0200
|
||||
@@ -43,12 +43,6 @@ ATTRS{idVendor}=="085c", ATTRS{idProduct
|
||||
# Huey
|
||||
ATTRS{idVendor}=="0971", ATTRS{idProduct}=="2005", ENV{COLOR_MEASUREMENT_DEVICE}="1"
|
||||
|
||||
-# Let udev-acl and ConsoleKit manage these devices, if applicable
|
||||
-TEST=="/lib/udev/udev-acl", TEST=="/var/run/ConsoleKit/database", ENV{COLOR_MEASUREMENT_DEVICE}=="*?", ENV{ACL_MANAGE}="1"
|
||||
-
|
||||
-# Otherwise, restrict access to members of the plugdev group
|
||||
-ENV{COLOR_MEASUREMENT_DEVICE}=="*?", ENV{ACL_MANAGE}!="*?", MODE="660", GROUP="plugdev"
|
||||
-
|
||||
# Set ID_VENDOR and ID_MODEL acording to VID and PID
|
||||
IMPORT{program}="usb-db %p"
|
||||
|
||||
diff -up Argyll_V1.3.0/libusb/55-Argyll.rules.udev151 Argyll_V1.3.0/libusb/55-Argyll.rules
|
80
argyllcms.changes
Normal file
80
argyllcms.changes
Normal file
@ -0,0 +1,80 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 11 20:00:46 UTC 2012 - kkaempf@suse.com
|
||||
|
||||
- Update to 1.3.5
|
||||
- add Argyll_V1.3.5_autotools.patch covering new files to compile
|
||||
- add 0001-Add-an-experimental-ColorHug-sensor-driver.patch to
|
||||
support 'colorhug' from http://hughski.com (experimental)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 8 10:33:27 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- Release 1.3.2 (bug fixes)
|
||||
- remove argyllcms-1.3.0-include.patch (merged upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 23 12:03:40 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- argyllcms-1.3.0-udev151.patch: remove all ACL management from
|
||||
udev rules, it is handled by udev package itself (Mandriva)
|
||||
- argyllcms-1.3.0-include.patch : fix missing includes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Sep 12 18:17:03 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- Release 1.3.0
|
||||
- remove patches argyllcms-1.1.0-bufferoverflow.patch,
|
||||
argyllcms-1.1.0-void.patch, argyllcms-1.1.0-strfmt.patch (merged
|
||||
upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 9 16:30:57 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- Update patch1 with new version from Roland, merging patch10 in it
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 9 15:58:06 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- Update to 1.2.1
|
||||
- move back icclib to argyllcms, upstream release are not so frequent as Argyllcms one
|
||||
- Patch10: allow to use (or not) system icclib
|
||||
- update patches 8 and 9 with new fixes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 5 16:21:44 UTC 2010 - fcrozat@novell.com
|
||||
|
||||
- Update to latest release and move icclib to a separate package
|
||||
------------------------------------------------------------------
|
||||
|
||||
Mon Apr 20 08:34:10 CET 2009 - Vladimir Nadvornik <nadvornik@novell.com>
|
||||
- ported to openSUSE
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 23 08:34:10 CET 2009 - Ron Ciesla <limb@jcomserv.net>
|
||||
- Patch for ICC library CVE-2009-{0583, 0584} by Tim Waugh.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 23 00:12:29 CET 2009 - Fedora Release Engineering <rel-eng@lists.fedoraproject.org>
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
* Wed Sep 3 2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 1.0.3-1
|
||||
* Mon Sep 1 2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 1.0.2-1
|
||||
* Sun Jul 27 2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 1.0.1-1
|
||||
* Wed Mar 26 2008 Tom "spot" Callaway <tcallawa@redhat.com>
|
||||
- patch applied for legal reasons
|
||||
* Thu Feb 8 2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 0.70-0.8.Beta9
|
||||
- 0.70-0.8.Beta8
|
||||
* Thu Feb 7 2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 0.70-0.7.Beta8
|
||||
* Thu Dec 14 2007 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 0.70-0.6.Beta7
|
||||
- 0.70-0.5.Beta7
|
||||
* Thu Dec 13 2007 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 0.70-0.4.Beta7
|
||||
* Wed Dec 12 2007 Nicolas Mailhot <nicolas.mailhot at laposte.net>
|
||||
- 0.70-0.3.Beta7
|
||||
- 0.70-0.2.Beta7
|
||||
- 0.70-0.1.Beta7
|
171
argyllcms.spec
Normal file
171
argyllcms.spec
Normal file
@ -0,0 +1,171 @@
|
||||
#define alphaversion Beta8
|
||||
#define alphatag .%{alphaversion}
|
||||
|
||||
%define archivename Argyll_V%{version}%{?alphaversion}_src.zip
|
||||
|
||||
Name: argyllcms
|
||||
Version: 1.3.5
|
||||
Release: 1
|
||||
Summary: ICC compatible color management system
|
||||
|
||||
Group: System/X11/Utilities
|
||||
License: GPLv3 and MIT
|
||||
URL: http://www.%{name}.com/
|
||||
|
||||
Source0: %{url}%{archivename}
|
||||
Source1: 19-color.fdi
|
||||
Source2: color-device-file.policy
|
||||
# Many thanks to Alastair M. Robinson and Roland Mas (debian)
|
||||
Patch1: Argyll_V1.3.0_autotools.patch
|
||||
# new and changed files in 1.3.5
|
||||
Patch2: Argyll_V1.3.5_autotools.patch
|
||||
# Patch applied for legal reasons
|
||||
Patch4: argyllcms-1.0.2-legal.patch
|
||||
# drop udev-acl stuff, handled by udev directly (Mandriva)
|
||||
Patch5: argyllcms-1.3.0-udev151.patch
|
||||
# add support for colorhug (http://hughski.com)
|
||||
Patch6: ColorHug-sensor-driver.patch
|
||||
|
||||
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
||||
BuildRequires: libtiff-devel unzip
|
||||
BuildRequires: xorg-x11-devel
|
||||
|
||||
BuildRequires: udev
|
||||
Requires: udev
|
||||
%if %suse_version < 1120
|
||||
BuildRequires: hal
|
||||
Requires: hal
|
||||
%endif
|
||||
|
||||
%description
|
||||
The Argyll color management system 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.
|
||||
|
||||
|
||||
%package doc
|
||||
Summary: Argyll CMS documentation
|
||||
Group: System/X11/Utilities
|
||||
# Does not really make sense without Argyll CMS itself
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description doc
|
||||
The Argyll color management system supports accurate ICC profile creation for
|
||||
scanners, CMYK printers, film recorders and calibration and profiling of
|
||||
displays.
|
||||
|
||||
This package contains the Argyll color management system documentation.
|
||||
|
||||
%package -n libicc2
|
||||
Summary: Libraries for icclib
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libicc2
|
||||
The icclib is a set of routines which implement the reading and
|
||||
writing of color profile files that conform to the International
|
||||
Color Consortium (ICC) Profile Format Specification, Version 3.4.
|
||||
|
||||
%package -n libicc-devel
|
||||
Summary: Development libraries, header files for icclib
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: libicc2 = %{version}
|
||||
|
||||
%description -n libicc-devel
|
||||
The icclib is a set of routines which implement the reading and
|
||||
writing of color profile files that conform to the International
|
||||
Color Consortium (ICC) Profile Format Specification, Version 3.4.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n Argyll_V%{version}
|
||||
# Autotools support
|
||||
%patch1 -p1 -b .auto
|
||||
%patch2 -p1
|
||||
# Legal patch required
|
||||
#patch4 -p1 -b .legal
|
||||
%if %suse_version >= 1120
|
||||
%patch5 -p1 -b .udev151
|
||||
%if %suse_version >= 1140
|
||||
# colorhug is for openSUSE >= 11.4 only
|
||||
%patch6 -p1
|
||||
%endif
|
||||
%endif
|
||||
|
||||
#needed by patches 1
|
||||
autoreconf -i
|
||||
|
||||
%build
|
||||
%configure
|
||||
make
|
||||
|
||||
|
||||
%install
|
||||
make install DESTDIR=%{buildroot}
|
||||
|
||||
# remove unpackaged files
|
||||
rm -f %{buildroot}/%{_libdir}/argyll/*.{la,a,so} %{buildroot}/%{_libdir}/*.{la,a}
|
||||
|
||||
%if %suse_version < 1120
|
||||
# Do some device permission magic
|
||||
install -d -m 0755 %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/
|
||||
install -p -m 0644 %{SOURCE1} \
|
||||
%{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/
|
||||
|
||||
install -d -m 0755 %{buildroot}%{_datadir}/PolicyKit/policy/
|
||||
install -p -m 0644 %{SOURCE2} \
|
||||
%{buildroot}%{_datadir}/PolicyKit/policy/
|
||||
%else
|
||||
install -d -m 0755 %{buildroot}%{_sysconfdir}/udev/rules.d
|
||||
install -p -m 0644 libusb1/55-Argyll.rules \
|
||||
%{buildroot}%{_sysconfdir}/udev/rules.d
|
||||
%endif
|
||||
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%post -n libicc2 -p /sbin/ldconfig
|
||||
%postun -n libicc2 -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc *.txt
|
||||
|
||||
%{_bindir}/*
|
||||
%{_libdir}/argyll
|
||||
%dir %{_datadir}/color
|
||||
%{_datadir}/color/argyll
|
||||
|
||||
%if %suse_version < 1120
|
||||
%{_datadir}/hal/fdi/policy/10osvendor/19-color.fdi
|
||||
%{_datadir}/PolicyKit/policy/color-device-file.policy
|
||||
%else
|
||||
%{_sysconfdir}/udev/rules.d/55-Argyll.rules
|
||||
%endif
|
||||
|
||||
%exclude %{_datadir}/doc
|
||||
|
||||
%files doc
|
||||
%defattr(-,root,root,-)
|
||||
%doc doc/*.html doc/*.jpg doc/*.txt
|
||||
|
||||
%files -n libicc2
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/*.so.2*
|
||||
|
||||
%files -n libicc-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/*.so
|
||||
%{_includedir}/*
|
||||
|
||||
%changelog
|
15
color-device-file.policy
Normal file
15
color-device-file.policy
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
<!-- This file normally lives at
|
||||
"/usr/share/PolicyKit/policy/color-device-file.policy"
|
||||
-->
|
||||
<policyconfig>
|
||||
<action id="org.freedesktop.hal.device-access.color">
|
||||
<description>Directly access color meter devices</description>
|
||||
<message>System policy prevents access to the color meter devices</message>
|
||||
<defaults>
|
||||
<allow_inactive>no</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
Loading…
Reference in New Issue
Block a user