297 lines
5.5 KiB
Bash
Executable File
297 lines
5.5 KiB
Bash
Executable File
#!/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/
|