set polygons to counter-clockwise
[chise/kage.git] / engine / polygons.js
index 5e3c8b8..75ebdc1 100755 (executable)
@@ -1,5 +1,10 @@
 function Polygons(){\r
   // method\r
+       function clear(){ // void\r
+    this.array = new Array();\r
+  }\r
+  Polygons.prototype.clear = clear;\r
+       \r
   function push(polygon){ // void\r
     // only a simple check\r
     var minx = 200;\r
@@ -29,10 +34,10 @@ function Polygons(){
       newArray.push(polygon.array.shift());\r
       while(polygon.array.length != 0){\r
         var temp = polygon.array.shift();\r
-        if(newArray[newArray.length - 1].x != temp.x ||\r
-           newArray[newArray.length - 1].y != temp.y){\r
+        //if(newArray[newArray.length - 1].x != temp.x ||\r
+        //   newArray[newArray.length - 1].y != temp.y){\r
           newArray.push(temp);\r
-        }\r
+        //}\r
       }\r
       if(newArray.length >= 3){\r
         polygon.array = newArray;\r
@@ -42,19 +47,40 @@ function Polygons(){
   }\r
   Polygons.prototype.push = push;\r
   \r
-  function generateSVG(){ // string\r
+  function generateSVG(curve){ // string\r
     var buffer = "";\r
-    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
-    buffer += "<g fill=\"black\">\n";\r
-    for(var i = 0; i < this.array.length; i++){\r
-      buffer += "<polygon points=\"";\r
-      for(var j = 0; j < this.array[i].array.length; j++){\r
-        buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
+    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 200 200\" width=\"200\" height=\"200\">\n";\r
+    if(curve){\r
+      for(var i = 0; i < this.array.length; i++){\r
+        var mode = "L";\r
+        buffer += "<path d=\"M ";\r
+        buffer += this.array[i].array[0].x + "," + this.array[i].array[0].y + " ";\r
+        for(var j = 1; j < this.array[i].array.length; j++){\r
+          if(this.array[i].array[j].off == 1){\r
+            buffer += "Q ";\r
+            mode = "Q";\r
+          } else if(mode == "Q" && this.array[i].array[j - 1].off != 1){\r
+            buffer += "L ";\r
+          } else if(mode == "L" && j == 1){\r
+            buffer += "L ";\r
+          }\r
+          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
+        }\r
+        buffer += "Z\" fill=\"black\" />\n";\r
+      }\r
+      buffer += "</svg>\n";\r
+    } else {\r
+      buffer += "<g fill=\"black\">\n";\r
+      for(var i = 0; i < this.array.length; i++){\r
+        buffer += "<polygon points=\"";\r
+        for(var j = 0; j < this.array[i].array.length; j++){\r
+          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
+        }\r
+        buffer += "\" />\n";\r
       }\r
-      buffer += "\" />\n";\r
+      buffer += "</g>\n";\r
+      buffer += "</svg>\n";\r
     }\r
-    buffer += "</g>\n";\r
-    buffer += "</svg>\n";\r
     return buffer;\r
   }\r
   Polygons.prototype.generateSVG = generateSVG;\r
@@ -69,20 +95,18 @@ function Polygons(){
     buffer += "%%CreationDate: " + new Date() + "\n";\r
     buffer += "%%EndComments\n";\r
     buffer += "%%EndProlog\n";\r
-    buffer += "newpath\n";\r
     \r
     for(var i = 0; i < this.array.length; i++){\r
       for(var j = 0; j < this.array[i].array.length; j++){\r
         buffer += (this.array[i].array[j].x * 5) + " " + (1000 - this.array[i].array[j].y * 5 - 200) + " ";\r
         if(j == 0){\r
-          buffer += "moveto\n";\r
+          buffer += "newpath\nmoveto\n";\r
         } else {\r
           buffer += "lineto\n";\r
         }\r
       }\r
-      buffer += "closepath\n";\r
+      buffer += "closepath\nfill\n";\r
     }\r
-    buffer += "fill\n";\r
     buffer += "%%EOF\n";\r
     return buffer;\r
   }\r