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