Skip to content
Snippets Groups Projects
Commit 3a58ec59 authored by Vincent Nivoliers's avatar Vincent Nivoliers
Browse files

adding missing draw.js

parent 1f696c60
No related branches found
No related tags found
No related merge requests found
(function(factory) {
//namespacing
if(!window["Explosurf"]) {
window["Explosurf"] = {} ;
}
if(!window["Explosurf"]["draw"]) {
window["Explosurf"]["draw"] = {} ;
}
factory(window["Explosurf"]["draw"]) ;
})(function(Draw) { //namespace Explosurf.draw
var area = document.getElementById("draw-area") ;
var ctx = area.getContext("2d") ;
var center_img = document.getElementById("tile_center") ;
var cursor = document.createElement('img') ;
cursor.src = window.location.href.split('/').slice(0, -2).join('/') + '/Images/bonhomme.png' ;
var pad = {
tiles : {},
xmax : 0,
xmin : 0,
ymax : 0,
ymin : 0,
pen : {
x : 0,
y : 0,
},
}
function recompute_minmax() {
var initialized = false ;
for(key in pad.tiles) {
var pen = JSON.parse(key) ;
if(! initialized) {
pad.xmin = pen.x ;
pad.xmax = pen.x ;
pad.ymin = pen.y ;
pad.ymax = pen.y ;
initialized = true ;
} else {
pad.xmax = pad.xmax < pen.x ? pen.x : pad.xmax ;
pad.xmin = pad.xmin > pen.x ? pen.x : pad.xmin ;
pad.ymax = pad.ymax < pen.y ? pen.y : pad.ymax ;
pad.ymin = pad.ymin > pen.y ? pen.y : pad.ymin ;
}
}
}
function redraw() {
ctx.clearRect(0,0,area.width, area.height) ;
var xmin = pad.pen.x < pad.xmin ? pad.pen.x : pad.xmin ;
var xmax = pad.pen.x > pad.xmax ? pad.pen.x : pad.xmax ;
var ymin = pad.pen.y < pad.ymin ? pad.pen.y : pad.ymin ;
var ymax = pad.pen.y > pad.ymax ? pad.pen.y : pad.ymax ;
var wx = xmax - xmin + 1;
var wy = ymax - ymin + 1;
var sx = Math.floor(area.width / wx) ;
var sy = Math.floor(area.height / wy) ;
var s = sx < sy ? sx : sy ;
s = s > 256 ? 256 : s ;
var ox = Math.floor(area.width / 2 - (xmin + wx / 2)*s) ;
var oy = Math.floor(area.height / 2 - (ymin + wy / 2)*s) ;
var base_path = window.location.href.replace(/[^\/]*$/,'') ;
var img = new Image() ;
for(key in pad.tiles) {
var pen = JSON.parse(key) ;
img.src = base_path + pad.tiles[key] ;
ctx.drawImage(img, ox + pen.x * s, oy + pen.y * s, s, s) ;
}
var cs = s / 3 ;
ctx.drawImage(cursor, ox + pad.pen.x * s + cs, oy + pad.pen.y * s + cs, cs, cs) ;
}
Draw.redraw = redraw ;
function stamp() {
var key = JSON.stringify(pad.pen) ;
var src = center_img.src.split('/').pop() ;
pad.tiles[key] = src ;
pad.xmax = pad.xmax < pad.pen.x ? pad.pen.x : pad.xmax ;
pad.xmin = pad.xmin > pad.pen.x ? pad.pen.x : pad.xmin ;
pad.ymax = pad.ymax < pad.pen.y ? pad.pen.y : pad.ymax ;
pad.ymin = pad.ymin > pad.pen.y ? pad.pen.y : pad.ymin ;
}
Draw.stamp = stamp ;
function clear() {
var key = JSON.stringify(pad.pen) ;
delete pad.tiles[key] ;
recompute_minmax() ;
}
function clear_all() {
pad.tiles = {} ;
pad.xmin = 0 ;
pad.xmax = 0 ;
pad.ymin = 0 ;
pad.ymax = 0 ;
pad.pen.x = 0 ;
pad.pen.y = 0 ;
}
Draw.clear = clear_all ;
function go(direction) {
if(direction === 0) {
pad.pen.x += 1 ;
} else if(direction === 1) {
pad.pen.y -= 1 ;
} else if(direction === 2) {
pad.pen.x -= 1 ;
} else if(direction === 3) {
pad.pen.y += 1 ;
}
}
Draw.go = go ;
document.getElementById('draw-right').addEventListener(
'click',
function() {go(0) ; redraw() ;}
) ;
document.getElementById('draw-up').addEventListener(
'click',
function() {go(1) ; redraw() ;}
) ;
document.getElementById('draw-left').addEventListener(
'click',
function() {go(2) ; redraw() ;}
) ;
document.getElementById('draw-down').addEventListener(
'click',
function() {go(3) ; redraw() ;}
) ;
document.getElementById('draw-clear').addEventListener(
'click',
function() {clear() ; redraw() ;}
) ;
document.getElementById('draw-clear-all').addEventListener(
'click',
function() {clear_all() ; redraw() ;}
) ;
document.getElementById('draw-stamp').addEventListener(
'click',
function() {stamp() ; redraw() ;}
) ;
redraw() ;
})//end of namespace Explosurf.draw
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment