Invert filter

This commit is contained in:
Devine Lu Linvega 2017-01-03 15:53:39 -07:00
parent c02348a091
commit 024bda099f
11 changed files with 35 additions and 3 deletions

View File

@ -32,12 +32,14 @@
<script type="text/javascript" src="scripts/filters/filter.js"></script>
<script type="text/javascript" src="scripts/filters/stencil.js"></script>
<script type="text/javascript" src="scripts/filters/rotate.js"></script>
<!-- Need to migrate -->
<script type="text/javascript" src="scripts/filters/invert.js"></script>
<!-- Need to migrate
<script type="text/javascript" src="scripts/filters/saturation.js"></script>
<script type="text/javascript" src="scripts/filters/chromatic.js"></script>
<script type="text/javascript" src="scripts/filters/offset.js"></script>
<script type="text/javascript" src="scripts/filters/eval.js"></script>
<script type="text/javascript" src="scripts/filters/balance.js"></script>
-->
<script type="text/javascript" src="scripts/core/keyboard.js"></script>
<script type="text/javascript" src="scripts/core/cursor.js"></script>

View File

@ -23,6 +23,7 @@ function Commander(element,element_input)
function run()
{
console.log("~ "+queue[0].trim());
active(queue[0].trim());
queue.shift();
@ -34,7 +35,7 @@ function Commander(element,element_input)
function active(content)
{
var key = content[0];
var cmd = new Command(content.substring(1).split(" "));
var cmd = new Command(content.substring(1).trim().split(" "));
if(ronin.modules[key]){
ronin.modules[key].active(cmd);

View File

@ -55,6 +55,6 @@ function Filter()
this.pixels = function()
{
return this.context().getImageData(0,0,ronin.surface.size.width,ronin.surface.size.height);
return ronin.surface.active_layer.context().getImageData(0,0,ronin.surface.size.width * 2,ronin.surface.size.height * 2);
}
}

26
scripts/filters/invert.js Normal file
View File

@ -0,0 +1,26 @@
function Filter_Invert()
{
Filter.call(this);
this.parameters = [Angle];
this.render = function(cmd)
{
var imageObj = new Image();
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
var context = ronin.surface.active_layer.context();
var imageData = context.getImageData(0, 0, imageObj.width * 2, imageObj.height* 2);
var data = imageData.data;
for(var i = 0; i < data.length; i += 4) {
data[i] = 255 - data[i];
data[i + 1] = 255 - data[i + 1];
data[i + 2] = 255 - data[i + 2];
}
ronin.surface.active_layer.clear();
context.putImageData(imageData, 0, 0);
}
}

View File

@ -7,6 +7,7 @@ function Render(rune)
this.collection["stencil"] = new Filter_Stencil();
this.collection["rotate"] = new Filter_Rotate();
this.collection["invert"] = new Filter_Invert();
this.active = function(cmd)
{

View File

@ -18,12 +18,14 @@ function Surface(rune)
this.resize(cmd.rect(),cmd.position());
ronin.overlay.resize(cmd.rect());
}
if(cmd.color()){
this.context().beginPath();
this.context().rect(0, 0, this.active_layer.element.width, this.active_layer.element.height);
this.context().fillStyle = cmd.color().hex;
this.context().fill();
}
if(cmd.bang() && Object.keys(ronin.surface.layers).length > 1){
delete this.layers[this.active_layer.name];
this.select_any_layer();