#!/bin/sh # # $Header: /cvsroot/m2300w/m2300w/src/m2300w-wrapper.in,v 1.7 2005/10/06 19:55:04 gfuer Exp $ # # Copyright (C) 2003 Rick Richardson # 2004 Leif Birkenfeld # 2005 Gerhard Fuernkranz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # Authors: Rick Richardson # Leif Birkenfeld # Gerhard Fuernkranz #********************************************************************* # This Version of the wrapper-script for the Minolta Magicolor 2300W # is heavy based on the Script from Rick's 'foo2zjs-wrapper' for the # Minolta Magiccolor 2300DL. # So i will leave his copyright on it. #********************************************************************* cat >> /tmp/m2300w.log < Print menu builtin ......... Ghostscript's builtin default EOF exit 1 } ############################################################################## # N-up-ify the job. Requires psnup from psutils package ############################################################################## nup2() { tr '\r' '\n' | psnup -d2 $nPC -2 -m.2in -q } nup4() { tr '\r' '\n' | psnup -d2 $nPC -4 -m.3in -q } error() { echo "$BASENAME: $1" >&2 exit 1 } ############################################################################## # M A I N ############################################################################## CMDLINE="$*" MODEL=2300W MEDIA=0 PAPER=4 RESCODE=2 NUP= BOOK= OVLPI=0 GSOPT= DEBUG=0 # long options PrintoutMode=Auto Quality="@PrintoutMode" ColorMode="@PrintoutMode" ColorProfile="@PrintoutMode" DefaultRGB=sRGB # Process the options while getopts "24dm:M:n:o:p:P:r:R:sg:h?" opt do case $opt in M) MODEL="$OPTARG" ;; d) DEBUG=`expr $DEBUG + 1` ;; m) MEDIA="$OPTARG" ;; p) PAPER="$OPTARG" ;; r) RESCODE="$OPTARG" ;; R) RENDERFILES="$OPTARG" ;; s) SAVETONER="-s" ;; g) GSOPT="$OPTARG" ;; 2) NUP="2" ;; 4) NUP="4" ;; P) PrintoutMode="$OPTARG" ;; o) case "$OPTARG" in PrintoutMode=* | Quality=* | ColorMode=* | \ ColorProfile=* | DefaultRGB=* | DefRGB=* ) KEY=`echo "$OPTARG" | sed 's/=.*$//'` VAL=`echo "$OPTARG" | sed 's/^[a-zA-Z]*=//'` test "$KEY" = DefRGB && KEY=DefaultRGB eval "$KEY='$VAL'" ;; *) usage ;; esac ;; h|\?) if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then echo "Illegal command:" echo "$0 $CMDLINE" echo fi usage ;; esac done shift `expr $OPTIND - 1` ############################################################################## # model ############################################################################## case "$MODEL" in 2300W) DRIVER="$BINDIR/m2300w" ;; 2400W) DRIVER="$BINDIR/m2400w" ;; *) error "Unknown model $MODEL" ;; esac ############################################################################## # resolution ############################################################################## # limit 2400 DPI to 1200 DPI on 2300W if [ "$RESCODE" = 3 -a "$MODEL" = 2300W ]; then RESCODE=2 fi case "$RESCODE" in #1) RESMUL=1; RESCP="600"; RESSCR="600"; RES="-r600x600" ;; //coming soon 2) RESMUL=2; RESCP="1200"; RESSCR="1200"; RES="-r1200x600" ;; 3) RESMUL=4; RESCP="1200"; RESSCR="2400"; RES="-r2400x600" ;; *) error "Unknown resolution code $RESCODE";; esac RESCODESTR="-r $RESCODE"; ############################################################################## # PrintoutMode ############################################################################## case "$PrintoutMode" in Auto | Gray | Photo | Draft | Draft.Gray) ;; *) usage ;; esac ############################################################################## # Quality ############################################################################## if [ "$Quality" = "@PrintoutMode" ] ; then case "$PrintoutMode" in *Draft*) Quality=Draft ;; *) Quality=Normal ;; esac fi case "$Quality" in Normal | Draft) ;; *) usage ;; esac ############################################################################## # ColorMode ############################################################################## if [ "$ColorMode" = "@PrintoutMode" ] ; then case "$PrintoutMode" in *Gray*) ColorMode=Gray ;; *) ColorMode=Color ;; esac fi case "$ColorMode" in Gray) GSDEV=-sDEVICE=pbmraw; COLOR="-c 1" ;; Color) GSDEV=-sDEVICE=pksmraw; COLOR="-c 2" ;; *) usage ;; esac ############################################################################## # ColorProfile ############################################################################## # currently only this paper suported PAPERBRAND=CHP410 case "$ColorProfile" in None) CRDFILE="" ;; User*) CRDFILE="$PSFILES/${ColorProfile}.crd" ;; *) if [ "$Quality" = Draft ] ; then CRDFILE="$PSFILES/${PAPERBRAND}-${RESCP}-Draft.crd" elif [ "$ColorMode" = Gray ] ; then CRDFILE="$PSFILES/${PAPERBRAND}-${RESCP}-AutoColor.crd" elif [ "$ColorProfile" = "@PrintoutMode" ] ; then case "$PrintoutMode" in Photo) CRDFILE="$PSFILES/${PAPERBRAND}-${RESCP}-Photo.crd" ;; *) CRDFILE="$PSFILES/${PAPERBRAND}-${RESCP}-AutoColor.crd" ;; esac else CRDFILE="$PSFILES/${PAPERBRAND}-${RESCP}-${ColorProfile}.crd" fi ;; esac if [ -n "$CRDFILE" -a ! -f "$CRDFILE" ]; then error "$CRDFILE does not exist" exit 1 fi ############################################################################## # DefaultRGB DEFRGB="$PSFILES/defrgb-${DefaultRGB}.csa" if [ ! -f "$DEFRGB" ]; then error "DefaultRGB=${DefaultRGB} not supported" exit 1 fi ############################################################################## # prologue files ############################################################################## PROLOG="$PSFILES/prolog.ps" EPILOGUE="$PSFILES/epilogue.ps" SCREEN="$PSFILES/screen${RESSCR}.ps" if [ -z "$RENDERFILES" ] ; then RENDERFILES="$PROLOG $DEFRGB $CRDFILE $SCREEN $EPILOGUE" fi ############################################################################## # paper ############################################################################## case "$PAPER" in 4|A4|a4) nPC="-pa4"; gsPaperCode="-sPAPERSIZE=a4"; paper="4"; resX="4752"; resY="6808"; expMedia="-1";; 6|B5JIS|b5jis) nPC=""; gsPaperCode="" ; paper="6"; resX="4088"; resY="5856"; expMedia="-1";; 8|A5|a5) nPC="-pa5"; gsPaperCode="-sPAPERSIZE=a5"; paper="8"; resX="3288"; resY="4752"; expMedia="-1";; 18|FOLIO|folio|Folio) nPC="-pfolio"; gsPaperCode="" ; paper="18"; resX="4752"; resY="7584"; expMedia="-1";; 25|legal|LEGAL|Legal) nPC="-plegal"; gsPaperCode="-sPAPERSIZE=legal"; paper="25"; resX="4896"; resY="8136"; expMedia="-1";; 26) nPC=""; gsPaperCode="-sPAPERSIZE=a4"; paper="26"; resX="4896"; resY="7592"; expMedia="-1";; 27|Letter|letter|LETTER) nPC="-pletter"; gsPaperCode="-sPAPERSIZE=letter"; paper="27"; resX="4896"; resY="6392"; expMedia="-1";; 31|Executive|EXECUTIVE|executive) nPC=""; gsPaperCode="" ; paper="31"; resX="6096"; resY="4144"; expMedia="-1";; 33|Statement|statement|STATEMENT) nPC=""; gsPaperCode="" ; paper="33"; resX="3096"; resY="4896"; expMedia="-1";; 36) nPC=""; gsPaperCode="" ; paper="36"; resX="2120"; resY="4296"; expMedia="3";; 37) nPC=""; gsPaperCode="" ; paper="37"; resX="2272"; resY="5496"; expMedia="3";; 38) nPC=""; gsPaperCode="" ; paper="38"; resX="2392"; resY="4992"; expMedia="3";; 39) nPC=""; gsPaperCode="" ; paper="39"; resX="3616"; resY="5200"; expMedia="3";; 40) nPC=""; gsPaperCode="" ; paper="40"; resX="2480"; resY="3616"; expMedia="3";; 41) nPC=""; gsPaperCode="" ; paper="41"; resX="3944"; resY="5696"; expMedia="3";; *) error "Unknown paper code $PAPER";; esac $((resX*=$RESMUL)); PAPERSIZE="-g$resX"x"$resY"; PAPERCODE="-p $paper"; ############################################################################## # media code ############################################################################## case "$MEDIA" in 0|standard) MEDIA="0" ;; 1|carton) MEDIA="1" ;; 2|transparency) MEDIA="2" ;; 3|envelope) MEDIA="3" ;; 4|letterhead) MEDIA="4" ;; 5|postcard) MEDIA="5" ;; 6|labels) MEDIA="6" ;; [0-9]*) ;; *) error "Unknown media code $MEDIA" ;; esac # overwrite mediacode if the selected paper requires # special media (according to the original windows driver) case "$expMedia" in -1) MEDIA="$MEDIA";; *) MEDIA="$expMedia";; esac MEDIACODE="-m $MEDIA"; ############################################################################## # If there is an argument left, take it as the file to print. # Otherwise, the input comes from stdin. ############################################################################## if [ $# -ge 1 ]; then if [ "$LPJOB" = "" ]; then : # LPJOB="$1" fi exec < $1 fi ############################################################################## # Filter thru psnup if N-up printing has been requested ############################################################################## case $NUP in 2) PREFILTER="nup2";; 4) PREFILTER="nup4";; *) PREFILTER=cat;; esac ############################################################################## # debugging stuff ############################################################################## tee_prn() { if [ $DEBUG -ge 2 ] ; then tee /tmp/m2300w.prn else cat fi } tee_pbm() { if [ $DEBUG -ge 2 ] ; then tee /tmp/m2300w_gsout.pbm else cat fi } if [ $DEBUG -ge 1 ] ; then DRIVER_DEBUG="-v2" fi if [ $DEBUG -ge 2 ] ; then DRIVER_DEBUG="-v5" fi ############################################################################## # Run ghostscript and m2300w ############################################################################## # use pre-packaged ghostscript 8.xx, if available if test -f $PREFIX/share/$PACKAGE_NAME/gs/bin/gs-m2300w; then GSBIN=$PREFIX/share/$PACKAGE_NAME/gs/bin/gs-m2300w else GSBIN=gs fi GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -dNOINTERPOLATE -dMaxBitmap=134217728" cat >> /tmp/m2300w.log <>/tmp/m2300w.log) 3>&1 | tee /tmp/m2300w_gsout.pbm | $DRIVER $DRIVER_DEBUG $M2300WUCR $SAVETONER $PAPERCODE $MEDIACODE \ -i - -o - $COLOR $RESCODESTR | tee /tmp/m2300w.prn EOF $PREFILTER | ($GS $gsPaperCode $RES $GSDEV $GSOPT \ -sOutputFile="|cat 1>&3" $RENDERFILES - >>/tmp/m2300w.log) 3>&1 | tee_pbm | $DRIVER $DRIVER_DEBUG $M2300WUCR $SAVETONER $PAPERCODE $MEDIACODE \ -i - -o - $COLOR $RESCODESTR | tee_prn