ronin/scripts/filters/sharpen.js
Devine Lu Linvega cc37e3ff98 Improved Type
2017-03-28 13:56:00 -07:00

54 lines
1.3 KiB
JavaScript

function Filter_Sharpen()
{
Filter.call(this);
this.parameters = [Value];
this.render = function(cmd)
{
var imageObj = new Image();
imageObj.src = ronin.frame.active_layer.element.toDataURL('image/png');
var w = ronin.frame.settings["size"].width;
var h = ronin.frame.settings["size"].height;
var context = ronin.frame.active_layer.context();
var originalData = context.getImageData(0, 0, w*2, h*2);
var data = originalData.data;
var newImage = context.getImageData(0, 0, w*2, h*2);
var strenght = cmd.value() ? cmd.value().float : 1;
var weight_map = [
-2 * strenght, 0 * strenght, -2 * strenght,
0 * strenght, 17 * strenght, 0 * strenght,
-2 * strenght, 0 * strenght, -2 * strenght
];
for(var i = 0; i < data.length; i += 4) {
var p = i / 4;
var x = (p % originalData.width);
var y = parseInt(p/originalData.width);
var average = this.get_neighbors_average(originalData,x,y,weight_map);
newImage.data[i] = parseInt(average.r);
newImage.data[i+1] = parseInt(average.g);
newImage.data[i+2] = parseInt(average.b);
}
ronin.frame.active_layer.clear();
context.putImageData(newImage, 0, 0);
}
this.preview = function(cmd)
{
}
this.draw = function(context = this.context(), value, position)
{
}
}