Manga / static /js /draw.js
Keiser41's picture
Upload 47 files
62456b0
raw
history blame
No virus
3.36 kB
var canvas = document.getElementById('draw_canvas');
var ctx = canvas.getContext('2d');
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
var prevX, prevY;
var result_canvas = document.getElementById('result');
var result_ctx = result_canvas.getContext('2d');
result_canvas.width = canvas.width;
result_canvas.height = canvas.height;
var color_indicator = document.getElementById('color');
ctx.fillStyle = 'black';
color_indicator.value = '#000000';
var cur_id = window.location.pathname.substring(window.location.pathname.lastIndexOf('/') + 1);
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
var init_hint = new Image();
init_hint.addEventListener('load', function() {
ctx.drawImage(init_hint, 0, 0);
});
init_hint.src = '../static/temp_images/' + cur_id + '/hint.png?' + getRandomInt(100000).toString();
result_canvas.addEventListener('load', function(e) {
var img = new Image();
img.addEventListener('load', function() {
ctx.drawImage(img, 0, 0);
}, false);
console.log(window.location.pathname);
})
canvas.onload = function (e) {
var img = new Image();
img.addEventListener('load', function() {
ctx.drawImage(img, 0, 0);
}, false);
console.log(window.location.pathname);
//img.src = ;
}
function reset() {
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: (evt.clientX - rect.left) / (rect.right - rect.left) * canvas.width,
y: (evt.clientY - rect.top) / (rect.bottom - rect.top) * canvas.height
};
}
function colorize() {
var file_id = document.location.pathname;
var image = canvas.toDataURL();
$.post("/colorize", { save_file_id: file_id, save_image: image}).done(function( data ) {
//console.log(document.location.origin + '/img/' + data)
//window.open(document.location.origin + '/img/' + data, '_blank');
//result.src = data;
var img = new Image();
img.addEventListener('load', function() {
result_ctx.drawImage(img, 0, 0);
}, false);
img.src = data;
});
}
canvas.addEventListener('mousedown', function(e) {
var mousePos = getMousePos(canvas, e);
if (e.button == 0) {
ctx.fillRect(mousePos['x'], mousePos['y'], 1, 1);
}
if (e.button == 2) {
prevX = mousePos['x']
prevY = mousePos['y']
}
})
canvas.addEventListener('mouseup', function(e) {
if (e.button == 2) {
var mousePos = getMousePos(canvas, e);
var diff_width = mousePos['x'] - prevX;
var diff_height = mousePos['y'] - prevY;
ctx.clearRect(prevX, prevY, diff_width, diff_height);
}
})
canvas.addEventListener('contextmenu', function(evt) {
evt.preventDefault();
})
function color(color_value){
ctx.fillStyle = color_value;
color_indicator.value = color_value;
}
color_indicator.oninput = function() {
color(this.value);
}
function rgbToHex(rgb){
return '#' + ((rgb[0] << 16) | (rgb[1] << 8) | rgb[2]).toString(16);
};
result_canvas.addEventListener('click', function(e) {
if (e.button == 0) {
var cur_pixel = result_ctx.getImageData(e.offsetX, e.offsetY, 1, 1).data;
color(rgbToHex(cur_pixel));
}
})