%!IBM Personal Pageprinter (4216) Adapter Program V1.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 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

	24	259	256	setDim
	maxX maxY	0 0	rectangle	clip	% set clip path

	globalGC1	256	244	0	244	psDrawLine
	globalGC1	128	259	128	0	psDrawLine
	globalGC1	11 13	3 3	0 360	12 14	psFillArc
	globalGC1	12	14	12	14	psDrawLine
	globalGC1	11 13	3 3	0 360	12 14	psFillArc
	globalGC1	17	33	12	14	psDrawLine
	globalGC1	16 32	3 3	0 360	17 33	psFillArc
	globalGC1	22	51	17	33	psDrawLine
	globalGC1	21 50	3 3	0 360	22 51	psFillArc
	globalGC1	27	68	22	51	psDrawLine
	globalGC1	26 67	3 3	0 360	27 68	psFillArc
	globalGC1	32	84	27	68	psDrawLine
	globalGC1	31 83	3 3	0 360	32 84	psFillArc
	globalGC1	36	100	32	84	psDrawLine
	globalGC1	35 99	3 3	0 360	36 100	psFillArc
	globalGC1	41	115	36	100	psDrawLine
	globalGC1	40 114	3 3	0 360	41 115	psFillArc
	globalGC1	46	129	41	115	psDrawLine
	globalGC1	45 128	3 3	0 360	46 129	psFillArc
	globalGC1	51	142	46	129	psDrawLine
	globalGC1	50 141	3 3	0 360	51 142	psFillArc
	globalGC1	56	154	51	142	psDrawLine
	globalGC1	55 153	3 3	0 360	56 154	psFillArc
	globalGC1	60	166	56	154	psDrawLine
	globalGC1	59 165	3 3	0 360	60 166	psFillArc
	globalGC1	65	177	60	166	psDrawLine
	globalGC1	64 176	3 3	0 360	65 177	psFillArc
	globalGC1	70	187	65	177	psDrawLine
	globalGC1	69 186	3 3	0 360	70 187	psFillArc
	globalGC1	75	196	70	187	psDrawLine
	globalGC1	74 195	3 3	0 360	75 196	psFillArc
	globalGC1	80	204	75	196	psDrawLine
	globalGC1	79 203	3 3	0 360	80 204	psFillArc
	globalGC1	84	212	80	204	psDrawLine
	globalGC1	83 211	3 3	0 360	84 212	psFillArc
	globalGC1	89	219	84	212	psDrawLine
	globalGC1	88 218	3 3	0 360	89 219	psFillArc
	globalGC1	94	225	89	219	psDrawLine
	globalGC1	93 224	3 3	0 360	94 225	psFillArc
	globalGC1	99	230	94	225	psDrawLine
	globalGC1	98 229	3 3	0 360	99 230	psFillArc
	globalGC1	104	234	99	230	psDrawLine
	globalGC1	103 233	3 3	0 360	104 234	psFillArc
	globalGC1	108	238	104	234	psDrawLine
	globalGC1	107 237	3 3	0 360	108 238	psFillArc
	globalGC1	113	241	108	238	psDrawLine
	globalGC1	112 240	3 3	0 360	113 241	psFillArc
	globalGC1	118	243	113	241	psDrawLine
	globalGC1	117 242	3 3	0 360	118 243	psFillArc
	globalGC1	123	244	118	243	psDrawLine
	globalGC1	122 243	3 3	0 360	123 244	psFillArc
	globalGC1	127	244	123	244	psDrawLine
	globalGC1	126 243	3 3	0 360	127 244	psFillArc
	globalGC1	132	244	127	244	psDrawLine
	globalGC1	131 243	3 3	0 360	132 244	psFillArc
	globalGC1	137	243	132	244	psDrawLine
	globalGC1	136 242	3 3	0 360	137 243	psFillArc
	globalGC1	142	241	137	243	psDrawLine
	globalGC1	141 240	3 3	0 360	142 241	psFillArc
	globalGC1	147	238	142	241	psDrawLine
	globalGC1	146 237	3 3	0 360	147 238	psFillArc
	globalGC1	151	234	147	238	psDrawLine
	globalGC1	150 233	3 3	0 360	151 234	psFillArc
	globalGC1	156	230	151	234	psDrawLine
	globalGC1	155 229	3 3	0 360	156 230	psFillArc
	globalGC1	161	225	156	230	psDrawLine
	globalGC1	160 224	3 3	0 360	161 225	psFillArc
	globalGC1	166	219	161	225	psDrawLine
	globalGC1	165 218	3 3	0 360	166 219	psFillArc
	globalGC1	171	212	166	219	psDrawLine
	globalGC1	170 211	3 3	0 360	171 212	psFillArc
	globalGC1	175	204	171	212	psDrawLine
	globalGC1	174 203	3 3	0 360	175 204	psFillArc
	globalGC1	180	196	175	204	psDrawLine
	globalGC1	179 195	3 3	0 360	180 196	psFillArc
	globalGC1	185	187	180	196	psDrawLine
	globalGC1	184 186	3 3	0 360	185 187	psFillArc
	globalGC1	190	177	185	187	psDrawLine
	globalGC1	189 176	3 3	0 360	190 177	psFillArc
	globalGC1	195	166	190	177	psDrawLine
	globalGC1	194 165	3 3	0 360	195 166	psFillArc
	globalGC1	199	154	195	166	psDrawLine
	globalGC1	198 153	3 3	0 360	199 154	psFillArc
	globalGC1	204	142	199	154	psDrawLine
	globalGC1	203 141	3 3	0 360	204 142	psFillArc
	globalGC1	209	129	204	142	psDrawLine
	globalGC1	208 128	3 3	0 360	209 129	psFillArc
	globalGC1	214	115	209	129	psDrawLine
	globalGC1	213 114	3 3	0 360	214 115	psFillArc
	globalGC1	219	100	214	115	psDrawLine
	globalGC1	218 99	3 3	0 360	219 100	psFillArc
	globalGC1	223	84	219	100	psDrawLine
	globalGC1	222 83	3 3	0 360	223 84	psFillArc
	globalGC1	228	68	223	84	psDrawLine
	globalGC1	227 67	3 3	0 360	228 68	psFillArc
	globalGC1	233	51	228	68	psDrawLine
	globalGC1	232 50	3 3	0 360	233 51	psFillArc
	globalGC1	238	33	233	51	psDrawLine
	globalGC1	237 32	3 3	0 360	238 33	psFillArc
	globalGC1	243	14	238	33	psDrawLine
	globalGC1	242 13	3 3	0 360	243 14	psFillArc

    grestore	% restore graphics state


   cleartomark					%% clearing operand stack

end		%% pops mainDict from dictionary stack

showpage

%-------------------------- end --------------------------%