summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--printer-profile.in296
1 files changed, 296 insertions, 0 deletions
diff --git a/printer-profile.in b/printer-profile.in
new file mode 100644
index 0000000..5363847
--- /dev/null
+++ b/printer-profile.in
@@ -0,0 +1,296 @@
+#!/bin/sh
+
+PROGNAME="$0"
+
+usage() {
+ cat <<EOF
+NAME
+ `basename $PROGNAME` - printer-profile using X-Rite ColorMunki and Argyll CMS
+
+SYNOPSIS
+ `basename $PROGNAME` [options] manuf model [rgb|cmyk] [patches] [ink-limit]
+
+DESCRIPTION
+ Prints a test chart, uses the ColorMunki instrument to scan it in, then
+ computes an ICM profile using the Argyll Color Management System.
+
+ Manuf is "sam". Model is "clp-300" or "clp-315".
+ Manuf is "hp". Model is "2600" or "cp1215".
+ Manuf is "km". Model is "1600" or "2300" or "2530".
+
+ "rgb" is the usual setting. "patches" is a multiple 196 per page.
+
+ Edit the script for additional models.
+
+OPTIONS
+ -b 1|2 Bits per pixel ($BPP)
+ -r XRESxYRES Resolution. Default=''. ($RES)
+ -P rem-print Remote print (64-bit) machine, or none ($REMPRINT)
+ -S rem-scan Remote scan (ColorMunki) machine, or none ($REMSCAN)
+ -D lvl Debug level
+
+EXAMPLE
+ $ printer-profile sam 315 rgb 196
+
+BUGS
+ gs 8.64 and before has problems with 32-bit machines and color profile
+ data. Don't use!
+
+ You need two copies of Argyll: must be 1.0.3 and 1.1.0beta. Otherwise,
+ targen and colprof core dumps.
+
+SEE ALSO
+ http://www.xritephoto.com/html/colormunkisplash.htm
+ from Amazon, \$390 shipped
+ http://www.argyllcms.com/
+ free!
+EOF
+
+ exit 1
+}
+
+#
+# Report an error and exit
+#
+error() {
+ echo "`basename $PROGNAME`: $1" >&2
+ exit 1
+}
+
+debug() {
+ if [ $DEBUG -ge $1 ]; then
+ echo "`basename $PROGNAME`: $2" >&2
+ fi
+}
+
+#
+# Execute a command as root
+#
+root() {
+ if [ -x /usr/bin/root ]; then
+ /usr/bin/root $@
+ else
+ su -c "$*"
+ fi
+}
+
+#
+# trap on error
+#
+trap "exit 1" ERR
+
+#
+# Process the options
+#
+REMPRINT=amd
+REMSCAN=mac
+REMSCAN=none
+RGB=rgb
+PATCHES=196 #Per page!
+BPP=1
+RES=
+DEBUG=0
+while getopts "b:r:P:S:D:h?" opt
+do
+ case $opt in
+ b) BPP="$OPTARG";;
+ r) RES="$OPTARG";;
+ P) REMPRINT="$OPTARG";;
+ S) REMSCAN="$OPTARG";;
+ D) DEBUG="$OPTARG";;
+ h|\?) usage;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+#
+# Main Program
+#
+if [ $# -lt 2 ]; then
+ usage
+fi
+
+MANUF="$1"
+MODEL="$2"
+if [ $# -ge 3 ]; then
+ RGB="$3"
+fi
+if [ $# -ge 4 ]; then
+ PATCHES="$4"
+fi
+INK="$5"
+
+BPP_b="-b$BPP"
+RES_r=
+if [ "$RES" != "" ]; then
+ RES_r="-r$RES"
+fi
+
+case "$MANUF" in
+km)
+ MANUF=km
+ case "$MODEL" in
+ *1600*)
+ FOO=foo2lava
+ WRAPPER="foo2lava-wrapper $RES_r -z2 -c -C10 -Gnone.icm"
+ OUT="root cp xxx.prn /dev/usb/lp1"
+ ;;
+ *2530*)
+ FOO=foo2lava
+ WRAPPER="foo2lava-wrapper $RES_r -z0 -c -C10 -Gnone.icm"
+ OUT="nc 192.168.1.13 9100 < xxx.prn"
+ ;;
+ *2300*)
+ FOO=foo2zjs
+ WRAPPER="foo2zjs-wrapper $RES_r -c -C10 -Gnone.icm"
+ OUT="nc 192.168.1.10 9100 < xxx.prn"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ ;;
+sam*)
+ MANUF=sam
+ FOO=foo2qpdl
+ case "$MODEL" in
+ *300*)
+ WRAPPER="foo2qpdl-wrapper $RES_r -z0 -c -C10 -Gnone.icm"
+ OUT="nc 192.168.1.11 9100 < xxx.prn"
+ ;;
+ *315*)
+ WRAPPER="foo2qpdl-wrapper $RES_r -z2 -c -C10 -Gnone.icm"
+ OUT="root cp xxx.prn /dev/usb/lp1"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ ;;
+hp*)
+ MANUF=hp
+ FOO=foo2hp
+ case "$MODEL" in
+ *2600*)
+ WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z0 -c -C10 -Gnone.icm"
+ OUT="nc 192.168.1.12 9100 < xxx.prn"
+ ;;
+ *cp1215*)
+ WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z1 -c -C10 -Gnone.icm"
+ OUT="root cp xxx.prn /dev/usb/lp2"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ ;;
+*)
+ usage
+ ;;
+esac
+
+mrp="$MANUF-$MODEL-$RGB-$PATCHES"
+if [ "$INK" != "" ]; then
+ mrp="$mrp-ink$INK"
+fi
+if [ "$BPP" != "" ]; then
+ mrp="$mrp-bpp$BPP"
+fi
+if [ "$RES" != "" ]; then
+ mrp="$mrp-$RES"
+fi
+echo "$mrp"
+
+
+BETABIN=~/src/Argyll_V1.1.0_Beta/bin
+if [ ! -x $BETABIN/printtarg ]; then
+ error "No beta bin in $BETABIN!"
+fi
+
+targen_opts=
+case "$RGB" in
+rgb|RGB) targen_opts="$targen_opts -d3";;
+cmyk|CMYK) targen_opts="$targen_opts -d4";;
+*) error "Parm2: Must be rgb or cmyk";;
+esac
+
+targen_opts="$targen_opts -f$PATCHES"
+
+if [ "$INK" != "" ]; then
+ targen_opts="$targen_opts -l$INK"
+fi
+
+echo
+echo "******************************** targen ********************************"
+echo "targen $targen_opts $mrp"
+if ! targen $targen_opts $mrp >$mrp.err1; then
+ cat $mrp.err1
+ exit 1
+fi
+
+echo
+echo "******************************* printtarg ******************************"
+echo "$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp"
+$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp
+
+evince $mrp.ps &
+
+echo
+echo "******************************* print it *******************************"
+echo "$WRAPPER"
+case "$REMPRINT" in
+''|none)
+ $WRAPPER <$mrp.ps >$mrp.prn
+ ;;
+*)
+ ssh $REMPRINT "$WRAPPER" <$mrp.ps >$mrp.prn
+ ;;
+esac
+ls -l $mrp.prn
+echo -n "Print it? [y|n]? "
+read yes
+case "$yes" in
+y|Y)
+ cp $mrp.prn xxx.prn
+ echo " $OUT"
+ eval $OUT
+ rm -f xxx.prn
+esac
+
+echo
+echo "******************************* chartread ******************************"
+case "$REMSCAN" in
+''|none)
+ echo "$BETABIN/chartread $mrp"
+ $BETABIN/chartread $mrp
+ ;;
+*)
+ echo "scp $mrp.ti2 mac:"
+ scp $mrp.ti2 mac:
+ echo "$BETABIN/chartread $mrp"
+ echo -n "Scanned on remote system $REMSCAN? [y/n]? "
+ read yes
+ case "$yes" in
+ y|Y)
+ scp $REMSCAN:$mrp.ti3 .
+ ;;
+ esac
+ ;;
+esac
+
+echo
+echo "******************************** colprof *******************************"
+case $RGB in
+rgb)
+ echo "colprof -v -D\"$mrp\" -qm -cmt -dpp $mrp"
+ colprof -v -D"$mrp" -qm -cmt -dpp $mrp
+ ;;
+cymk)
+ echo "colprof -v -D\"$mrp\" -qm -cmt -dpp -kr $mrp"
+ colprof -v -D"$mrp" -qm -cmt -dpp -kr $mrp
+ ;;
+esac
+
+root cp $mrp.icc /usr/share/$FOO/icm/testing.icm
+echo "/usr/share/$FOO/icm/testing.icm created!"
+ls -l /usr/share/$FOO/icm/