1 #ifndef lint
2 static char *sccsid = "pout.c	(CWI)	1.1	85/03/01";
3 #endif
4 #include "idfilt.h"
5 
6 float xscale, yscale;
7 
8 boolean wanterase = TRUE;
9 
10 void idjusttext (str)
11 char *str;
12 {
13 }
14 
15 void idstart ()
16 {
17 	openpl ();
18 	if (wanterase)
19 		erase ();
20 }
21 
22 void idendbound ()
23 {
24 	if (boundset)
25 		return;
26 	idminx (-6.0);
27 	idmaxy (6.0);
28 	idmaxx (6.0);
29 	idminy (-6.0);
30 	if (maxx - minx < 0.01) {
31 		maxx += 1;
32 		minx -= 1;
33 	}
34 	if (maxy - miny < 0.01) {
35 		maxy += 1;
36 		miny -= 1;
37 	}
38 	xscale = maxx - minx;
39 	yscale = maxy - miny;
40 	if (xscale < yscale) {
41 		maxx += (yscale - xscale)/2.0;
42 		minx -= (yscale - xscale)/2.0;
43 		xscale = yscale;
44 	} else {
45 		maxy += (xscale - yscale)/2.0;
46 		miny -= (xscale - yscale)/2.0;
47 		yscale = xscale;
48 	}
49 	xscale = 3000.0/xscale;
50 	yscale = 3000.0/yscale;
51 	space (round(minx*xscale) - 20, round(miny*yscale) - 20, round(maxx*xscale) + 20, round(maxy*yscale) + 20);
52 	boundset = TRUE;
53 }
54 
55 void idline (x1, y1, x2, y2)
56 float x1;
57 float y1;
58 float x2;
59 float y2;
60 {
61 	line (
62 		round(x1*xscale),
63 		round(y1*yscale),
64 		round(x2*xscale),
65 		round(y2*yscale)
66 	);
67 }
68 
69 void idcircle (x0, y0, r)
70 float x0;
71 float y0;
72 float r;
73 {
74 	circle (
75 		round(x0*xscale),
76 		round(y0*yscale),
77 		round(r*xscale)
78 	);
79 }
80 
81 void idarc (x0, y0, x1, y1, x2, y2, t1, t2, r)
82 float x0;
83 float y0;
84 float x1;
85 float y1;
86 float x2;
87 float y2;
88 float t1;
89 float t2;
90 float r;
91 {
92 	if (r*xscale > 20000.0)
93 		idline (x1, y1, x2, y2);
94 	else
95 		arc (
96 			round(x0*xscale),
97 			round(y0*yscale),
98 			round(x1*xscale),
99 			round(y1*yscale),
100 			round(x2*xscale),
101 			round(y2*yscale)
102 		);
103 }
104 
105 void idleft (x, y, str)
106 float x;
107 float y;
108 char *str;
109 {
110 	move (
111 		round(x*xscale),
112 		round(y*yscale)
113 	);
114 	label (
115 		++str
116 	);
117 }
118 
119 void idcenter (x, y, str)
120 float x;
121 float y;
122 char *str;
123 {
124 	idleft (x, y, str);
125 }
126 
127 void idright (x, y, str)
128 float x;
129 float y;
130 char *str;
131 {
132 	idleft (x, y, str);
133 }
134 
135 void idspline ()
136 {
137 }
138 
139 void idknot ()
140 {
141 }
142 
143 void idendspline ()
144 {
145 }
146 
147 void idendE ()
148 {
149 	closepl ();
150 }
151 
152 void idendF ()
153 {
154 	idendE ();
155 }
156 
157 void idnoerase ()
158 {
159 	wanterase = FALSE;
160 }
161 
162 void idyeserase ()
163 {
164 	wanterase = TRUE;
165 }
166