%!PS-Adobe-2.0 %%DocumentFonts: Times-Roman %%Creator: Axiom %%CreationDate: today %%Pages: 1 %%processing (hard) limit: 250 pts or 500 values for the operand stack. %%EndComments %------------------------------- prologue -------------------------------% %-------------------------- support procedures --------------------------% %--------- first create user dictionary with 100 entries max ------------% % (number can be changed to accomodate definitions) % 100 dict begin %% using 100 entries in top level dictionary /FontHeight 12 def /inch { 72 mul } def % yVal and hVal are necessary because the Xwindow display origin % is at the upper left corner, while the postscript display % origin is at the lower left hand corner. /yVal %% get Y value -- make upper left corner origin { maxY sub abs } %% maxY is viewWindow height def /hVal %% get H value -- used for displaying title text { maxH sub abs } %% maxH is viewWindow height+titleWindow height def % loads in the font /loadFont { /Times-Roman findfont FontHeight scalefont setfont } def % draws a rectangle with input operand: % height % width % notice that this function does not "draw" or ink the rectangle. /drawRect { 1 index 1 add 0 rlineto %% draw first side 0 exch 1 add neg rlineto %% draw second side 1 add neg 0 rlineto %% draw third side closepath } %% draw fourth side def % create a rectangle with input operand in the view window: % y % x % height % width % notice that this function does not "draw" or ink the rectangle. /rectangle { yVal moveto %% set currentpoint for line drawRect } %% draws the rectangle def % These are global variables that every draw procedure uses % THe operand should be as follows: % viewWindow width % viewWindow height % title height /setDim { /maxX exch def %% width of display /maxY exch def %% height of display /titleH exch def %% height of title /maxH maxY titleH add def %% height of display + title } def %-------------------------- major procedures --------------------------% /title %% draws a rectangle around the title of picture { gsave newpath moveto %% lower left of title titleH 1 add 0 exch rlineto %% draw first side 1 add 0 rlineto %% draw second side 1 add neg 0 exch rlineto begin installGC stroke end %% draw third side grestore } def /drawFrame %% draw display frame { gsave newpath maxX maxY 0 0 rectangle begin installGC stroke end grestore } def % updates the foreground color of existing graphics-context dictionary: % foreground color % dictionary name /setForeground { /FGcolor exch put } def % updates the background color of existing graphics-context dictionary: % background color % dictionary name /setBackground { /BGcolor exch put } def % updates the line width, line style, cap style, join style of % existing graphics-context dictionary: % dictionary name % join style % cap style % line width /setLineAttributes { begin /JoinStyle exch def /CapStyle exch def /LineWidth exch def end } def % creates a graphics context dictionary with the following information: % /dictionary name % foreground color % background color % line width % cap style % join style % this creates different graphical contexts for different drawing functions. /makeDict { 5 dict 2 copy def begin pop %% with dict name on top of stack /FGcolor exch def %% define drawing attributes /BGcolor exch def %% not heavily used /LineWidth exch def /CapStyle exch def /JoinStyle exch def end } def % makes the current dictionary attributes effective % this function takes the values in the current dictionary to set the context % these are the values currently being used: foreground, cap, join, and width /installGC { FGcolor currentgray ne {FGcolor setgray} if %% foreground color CapStyle currentlinecap ne {CapStyle setlinecap} if %% cap style JoinStyle currentlinejoin ne {JoinStyle setlinejoin} if %% join style LineWidth currentlinewidth ne {LineWidth setlinewidth} if } %% line width def % operand stack configuration in order to use psDrawLine: % psDrawLine % y0 % x0 % y1 % x1 % graphics-context dictionary % this draws a line from (x0, y0) to (x1, y1). /psDrawLine { gsave newpath yVal moveto yVal lineto begin installGC stroke end grestore } def % operand stack configuration in order to use psDrawLines: % psDrawLines % points[0].y % points[0].x % n % ... % points[n].y % points[n].x % graphics-context dictionary % this draws lines connecting all the points. /psDrawLines { gsave newpath yVal moveto 1 sub { yVal lineto } repeat begin installGC stroke end grestore } def % operand stack configuration in order to use psDrawStr: % psDrawStr % y % x % string % graphics-context dictionary % this function draws a text string at (x,y). /psDrawStr { gsave newpath loadFont yVal moveto exch begin installGC show end grestore } def %-------------------------- script --------------------------% % 1 inch 1 inch translate mark %% mark bottom of our stack 0 0 1 1072693248 0 /globalGC1 makeDict 0 0 1 1072693248 0 /globalGC2 makeDict 0 0 1 1072693248 0 /trashGC makeDict 0 0 1 1072693248 0 /componentGC makeDict 0 0 1 1072693248 0 /opaqueGC makeDict 0 0 1 1072693248 0 /renderGC makeDict 0 0 1 1072693248 0 /globGC makeDict 0 0 1 1072693248 0 /anotherGC makeDict 1 0 1 1072693248 0 /renderGC makeDict gsave % save graphics state for clipping path 1.000000 1.000000 scale 24 276 300 setDim maxX maxY 0 0 rectangle clip % set clip path globalGC1 0.000000 setForeground globGC 0.000000 setForeground globalGC1 11 180 180 81 psDrawLine globGC (X) 6 185 psDrawStr globalGC1 106.000000 setForeground globGC 106.000000 setForeground globalGC1 0.000000 setForeground globGC 0.000000 setForeground globalGC1 182 180 42 81 psDrawLine globGC (Y) 187 185 psDrawStr globalGC1 106.000000 setForeground globGC 106.000000 setForeground globalGC1 0.000000 setForeground globGC 0.000000 setForeground globalGC1 93 27 113 198 psDrawLine globGC (Z) 88 22 psDrawStr globalGC1 106.000000 setForeground globGC 106.000000 setForeground 1 0 0 componentGC setLineAttributes componentGC 0.000000 setForeground componentGC 3 88 14 98 24 106 34 113 42 119 51 123 58 127 66 129 72 131 79 132 85 132 91 131 97 129 102 127 107 124 112 120 117 115 122 110 127 104 132 97 137 89 141 81 146 71 151 61 155 49 160 37 165 23 28 170 8 psDrawLines componentGC 75 144 85 153 95 161 103 167 111 172 119 175 126 178 132 180 139 181 145 181 151 180 156 179 162 176 167 173 173 170 178 165 183 160 188 154 193 147 199 139 204 131 209 122 215 111 220 100 226 88 232 74 238 60 28 245 44 psDrawLines componentGC 245 44 2 170 8 psDrawLines componentGC 238 60 2 165 23 psDrawLines componentGC 232 74 2 160 37 psDrawLines componentGC 226 88 2 155 49 psDrawLines componentGC 220 100 2 151 61 psDrawLines componentGC 215 111 2 146 71 psDrawLines componentGC 209 122 2 141 81 psDrawLines componentGC 204 131 2 137 89 psDrawLines componentGC 199 139 2 132 97 psDrawLines componentGC 193 147 2 127 104 psDrawLines componentGC 188 154 2 122 110 psDrawLines componentGC 183 160 2 117 115 psDrawLines componentGC 178 165 2 112 120 psDrawLines componentGC 173 170 2 107 124 psDrawLines componentGC 167 173 2 102 127 psDrawLines componentGC 162 176 2 97 129 psDrawLines componentGC 156 179 2 91 131 psDrawLines componentGC 151 180 2 85 132 psDrawLines componentGC 145 181 2 79 132 psDrawLines componentGC 139 181 2 72 131 psDrawLines componentGC 132 180 2 66 129 psDrawLines componentGC 126 178 2 58 127 psDrawLines componentGC 119 175 2 51 123 psDrawLines componentGC 111 172 2 42 119 psDrawLines componentGC 103 167 2 34 113 psDrawLines componentGC 95 161 2 24 106 psDrawLines componentGC 85 153 2 14 98 psDrawLines componentGC 75 144 2 3 88 psDrawLines componentGC 75 144 86 159 96 170 105 178 113 184 120 187 127 189 133 189 139 188 145 186 151 184 156 181 162 177 167 173 173 170 178 166 183 163 188 160 193 158 198 156 202 156 207 157 211 159 215 162 219 167 222 172 225 180 28 228 188 psDrawLines componentGC 170 217 178 230 185 240 191 246 197 250 203 252 209 253 214 252 220 250 226 247 231 243 236 239 242 235 247 230 252 226 258 221 263 217 267 213 272 210 276 208 280 207 284 207 287 208 290 211 292 215 294 220 295 226 28 296 234 psDrawLines componentGC 296 234 2 228 188 psDrawLines componentGC 295 226 2 225 180 psDrawLines componentGC 294 220 2 222 172 psDrawLines componentGC 292 215 2 219 167 psDrawLines componentGC 290 211 2 215 162 psDrawLines componentGC 287 208 2 211 159 psDrawLines componentGC 284 207 2 207 157 psDrawLines componentGC 280 207 2 202 156 psDrawLines componentGC 276 208 2 198 156 psDrawLines componentGC 272 210 2 193 158 psDrawLines componentGC 267 213 2 188 160 psDrawLines componentGC 263 217 2 183 163 psDrawLines componentGC 258 221 2 178 166 psDrawLines componentGC 252 226 2 173 170 psDrawLines componentGC 247 230 2 167 173 psDrawLines componentGC 242 235 2 162 177 psDrawLines componentGC 236 239 2 156 181 psDrawLines componentGC 231 243 2 151 184 psDrawLines componentGC 226 247 2 145 186 psDrawLines componentGC 220 250 2 139 188 psDrawLines componentGC 214 252 2 133 189 psDrawLines componentGC 209 253 2 127 189 psDrawLines componentGC 203 252 2 120 187 psDrawLines componentGC 197 250 2 113 184 psDrawLines componentGC 191 246 2 105 178 psDrawLines componentGC 185 240 2 96 170 psDrawLines componentGC 178 230 2 86 159 psDrawLines componentGC 170 217 2 75 144 psDrawLines grestore % restore graphics state cleartomark %% clearing operand stack end %% pops mainDict from dictionary stack showpage %-------------------------- end --------------------------%