Improved brush!

This commit is contained in:
Devine Lu Linvega 2017-05-22 07:33:08 -10:00
parent fd77a81eca
commit c23801b8bc
6 changed files with 39 additions and 19 deletions

View File

@ -1,9 +1,4 @@
~ Setup
frame.resize 400x400
layer.fill #A1A1A1
~ Add Code Below
brush:color #333333
brush:size 3

View File

@ -13,5 +13,4 @@ type.write 38,252 "B08"
brush:color #000000
brush:size 2
path:line_width 20
path:line_color #999999
brush.add_pointer 0,0 #000000 2
path:line_color #999999

View File

@ -3,7 +3,7 @@ function Brush(rune)
Module.call(this,rune);
this.parameters = [];
this.settings = {color:"#000000","size":2};
this.settings = {color:"#000000",size:2};
this.pointers = [new Pointer(new Position("0,0"))];
this.add_method(new Method("add_pointer",["Position","Color","Scale"]));
@ -25,12 +25,12 @@ function Brush(rune)
this.size_up = function()
{
this.settings["size"] = parseInt(this.settings["size"]) + 1;
this.settings.size = parseInt(this.settings.size) + 1;
}
this.size_down = function()
{
this.settings["size"] -= parseInt(this.settings["size"]) > 1 ? 1 : 0;
this.settings.size -= parseInt(this.settings.size) > 1 ? 1 : 0;
}
// Eraser
@ -46,7 +46,7 @@ function Brush(rune)
ronin.frame.context().moveTo(this.position_prev.x,this.position_prev.y);
ronin.frame.context().lineTo(position.x,position.y);
ronin.frame.context().lineCap="round";
ronin.frame.context().lineWidth = this.settings["size"] * 5;
ronin.frame.context().lineWidth = this.settings.size * 3;
ronin.frame.context().strokeStyle = new Color("#ff0000").rgba();
ronin.frame.context().stroke();
ronin.frame.context().closePath();
@ -58,16 +58,16 @@ function Brush(rune)
this.mouse_pointer = function(position)
{
return ronin.cursor.draw_pointer_circle(position,this.settings["size"]);
return keyboard.shift_held == true ? ronin.cursor.draw_pointer_circle_eraser(position,this.settings.size * 3) : ronin.cursor.draw_pointer_circle(position,this.settings.size);
}
this.mouse_mode = function()
{
if(keyboard.shift_held == true){
return "Eraser "+this.settings["size"];
return "Eraser "+this.settings.size;
}
else{
return "Brush <i style='color:"+this.settings["color"]+"'>&#9679;</i> "+this.settings["size"];
return "Brush <i style='color:"+this.settings["color"]+"'>&#9679;</i> "+this.settings.size;
}
}
@ -104,5 +104,6 @@ function Brush(rune)
for (i = 0; i < ronin.brush.pointers.length; i++) {
ronin.brush.pointers[i].stop();
}
this.position_prev = null;
}
}

View File

@ -15,14 +15,15 @@ function Pointer(offset = new Position(), color = new Color().hex, scale = 1)
this.thickness = function()
{
var radius = parseFloat(ronin.brush.settings["size"]) * this.scale;
var ratio = 10/this.position().distance_to(this.position_prev[0]);
ratio = ratio > 1 ? 1 : ratio;
var target = parseFloat(ronin.brush.settings["size"]) * ratio;
target = target * this.scale;
var target = radius * ratio;
if(this.actual_thickness < target){ this.actual_thickness += 0.4; }
if(this.actual_thickness > target){ this.actual_thickness -= 0.4; }
if(this.actual_thickness < target){ this.actual_thickness += 0.25; }
if(this.actual_thickness > target){ this.actual_thickness -= 0.25; }
return this.actual_thickness;
}
@ -119,6 +120,14 @@ function Pointer(offset = new Position(), color = new Color().hex, scale = 1)
this.start = function()
{
var radius = parseFloat(ronin.brush.settings["size"]) * this.scale;
this.actual_thickness = radius/2;
ronin.frame.context().beginPath();
ronin.frame.context().arc(this.position().x, this.position().y, radius/2, 0, 2 * Math.PI, false);
ronin.frame.context().lineWidth = 0;
ronin.frame.context().fillStyle = this.color;
ronin.frame.context().fill();
ronin.frame.context().closePath();
}
this.stop = function()

View File

@ -149,6 +149,22 @@ function Cursor(rune)
this.pointer_last = position;
}
this.draw_pointer_circle_eraser = function(position,size = 1)
{
if(!this.layer){ this.create_layer(); }
this.pointer_last = this.pointer_last ? this.pointer_last : position;
this.layer.context().beginPath();
this.layer.context().arc(position.x, position.y, (size/2), 0, 2 * Math.PI, false);
this.layer.context().lineWidth = 1;
this.layer.context().strokeStyle = this.settings.color;
this.layer.context().stroke();
this.layer.context().closePath();
this.pointer_last = position;
}
this.draw_pointer_drag = function(position)
{
if(!this.layer){ this.create_layer(); }

View File

@ -71,7 +71,7 @@ function Terminal(rune)
this.run(new Command(target_line));
}
if(lines.length > 0){ setTimeout(function(){ ronin.terminal.run_multi(lines.join(";")) }, 250); }
if(lines.length > 0){ setTimeout(function(){ ronin.terminal.run_multi(lines.join(";")) }, 50); }
}
this.hint = function(method)