#!/bin/csh -f
#
# $Id: lasergnu,v 3.37 1992/05/28 03:31:19 woo Exp $
#
# Print gnuplot output on an Imagen or Postscript laser printer.

set print_banner = on   # Print a banner page unless told otherwise.
set input_files = ()    # the plot input command files
set lpr_opts = ()       # options to lpr

# Default printer set by shell variable PRINTER.
if (! $?PRINTER) then
    if ($?LASER) then
        set PRINTER=$LASER
    else
        set PRINTER="lw0"
    endif
endif
set printer = (-P$PRINTER)

# File for plot commands, and for plot output
set TMP=/tmp/plot$$
set outfile=$TMP.out    # the output file
onintr cleanup

# default is Imagen mode for Imagen printer; see -p option
set setterm="set terminal imagen"
set LANG="-Limpress"

set usage="usage: lasergnu [-Pprinter] [-b] [-p] [-t title] [-f file] ['plot command']...."

# Loop through the command-line arguments.

top:
    if ($#argv > 0) then

        switch ("$argv[1]")

        case -b*:   # Do not print a banner page.
        case -J*:   # Compatible with imprint.
            set print_banner = off
                set lpr_opts=($lpr_opts -h)
            shift argv
            goto top

        case -f?*:  # Specify file containing plot commands
            set input_files = ($input_files `echo $argv[1] | sed 's/^-f//'`)
            shift argv
            goto top

        case -f:    # Specify file containing plot commands
            shift argv
            if ($#argv > 0) then
                set input_files = ($input_files $argv[1])
                shift argv
            else
                echo "Usage: -f file ..."
                echo "Type    lasergnu -help    for help."
                exit (1)
            endif
            goto top

        case -t?*:  # Specify title of plot
            echo set title \""`echo $argv[1] | sed 's/^-t//'`"\" >> $TMP
            shift argv
            goto top

        case -t:    # Specify title of plot
            shift argv
            if ($#argv > 0) then
                echo set title \""$1"\" >> $TMP
                shift argv
            else
                echo "Usage: -t title ..."
                echo "Type    lasergnu -help    for help."
                exit (1)
            endif
            goto top
        case -help:
            echo "$usage"
            exit(1)

        case -P?*:  # Set the printer, exactly as by itroff.
            set printer = $argv[1]
            shift argv
            goto top

        case -P:    # Set the printer, exactly as by itroff.
            shift argv
            if ($#argv > 0) then
                set printer = (-P$argv[1])
                shift argv
            else
                echo "Usage: -P printer ..."
                echo "Type    lasergnu -help    for help."
                exit (1)
            endif
            goto top

                # use impress
        case -I:
             echo Imagen is the default mode now
             shift argv
             goto top

                # use postscript instead of impress language
        case -p:
             set setterm="set term postscript"
             set LANG="-Lpostscript"
             shift argv
             goto top

        case -?*:
            echo "I do not recognize option $argv[1]."
            echo "$usage"
            exit (1)

        default:
              echo "$argv[1]"   >> $TMP
            shift argv
            goto top

        endsw
    endif

# try to devine the printer type
if ($printer =~ -Plw*) then
    set setterm="set term postscript"
    set LANG="-Lpostscript"
endif

if ($printer =~ -Pim*) then
    set setterm="set term imagen"
    set LANG="-Limpress"
endif

# Set up input file
echo $setterm > $TMP.plt
echo set output \"$outfile\" >> $TMP.plt
if (-e $TMP) cat $TMP >> $TMP.plt

# If input file is specified AND command line contains plot commands, then
#   do command line args first, then plot commands in input file.
gnuplot $TMP.plt $input_files

if ($status == 0 && -e $outfile && ! -z $outfile) then
    # The printer is whatever printer was last specified,
    # or the default printer if none was specified.
    if ($LANG == -Limpress) then
        /usr/local/bin/ipr $LANG $printer \
           -D"jobheader $print_banner" \
           -D"pagereversal on" \
           -D"program lasergnu" $outfile
    else if ($LANG == -Lpostscript) then
           lpr $lpr_opts $printer $outfile
    endif
else
    echo "lasergnu: error in plotting or empty plot; nothing printed."
endif

cleanup:
rm -f $TMP* $outfile
