1#!/bin/sh
2# shell for PCL banner printing 
3#
4#   
5#  pr:bp=/usr/local/.../pclbanner
6#    :of=/usr/local/.../offilter
7#  
8#  Uses: printf
9
10PATH=/bin:/usr/bin
11
12Arglist=""
13Args=""
14vAr=""
15vAlue=""
16iI=""
17Args="$@"
18while expr "$1" : '-.*' >/dev/null ; do
19  vAr=`expr "$1" : '-\(.\).*'`;
20  vAlue=`expr "$1" : '-.\(.*\)'`;
21  case "$vAr" in
22    - ) break;;
23    c ) c=1;;
24    [a-zA-Z] )
25      if test "X$vAlue" = "X" ; then shift; vAlue=$1; fi;
26      eval $vAr='$vAlue';
27      #setvar $vAr "$vAlue"
28	  case "$vAr" in
29		J ) Title=$vAlue ;;
30		P ) Printer=$vAlue ;;
31		H ) Host=$vAlue ;;
32		n ) User=$vAlue ;;
33		C ) Class=$vAlue ;;
34		A ) Jobid=$vAlue ;;
35		D ) Date=$vAlue ;;
36		Q ) Queue=$vAlue ;;
37		N ) Filename=$vAlue ;;
38		f ) Format=$vAlue ;;
39	  esac
40      ;;
41  esac;
42  shift;
43done
44
45# set shell variables to the printcap options
46#  flag   ->  flag=1
47#  flag@  ->  flag=0
48#  option=value ->  option='value'
49#
50#for iI in `echo $PRINTCAP_ENTRY | sed -e "s/.*/\"&\"/"` ;  do
51for iI in $PRINTCAP_ENTRY ; do
52  # echo X $iI;
53  if expr "$iI" : " *\:" >/dev/null ; then
54    vAr=`expr "$iI" : " *\:\([^#=][^#=]*\)[#=].*"`;
55    vAlue=`expr "$iI" : " *\:[^#=][^#=]*[#=]\(.*\)"`;
56    if test "X$vAr" = "X" ; then
57      vAr=`expr "$iI" : " *:\(.*\)@"`;
58      vAlue=0;
59    fi
60    if test "X$vAr" = "X" ; then
61      vAr=`expr "$iI" : " *:\(.*\)"`;
62      vAlue=1;
63    fi
64    if test "X$vAr" != "X" ; then
65      eval $vAr='$vAlue';
66      #setvar $vAr "$vAlue"
67    fi
68  else
69    vAr=`expr "$iI" : " *\([^|][^|]*\).*"`;
70    if test "X$vAr" != "X" ; then
71      eval Printer="$vAr"
72    fi
73  fi;
74done
75
76# set shell variables to the printcap options
77#  flag   ->  flag=1
78#  flag@  ->  flag=0
79#  option=value ->  option='value'
80#
81for iI in $CONTROL ; do
82  # echo X $iI;
83  vAr=`expr "$iI" : " *\([A-Z]\).*"`;
84  vAlue=`expr "$iI" : " *[A-Z]\(.*\)"`;
85  if test "X$vAr" != "X" ; then
86    eval $vAr='$vAlue';
87    #setvar $vAr "$vAlue";
88  fi;
89done
90# 
91# restore argument list
92set -- $Args
93Args=""
94vAr=""
95vAlue=""
96iI=""
97
98xpos=0;
99ypos=0;
100incr=0;
101margins="\033&l0u0Z";
102lightbar="\033*c1800a100b45g2P";
103darkbar="\033*c1800a100b25g2P";
104fontchange="\033(8U\033(s1p%dv0s0b4148T";
105position="\033*p%dx%dY";
106UEL="\033%%-12345X";
107UELPJL="\033%%-12345X@PJL \n";
108PCLRESETSTR="\033E";
109CRLFSTR="\033&k2G";
110
111 moveto  () {
112     printf $position $1 $2;
113 }
114
115 fontsize  () {
116     incr=`expr "(" $1 "*" 300 "*" 11 ")" / 720`;
117     printf $fontchange $1;
118 }
119 
120 argline  () {
121    key=$1
122	value=$2
123    if [ -n "$value" ] ; then
124 	  textline "$key" 1 0
125 	  textline ": " 0 0
126 	  textline "$value" 0 1
127    fi
128 }
129 
130 textline  () {
131	line=$1
132	start=$2
133	end=$3
134    if [ "$start" -gt 0 ] ; then
135 		moveto $xpos $ypos
136    fi
137    printf '%s' "$line";
138    if [ "$end" -gt 0 ] ; then
139		ypos=`expr "$ypos" + "$incr"`
140	fi
141 }
142 
143pcl_banner () {
144    printf "$UEL" ;
145    printf "$PCLRESETSTR" ;
146    # printf "$UELPJL" ;
147    printf "$CRLFSTR" ;
148    printf "$margins" ;
149
150    # do light bar 
151    xpos=0;
152    ypos=0;
153    moveto $xpos $ypos ;
154    printf $lightbar ;
155    ypos=`expr $ypos + 100`;
156
157    # set font size 
158    fontsize 24;
159    ypos=`expr $ypos + $incr`;
160    moveto $xpos $ypos ;
161
162	argline Title "$Title"
163
164	fontsize 14
165	argline Printer "$Printer"
166	argline Host "$Host"
167	argline User "$User"
168	argline Class "$Class"
169	argline Jobid "$Jobid"
170	argline Date "$Date"
171	argline Queue "$Queue"
172	argline Filename "$Filename"
173	argline Format "$Format"
174
175    # smaller font 
176    fontsize 12 ;
177
178    moveto $xpos $ypos ;
179    date=`date`;
180    textline 'Printed at: ' 0 1 ;
181    textline "$date" 0 1 ;
182
183    moveto $xpos $ypos ;
184    printf $darkbar ;
185
186    printf "$UEL" ;
187    printf "$PCLRESETSTR" ;
188}
189
190pcl_banner
191