Improved brush

This commit is contained in:
Devine Lu Linvega 2017-05-24 15:28:42 -10:00
parent 02b8ec54ad
commit b59abbd3bc
4 changed files with 41 additions and 9 deletions

View File

@ -1,4 +1,4 @@
frame.resize 400x400
layer.fill #A1A1A1
frame.resize 500x500
layer.fill #eeeeee
brush:color #333333
brush:size 3

View File

@ -9,6 +9,7 @@ function Brush(rune)
this.add_setting(new Setting("color","#00ff00"));
this.add_setting(new Setting("size","2"));
this.add_method(new Method("add_pointer",["Position","Color","Scale","mirror_x","mirror_y"]));
this.add_method(new Method("clear"));
this.add_pointer = function(cmd, preview = false)
{
@ -40,6 +41,12 @@ function Brush(rune)
return 1, "ok";
}
this.clear = function()
{
this.pointers = [];
return 1,"Removed all pointers.";
}
this.size_up = function()
{
var new_size = this.settings["size"].to_f() + 1;
@ -77,6 +84,7 @@ function Brush(rune)
this.mouse_pointer = function(position)
{
if(this.pointers.length < 1){ ronin.cursor.draw_pointer_no_pointer(position); return; }
return keyboard.shift_held == true ? ronin.cursor.draw_pointer_circle_eraser(position,this.settings["size"].to_f() * 3) : ronin.cursor.draw_pointer_circle(position,this.settings["size"].to_f());
}
@ -98,6 +106,7 @@ function Brush(rune)
this.erase();
}
else{
if(ronin.brush.pointers.length < 1){ ronin.terminal.log(new Log(this,"Brush has no pointers!"))}
for (i = 0; i < ronin.brush.pointers.length; i++) {
ronin.brush.pointers[i].start();
}

View File

@ -157,6 +157,35 @@ function Cursor(rune)
this.pointer_last = position;
}
this.draw_pointer_no_pointer = function(position,size = 2)
{
if(!this.layer){ this.create_layer(); }
var radius = 4000;
this.pointer_last = this.pointer_last ? this.pointer_last : position;
this.layer.context().beginPath();
this.layer.context().moveTo(position.x - radius,position.y + radius);
this.layer.context().lineTo(position.x - size,position.y + size);
this.layer.context().moveTo(position.x + radius,position.y + radius);
this.layer.context().lineTo(position.x + size,position.y + size);
this.layer.context().moveTo(position.x - radius,position.y - radius);
this.layer.context().lineTo(position.x - size,position.y - size);
this.layer.context().moveTo(position.x + radius,position.y - radius);
this.layer.context().lineTo(position.x + size,position.y - size);
this.layer.context().lineCap="round";
this.layer.context().lineWidth = 1;
this.layer.context().strokeStyle = "#ff0000";
this.layer.context().stroke();
this.layer.context().closePath();
this.pointer_last = position;
}
this.draw_pointer_circle = function(position,size = 1)
{
if(!this.layer){ this.create_layer(); }

View File

@ -99,16 +99,10 @@ function Frame(rune)
this.select_layer = function(layer)
{
if(!layer){ return; }
if(!layer || layer.manager){ return; }
this.active_layer = layer;
}
this.select_any_layer = function()
{
var layer_name = Object.keys(ronin.frame.layers)[0];
this.select_layer(ronin.frame.layers[layer_name]);
}
this.add_layer = function(layer)
{
if(this.active_layer){layer.set_depth(this.active_layer.depth+1);}