diff --git a/index.html b/index.html index bba30f6..ed90286 100644 --- a/index.html +++ b/index.html @@ -24,6 +24,8 @@ + + diff --git a/media/filter.color.jpg b/media/filter.color.jpg new file mode 100644 index 0000000..eb15803 Binary files /dev/null and b/media/filter.color.jpg differ diff --git a/scripts/command.js b/scripts/command.js index 010a2ce..c703cdf 100644 --- a/scripts/command.js +++ b/scripts/command.js @@ -6,6 +6,7 @@ function Command(content) function raster(array) // @ {50w}x100 { + return array; var str = array.join(" "); var m = str.replace(/(\{(.*)\})/g, function(a) { diff --git a/scripts/modules/filter.balance.js b/scripts/modules/filter.balance.js new file mode 100644 index 0000000..fd6e5e2 --- /dev/null +++ b/scripts/modules/filter.balance.js @@ -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); +} \ No newline at end of file diff --git a/scripts/modules/filter.eval.js b/scripts/modules/filter.eval.js new file mode 100644 index 0000000..695e29a --- /dev/null +++ b/scripts/modules/filter.eval.js @@ -0,0 +1,27 @@ +Filter.prototype.filter_eval = function(pixels = this.pixels(),p = null) +{ + console.log("working"); + + // : eval {x} % 100 == 0 + + var data = pixels.data; + + for (var i = 0; i < data.length; i += 4) { + + var x = (i/4) % pixels.width; + var y = Math.floor((i/4)/pixels.width); + + var q = (x % parseInt(p[0]) === 0 && y % parseInt(p[1]) === 0); + + if(q === true){ + data[i] = 255; // red + data[i + 1] = 0; // green + data[i + 2] = 0; // blue + data[i + 3] = 255; // alpha? + } + } + + ronin.canvas.clear(); + ronin.canvas.context().putImageData(pixels, 0, 0, 0, 0, pixels.width, pixels.height); + console.log("done."); +} \ No newline at end of file diff --git a/scripts/modules/filter.js b/scripts/modules/filter.js index 59382bb..e899493 100644 --- a/scripts/modules/filter.js +++ b/scripts/modules/filter.js @@ -21,6 +21,11 @@ function Filter(element) break; case "invert": this.filter_invert(this.pixels(),p); + case "eval": + this.filter_eval(this.pixels(),p); + break; + case "balance": + this.filter_balance(this.pixels(),p); break; } }