Annotation of OpenXM_contrib/gnuplot/lasergnu, Revision 1.1.1.2
1.1 maekawa 1: #!/bin/csh -f
2: #
1.1.1.2 ! maekawa 3: # $Id: lasergnu,v 1.1.1.1 1998/04/15 19:16:31 lhecking Exp $
1.1 maekawa 4: #
5: # Print gnuplot output on an Imagen or Postscript laser printer.
6:
7: set print_banner = on # Print a banner page unless told otherwise.
8: set input_files = () # the plot input command files
9: set lpr_opts = () # options to lpr
10:
11: # Default printer set by shell variable PRINTER.
12: if (! $?PRINTER) then
13: if ($?LASER) then
14: set PRINTER=$LASER
15: else
16: set PRINTER="lw0"
17: endif
18: endif
19: set printer = (-P$PRINTER)
20:
21: # File for plot commands, and for plot output
22: set TMP=/tmp/plot$$
23: set outfile=$TMP.out # the output file
24: onintr cleanup
25:
26: # default is Imagen mode for Imagen printer; see -p option
27: set setterm="set terminal imagen"
28: set LANG="-Limpress"
29:
30: # Loop through the command-line arguments.
31:
32: top:
33: if ($#argv > 0) then
34:
35: switch ("$argv[1]")
36:
37: case -b*: # Do not print a banner page.
38: case -J*: # Compatible with imprint.
39: set print_banner = off
40: set lpr_opts=($lpr_opts -h)
41: shift argv
42: goto top
43:
44: case -f?*: # Specify file containing plot commands
45: set input_files = ($input_files `echo $argv[1] | sed 's/^-f//'`)
46: shift argv
47: goto top
48:
49: case -f: # Specify file containing plot commands
50: shift argv
51: if ($#argv > 0) then
52: set input_files = ($input_files $argv[1])
53: shift argv
54: else
55: echo "Usage: -f file ..."
56: echo "Type lasergnu -help for help."
57: exit (1)
58: endif
59: goto top
60:
61: case -F?*: # Specify font
62: set fontsize = `echo $argv[1] | sed 's/^-F//'`)
63: shift argv
64: goto top
65:
66: case -F: # Specify font
67: shift argv
68: if ($#argv > 0) then
69: set font = $argv[1]
70: shift argv
71: else
72: echo "Usage: -F font"
73: echo "Type lasergnu -help for help."
74: exit (1)
75: endif
76: goto top
77:
78: case -t?*: # Specify title of plot
79: echo set title \""`echo $argv[1] | sed 's/^-t//'`"\" >> $TMP
80: shift argv
81: goto top
82:
83: case -t: # Specify title of plot
84: shift argv
85: if ($#argv > 0) then
86: echo set title \""$1"\" >> $TMP
87: shift argv
88: else
89: echo "Usage: -t title ..."
90: echo "Type lasergnu -help for help."
91: exit (1)
92: endif
93: goto top
94: case -help:
95: goto usage
96:
97: case -P?*: # Set the printer, exactly as by itroff.
98: set printer = $argv[1]
99: shift argv
100: goto top
101:
102: case -P: # Set the printer, exactly as by itroff.
103: shift argv
104: if ($#argv > 0) then
105: set printer = (-P$argv[1])
106: shift argv
107: else
108: echo "Usage: -P printer ..."
109: echo "Type lasergnu -help for help."
110: exit (1)
111: endif
112: goto top
113:
114: # use impress
115: case -I:
116: echo Imagen is the default mode now
117: shift argv
118: goto top
119:
120: # use postscript instead of impress language
121: case -p:
122: set setterm="set term postscript"
123: set LANG="-Lpostscript"
124: shift argv
125: goto top
126:
127: case -s?*: # Specify scale of plot
128: echo set size `echo $argv[1] | sed 's/^-s//'` >> $TMP
129: shift argv
130: goto top
131:
132: case -s: # Specify scale of plot
133: shift argv
134: if ($#argv > 0) then
135: echo set size "$1" >> $TMP
136: shift argv
137: else
138: echo "Usage: -s xscale,yscale"
139: echo "Type lasergnu -help for help."
140: exit (1)
141: endif
142: goto top
143:
144: case -w?*: # Specify split page in multiplot (horiz,vertical)
145: set windows=`echo "$argv[1]\]" | sed 's/^-s/[/'`
146: shift argv
147: goto top
148:
149: case -w: # Specify split page
150: shift argv
151: if ($#argv > 0) then
152: set windows="[$argv[1]]"
153: shift argv
154: else
155: echo "Usage: -w horiz,vertical"
156: echo "Type lasergnu -help for help."
157: exit (1)
158: endif
159: goto top
160:
161: case -O:
162: set orientation="portrait"
163: shift argv
164: goto top
165:
166: case -?*:
167: echo "I do not recognize option $argv[1]."
168: goto usage
169:
170: default:
171: echo "$argv[1]" >> $TMP
172: shift argv
173: goto top
174:
175: endsw
176: endif
177:
178: # try to devine the printer type
179: if ($printer =~ -Plw*) then
180: set setterm="set term postscript"
181: set LANG="-Lpostscript"
182: endif
183:
184: if ($printer =~ -Pim*) then
185: set setterm="set term imagen $windows $orientation $font"
186: set LANG="-Limpress"
187: endif
188:
189: # Set up input file
190: echo "$setterm" > $TMP.plt
191: echo set output \"$outfile\" >> $TMP.plt
192: if (-e $TMP) cat $TMP >> $TMP.plt
193: grep -v "set te" $input_files | grep -v "set o" >> $TMP.plt
194: echo "quit" >> $TMP.plt
195: # If input file is specified AND command line contains plot commands, then
196: # do command line args first, then plot commands in input file.
197: gnuplot $TMP.plt < /dev/null
198: #gnuplot $TMP.plt $input_files
199:
200: if ($status == 0 && -e $outfile && ! -z $outfile) then
201: # The printer is whatever printer was last specified,
202: # or the default printer if none was specified.
203: # Imagen terminal driver support the page header
204: if ($LANG == -Limpress) then
205: /usr/local/bin/ipr $LANG $printer \
206: -D"jobheader $print_banner" \
207: -D"pagereversal on" \
208: -D"program lasergnu" $outfile
209: else if ($LANG == -Lpostscript) then
210: lpr $lpr_opts $printer $outfile
211: endif
212: else
213: echo "lasergnu: error in plotting or empty plot; nothing printed."
214: endif
215:
216: cleanup:
217: rm -f $TMP* $outfile
218: exit
219:
220: usage:
221: echo "usage: lasergnu [-Pprinter] [-F font] [-w nx,ny ] [-s xscale,yscale][-b] [-O] [-p] [-t title] [-f file] ['plot command']...."
222: echo " -O : Orientation Portrait (default is Landscape)"
223: echo " -F font : fontsize in points for imagen"
224: echo " -w nx,ny : split page (nx and ny: no. plots horizontal and vertical)"
225: echo " -s xscale,yscale : scaling in horiz, vertical direction"
226: echo " -P printer : Printer to send the plot"
227: echo " -p : set gnuplot driver to postscript (default is Imagen)"
228: echo " -I : set gnuplot terminal driver to imagen (default)"
229: echo " -b : don't print jobheader page"
230: echo ""
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>