From b6a1cf703c2273e2a70cc8dd78c1b5836e848003 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Fri, 11 May 2018 09:47:09 +1200 Subject: [PATCH] Re-implemented mirrors --- desktop/sources/scripts/dotgrid.js | 1 + desktop/sources/scripts/generator.js | 16 ++++++++++------ desktop/sources/scripts/tool.js | 6 ++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/desktop/sources/scripts/dotgrid.js b/desktop/sources/scripts/dotgrid.js index 45c4ee2..28566a1 100644 --- a/desktop/sources/scripts/dotgrid.js +++ b/desktop/sources/scripts/dotgrid.js @@ -319,6 +319,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y) this.tool.reset(); this.reset(); dotgrid.guide.refresh(); + dotgrid.interface.refresh(true); } this.drag = function(e) diff --git a/desktop/sources/scripts/generator.js b/desktop/sources/scripts/generator.js index 487b080..5e1e0cf 100644 --- a/desktop/sources/scripts/generator.js +++ b/desktop/sources/scripts/generator.js @@ -2,20 +2,21 @@ function Generator(layer) { this.layer = layer; - function operate(layer,offset,scale) + function operate(layer,offset,scale,mirror = 0) { var l = copy(layer) for(k1 in l){ var seg = l[k1]; for(k2 in seg.vertices){ + if(mirror == 1){ seg.vertices[k2].x = (dotgrid.tool.settings.size.width) - seg.vertices[k2].x } + if(mirror == 2){ seg.vertices[k2].y = (dotgrid.tool.settings.size.height) - seg.vertices[k2].y } seg.vertices[k2].x += offset.x seg.vertices[k2].x *= scale seg.vertices[k2].y += offset.y seg.vertices[k2].y *= scale } } - return l; } @@ -71,16 +72,19 @@ function Generator(layer) s += `${this.render(seg)}` } - return s.trim(); + return s; } this.toString = function(offset = {x:0,y:0}, scale = 1, mirror = dotgrid.tool.style().mirror_style) { - var s = "" - var layer = operate(this.layer,offset,scale) - s += this.convert(layer) + var s = this.convert(operate(this.layer,offset,scale)) + + if(mirror == 1 || mirror == 2){ + s += this.convert(operate(this.layer,offset,scale,mirror)) + } return s } function copy(data){ return data ? JSON.parse(JSON.stringify(data)) : []; } + function rotate_point(pointX, pointY, originX, originY, angle){ angle = angle * Math.PI / 180.0; return { x: (Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX).toFixed(1), y: (Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY).toFixed(1) }; } } \ No newline at end of file diff --git a/desktop/sources/scripts/tool.js b/desktop/sources/scripts/tool.js index 4df6e8a..c3fb910 100644 --- a/desktop/sources/scripts/tool.js +++ b/desktop/sources/scripts/tool.js @@ -139,9 +139,11 @@ function Tool() this.layer().push({type:type,vertices:this.vertices.slice()}) } + dotgrid.history.push(this.layers); + this.clear(); dotgrid.guide.refresh(); - dotgrid.history.push(this.layers); + dotgrid.interface.refresh(true); console.log(`Casted ${type} -> ${this.layer().length} elements`); } @@ -258,6 +260,7 @@ function Tool() this.index = clamp(id,0,2); this.clear(); dotgrid.guide.refresh(); + dotgrid.interface.refresh(true); console.log(`layer:${this.index}`) } @@ -267,7 +270,6 @@ function Tool() this.select_layer(this.index); } - function rotate_point(pointX, pointY, originX, originY, angle){ angle = angle * Math.PI / 180.0; return { x: (Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX).toFixed(1), y: (Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY).toFixed(1) }; } function copy(data){ return data ? JSON.parse(JSON.stringify(data)) : []; } function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } }