Detect error polygon(stroke) and skip output.
[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