#! /bin/sh
#
# psconertij [Paper_inf] [rc_file]
# Copyright (C) 2003 Brother. Industries, Ltd.

# 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., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307  USA
#


PAPER_INF=$1
RC_FILE=$2
PRINTER=$3

# get Paper Type
PAPER_TYPE=`sed -n '/MediaSize/p' $RC_FILE`
PAPER_TYPE=`echo $PAPER_TYPE | sed -e 's/ //g' -e 's/MediaSize=//'`


# get Resolution
RESOLUTION=`sed -n '/\<Resolution/p' $RC_FILE`
RESOLUTION=`echo $RESOLUTION | sed -e 's/ //g' -e 's/Resolution=//'`



# get paper size
LINE=`eval sed -n '/^"$PAPER_TYPE"/p' $PAPER_INF`
WIDTH=$LINE
HEIGHT=$LINE


WIDTH=`echo $WIDTH | sed -e 's/^.*:[ ]//' -e 's/[ ].*//'`
HEIGHT=`echo $HEIGHT | sed -e 's/^.*[ ]//'`

#if [ "$RESOLUTION" = "300" ] ; then
#Adjust the paper size according to the Fast Normal printing , 300DPI
#	WIDTH=`expr $WIDTH / 2`
#	HEIGHT=`expr $HEIGHT / 2`
#elif [ "$RESOLUTION" = "750" ] ; then
#Adjust both the Real Resolution and paper size for the Enhanced Normal Printing , 750DPI
#  WIDTH=`expr $WIDTH \* 5`
#  WIDTH=`expr $WIDTH / 4`
#  HEIGHT=`expr $HEIGHT \* 5`
#  HEIGHT=`expr $HEIGHT / 4`
#fi

GHOST_SCRIPT=`which gs`

# get ps bandingbox
INPUT_TEMP=`mktemp /tmp/br_input.XXXXXX`
INPUT_PS=`mktemp /tmp/br_input.XXXXXX`
TEMP_PS=`mktemp /tmp/br_input.XXXXXX`

touch $INPUT_PS
cat > $INPUT_PS

# get ps width and ps height (72 dpi)
#grep "ImagingBBox" $INPUT_PS > $INPUT_TEMP
IMAGEVAR="ImagingBBox"
IMAGINGBOX=`grep $IMAGEVAR $INPUT_PS`
if  test -n "$IMAGINGBOX" ; then
echo  $IMAGINGBOX > $INPUT_TEMP

# get image box size
$GHOST_SCRIPT -dNOPAUSE -sDEVICE=bbox -q $INPUT_PS -c quit 2>> $INPUT_TEMP

# get the cropped bounding box
bbox=`awk '/^%%HiResBoundingBox:/ { print  $2; }' $INPUT_TEMP`
L=`echo $bbox | sed -e 's/^.*:[ ]//' -e 's/[ ].*//'`
bbox=`awk '/^%%HiResBoundingBox:/ { print  $3; }' $INPUT_TEMP`
T=`echo $bbox | sed -e 's/^.*:[ ]//' -e 's/[ ].*//'`
bbox=`awk '/^%%HiResBoundingBox:/ { print  $4; }' $INPUT_TEMP`
R=`echo $bbox | sed -e 's/^.*:[ ]//' -e 's/[ ].*//'`
bbox=`awk '/^%%HiResBoundingBox:/ { print  $5; }' $INPUT_TEMP`
B=`echo $bbox | sed -e 's/^.*:[ ]//' -e 's/[ ].*//'`

echo $L, $R, $T, $B>>$INPUT_TEMP


PSTOPS="/usr/bin/pstops"
BRPS2PS="/usr/bin/brps2ps_$PRINTER"

$BRPS2PS $L $T $R $B $WIDTH $HEIGHT $PSTOPS $INPUT_PS $TEMP_PS $INPUT_TEMP>>$INPUT_TEMP

# get pstops command
PSCMD=`sed -n '/PSCOMMAND/p' $INPUT_TEMP`
PSCMD=`echo $PSCMD | sed -e 's/PSCOMMAND=//'`

CMDARGV=`sed -n '/CMDARGV/p' $INPUT_TEMP`
CMDARGV=`echo $CMDARGV | sed -e 's/CMDARGV=//'`
echo $PSCMD ${CMDARGV} >>$INPUT_TEMP
$PSCMD ${CMDARGV}
else
cp $INPUT_PS $TEMP_PS
fi

OUTPUT_TYPE=ppmraw
OUT="-"
GHOST_OPT="-q -dNOPROMPT -dNOPAUSE -dSAFER -sDEVICE=$OUTPUT_TYPE -sOutputFile=$OUT - -c quit"
eval cat $TEMP_PS | $GHOST_SCRIPT -r$RESOLUTION -g${WIDTH}x${HEIGHT} $GHOST_OPT

rm -f $INPUT_TEMP
rm -f $INPUT_PS
rm -f $TEMP_PS


