Blob Blame History Raw
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: Philippe Lacroute
%%Title: Argonne National Laboratory logo
%%CreationDate: 29 August 1989
%%BoundingBox: 240 380 370 520
%%DocumentFonts: Helvetica-Bold Symbol
%%EndComments

% see page 167 of the blue book (PostScript Language Tutorial and Cookbook)
% for detailed comments describing how to make circular text

/circtextdict 16 dict def
circtextdict begin

    % return half the angle spanned by a string
    /findhalfangle { % string => angle
	stringwidth pop 2 div
	2 xradius mul pi mul div 360 mul
    } def

    % draw one character and then rotate to next position (text reads cw)
    /cwplacechar { % char => -
	/char exch def
	/halfangle char findhalfangle def
	gsave
	    halfangle neg rotate
	    radius 0 translate
	    -90 rotate
	    char stringwidth pop 2 div neg 0 moveto
	    char show
	grestore
	halfangle 2 mul neg rotate
    } def

    % draw one character and then rotate to next position (text reads ccw)
    /ccwplacechar { % char => -
	/char exch def
	/halfangle char findhalfangle def
	gsave
	    halfangle rotate
	    radius ptsize fudge sub add 0 translate
	    90 rotate
	    char stringwidth pop 2 div neg 0 moveto
	    char show
	grestore
	halfangle 2 mul rotate
    } def

    /pi 3.1415923 def

end

% draw a string on a circular path in the clockwise direction
/cwcircletext { % string fontsize centerangle radius => -
    circtextdict begin
	/radius exch def
	/centerangle exch def
	/ptsize exch def
	/str exch def
	/xradius radius ptsize 4 div add def

	gsave
	    centerangle str findhalfangle add rotate
	    str {
		/charcode exch def
		( ) dup 0 charcode put cwplacechar
	    } forall
	grestore
    end
} def

% draw a string on a circular path in the counter-clockwise direction
/ccwcircletext { % string fontsize fudge centerangle radius => -
    circtextdict begin
	/radius exch def
	/centerangle exch def
	/fudge exch def    % fudge factor; set to zero and then adjust
	/ptsize exch def
	/str exch def
	/xradius radius ptsize 4 div add def

	gsave
	    centerangle str findhalfangle sub rotate
	    str {
		/charcode exch def
		( ) dup 0 charcode put ccwplacechar
	    } forall
	grestore
    end
} def

% draw the interior of the ANL logo (arrow + circle)
/drawcenter { % side width outsider insider circrad circdy => -
    gsave 
    30 dict begin
	/circdy exch def	% vertical offset for circle
	/circrad exch def	% radius of circle
	/insider exch def	% radius of turn for inside line (in arrow)
	/outsider exch def	% radius of turn for outside line (in arrow)
	/width exch def		% distance between inside and outside lines
	/side exch def		% length of one (out)side of the arrow
	/root3 3 sqrt def

	/y0 root3 6 div side mul neg def
	/y1 y0 width add def
	/y2 y1 2 mul neg def
	/y3 y2 width 3 mul 4 div add def
	/y4 y0 2 mul neg def

	/dx0 root3 4 div width mul def
	/dx1 side 2 div width root3 mul sub def
	/dx2 dx1 width root3 div add def
	/dx3 side width root3 mul sub 2 div def
	/dx4 side 2 div def

	% inside line

	width 2 div neg y1 moveto
	dx1 neg y1 0 y2 insider arcto pop pop pop pop
	0 y2 dx1 y1 insider arcto pop pop pop pop
	dx1 y1 width 2 div y1 insider arcto pop pop pop pop
	width 2 div y1 lineto

	% outside line

	width 2 div y0 lineto
	dx4 y0 0 y4 outsider arcto pop pop pop pop
	0 y4 dx3 neg y1 outsider arcto pop pop pop pop
	dx4 neg y0 dx2 y0 outsider arcto pop pop pop pop
	width 2 div neg y0 lineto

	closepath
	stroke

	% circle

	0 circdy circrad 0 360 arc closepath stroke
    end
    grestore
} def

/Helvetica-Bold findfont 10 scalefont setfont
306 448 translate
(ARGONNE    NATIONAL    LABORATORY) 10 90 55 cwcircletext
(UNIVERSITY    OF    CHICAGO) 10 3 -90 55 ccwcircletext
/Symbol findfont 10 scalefont setfont
(\267                                                            \267)
10 3 -90 55 ccwcircletext
104 18 10 1 10 -2 drawcenter