diff --git a/desktop/sources/index.html b/desktop/sources/index.html
index c7544dd..0128060 100644
--- a/desktop/sources/index.html
+++ b/desktop/sources/index.html
@@ -9,6 +9,7 @@
+
diff --git a/desktop/sources/scripts/generator.js b/desktop/sources/scripts/generator.js
new file mode 100644
index 0000000..e7321e9
--- /dev/null
+++ b/desktop/sources/scripts/generator.js
@@ -0,0 +1,75 @@
+function Generator(layer)
+{
+ this.layer = layer;
+
+ function operate(layer,offset,scale)
+ {
+ var l = copy(layer)
+
+ for(k1 in l){
+ var seg = l[k1];
+ for(k2 in seg.vertices){
+ seg.vertices[k2].x += offset.x
+ seg.vertices[k2].x *= scale
+ seg.vertices[k2].y += offset.y
+ seg.vertices[k2].y *= scale
+ }
+ }
+
+ return l;
+ }
+
+ function render(segment)
+ {
+ var type = segment.type;
+ var vertices = segment.vertices;
+ var html = '';
+ var skip = 0;
+
+ for(id in vertices){
+ if(skip > 0){ skip -= 1; continue; }
+
+ var vertex = vertices[id]
+ var next = vertices[parseInt(id)+1]
+ var after_next = vertices[parseInt(id)+2]
+
+ if(id == 0){
+ html += `M${vertex.x},${vertex.y} `
+ }
+ else if(type == "line"){
+ html += `L${vertex.x},${vertex.y} `;
+ }
+ else if(type == "arc_c"){
+ html += next ? `A${next.x - vertex.x},${next.y - vertex.y} 0 0,1 ${next.x},${next.y} ` : '';
+ }
+ else if(type == "arc_r"){
+ html += next ? `A${next.x - vertex.x},${next.y - vertex.y} 0 0,0 ${next.x},${next.y} ` : '';
+ }
+ else if(type == "bezier"){
+ html += next && after_next ?`Q${next.x},${next.y} ${after_next.x},${after_next.y} ` : '';
+ skip = 1
+ }
+ else{
+ console.warn(`unknown type:${type}`)
+ }
+ }
+
+ return html
+ }
+
+ this.toString = function(offset = {x:0,y:0}, scale = 1)
+ {
+ var s = ""
+
+ var layer = operate(this.layer,offset,scale)
+
+ for(id in layer){
+ var seg = layer[id];
+ s += `${render(seg)}`
+ }
+
+ return s.trim()
+ }
+
+ function copy(data){ return data ? JSON.parse(JSON.stringify(data)) : []; }
+}
\ No newline at end of file
diff --git a/desktop/sources/scripts/guide.js b/desktop/sources/scripts/guide.js
index 6f53d85..e09f507 100644
--- a/desktop/sources/scripts/guide.js
+++ b/desktop/sources/scripts/guide.js
@@ -109,15 +109,16 @@ function Guide()
this.draw_paths = function()
{
- var paths = dotgrid.tool.paths_mod({x:15,y:15},scale)
- this.draw_path(paths,0)
+ var path = new Generator(dotgrid.tool.layer()).toString({x:15,y:15},scale)
+ var style = dotgrid.tool.style()
+
+ this.draw_path(path,style)
}
- this.draw_path = function(paths,id)
+ this.draw_path = function(path,style)
{
- var style = dotgrid.tool.styles[id]
var ctx = this.el.getContext('2d');
- var p = new Path2D(paths[id]);
+ var p = new Path2D(path);
ctx.strokeStyle = style.color;
ctx.lineWidth = style.thickness * scale;