Improved brush!
This commit is contained in:
parent
fd77a81eca
commit
c23801b8bc
@ -1,9 +1,4 @@
|
||||
~ Setup
|
||||
|
||||
frame.resize 400x400
|
||||
layer.fill #A1A1A1
|
||||
|
||||
~ Add Code Below
|
||||
|
||||
brush:color #333333
|
||||
brush:size 3
|
@ -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
|
@ -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"]+"'>●</i> "+this.settings["size"];
|
||||
return "Brush <i style='color:"+this.settings["color"]+"'>●</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;
|
||||
}
|
||||
}
|
@ -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()
|
||||
|
@ -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(); }
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user