|
|
@@ -132,28 +132,36 @@ class CTRLPainter { |
|
|
|
|
|
|
|
var LineToSurface = (function(x0, y0, x1, y1, ci, pi){ |
|
|
|
var dx = x1 - x0; |
|
|
|
var ix = Math.sign(dx); |
|
|
|
dx = 2 * Math.abs(dx); |
|
|
|
|
|
|
|
var dy = y1 - y0; |
|
|
|
var iy = Math.sign(dy); |
|
|
|
dy = 2 * Math.abs(dy); |
|
|
|
|
|
|
|
if (dx == 0){ |
|
|
|
// Verticle line |
|
|
|
var x = x0; |
|
|
|
var s = Math.min(y0, y1); |
|
|
|
var e = Math.max(y0, y1); |
|
|
|
for (var y = s; y <= e; y++){ |
|
|
|
if (dx > dy){ |
|
|
|
var err = dy - (dx/2); |
|
|
|
var y = y0; |
|
|
|
|
|
|
|
Utils.range(x0, x1, 1).forEach((x) => { |
|
|
|
this.__surface.setColorIndex(x, y, ci, pi); |
|
|
|
} |
|
|
|
if (err > 0 || (err == 0 && ix > 0)){ |
|
|
|
err -= dx; |
|
|
|
y += iy; |
|
|
|
} |
|
|
|
err += dy; |
|
|
|
}); |
|
|
|
} else { |
|
|
|
var slope = Math.abs(dy/dx); |
|
|
|
var err = 0.0; |
|
|
|
var y = y0; |
|
|
|
var surf = this.__surface; |
|
|
|
Utils.range(x0, x1, 1).forEach(function(x){ |
|
|
|
surf.setColorIndex(Math.floor(x), Math.floor(y), ci, pi); |
|
|
|
err += slope; |
|
|
|
if (err > 0.5){ |
|
|
|
y += Math.sign(dy); |
|
|
|
err -= 1.0; |
|
|
|
var err = dx - (dy/2); |
|
|
|
var x = x0; |
|
|
|
|
|
|
|
Utils.range(y0, y1, 1).forEach((y) => { |
|
|
|
this.__surface.setColorIndex(x, y, ci, pi); |
|
|
|
if (err > 0 || (err == 0 && iy > 0)){ |
|
|
|
err -= dy; |
|
|
|
x += ix; |
|
|
|
} |
|
|
|
err += dx; |
|
|
|
}); |
|
|
|
} |
|
|
|
}).bind(this); |
|
|
@@ -196,14 +204,15 @@ class CTRLPainter { |
|
|
|
|
|
|
|
var handle_draw = (function(e){ |
|
|
|
if (e.isCombo || e.button == 0){ |
|
|
|
if (this.__surface !== null){ |
|
|
|
if (this.__surface !== null){ |
|
|
|
//console.log(this.__brushPos); |
|
|
|
//console.log(this.__brushLastPos); |
|
|
|
var x = Math.floor((this.__brushPos[0] - this.__offset[0]) * (1.0 / this.__scale)); |
|
|
|
var y = Math.floor((this.__brushPos[1] - this.__offset[1]) * (1.0 / this.__scale)); |
|
|
|
var sx = (e.isCombo) ? Math.floor((this.__brushLastPos[0] - this.__offset[0]) * (1.0 / this.__scale)) : x; |
|
|
|
var sy = (e.isCombo) ? Math.floor((this.__brushLastPos[1] - this.__offset[1]) * (1.0 / this.__scale)) : y; |
|
|
|
if (x >= 0 && x < this.__surface.width && y >= 0 && y < this.__surface.height){ |
|
|
|
LineToSurface(sx, sy, x, y, this.__brushColor, this.__brushPalette); |
|
|
|
//this.__surface.setColorIndex(x, y, this.__brushColor, this.__brushPalette); |
|
|
|
RenderD(); |
|
|
|
} |
|
|
|
} |