Added UROKO design function(size adjustment).
[chise/kage.git] / engine / polygons.js
1 function Polygons(){\r
2   // method\r
3   function push(polygon){ // void\r
4     // only a simple check\r
5     var minx = 200;\r
6     var maxx = 0;\r
7     var miny = 200;\r
8     var maxy = 0;\r
9     var error = 0;\r
10     for(var i = 0; i < polygon.array.length; i++){\r
11       if(polygon.array[i].x < minx){\r
12         minx = polygon.array[i].x;\r
13       }\r
14       if(polygon.array[i].x > maxx){\r
15         maxx = polygon.array[i].x;\r
16       }\r
17       if(polygon.array[i].y < miny){\r
18         miny = polygon.array[i].y;\r
19       }\r
20       if(polygon.array[i].y > maxy){\r
21         maxy = polygon.array[i].y;\r
22       }\r
23       if(isNaN(polygon.array[i].x) || isNaN(polygon.array[i].y)){\r
24         error++;\r
25       }\r
26     }\r
27     if(error == 0 && minx != maxx && miny != maxy && polygon.array.length >= 3){\r
28       var newArray = new Array();\r
29       newArray.push(polygon.array.shift());\r
30       while(polygon.array.length != 0){\r
31         var temp = polygon.array.shift();\r
32         if(newArray[newArray.length - 1].x != temp.x ||\r
33            newArray[newArray.length - 1].y != temp.y){\r
34           newArray.push(temp);\r
35         }\r
36       }\r
37       if(newArray.length >= 3){\r
38         polygon.array = newArray;\r
39         this.array.push(polygon);\r
40       }\r
41     }\r
42   }\r
43   Polygons.prototype.push = push;\r
44   \r
45   function generateSVG(){ // string\r
46     var buffer = "";\r
47     buffer += "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" viewBox=\"0 0 199 199\">\n";\r
48     buffer += "<g fill=\"black\">\n";\r
49     for(var i = 0; i < this.array.length; i++){\r
50       buffer += "<polygon points=\"";\r
51       for(var j = 0; j < this.array[i].array.length; j++){\r
52         buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
53       }\r
54       buffer += "\" />\n";\r
55     }\r
56     buffer += "</g>\n";\r
57     buffer += "</svg>\n";\r
58     return buffer;\r
59   }\r
60   Polygons.prototype.generateSVG = generateSVG;\r
61   \r
62   function generateEPS(){ // string\r
63     var buffer = "";\r
64     buffer += "%!PS-Adobe-3.0 EPSF-3.0\n";\r
65     buffer += "%%BoundingBox: 0 -208 1024 816\n";\r
66     buffer += "%%Pages: 0\n";\r
67     buffer += "%%Title: Kanji glyph\n";\r
68     buffer += "%%Creator: GlyphWiki powered by KAGE system\n";\r
69     buffer += "%%CreationDate: " + new Date() + "\n";\r
70     buffer += "%%EndComments\n";\r
71     buffer += "%%EndProlog\n";\r
72     buffer += "newpath\n";\r
73     \r
74     for(var i = 0; i < this.array.length; i++){\r
75       for(var j = 0; j < this.array[i].array.length; j++){\r
76         buffer += (this.array[i].array[j].x * 5) + " " + (1000 - this.array[i].array[j].y * 5 - 200) + " ";\r
77         if(j == 0){\r
78           buffer += "moveto\n";\r
79         } else {\r
80           buffer += "lineto\n";\r
81         }\r
82       }\r
83       buffer += "closepath\n";\r
84     }\r
85     buffer += "fill\n";\r
86     buffer += "%%EOF\n";\r
87     return buffer;\r
88   }\r
89   Polygons.prototype.generateEPS = generateEPS;\r
90   \r
91   // property\r
92   this.array = new Array();\r
93   \r
94   return this;\r
95 }\r