Added balance filter.

This commit is contained in:
Devine Lu Linvega 2016-11-20 21:24:10 -08:00
parent 7648f5e353
commit e8be214ded
4 changed files with 50 additions and 0 deletions

View File

@ -24,6 +24,7 @@
<script type="text/javascript" src="scripts/modules/filter.saturation.js"></script>
<script type="text/javascript" src="scripts/modules/filter.chromatic.js"></script>
<script type="text/javascript" src="scripts/modules/filter.eval.js"></script>
<script type="text/javascript" src="scripts/modules/filter.balance.js"></script>
<script type="text/javascript" src="scripts/keyboard.js"></script>
<script type="text/javascript" src="scripts/command.js"></script>

BIN
media/filter.color.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,46 @@
Filter.prototype.filter_balance = function(pixels = this.pixels(),p = null)
{
// / media/filter.color.jpg
// : balance 0.5 2.4 1.2
p[0] = parseFloat(p[0]);
p[1] = p[1] ? parseFloat(p[1]) : parseFloat(p[0]);
p[2] = p[2] ? parseFloat(p[2]) : parseFloat(p[0]);
var data = pixels.data;
// Multiply
if(p[0] % 1 !== 0 && p[1] % 1 !== 0 && p[2] % 1 !== 0){
console.log("Multi");
for (var i = 0; i < data.length; i += 4) {
data[i] = data[i] * p[0]; // red
data[i + 1] = data[i + 1] * p[1]; // green
data[i + 2] = data[i + 2] * p[2]; // blue
// Clamp
data[i] = data[i] < 255 ? data[i] : 255;
data[i + 1] = data[i + 1] < 255 ? data[i + 1] : 255;
data[i + 2] = data[i + 2] < 255 ? data[i + 2] : 255;
}
}
// Add
else{
p[0] = parseInt(p[0]);
p[1] = p[1] ? parseInt(p[1]) : parseInt(p[0]);
p[2] = p[2] ? parseInt(p[2]) : parseInt(p[0]);
for (i = 0; i < data.length; i += 4) {
data[i] = data[i] + p[0]; // red
data[i + 1] = data[i + 1] + p[1]; // green
data[i + 2] = data[i + 2] + p[2]; // blue
// Clamp
data[i] = data[i] < 255 ? data[i] : 255;
data[i + 1] = data[i + 1] < 255 ? data[i + 1] : 255;
data[i + 2] = data[i + 2] < 255 ? data[i + 2] : 255;
}
}
ronin.canvas.clear();
ronin.canvas.context().putImageData(pixels, 0, 0, 0, 0, pixels.width, pixels.height);
}

View File

@ -22,6 +22,9 @@ function Filter(element)
case "eval":
this.filter_eval(this.pixels(),p);
break;
case "balance":
this.filter_balance(this.pixels(),p);
break;
}
}