%(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) {(PROC) .exch .cvx .def (NUM) .exch .def
1 1 NUM {.pop 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)
% 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){{ % <logoscale> 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