1 function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
\r
2 var tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;
\r
5 if(kage.kShotai == kage.kMincho){
\r
6 switch(a1 % 100){ // ... no need to divide
\r
12 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
14 ty1 = y2 - kage.kMage * v;
\r
16 else if(y1 == y2){ // ... no need
\r
17 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
18 tx1 = x2 - kage.kMage * v;
\r
22 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
23 if(x1 < x2){ v = 1; } else{v = -1; }
\r
24 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
25 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
27 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
28 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage, y2, 1, 14);
\r
31 cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);
\r
35 //case 12: // ... no need
\r
39 ty1 = y3 - kage.kMage;
\r
42 tx1 = x3 - kage.kMage;
\r
46 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
47 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
48 tx1 = x3 - kage.kMage * Math.cos(rad) * v;
\r
49 ty1 = y3 - kage.kMage * Math.sin(rad) * v;
\r
51 cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);
\r
52 cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage, y3, 1, 14);
\r
55 cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 15);
\r
58 cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);
\r
64 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
66 ty1 = y2 - kage.kMage * v;
\r
69 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
70 tx1 = x2 - kage.kMage * v;
\r
74 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
75 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
76 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
77 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
80 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
82 ty2 = y2 + kage.kMage * v;
\r
85 if(x2 < x3){ v = 1; } else { v = -1; }
\r
86 tx2 = x2 + kage.kMage * v;
\r
90 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
91 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
92 tx2 = x2 + kage.kMage * Math.cos(rad) * v;
\r
93 ty2 = y2 + kage.kMage * Math.sin(rad) * v;
\r
98 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
99 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
100 if(tx3 - tx2 > 0){ // for closer position
\r
101 cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force
\r
106 if(y1 < y2){ v = 1; } else { v = -1; }
\r
108 ty1 = y2 - kage.kMage * v;
\r
111 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
112 tx1 = x2 - kage.kMage * v;
\r
116 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
117 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
118 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
119 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
122 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
124 ty2 = y2 + kage.kMage * v;
\r
127 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
128 tx2 = x2 + kage.kMage * v;
\r
132 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
133 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
134 tx2 = x2 + kage.kMage * Math.cos(rad) * v;
\r
135 ty2 = y2 + kage.kMage * Math.sin(rad) * v;
\r
137 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
138 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
139 cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force
\r
143 cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);
\r
144 cdDrawLine(kage, polygons, x3, y3, x4, y4, 6, a3);
\r
148 if((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2) < 14400){ // smaller than 120 x 120
\r
149 rate = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)) / 120 * 6;
\r
153 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
155 ty1 = y2 - kage.kMage * v * rate;
\r
158 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
159 tx1 = x2 - kage.kMage * v * rate;
\r
163 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
164 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
165 tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;
\r
166 ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;
\r
169 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
171 ty2 = y2 + kage.kMage * v * rate;
\r
174 if(x2 < x3){ v = 1; } else { v = -1; }
\r
175 tx2 = x2 + kage.kMage * v * rate;
\r
179 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
180 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
181 tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;
\r
182 ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;
\r
187 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
188 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
189 if(tx3 - tx2 > 0){ // for closer position
\r
190 cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force
\r
195 if(y1 < y2){ v = 1; } else { v = -1; }
\r
197 ty1 = y2 - kage.kMage * v * rate;
\r
200 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
201 tx1 = x2 - kage.kMage * v * rate;
\r
205 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
206 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
207 tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;
\r
208 ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;
\r
211 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
213 ty2 = y2 + kage.kMage * v * rate;
\r
216 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
217 tx2 = x2 + kage.kMage * v * rate;
\r
221 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
222 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
223 tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;
\r
224 ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;
\r
226 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
227 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
228 cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force
\r
233 /* only implimented for gothic
\r
234 tx1 = x4 - kage.kMage;
\r
236 tx2 = x4 + kage.kMage * 0.5;
\r
237 ty2 = y4 - kage.kMage * 2;
\r
239 cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, 15);
\r
241 if(a2 == 7 || a3 == 7){
\r
242 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 17);
\r
243 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 17, 15);
\r
246 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 8);
\r
247 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, 15);
\r
252 cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);
\r
254 if(a2 == 7 || a3 == 7){
\r
255 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 17);
\r
256 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 17, a3);
\r
259 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 8);
\r
260 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);
\r
266 cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);
\r
267 cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, a3);
\r
269 case 9: // may not be exist ... no need
\r
270 //kageCanvas[y1][x1] = 0;
\r
271 //kageCanvas[y2][x2] = 0;
\r
285 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
287 ty1 = y2 - kage.kMage * v;
\r
290 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
291 tx1 = x2 - kage.kMage * v;
\r
295 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
296 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
297 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
298 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
300 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
301 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage * 2, y2 - kage.kMage * 0.5, 1, 0);
\r
304 cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);
\r
312 ty1 = y3 - kage.kMage;
\r
315 tx1 = x3 - kage.kMage;
\r
319 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
320 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
321 tx1 = x3 - kage.kMage * Math.cos(rad) * v;
\r
322 ty1 = y3 - kage.kMage * Math.sin(rad) * v;
\r
324 cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);
\r
325 cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage * 2, y3 - kage.kMage * 0.5, 1, 0);
\r
328 tx1 = x3 + kage.kMage;
\r
330 tx2 = tx1 + kage.kMage * 0.5;
\r
331 ty2 = y3 - kage.kMage * 2;
\r
332 cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);
\r
333 cdDrawCurve(kage, polygons, x3, y3, tx1, ty1, tx2, ty2, 1, 0);
\r
336 cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);
\r
342 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
344 ty1 = y2 - kage.kMage * v;
\r
347 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
348 tx1 = x2 - kage.kMage * v;
\r
352 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
353 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
354 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
355 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
358 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
360 ty2 = y2 + kage.kMage * v;
\r
363 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
364 tx2 = x2 + kage.kMage * v;
\r
368 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
369 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
370 tx2 = x2 + kage.kMage * Math.cos(rad) * v;
\r
371 ty2 = y2 + kage.kMage * Math.sin(rad) * v;
\r
373 tx3 = x3 - kage.kMage;
\r
375 tx4 = x3 + kage.kMage * 0.5;
\r
376 ty4 = y3 - kage.kMage * 2;
\r
378 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
379 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
380 cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 1, 1);
\r
381 cdDrawCurve(kage, polygons, tx3, ty3, x3, y3, tx4, ty4, 1, 0);
\r
385 if(y1 < y2){ v = 1; } else{ v = -1; }
\r
387 ty1 = y2 - kage.kMage * v;
\r
390 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
391 tx1 = x2 - kage.kMage * v;
\r
395 rad = Math.atan((y2 - y1) / (x2 - x1));
\r
396 if(x1 < x2){ v = 1; } else{ v = -1; }
\r
397 tx1 = x2 - kage.kMage * Math.cos(rad) * v;
\r
398 ty1 = y2 - kage.kMage * Math.sin(rad) * v;
\r
401 if(y2 < y3){ v = 1; } else{ v = -1; }
\r
403 ty2 = y2 + kage.kMage * v;
\r
406 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
407 tx2 = x2 + kage.kMage * v;
\r
411 rad = Math.atan((y3 - y2) / (x3 - x2));
\r
412 if(x2 < x3){ v = 1; } else{ v = -1; }
\r
413 tx2 = x2 + kage.kMage * Math.cos(rad) * v;
\r
414 ty2 = y2 + kage.kMage * Math.sin(rad) * v;
\r
417 cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);
\r
418 cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);
\r
419 cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 1, a3);
\r
424 tx1 = x4 - kage.kMage;
\r
426 tx2 = x4 + kage.kMage * 0.5;
\r
427 ty2 = y4 - kage.kMage * 2;
\r
429 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);
\r
430 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, tx1, ty1, 1, 1);
\r
432 cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);
\r
433 cdDrawCurve(kage, polygons, tx1, ty1, x4, y4, tx2, ty2, 1, 0);
\r
437 cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);
\r
438 cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);
\r
440 cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);
\r
444 cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);
\r
445 cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, a3);
\r
447 case 9: // may not be exist
\r
448 //kageCanvas[y1][x1] = 0;
\r
449 //kageCanvas[y2][x2] = 0;
\r