map.draw = new function(){ var base = this base.clear_canvas = function (){ ctx.fillStyle = "rgba(255,255,255,0.7)" ctx.clearRect(0,0,w,h) ctx.fillRect(0,0,w,h) } base.ruler = function (){ ctx.strokeStyle = "rgba(80,80,80,0.5)" ctx.lineWidth = 1 var len = 5 for (var i = 0.5; i < w; i += 10) { line(i, 0, i, len) line(0, i, len, i) } } base.regions = function(regions){ for (var i = 0; i < regions.length; i++) { if (regions[i].dupe) continue ctx.fillStyle = colors[i % colors.length] fill_region(regions[i]) stroke_sides(regions[i]) } } base.mouse = function(mouse){ ctx.fillStyle = "rgba(255,0,0,0.4)"; ctx.beginPath(); ctx.arc(mouse.x.b, mouse.y.b, 5, 0, 2*Math.PI, false); ctx.fill(); if (mouse.width() != 0 && mouse.height() != 0) { if (map.ui.dragging) { stroke_rect(mouse) } else { ctx.fillStyle = "rgba(255,255,0,0.5)" fill_region( mouse.clone().translate() ) } } } // function line (x,y,a,b,translation){ if (translation) { x += translation.a a += translation.a y += translation.b b += translation.b } ctx.beginPath() ctx.moveTo(x,y) ctx.lineTo(a,b) ctx.stroke() } function fill_region(r){ ctx.fillRect(r.x.a + r.translation.a, r.y.a + r.translation.b, r.x.length(), r.y.length()) } function stroke_sides (r){ if (r.sides & FRONT) line(r.x.a, r.y.a, r.x.b, r.y.a) if (r.sides & BACK) line(r.x.a, r.y.b, r.x.b, r.y.b) if (r.sides & LEFT) line(r.x.a, r.y.a, r.x.a, r.y.b) if (r.sides & RIGHT) line(r.x.b, r.y.a, r.x.b, r.y.b) } function stroke_rect (r){ line(r.x.a, r.y.a, r.x.b, r.y.b, r.translation) } }