58 lines
1.4 KiB
JavaScript
58 lines
1.4 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.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 ver = -1;
|
|
var dia = 1;
|
|
var cen = 8;
|
|
|
|
var weight_map = [
|
|
dia * strenght, ver * strenght, dia * strenght,
|
|
ver * strenght, cen * strenght, ver * strenght,
|
|
dia * strenght, ver * strenght, dia * 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)
|
|
{
|
|
|
|
}
|
|
|
|
}
|