-//kagedf.c\r
-//\r
-#include "kage.h"\r
-\r
-void dfDrawFont(int a1, int a2, int a3,\r
- int x1, int y1,\r
- int x2, int y2,\r
- int x3, int y3,\r
- int x4, int y4){\r
- int tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;\r
- double rad;\r
- \r
- if(kShotai == kMincho){\r
- switch(a1 % 100){\r
- case 0:\r
- break;\r
- case 1:\r
- if(a3 == 4){\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else{ v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, x2 - kMage, y2, 1, 14);\r
- }\r
- else{\r
- cdDrawLine(x1, y1, x2, y2, a2, a3);\r
- }\r
- break;\r
- case 2:\r
- case 12:\r
- if(a3 == 4){\r
- if(x2 == x3){\r
- tx1 = x3;\r
- ty1 = y3 - kMage;\r
- }\r
- else if(y2 == y3){\r
- tx1 = x3 - kMage;\r
- ty1 = y3;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx1 = x3 - kMage * cos(rad) * v;\r
- ty1 = y3 - kMage * sin(rad) * v;\r
- }\r
- cdDrawCurve(x1, y1, x2, y2, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x3, y3, x3 - kMage, y3, 1, 14);\r
- }\r
- else if(a3 == 5){\r
- cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, 15);\r
- }\r
- else{\r
- cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, a3);\r
- }\r
- break;\r
- case 3:\r
- if(a3 == 5){\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else{ v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- if(x2 == x3){\r
- if(y2 < y3){ v = 1; } else{ v = -1; }\r
- tx2 = x2;\r
- ty2 = y2 + kMage * v;\r
- }\r
- else if(y2 == y3){\r
- if(x2 < x3){ v = 1; } else { v = -1; }\r
- tx2 = x2 + kMage * v;\r
- ty2 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * cos(rad) * v;\r
- ty2 = y2 + kMage * sin(rad) * v;\r
- }\r
- tx3 = x3 - kMage;\r
- ty3 = y3;\r
- tx4 = x3 + kMage * 0.5;\r
- ty4 = y3 - kMage * 2;\r
- \r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
- cdDrawLine(tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
- }\r
- else{\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else { v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- if(x2 == x3){\r
- if(y2 < y3){ v = 1; } else{ v = -1; }\r
- tx2 = x2;\r
- ty2 = y2 + kMage * v;\r
- }\r
- else if(y2 == y3){\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * v;\r
- ty2 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * cos(rad) * v;\r
- ty2 = y2 + kMage * sin(rad) * v;\r
- }\r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
- cdDrawLine(tx2, ty2, x3, y3, 6, a3); // bolder by force\r
- }\r
- break;\r
- case 6:\r
- if(a3 == 5){\r
- tx1 = x4 - kMage;\r
- ty1 = y4;\r
- tx2 = x4 + kMage * 0.5;\r
- ty2 = y4 - kMage * 2;\r
- if(a2 == 7 || a3 == 7){\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 17);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 17, 15);\r
- }\r
- else{\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 8);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, 15);\r
- }\r
- }\r
- else{\r
- if(a2 == 7 || a3 == 7){\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 17);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 17, a3);\r
- }\r
- else{\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 8);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);\r
- }\r
- }\r
- break;\r
- case 7:\r
- cdDrawLine(x1, y1, x2, y2, a2, 1);\r
- cdDrawCurve(x2, y2, x3, y3, x4, y4, 1, 7);\r
- break;\r
- case 9: // may not be exist\r
- break;\r
- default:\r
- break;\r
- }\r
- }\r
- \r
- else{ // gothic\r
- switch(a1 % 100){\r
- case 0:\r
- break;\r
- case 1:\r
- if(a3 == 4){\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else{ v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, x2 - kMage * 2, y2 - kMage * 0.5, 1, 0);\r
- }\r
- else{\r
- cdDrawLine(x1, y1, x2, y2, a2, a3);\r
- }\r
- break;\r
- case 2:\r
- case 12:\r
- if(a3 == 4){\r
- if(x2 == x3){\r
- tx1 = x3;\r
- ty1 = y3 - kMage;\r
- }\r
- else if(y2 == y3){\r
- tx1 = x3 - kMage;\r
- ty1 = y3;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx1 = x3 - kMage * cos(rad) * v;\r
- ty1 = y3 - kMage * sin(rad) * v;\r
- }\r
- cdDrawCurve(x1, y1, x2, y2, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x3, y3, x3 - kMage * 2, y3 - kMage * 0.5, 1, 0);\r
- }\r
- else if(a3 == 5){\r
- tx1 = x3 + kMage;\r
- ty1 = y3;\r
- tx2 = tx1 + kMage * 0.5;\r
- ty2 = y3 - kMage * 2;\r
- cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, 1);\r
- cdDrawCurve(x3, y3, tx1, ty1, tx2, ty2, 1, 0);\r
- }\r
- else{\r
- cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, a3);\r
- }\r
- break;\r
- case 3:\r
- if(a3 == 5){\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else{ v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- if(x2 == x3){\r
- if(y2 < y3){ v = 1; } else{ v = -1; }\r
- tx2 = x2;\r
- ty2 = y2 + kMage * v;\r
- }\r
- else if(y2 == y3){\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * v;\r
- ty2 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * cos(rad) * v;\r
- ty2 = y2 + kMage * sin(rad) * v;\r
- }\r
- tx3 = x3 - kMage;\r
- ty3 = y3;\r
- tx4 = x3 + kMage * 0.5;\r
- ty4 = y3 - kMage * 2;\r
- \r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
- cdDrawLine(tx2, ty2, tx3, ty3, 1, 1);\r
- cdDrawCurve(tx3, ty3, x3, y3, tx4, ty4, 1, 0);\r
- }\r
- else{\r
- if(x1 == x2){\r
- if(y1 < y2){ v = 1; } else{ v = -1; }\r
- tx1 = x2;\r
- ty1 = y2 - kMage * v;\r
- }\r
- else if(y1 == y2){\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * v;\r
- ty1 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y2 - y1) / (double)(x2 - x1));\r
- if(x1 < x2){ v = 1; } else{ v = -1; }\r
- tx1 = x2 - kMage * cos(rad) * v;\r
- ty1 = y2 - kMage * sin(rad) * v;\r
- }\r
- if(x2 == x3){\r
- if(y2 < y3){ v = 1; } else{ v = -1; }\r
- tx2 = x2;\r
- ty2 = y2 + kMage * v;\r
- }\r
- else if(y2 == y3){\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * v;\r
- ty2 = y2;\r
- }\r
- else{\r
- rad = atan((double)(y3 - y2) / (double)(x3 - x2));\r
- if(x2 < x3){ v = 1; } else{ v = -1; }\r
- tx2 = x2 + kMage * cos(rad) * v;\r
- ty2 = y2 + kMage * sin(rad) * v;\r
- }\r
- \r
- cdDrawLine(x1, y1, tx1, ty1, a2, 1);\r
- cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
- cdDrawLine(tx2, ty2, x3, y3, 1, a3);\r
- }\r
- break;\r
- case 6:\r
- if(a3 == 5){\r
- tx1 = x4 - kMage;\r
- ty1 = y4;\r
- tx2 = x4 + kMage * 0.5;\r
- ty2 = y4 - kMage * 2;\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, tx1, ty1, 1, 1);\r
- cdDrawCurve(tx1, ty1, x4, y4, tx2, ty2, 1, 0);\r
- }\r
- else{\r
- cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
- cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);\r
- }\r
- break;\r
- case 7:\r
- cdDrawLine(x1, y1, x2, y2, a2, 1);\r
- cdDrawCurve(x2, y2, x3, y3, x4, y4, 1, a3);\r
- break;\r
- case 9: // may not be exist\r
- break;\r
- default:\r
- break;\r
- }\r
- }\r
-}\r
+//kagedf.c
+//
+#include "kage.h"
+#include "kagecgi.h"
+
+void dfDrawFont(int a1, int a2, int a3,
+ int x1, int y1,
+ int x2, int y2,
+ int x3, int y3,
+ int x4, int y4){
+ int tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;
+ double rad;
+
+ if(kShotai == kMincho){
+ switch(a1 % 100){
+ case 0:
+ break;
+ case 1:
+ if(a3 == 4){
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else{ v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, x2 - kMage, y2, 1, 14);
+ }
+ else{
+ cdDrawLine(x1, y1, x2, y2, a2, a3);
+ }
+ break;
+ case 2:
+ case 12:
+ if(a3 == 4){
+ if(x2 == x3){
+ tx1 = x3;
+ ty1 = y3 - kMage;
+ }
+ else if(y2 == y3){
+ tx1 = x3 - kMage;
+ ty1 = y3;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx1 = x3 - kMage * cos(rad) * v;
+ ty1 = y3 - kMage * sin(rad) * v;
+ }
+ cdDrawCurve(x1, y1, x2, y2, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x3, y3, x3 - kMage, y3, 1, 14);
+ }
+ else if(a3 == 5){
+ cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, 15);
+ }
+ else{
+ cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, a3);
+ }
+ break;
+ case 3:
+ if(a3 == 5){
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else{ v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ if(x2 == x3){
+ if(y2 < y3){ v = 1; } else{ v = -1; }
+ tx2 = x2;
+ ty2 = y2 + kMage * v;
+ }
+ else if(y2 == y3){
+ if(x2 < x3){ v = 1; } else { v = -1; }
+ tx2 = x2 + kMage * v;
+ ty2 = y2;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * cos(rad) * v;
+ ty2 = y2 + kMage * sin(rad) * v;
+ }
+ tx3 = x3 - kMage;
+ ty3 = y3;
+ tx4 = x3 + kMage * 0.5;
+ ty4 = y3 - kMage * 2;
+
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);
+ cdDrawLine(tx2, ty2, tx3, ty3, 6, 5); // bolder by force
+ }
+ else{
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else { v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ if(x2 == x3){
+ if(y2 < y3){ v = 1; } else{ v = -1; }
+ tx2 = x2;
+ ty2 = y2 + kMage * v;
+ }
+ else if(y2 == y3){
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * v;
+ ty2 = y2;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * cos(rad) * v;
+ ty2 = y2 + kMage * sin(rad) * v;
+ }
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);
+ cdDrawLine(tx2, ty2, x3, y3, 6, a3); // bolder by force
+ }
+ break;
+ case 6:
+ if(a3 == 5){
+ /* only implimented for gothic
+ tx1 = x4 - kMage;
+ ty1 = y4;
+ tx2 = x4 + kMage * 0.5;
+ ty2 = y4 - kMage * 2;
+ */
+ cdDrawBezier(x1, y1, x2, y2, x3, y3, x4, y4, a2, 15);
+ }
+ else{
+ cdDrawBezier(x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);
+ }
+ break;
+ case 7:
+ cdDrawLine(x1, y1, x2, y2, a2, 1);
+ cdDrawCurve(x2, y2, x3, y3, x4, y4, 1, 7);
+ break;
+ case 8:
+ icBox(x1, y1, x2, y2);
+ break;
+ case 9: // may not be exist
+ icDot(x1, y1);
+ icDot(x2, y2);
+ break;
+ default:
+ break;
+ }
+ }
+
+ else{ // gothic
+ switch(a1 % 100){
+ case 0:
+ break;
+ case 1:
+ if(a3 == 4){
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else{ v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, x2 - kMage * 2, y2 - kMage * 0.5, 1, 0);
+ }
+ else{
+ cdDrawLine(x1, y1, x2, y2, a2, a3);
+ }
+ break;
+ case 2:
+ case 12:
+ if(a3 == 4){
+ if(x2 == x3){
+ tx1 = x3;
+ ty1 = y3 - kMage;
+ }
+ else if(y2 == y3){
+ tx1 = x3 - kMage;
+ ty1 = y3;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx1 = x3 - kMage * cos(rad) * v;
+ ty1 = y3 - kMage * sin(rad) * v;
+ }
+ cdDrawCurve(x1, y1, x2, y2, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x3, y3, x3 - kMage * 2, y3 - kMage * 0.5, 1, 0);
+ }
+ else if(a3 == 5){
+ tx1 = x3 + kMage;
+ ty1 = y3;
+ tx2 = tx1 + kMage * 0.5;
+ ty2 = y3 - kMage * 2;
+ cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, 1);
+ cdDrawCurve(x3, y3, tx1, ty1, tx2, ty2, 1, 0);
+ }
+ else{
+ cdDrawCurve(x1, y1, x2, y2, x3, y3, a2, a3);
+ }
+ break;
+ case 3:
+ if(a3 == 5){
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else{ v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ if(x2 == x3){
+ if(y2 < y3){ v = 1; } else{ v = -1; }
+ tx2 = x2;
+ ty2 = y2 + kMage * v;
+ }
+ else if(y2 == y3){
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * v;
+ ty2 = y2;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * cos(rad) * v;
+ ty2 = y2 + kMage * sin(rad) * v;
+ }
+ tx3 = x3 - kMage;
+ ty3 = y3;
+ tx4 = x3 + kMage * 0.5;
+ ty4 = y3 - kMage * 2;
+
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);
+ cdDrawLine(tx2, ty2, tx3, ty3, 1, 1);
+ cdDrawCurve(tx3, ty3, x3, y3, tx4, ty4, 1, 0);
+ }
+ else{
+ if(x1 == x2){
+ if(y1 < y2){ v = 1; } else{ v = -1; }
+ tx1 = x2;
+ ty1 = y2 - kMage * v;
+ }
+ else if(y1 == y2){
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * v;
+ ty1 = y2;
+ }
+ else{
+ rad = atan((double)(y2 - y1) / (double)(x2 - x1));
+ if(x1 < x2){ v = 1; } else{ v = -1; }
+ tx1 = x2 - kMage * cos(rad) * v;
+ ty1 = y2 - kMage * sin(rad) * v;
+ }
+ if(x2 == x3){
+ if(y2 < y3){ v = 1; } else{ v = -1; }
+ tx2 = x2;
+ ty2 = y2 + kMage * v;
+ }
+ else if(y2 == y3){
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * v;
+ ty2 = y2;
+ }
+ else{
+ rad = atan((double)(y3 - y2) / (double)(x3 - x2));
+ if(x2 < x3){ v = 1; } else{ v = -1; }
+ tx2 = x2 + kMage * cos(rad) * v;
+ ty2 = y2 + kMage * sin(rad) * v;
+ }
+
+ cdDrawLine(x1, y1, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x2, y2, tx2, ty2, 1, 1);
+ cdDrawLine(tx2, ty2, x3, y3, 1, a3);
+ }
+ break;
+ case 6:
+ if(a3 == 5){
+ tx1 = x4 - kMage;
+ ty1 = y4;
+ tx2 = x4 + kMage * 0.5;
+ ty2 = y4 - kMage * 2;
+ cdDrawBezier(x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);
+ cdDrawCurve(tx1, ty1, x4, y4, tx2, ty2, 1, 0);
+ }
+ else{
+ cdDrawBezier(x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);
+ }
+ break;
+ case 7:
+ cdDrawLine(x1, y1, x2, y2, a2, 1);
+ cdDrawCurve(x2, y2, x3, y3, x4, y4, 1, a3);
+ break;
+ case 8:
+ icBox(x1, y1, x2, y2);
+ break;
+ case 9: // may not be exist
+ icDot(x1, y1);
+ icDot(x2, y2);
+ break;
+ default:
+ break;
+ }
+ }
+}