This commit is contained in:
Devine Lu Linvega 2018-08-27 07:39:15 +12:00
parent 8fbd62d2bc
commit 8dae514ebf
12 changed files with 145 additions and 143 deletions

View File

@ -99,7 +99,7 @@ function Cursor()
this.pos_snap = function(pos)
{
var grid = dotgrid.tool.settings.size.width/dotgrid.grid_x;
let grid = dotgrid.tool.settings.size.width/dotgrid.grid_x;
return {
x:clamp(step(pos.x,grid),grid,dotgrid.tool.settings.size.width),
y:clamp(step(pos.y,grid),grid,dotgrid.tool.settings.size.height+grid)

View File

@ -48,7 +48,9 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.open = function()
{
var paths = dialog.showOpenDialog({properties: ['openFile'],filters:[{name:"Dotgrid Image",extensions:["dot","grid"]}]});
if(!dialog){ return; }
let paths = dialog.showOpenDialog({properties: ['openFile'],filters:[{name:"Dotgrid Image",extensions:["dot","grid"]}]});
if(!paths){ console.log("Nothing to load"); return; }
@ -76,7 +78,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.save_web = function(content)
{
console.info("Web Save");
var win = window.open("", "Save", `toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480,top=${screen.height-200},left=${screen.width-640}`);
let win = window.open("", "Save", `toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480,top=${screen.height-200},left=${screen.width-640}`);
win.document.body.innerHTML = `<style>body { background:${dotgrid.theme.active.background}; color:${dotgrid.theme.active.f_med}} pre { color:${dotgrid.theme.active.f_high} }</style><p>To save: Copy this into a .grid file.<br />To load: Drag the .grid onto the browser window.</p><pre>${content}</pre>`;
}
@ -118,7 +120,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.export_web = function(content)
{
console.info("Web Export");
var win = window.open("", "Save", `toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480,top=${screen.height-200},left=${screen.width-640}`);
let win = window.open("", "Save", `toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480,top=${screen.height-200},left=${screen.width-640}`);
win.document.body.innerHTML = `<style>body { background:${dotgrid.theme.active.background}}</style>${dotgrid.renderer.to_svg()}`;
}
@ -132,7 +134,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.tool.settings.size.height = size.height
try{
var win = require('electron').remote.getCurrentWindow();
let win = require('electron').remote.getCurrentWindow();
win.setSize((size.width+100)*scale,(size.height+100+(interface ? 10 : 0))*scale,true);
}
catch(err){
@ -182,7 +184,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.refresh = function()
{
var size = {width:step(window.innerWidth-90,15),height:step(window.innerHeight-120,15)}
let size = {width:step(window.innerWidth-90,15),height:step(window.innerHeight-120,15)}
dotgrid.tool.settings.size.width = size.width
dotgrid.tool.settings.size.height = size.height
@ -205,11 +207,11 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
e.preventDefault();
e.stopPropagation();
var file = e.dataTransfer.files[0];
let file = e.dataTransfer.files[0];
if(!file.path || file.path.indexOf(".dot") < 0 && file.path.indexOf(".grid") < 0){ console.log("Dotgrid","Not a dot file"); return; }
var reader = new FileReader();
let reader = new FileReader();
reader.onload = function(e){
dotgrid.tool.replace(JSON.parse(e.target.result.toString().trim()));
dotgrid.guide.refresh();
@ -250,7 +252,7 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
this.paste = function(e)
{
if(e.target !== this.picker.el){
var data = e.clipboardData.getData("text/source");
let data = e.clipboardData.getData("text/source");
if (is_json(data)) {
data = JSON.parse(data.trim());
dotgrid.tool.import(data);

View File

@ -5,11 +5,11 @@ function Generator(layer,style)
function operate(layer,offset,scale,mirror = 0,angle = 0)
{
var l = copy(layer)
let l = copy(layer)
for(k1 in l){
var seg = l[k1];
for(k2 in seg.vertices){
for(let k1 in l){
let seg = l[k1];
for(let k2 in seg.vertices){
if(mirror == 1){ seg.vertices[k2].x = (dotgrid.tool.settings.size.width) - seg.vertices[k2].x + 15 }
if(mirror == 2){ seg.vertices[k2].y = (dotgrid.tool.settings.size.height) - seg.vertices[k2].y + 30 }
@ -18,7 +18,7 @@ function Generator(layer,style)
seg.vertices[k2].y += offset.y
// Rotate
var center = {x:(dotgrid.tool.settings.size.width/2)+offset.x+(7.5),y:(dotgrid.tool.settings.size.height/2)+offset.y+30}
let center = {x:(dotgrid.tool.settings.size.width/2)+offset.x+(7.5),y:(dotgrid.tool.settings.size.height/2)+offset.y+30}
seg.vertices[k2] = rotate_point(seg.vertices[k2],center,angle)
// Scale
@ -31,17 +31,17 @@ function Generator(layer,style)
this.render = function(prev,segment,mirror = 0)
{
var type = segment.type;
var vertices = segment.vertices;
var html = '';
var skip = 0;
let type = segment.type;
let vertices = segment.vertices;
let html = '';
let skip = 0;
for(id in vertices){
for(let 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]
let vertex = vertices[id]
let next = vertices[parseInt(id)+1]
let after_next = vertices[parseInt(id)+2]
if(id == 0 && !prev || id == 0 && prev && (prev.x != vertex.x || prev.y != vertex.y)){
html += `M${vertex.x},${vertex.y} `
@ -51,11 +51,11 @@ function Generator(layer,style)
html += `L${vertex.x},${vertex.y} `;
}
else if(type == "arc_c"){
var clock = mirror > 0 ? '0,0' : '0,1'
let clock = mirror > 0 ? '0,0' : '0,1'
html += next ? `A${Math.abs(next.x - vertex.x)},${Math.abs(next.y - vertex.y)} 0 ${clock} ${next.x},${next.y} ` : '';
}
else if(type == "arc_r"){
var clock = mirror > 0 ? '0,1' : '0,0'
let clock = mirror > 0 ? '0,1' : '0,0'
html += next ? `A${Math.abs(next.x - vertex.x)},${Math.abs(next.y - vertex.y)} 0 ${clock} ${next.x},${next.y} ` : '';
}
else if(type == "bezier"){
@ -76,10 +76,10 @@ function Generator(layer,style)
this.convert = function(layer,mirror,angle)
{
var s = ""
var prev = null
for(id in layer){
var seg = layer[id];
let s = ""
let prev = null
for(let id in layer){
let seg = layer[id];
s += `${this.render(prev,seg,mirror)}`
prev = seg.vertices ? seg.vertices[seg.vertices.length-1] : null
}
@ -89,7 +89,7 @@ function Generator(layer,style)
this.toString = function(offset = {x:0,y:0}, scale = 1, mirror = this.style && this.style.mirror_style ? this.style.mirror_style : 0)
{
var s = this.convert(operate(this.layer,offset,scale))
let s = this.convert(operate(this.layer,offset,scale))
if(mirror == 1 || mirror == 2){
s += this.convert(operate(this.layer,offset,scale,mirror),mirror)

View File

@ -48,7 +48,7 @@ function Guide()
this.resize = function(size)
{
var offset = 15
let offset = 15
this.el.width = (size.width+offset)*this.scale;
this.el.height = (size.height+(offset*2))*this.scale;
this.el.style.width = (size.width+offset)+"px";
@ -61,10 +61,10 @@ function Guide()
{
if(!this.show_extras){ return; }
for(segment_id in dotgrid.tool.layer()){
var segment = dotgrid.tool.layer()[segment_id];
for(vertex_id in segment.vertices){
var vertex = segment.vertices[vertex_id];
for(let segment_id in dotgrid.tool.layer()){
let segment = dotgrid.tool.layer()[segment_id];
for(let vertex_id in segment.vertices){
let vertex = segment.vertices[vertex_id];
this.draw_handle(vertex);
}
}
@ -72,7 +72,7 @@ function Guide()
this.draw_vertices = function()
{
for(id in dotgrid.tool.vertices){
for(let id in dotgrid.tool.vertices){
this.draw_vertex(dotgrid.tool.vertices[id]);
}
}
@ -81,14 +81,14 @@ function Guide()
{
if(!this.show_extras){ return; }
var cursor = {x:parseInt(dotgrid.cursor.pos.x/dotgrid.grid_width),y:parseInt(dotgrid.cursor.pos.y/dotgrid.grid_width)}
let cursor = {x:parseInt(dotgrid.cursor.pos.x/dotgrid.grid_width),y:parseInt(dotgrid.cursor.pos.y/dotgrid.grid_width)}
for (var x = dotgrid.grid_x-1; x >= 0; x--) {
for (var y = dotgrid.grid_y; y >= 0; y--) {
var is_step = x % dotgrid.block_x == 0 && y % dotgrid.block_y == 0;
for (let x = dotgrid.grid_x-1; x >= 0; x--) {
for (let y = dotgrid.grid_y; y >= 0; y--) {
let is_step = x % dotgrid.block_x == 0 && y % dotgrid.block_y == 0;
// Color
var color = is_step ? dotgrid.theme.active.f_med : dotgrid.theme.active.f_low;
let color = is_step ? dotgrid.theme.active.f_med : dotgrid.theme.active.f_low;
if((y == 0 || y == dotgrid.grid_y) && cursor.x == x+1){ color = dotgrid.theme.active.f_high; }
else if((x == 0 || x == dotgrid.grid_x-1) && cursor.y == y+1){ color = dotgrid.theme.active.f_high; }
else if(cursor.x == x+1 && cursor.y == y+1){ color = dotgrid.theme.active.f_high; }
@ -103,7 +103,7 @@ function Guide()
this.draw_marker = function(pos,radius = 1,color)
{
var ctx = this.el.getContext('2d');
let ctx = this.el.getContext('2d');
ctx.beginPath();
ctx.lineWidth = 2;
ctx.arc(pos.x * this.scale, pos.y * this.scale, radius, 0, 2 * Math.PI, false);
@ -114,7 +114,7 @@ function Guide()
this.draw_vertex = function(pos, radius = 5)
{
var ctx = this.el.getContext('2d');
let ctx = this.el.getContext('2d');
ctx.beginPath();
ctx.lineWidth = 2;
ctx.arc((pos.x * this.scale), (pos.y * this.scale), radius, 0, 2 * Math.PI, false);
@ -125,7 +125,7 @@ function Guide()
this.draw_handle = function(pos, radius = 6)
{
var ctx = this.el.getContext('2d');
let ctx = this.el.getContext('2d');
ctx.beginPath();
ctx.lineWidth = 3;
@ -152,8 +152,8 @@ function Guide()
this.draw_path = function(path,style)
{
var ctx = this.el.getContext('2d');
var p = new Path2D(path);
let ctx = this.el.getContext('2d');
let p = new Path2D(path);
ctx.strokeStyle = style.color;
ctx.lineWidth = style.thickness * this.scale;
@ -175,7 +175,7 @@ function Guide()
{
if(!dotgrid.cursor.translation){ return; }
var ctx = this.el.getContext('2d');
let ctx = this.el.getContext('2d');
ctx.beginPath();
ctx.moveTo((dotgrid.cursor.translation.from.x * this.scale),(dotgrid.cursor.translation.from.y * this.scale));
@ -193,7 +193,7 @@ function Guide()
this.draw_cursor = function(pos = dotgrid.cursor.pos,radius = dotgrid.tool.style().thickness-1)
{
var ctx = this.el.getContext('2d');
let ctx = this.el.getContext('2d');
ctx.beginPath();
ctx.lineWidth = 3;
@ -214,14 +214,14 @@ function Guide()
this.draw_preview = function()
{
var ctx = this.el.getContext('2d');
var operation = dotgrid.cursor.operation && dotgrid.cursor.operation.cast ? dotgrid.cursor.operation.cast : null
let ctx = this.el.getContext('2d');
let operation = dotgrid.cursor.operation && dotgrid.cursor.operation.cast ? dotgrid.cursor.operation.cast : null
if(!dotgrid.tool.can_cast(operation)){ return; }
if(operation == "close"){ return; }
var path = new Generator([{vertices:dotgrid.tool.vertices,type:operation}]).toString({x:0,y:0},2)
var style = {
let path = new Generator([{vertices:dotgrid.tool.vertices,type:operation}]).toString({x:0,y:0},2)
let style = {
color:dotgrid.theme.active.f_med,
thickness:2,
strokeLinecap:"round",

View File

@ -14,8 +14,8 @@ function Interface()
document.getElementById("app").appendChild(this.el);
this.el.appendChild(dotgrid.picker.el);
var html = ""
var options = {
let html = ""
let options = {
cast:{
line: { key:"A",icon:"M60,60 L240,240" },
arc_c: { key:"S",icon:"M60,60 A180,180 0 0,1 240,240" },
@ -42,10 +42,10 @@ function Interface()
}
}
for(type in options){
var tools = options[type];
for(name in tools){
var tool = tools[name];
for(let type in options){
let tools = options[type];
for(let name in tools){
let tool = tools[name];
html += `
<svg
id="option_${name}"
@ -91,12 +91,12 @@ function Interface()
{
if(this.prev_operation == dotgrid.cursor.operation && force == false){ return; }
var multi_vertices = null;
var segments = dotgrid.tool.layer()
var sum_segments = dotgrid.tool.length();
let multi_vertices = null;
let segments = dotgrid.tool.layer()
let sum_segments = dotgrid.tool.length();
for(id in segments){
if(segments[id].vertices.length > 2){ multi_vertices = true; break; }
for(let i in segments){
if(segments[i].vertices.length > 2){ multi_vertices = true; break; }
}
document.getElementById("option_line").className.baseVal = !dotgrid.tool.can_cast("line") ? "icon inactive" : "icon";

View File

@ -32,12 +32,12 @@ function Controller()
this.format = function()
{
var f = [];
var m = this.menu[this.mode];
for(cat in m){
var submenu = [];
for(name in m[cat]){
var option = m[cat][name];
let f = [];
let m = this.menu[this.mode];
for(let cat in m){
let submenu = [];
for(let name in m[cat]){
let option = m[cat][name];
if(option.role){
submenu.push({role:option.role})
}
@ -58,8 +58,8 @@ function Controller()
this.docs = function()
{
console.log("Generating docs..");
var svg = this.generate_svg(this.format())
var txt = this.documentation(this.format());
let svg = this.generate_svg(this.format())
let txt = this.documentation(this.format());
dialog.showSaveDialog((fileName) => {
if (fileName === undefined){ return; }
fileName = fileName.substr(-4,4) != ".svg" ? fileName+".svg" : fileName;
@ -70,11 +70,11 @@ function Controller()
this.generate_svg = function(m)
{
var svg_html = "";
let svg_html = "";
for(id in this.layout){
var key = this.layout[id];
var acc = this.accelerator_for_key(key.name,m);
for(let id in this.layout){
let key = this.layout[id];
let acc = this.accelerator_for_key(key.name,m);
svg_html += `<rect x="${key.x + 1}" y="${key.y + 1}" width="${key.width - 2}" height="${key.height - 2}" rx="4" ry="4" title="${key.name}" stroke="#ccc" fill="none" stroke-width="1"/>`;
svg_html += `<rect x="${key.x + 3}" y="${key.y + 3}" width="${key.width - 6}" height="${key.height - 12}" rx="3" ry="3" title="${key.name}" stroke="${acc.basic ? '#000' : acc.ctrl ? '#ccc' : '#fff'}" fill="${acc.basic ? '#000' : acc.ctrl ? '#ccc' : '#fff'}" stroke-width="1"/>`;
svg_html += `<text x="${key.x + 10}" y="${key.y + 20}" font-size='11' font-family='Input Mono' stroke-width='0' fill='${acc.basic ? '#fff' : '#000'}'>${key.name.toUpperCase()}</text>`;
@ -86,7 +86,7 @@ function Controller()
this.documentation = function()
{
var txt = "";
let txt = "";
txt += this.documentation_for_mode("default",this.menu.default);
@ -99,13 +99,13 @@ function Controller()
this.documentation_for_mode = function(name,mode)
{
var txt = `## ${name} Mode\n\n`;
let txt = `## ${name} Mode\n\n`;
for(id in mode){
for(let id in mode){
if(id == "*"){ continue; }
txt += `### ${id}\n`;
for(name in mode[id]){
var option = mode[id][name];
for(let name in mode[id]){
let option = mode[id][name];
txt += `- ${name}: \`${option.accelerator}\`\n`;
}
txt += "\n"
@ -116,11 +116,11 @@ function Controller()
this.accelerator_for_key = function(key,menu)
{
var acc = {basic:null,ctrl:null}
for(cat in menu){
var options = menu[cat];
for(id in options.submenu){
var option = options.submenu[id]; if(option.role){ continue; }
let acc = {basic:null,ctrl:null}
for(let cat in menu){
let options = menu[cat];
for(let id in options.submenu){
let option = options.submenu[id]; if(option.role){ continue; }
acc.basic = (option.accelerator.toLowerCase() == key.toLowerCase()) ? option.label.toUpperCase().replace("TOGGLE ","").substr(0,8).trim() : acc.basic;
acc.ctrl = (option.accelerator.toLowerCase() == ("CmdOrCtrl+"+key).toLowerCase()) ? option.label.toUpperCase().replace("TOGGLE ","").substr(0,8).trim() : acc.ctrl;
}

View File

@ -1,6 +1,6 @@
function Theme()
{
var app = this;
let app = this;
this.el = document.createElement("style");
this.el.type = 'text/css';
@ -17,7 +17,7 @@ function Theme()
this.load = function(t, fall_back)
{
var theme = is_json(t) ? JSON.parse(t).data : t.data;
let theme = is_json(t) ? JSON.parse(t).data : t.data;
if(!theme || !theme.background){
if(fall_back) {
@ -27,7 +27,7 @@ function Theme()
}
}
var css = `
let css = `
:root {
--background: ${theme.background};
--f_high: ${theme.f_high};
@ -62,11 +62,11 @@ function Theme()
e.preventDefault();
e.stopPropagation();
var file = e.dataTransfer.files[0];
let file = e.dataTransfer.files[0];
if(!file.name || !file.name.indexOf(".thm") < 0){ console.log("Theme","Not a theme"); return; }
var reader = new FileReader();
let reader = new FileReader();
reader.onload = function(e){
app.load(e.target.result);
};

View File

@ -32,7 +32,7 @@ function Picker()
this.validate = function()
{
var parts = this.parse(this.el.value)
let parts = this.parse(this.el.value)
if(parts.color){ this.set_color(parts.color); }
if(parts.size){ this.set_size(parts.size); }
@ -70,7 +70,7 @@ function Picker()
this.update = function()
{
var parts = this.parse(this.el.value)
let parts = this.parse(this.el.value)
if(!parts.color){ return; }
dotgrid.tool.style().color = parts.color;
@ -91,12 +91,12 @@ function Picker()
this.parse = function(value)
{
var parts = value.split(" ");
var color = null;
var size = null;
let parts = value.split(" ");
let color = null;
let size = null;
for(id in parts){
var part = parts[id];
for(let id in parts){
let part = parts[id];
if(is_color(part) && !color){ color = part; }
if(is_size(part) && !size){ size = { width:parseInt(part.toLowerCase().split("x")[0]),height:parseInt(part.toLowerCase().split("x")[1]) }; }
}
@ -116,7 +116,7 @@ function Picker()
return false
}
var re = /\#[0-9A-Fa-f]/g;
let re = /\#[0-9A-Fa-f]/g;
return re.test(val)
}

View File

@ -23,8 +23,8 @@ function Renderer()
this.svg_el.style.height = dotgrid.tool.settings.size.height+(10);
this.svg_el.style.strokeWidth = dotgrid.tool.style().thickness;
var styles = dotgrid.tool.styles
var paths = dotgrid.tool.paths()
let styles = dotgrid.tool.styles
let paths = dotgrid.tool.paths()
this.layer_1.style.strokeWidth = styles[0].thickness;
this.layer_1.style.strokeLinecap = styles[0].strokeLinecap;
@ -54,22 +54,22 @@ function Renderer()
this.refresh();
var xml = new XMLSerializer().serializeToString(this.svg_el);
var svg64 = btoa(xml);
var b64Start = 'data:image/svg+xml;base64,';
var image64 = b64Start + svg64;
var img = new Image;
let xml = new XMLSerializer().serializeToString(this.svg_el);
let svg64 = btoa(xml);
let b64Start = 'data:image/svg+xml;base64,';
let image64 = b64Start + svg64;
let img = new Image;
var canvas = document.createElement("canvas");
let canvas = document.createElement("canvas");
canvas.width = (size.width)*2;
canvas.height = (size.height+30)*2;
var ctx = canvas.getContext('2d');
let ctx = canvas.getContext('2d');
img.onload = function(){
ctx.drawImage(img, 0, 0, (size.width)*2, (size.height+30)*2);
var data = canvas.toDataURL('image/png').replace(/^data:image\/\w+;base64,/, "");
let data = canvas.toDataURL('image/png').replace(/^data:image\/\w+;base64,/, "");
dotgrid.renderer.to_png_ready(callback, new Buffer(data, 'base64'),size)
};
img.src = image64;
@ -84,16 +84,16 @@ function Renderer()
{
this.refresh();
var xml = new XMLSerializer().serializeToString(this.svg_el);
var svg64 = btoa(xml);
var b64Start = 'data:image/svg+xml;base64,';
var image64 = b64Start + svg64;
let xml = new XMLSerializer().serializeToString(this.svg_el);
let svg64 = btoa(xml);
let b64Start = 'data:image/svg+xml;base64,';
let image64 = b64Start + svg64;
var canvas = document.createElement("canvas");
var ctx = canvas.getContext('2d');
let canvas = document.createElement("canvas");
let ctx = canvas.getContext('2d');
var win = window.open('about:blank','image from canvas');
var img = new Image;
let win = window.open('about:blank','image from canvas');
let img = new Image;
canvas.width = size.width*2;
canvas.height = size.height*2;

View File

@ -102,10 +102,10 @@ function Tool()
this.remove_segments_at = function(pos)
{
for(segment_id in this.layer()){
var segment = this.layer()[segment_id];
for(vertex_id in segment.vertices){
var vertex = segment.vertices[vertex_id];
for(let segment_id in this.layer()){
let segment = this.layer()[segment_id];
for(let vertex_id in segment.vertices){
let vertex = segment.vertices[vertex_id];
if(Math.abs(pos.x) == Math.abs(vertex.x) && Math.abs(pos.y) == Math.abs(vertex.y)){
segment.vertices.splice(vertex_id,1)
}
@ -128,10 +128,10 @@ function Tool()
this.vertex_at = function(pos)
{
for(segment_id in this.layer()){
var segment = this.layer()[segment_id];
for(vertex_id in segment.vertices){
var vertex = segment.vertices[vertex_id];
for(let segment_id in this.layer()){
let segment = this.layer()[segment_id];
for(let vertex_id in segment.vertices){
let vertex = segment.vertices[vertex_id];
if(vertex.x == Math.abs(pos.x) && vertex.y == Math.abs(pos.y)){
return vertex;
}
@ -145,7 +145,7 @@ function Tool()
if(!this.layer()){ this.layers[this.index] = []; }
if(!this.can_cast(type)){ console.warn("Cannot cast"); return; }
var append_target = this.can_append({type:type,vertices:this.vertices.slice()})
let append_target = this.can_append({type:type,vertices:this.vertices.slice()})
if(append_target){
this.layers[this.index][append_target].vertices = this.layers[this.index][append_target].vertices.concat(this.vertices.slice())
@ -168,12 +168,12 @@ function Tool()
this.toggle = function(type,mod = 1)
{
if(type == "linecap"){
var a = ["butt","square","round"];
let a = ["butt","square","round"];
this.i.linecap += mod;
this.style().strokeLinecap = a[this.i.linecap % a.length];
}
else if(type == "linejoin"){
var a = ["miter","round","bevel"];
let a = ["miter","round","bevel"];
this.i.linejoin += mod;
this.style().strokeLinejoin = a[this.i.linejoin % a.length];
}
@ -211,8 +211,8 @@ function Tool()
this.can_append = function(content)
{
for(id in this.layer()){
var stroke = this.layer()[id];
for(let id in this.layer()){
let stroke = this.layer()[id];
if(stroke.type != content.type){ continue; }
if(!stroke.vertices){ continue; }
if(!stroke.vertices[stroke.vertices.length-1]){ continue; }
@ -228,7 +228,7 @@ function Tool()
if(!type){ return false; }
// Cannot cast close twice
if(type == "close"){
var prev = this.layer()[this.layer().length-1];
let prev = this.layer()[this.layer().length-1];
if(!prev || prev.type == "close"){
return false;
}
@ -243,9 +243,9 @@ function Tool()
this.paths = function()
{
var l1 = new Generator(dotgrid.tool.layers[0],dotgrid.tool.styles[0]).toString({x:-10,y:-10},1)
var l2 = new Generator(dotgrid.tool.layers[1],dotgrid.tool.styles[1]).toString({x:-10,y:-10},1)
var l3 = new Generator(dotgrid.tool.layers[2],dotgrid.tool.styles[2]).toString({x:-10,y:-10},1)
let l1 = new Generator(dotgrid.tool.layers[0],dotgrid.tool.styles[0]).toString({x:-10,y:-10},1)
let l2 = new Generator(dotgrid.tool.layers[1],dotgrid.tool.styles[1]).toString({x:-10,y:-10},1)
let l3 = new Generator(dotgrid.tool.layers[2],dotgrid.tool.styles[2]).toString({x:-10,y:-10},1)
return [l1,l2,l3]
}
@ -257,10 +257,10 @@ function Tool()
this.translate = function(a,b)
{
for(segment_id in this.layer()){
var segment = this.layer()[segment_id];
for(vertex_id in segment.vertices){
var vertex = segment.vertices[vertex_id];
for(let segment_id in this.layer()){
let segment = this.layer()[segment_id];
for(let vertex_id in segment.vertices){
let vertex = segment.vertices[vertex_id];
if(vertex.x == Math.abs(a.x) && vertex.y == Math.abs(a.y)){
segment.vertices[vertex_id] = {x:Math.abs(b.x),y:Math.abs(b.y)};
}
@ -273,12 +273,12 @@ function Tool()
this.translate_multi = function(a,b)
{
var offset = {x:a.x - b.x,y:a.y - b.y}
let offset = {x:a.x - b.x,y:a.y - b.y}
for(segment_id in this.layer()){
var segment = this.layer()[segment_id];
for(vertex_id in segment.vertices){
var vertex = segment.vertices[vertex_id];
for(let segment_id in this.layer()){
let segment = this.layer()[segment_id];
for(let vertex_id in segment.vertices){
let vertex = segment.vertices[vertex_id];
segment.vertices[vertex_id] = {x:vertex.x-offset.x,y:vertex.y-offset.y};
}
}

View File

@ -28,7 +28,7 @@
<body>
<div id="app">
<script>
var dialog = null;
let dialog = null;
dotgrid = new Dotgrid(300,300,20,20,4,4);
dotgrid.install();
</script>

View File

@ -1,6 +1,6 @@
document.onkeyup = (e) =>
{
var ch = e.key.toLowerCase();
let ch = e.key.toLowerCase();
if(e.target && e.target.id == "picker"){ return; }