47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
function Filter_Balance()
|
|
{
|
|
Filter.call(this);
|
|
|
|
this.parameters = [Color];
|
|
|
|
this.render = function(cmd)
|
|
{
|
|
if(!cmd.color()){ return; }
|
|
if(!cmd.color().rgb()){ return; }
|
|
|
|
this.draw(ronin.surface.active_layer.context(),cmd.color().rgb());
|
|
}
|
|
|
|
this.preview = function(cmd)
|
|
{
|
|
if(!cmd.color()){ return; }
|
|
if(!cmd.color().rgb()){ return; }
|
|
|
|
this.draw(ronin.render.layer.context(),cmd.color().rgb());
|
|
}
|
|
|
|
this.draw = function(context = this.context(), color_rgb)
|
|
{
|
|
var imageObj = new Image();
|
|
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
|
|
|
|
var w = ronin.surface.settings["size"].width;
|
|
var h = ronin.surface.settings["size"].height;
|
|
|
|
var originalData = ronin.surface.active_layer.context().getImageData(0, 0, w*2, h*2);
|
|
var data = originalData.data;
|
|
|
|
var r = (color_rgb.r / 255) + 0.5;
|
|
var g = (color_rgb.g / 255) + 0.5;
|
|
var b = (color_rgb.b / 255) + 0.5;
|
|
|
|
for(var i = 0; i < data.length; i += 4) {
|
|
data[i] = data[i] * r;
|
|
data[i + 1] = data[i + 1] * g;
|
|
data[i + 2] = data[i + 2] * b;
|
|
}
|
|
|
|
ronin.render.layer.clear();
|
|
context.putImageData(originalData, 0, 0);
|
|
}
|
|
} |