%(SuLogo) {{ (translate) {.translatet} .cvx .def (scale) {.scale2t} .cvx .def (rotate) {.rotatet} .cvx .def (setlinewidth) {.setstrokewidth} .cvx .def (setlinejoin) { [ 0 2 1 ] .exch .aget .setstrokejoint} .cvx .def (newpath) {} .cvx .def (stroke) {.maskstroke} .cvx .def % (closepath) {.maskstrokeclosed}.cvx .def % incorrect, RJB (closepath) {.maskfilltrajectory}.cvx .def % corrected the substitute, RJB (mod) { (b) .exch .def (a) .exch .def a b .idiv b .mul a .exch .sub } .cvx .def (setlinecap) {1 .add 3 mod .setstrokeend} .cvx .def (setlinewidth) {.setstrokewidth} .cvx .def (stroke) {.maskstroke} .cvx .def (show) {.showrope} .cvx .def (arc){ (angle2) .exch .def (angle1) .exch .def (rad) .exch .def (midy) .exch .def (midx) .exch .def (midangle) angle2 angle1 .sub 2 .div angle1 .add .def (pnt1x) angle1 .cos .def (pnt1y) angle1 .sin .def (pnt2x) midangle .cos .def (pnt2y) midangle .sin .def (pnt3x) angle2 .cos .def (pnt3y) angle2 .sin .def .count 0 .gt { .dup .type (.other) .eq { lineto } { moveto } .ifelse } { { moveto } } /ifelse .cvx (movetoOrlineto) .exch .def midx rad pnt1x mul add midy rad pnt1y mul add movetoOrlineto % choose moveto or lineto, RJB midx rad pnt2x mul add midy rad pnt2y mul add midx rad pnt3x mul add midy rad pnt3y mul add .arcto % midx rad pnt3x mul add midy rad pnt3y mul add moveto % removed, RJB } .cvx .def (setgray) {.setgray} .cvx .def % not right (fill) {1 .makeoutline .maskfill} .cvx .def (moveto) {.moveto} .cvx .def (lineto) {.lineto} .cvx .def (stringwidth) {.textbox (TEMPY) .exch .def (TEMPX) .exch .def .pop .pop TEMPX 0.0 .eq {(M) .textbox .pop .exch .pop .exch .pop} .cvx TEMPX .ifelse TEMPY 0.0 .eq {(M) .textbox .exch .pop .exch .pop .exch .pop} .cvx TEMPY .ifelse } .cvx .def (add) {.add}.cvx .def (sub) {.sub}.cvx .def (div) {.div}.cvx .def (mul) {.mul}.cvx .def (neg) {.neg}.cvx .def (dup) {.dup} .cvx .def (pop) {.pop} .cvx .def (exch) {.exch} .cvx .def (sub) {.sub} .cvx .def (div) {.div} .cvx .def (deltax) (.pop .exch .pop .sub).cvx .def (deltay) (.exch .pop .sub .exch .pop).cvx .def (currentpoint) {.getcp}.cvx .def (forall) {(PROC) .exch .cvx .def (STR) .exch .def 0 1 STR .length 1 .sub {STR .exch 1 .substring PROC } .cvx .for }.cvx .def (repeat) { .cvx .rept } .cvx .def (dark) 0.975 .def (middark) 0.975 .def (white) 1 .def (medium) 0.975 .def (outsidecircletext) { (radius) exch .def (centerangle) exch .def (ptsize) exch .def (str) exch .def (xradius) radius ptsize 4 div add .def { centerangle str findhalfangle add rotate str { %(charcode) exch .def %( ) dup 0 charcode put outsideshowcharandrotate } forall } .cvx .dosave } .cvx .def (insidecircletext) { (radius) exch .def (centerangle) exch .def (ptsize) exch .def (str) exch .def (xradius) radius ptsize 3 div sub .def { centerangle str findhalfangle sub rotate str { %(charcode) exch .def %( ) dup 0 charcode put insideshowcharandrotate } forall } .cvx .dosave } .cvx .def (findhalfangle) { stringwidth pop 2 div 2 xradius mul pi mul div 360 mul } .cvx .def (outsideshowcharandrotate) { (char) exch .def (halfangle) char findhalfangle .def { halfangle neg rotate radius 0 translate -90 rotate char stringwidth pop 2 div neg 0 .setxy char show } .cvx .dosave halfangle 2 mul neg rotate } .cvx .def (insideshowcharandrotate) { (char) exch .def (halfangle) char findhalfangle .def { halfangle rotate radius 0 translate 90 rotate char stringwidth pop 2 div neg 0 .setxy char show } .cvx .dosave halfangle 2 mul rotate } .cvx .def (pi) 3.1415923 .def % draw the circles for the logo (circles) { (inner) 174 [ 16 12 10 8 ] logoscale .aget .add .def 5 setlinewidth newpath 0 0 265 0 360 arc stroke 4 setlinewidth newpath 0 0 241 0 360 arc stroke 1.5 setlinewidth newpath 0 0 inner 0 360 arc stroke 4 setlinewidth newpath 0 0 174 0 360 arc stroke } .cvx .def % draw the diamonds in the outer circles (diamonds) { (nd) exch .def % number of diamonds (da) 360 nd div .def % diamond angle { nd {newpath 0 242 moveto 8 252 lineto 0 262 lineto -8 252 lineto closepath da rotate} repeat } .cvx .dosave } .cvx .def % lay down the text (logotext) { { (Xerox/Pressfonts/Helvetica-mrr) .findfont 39 .scalefont .setfont (LELAND STANFORD JUNIOR UNIVERSITY) 39 90 196 outsidecircletext (ORGANIZED 1891) 39 270 224 insidecircletext } .cvx .dosave } .cvx .def % draw the foothills in the background (foothills) { { 1 setlinecap 1 setlinejoin 1 setlinewidth newpath -166 -30 moveto -140 -12 lineto -120 -12 lineto -25 -50 lineto 50 -65 lineto 125 -60 lineto 160 -70 lineto stroke newpath -165 -47 moveto -137 -39 lineto -92 -41 lineto 0 -70 lineto stroke newpath -85 -18 moveto -60 -12 lineto 85 -53 lineto stroke newpath 10 -10 moveto 69 -35 lineto 98 -50 lineto stroke newpath 25 -37 moveto 100 -21 lineto 166 -34 lineto stroke newpath 75 -60 moveto 125 -40 lineto 150 -45 lineto 160 -55 lineto stroke newpath 70 -36 moveto 90 -30 lineto 110 -40 lineto stroke } .cvx .dosave } .cvx .def (talltree) { % 170 { % the trunk 18 setlinewidth 1 setlinecap newpath 0 -100 moveto 0 150 lineto stroke newpath -5 140 moveto 0 150 lineto 5 140 lineto stroke % the dirt underneath newpath 37 -130 moveto 12 -100 lineto -12 -100 lineto -37 -130 lineto 0 0 172 235 300 arc closepath % the branches newpath -10 150 moveto -35 135 lineto -40 122 lineto -16 130 lineto -11 129 lineto closepath newpath 10 149 moveto 37 125 lineto 40 115 lineto 10 125 lineto closepath 13 setlinewidth newpath 0 105 moveto 50 77 lineto stroke newpath 3 84 moveto 40 50 lineto 60 45 lineto stroke newpath 5 44 moveto 40 20 lineto 57 16 lineto stroke newpath 5 3 moveto 50 -25 lineto 53 -40 lineto stroke newpath 0 -20 moveto 35 -40 lineto 43 -60 lineto stroke newpath -4 120 moveto -30 110 lineto stroke newpath -4 105 moveto -33 86 lineto stroke newpath -1 80 moveto -38 57 lineto -43 48 lineto stroke newpath -3 55 moveto -28 37 lineto -35 30 lineto stroke newpath 0 25 moveto -53 4 lineto -62 -20 lineto stroke newpath 0 -15 moveto -38 -23 lineto -43 -39 lineto stroke } .cvx .dosave } .cvx .def % make a 5-pointed star (star5) % sigh, PostScript assumes that the line width does not scale; Interpress scales. RJB % sigh, PostScript transforms the coordinates for a lineto; Interpress does not. RJB %{ (ssize) exch .def % { ssize ssize scale % 0.5 0.5 scale newpath 1 0 moveto % 4 {144 rotate 1 0 lineto} repeat % stroke % } .cvx .dosave { (halfsize) .exch 2 .div .def (starT) 1 .scale .def halfsize 0 .moveto 4 { halfsize 0 starT 144 .rotate .concat .dup (starT) .exch .def .transform .lineto } repeat closepath } .cvx .def % make a "sheep" (actually a tree) (sheep) { { currentpoint translate 0.5 setlinewidth (ss) exch .def newpath (sheepT) 1 .scale .def 5 {0 ss sheepT .transform ss 15 165 arc stroke 72 .rotate .dup (sheepT) .exch .def .concatt } repeat newpath ss -0.3 mul ss -1.5 mul moveto 0 ss neg lineto stroke newpath ss 0.3 mul ss -1.5 mul moveto 0 ss neg lineto stroke } .cvx .dosave}.cvx .def (sheep) { { currentpoint translate 0.5 setlinewidth (ss) exch .def newpath { 5 {0 ss ss 15 165 arc stroke 72 .rotatet} repeat }.cvx .dosave newpath ss -0.3 mul ss -1.5 mul moveto .dup .lastpoint 0 ss neg .v2add lineto stroke newpath ss 0.3 mul ss -1.5 mul moveto .dup .lastpoint 0 ss neg .v2add lineto stroke } .cvx .dosave }.cvx .def (makesheep) { (shx) -120 .def 7 {shx -80 .setxy 8 sheep (shx) shx 35 add .def} repeat (shx) -103 .def 7 {shx -105 .setxy 8 sheep (shx) shx 35 add .def} repeat } .cvx .def (logo){{ % logo (logoscale) .exch .def % like 1 2 3 4 1 550 div dup scale circles logotext { 60 rotate 0 -210 translate 30 rotate 40 star5 } .cvx .dosave { -60 rotate 0 -210 translate 7.5 rotate 40 star5 } .cvx .dosave [ 30 40 50 60 ] logoscale .aget diamonds foothills makesheep talltree } .cvx .dosave } .cvx .def (logoscale) 4 .def (4logos) {{ { 0 22 .translatet 44 .scalet 0 logo } .cvx .dosave 22 30 .1 inch .add .add 0 .translatet { 0 30 .translatet 60 .scalet 1 logo } .cvx .dosave 30 37 .1 inch .add .add 0 .translatet { 0 37 .translatet 74 .scalet 2 logo } .cvx .dosave 37 44 .1 inch .add .add 0 .translatet { 0 44 .translatet 88 .scalet 3 logo } .cvx .dosave } .cvx .dosave } .cvx .def %} .cvx .dosaveall} .cvx .def b(repeat) {(PROC) .exch .cvx .def (NUM) .exch .def 1 1 NUM {.pop PROC} .cvx .for} .cvx .def Κ1˜˜ J˜#J˜J˜J˜*J˜@J˜Jšœ ˜ Jšœ<˜