Added balance filter.
This commit is contained in:
parent
7648f5e353
commit
e8be214ded
@ -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
BIN
media/filter.color.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
46
scripts/modules/filter.balance.js
Normal file
46
scripts/modules/filter.balance.js
Normal 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);
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user