diff options
Diffstat (limited to 'src/doc/ps/2DppcC.ps')
-rw-r--r-- | src/doc/ps/2DppcC.ps | 424 |
1 files changed, 424 insertions, 0 deletions
diff --git a/src/doc/ps/2DppcC.ps b/src/doc/ps/2DppcC.ps new file mode 100644 index 00000000..6f86ea9e --- /dev/null +++ b/src/doc/ps/2DppcC.ps @@ -0,0 +1,424 @@ +%!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 psDrawIStr: +% psDrawIStr +% window type: title or window +% string +% y +% x +% graphics-context dictionary +% it draws a text string in foreground color on top of bounding box of +% string, which is in background color. + +/psDrawIStr + { gsave + newpath %% for rectangle + loadFont + + /window exch def %% get window type + + %% draw bounding box with background color + /str exch def %% get text string + str stringwidth pop 1 sub %% width + FontHeight 1 sub %% height + currentfont begin %% get font height + FontBBox + end + /ypos exch def pop %% define ypos + neg ypos add /offset exch def pop + /offset ypos offset div FontHeight mul def %% define offset + /h exch def /w exch def %% define h + /y0 exch def %% define y0 + /x0 exch def %% define x0 + w h x0 y0 offset sub + window (title) eq + {hVal moveto drawRect} %% draws in title window + {rectangle} ifelse %% draws in view window + begin + BGcolor setgray fill %% set background box color + + x0 y0 + window (title) eq + {hVal} %% print title text + {yVal} ifelse %% print window text + moveto str + FGcolor setgray show %% set text color + end + grestore } + def + +% operand stack configuration in order to use psFillArc: +% psFillArc +% y center of rectangle +% x center of rectangle +% angle2 +% angle1 +% width +% height +% y +% x +% graphics-context dictionary +% this draws and fills an arc whose origin is at x, y, and whose width +% and height specifies the rectangle which encases the arc. +% Origin is at upper left corner of rectangle. +% This function uses "scale" to make cricles and ellipses. +/psFillArc + { gsave + newpath + yVal moveto + /sfactor 4 index 4 index div def + 1 sfactor scale + 6 5 roll %% x on top of stack + 3 index 2 div add %% define x origin + 6 5 roll %% y on top of stack + 6 5 roll %% h on top of stack + 2 div add yVal sfactor div %% define y origin + 5 4 roll %% w on top of stack + 2 div %% define radius + 5 3 roll %% a1 a2 now on top + 1 index add + arcn %% draw clockwise arc + begin installGC fill end %% fills with foreground color + 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 /globGC makeDict + 0 0 1 + 1072693248 0 /anotherGC makeDict + 0 0 1 + 1072693248 0 /graphGC makeDict + 0 0 1 + 1072693248 0 /unitGC makeDict + + gsave % save graphics state for clipping path + + 1.000000 1.000000 scale + + 24 303 300 setDim + maxX maxY 0 0 rectangle clip % set clip path + + globalGC1 300 280 0 280 psDrawLine + globalGC1 7 303 7 0 psDrawLine + unitGC 61 282 61 278 psDrawLine + unitGC 49 295 (0.20) (window) psDrawIStr + unitGC 115 282 115 278 psDrawLine + unitGC 103 295 (0.40) (window) psDrawIStr + unitGC 169 282 169 278 psDrawLine + unitGC 157 295 (0.60) (window) psDrawIStr + unitGC 223 282 223 278 psDrawLine + unitGC 211 295 (0.80) (window) psDrawIStr + unitGC 277 282 277 278 psDrawLine + unitGC 265 295 (1.00) (window) psDrawIStr + unitGC 9 226 5 226 psDrawLine + unitGC -29 231 (0.20) (window) psDrawIStr + unitGC 9 172 5 172 psDrawLine + unitGC -29 177 (0.40) (window) psDrawIStr + unitGC 9 118 5 118 psDrawLine + unitGC -29 123 (0.60) (window) psDrawIStr + unitGC 9 64 5 64 psDrawLine + unitGC -29 69 (0.80) (window) psDrawIStr + unitGC 9 10 5 10 psDrawLine + unitGC -29 15 (1.00) (window) psDrawIStr + globalGC1 6 279 3 3 0 360 7 280 psFillArc + globalGC1 7 280 7 280 psDrawLine + globalGC1 6 279 3 3 0 360 7 280 psFillArc + globalGC1 20 262 7 280 psDrawLine + globalGC1 19 261 3 3 0 360 20 262 psFillArc + globalGC1 33 245 20 262 psDrawLine + globalGC1 32 244 3 3 0 360 33 245 psFillArc + globalGC1 46 227 33 245 psDrawLine + globalGC1 45 226 3 3 0 360 46 227 psFillArc + globalGC1 59 210 46 227 psDrawLine + globalGC1 58 209 3 3 0 360 59 210 psFillArc + globalGC1 72 193 59 210 psDrawLine + globalGC1 71 192 3 3 0 360 72 193 psFillArc + globalGC1 85 177 72 193 psDrawLine + globalGC1 84 176 3 3 0 360 85 177 psFillArc + globalGC1 98 161 85 177 psDrawLine + globalGC1 97 160 3 3 0 360 98 161 psFillArc + globalGC1 110 145 98 161 psDrawLine + globalGC1 109 144 3 3 0 360 110 145 psFillArc + globalGC1 122 130 110 145 psDrawLine + globalGC1 121 129 3 3 0 360 122 130 psFillArc + globalGC1 134 116 122 130 psDrawLine + globalGC1 133 115 3 3 0 360 134 116 psFillArc + globalGC1 146 102 134 116 psDrawLine + globalGC1 145 101 3 3 0 360 146 102 psFillArc + globalGC1 157 89 146 102 psDrawLine + globalGC1 156 88 3 3 0 360 157 89 psFillArc + globalGC1 168 77 157 89 psDrawLine + globalGC1 167 76 3 3 0 360 168 77 psFillArc + globalGC1 178 66 168 77 psDrawLine + globalGC1 177 65 3 3 0 360 178 66 psFillArc + globalGC1 188 56 178 66 psDrawLine + globalGC1 187 55 3 3 0 360 188 56 psFillArc + globalGC1 198 46 188 56 psDrawLine + globalGC1 197 45 3 3 0 360 198 46 psFillArc + globalGC1 207 38 198 46 psDrawLine + globalGC1 206 37 3 3 0 360 207 38 psFillArc + globalGC1 215 31 207 38 psDrawLine + globalGC1 214 30 3 3 0 360 215 31 psFillArc + globalGC1 224 24 215 31 psDrawLine + globalGC1 223 23 3 3 0 360 224 24 psFillArc + globalGC1 231 19 224 24 psDrawLine + globalGC1 230 18 3 3 0 360 231 19 psFillArc + globalGC1 238 15 231 19 psDrawLine + globalGC1 237 14 3 3 0 360 238 15 psFillArc + globalGC1 245 12 238 15 psDrawLine + globalGC1 244 11 3 3 0 360 245 12 psFillArc + globalGC1 251 11 245 12 psDrawLine + globalGC1 250 10 3 3 0 360 251 11 psFillArc + globalGC1 256 10 251 11 psDrawLine + globalGC1 255 9 3 3 0 360 256 10 psFillArc + globalGC1 259 10 256 10 psDrawLine + globalGC1 258 9 3 3 0 360 259 10 psFillArc + globalGC1 261 11 259 10 psDrawLine + globalGC1 260 10 3 3 0 360 261 11 psFillArc + globalGC1 263 11 261 11 psDrawLine + globalGC1 262 10 3 3 0 360 263 11 psFillArc + globalGC1 265 12 263 11 psDrawLine + globalGC1 264 11 3 3 0 360 265 12 psFillArc + globalGC1 267 14 265 12 psDrawLine + globalGC1 266 13 3 3 0 360 267 14 psFillArc + globalGC1 269 15 267 14 psDrawLine + globalGC1 268 14 3 3 0 360 269 15 psFillArc + globalGC1 270 17 269 15 psDrawLine + globalGC1 269 16 3 3 0 360 270 17 psFillArc + globalGC1 272 19 270 17 psDrawLine + globalGC1 271 18 3 3 0 360 272 19 psFillArc + globalGC1 274 24 272 19 psDrawLine + globalGC1 273 23 3 3 0 360 274 24 psFillArc + globalGC1 275 31 274 24 psDrawLine + globalGC1 274 30 3 3 0 360 275 31 psFillArc + globalGC1 276 38 275 31 psDrawLine + globalGC1 275 37 3 3 0 360 276 38 psFillArc + globalGC1 277 46 276 38 psDrawLine + globalGC1 276 45 3 3 0 360 277 46 psFillArc + globalGC1 276 56 277 46 psDrawLine + globalGC1 275 55 3 3 0 360 276 56 psFillArc + globalGC1 275 66 276 56 psDrawLine + globalGC1 274 65 3 3 0 360 275 66 psFillArc + globalGC1 274 77 275 66 psDrawLine + globalGC1 273 76 3 3 0 360 274 77 psFillArc + globalGC1 272 89 274 77 psDrawLine + globalGC1 271 88 3 3 0 360 272 89 psFillArc + globalGC1 269 102 272 89 psDrawLine + globalGC1 268 101 3 3 0 360 269 102 psFillArc + globalGC1 265 116 269 102 psDrawLine + globalGC1 264 115 3 3 0 360 265 116 psFillArc + globalGC1 261 130 265 116 psDrawLine + globalGC1 260 129 3 3 0 360 261 130 psFillArc + globalGC1 256 145 261 130 psDrawLine + globalGC1 255 144 3 3 0 360 256 145 psFillArc + globalGC1 251 161 256 145 psDrawLine + globalGC1 250 160 3 3 0 360 251 161 psFillArc + globalGC1 245 177 251 161 psDrawLine + globalGC1 244 176 3 3 0 360 245 177 psFillArc + globalGC1 238 193 245 177 psDrawLine + globalGC1 237 192 3 3 0 360 238 193 psFillArc + globalGC1 231 210 238 193 psDrawLine + globalGC1 230 209 3 3 0 360 231 210 psFillArc + globalGC1 224 227 231 210 psDrawLine + globalGC1 223 226 3 3 0 360 224 227 psFillArc + globalGC1 215 245 224 227 psDrawLine + globalGC1 214 244 3 3 0 360 215 245 psFillArc + globalGC1 207 262 215 245 psDrawLine + globalGC1 206 261 3 3 0 360 207 262 psFillArc + globalGC1 198 280 207 262 psDrawLine + globalGC1 197 279 3 3 0 360 198 280 psFillArc + + grestore % restore graphics state + + + cleartomark %% clearing operand stack + +end %% pops mainDict from dictionary stack + +showpage + +%-------------------------- end --------------------------% |