Improved Vector and Magnet

This commit is contained in:
Devine Lu Linvega 2017-03-20 15:37:27 -07:00
parent d0d1118d3f
commit e6f7f62d0b
5 changed files with 86 additions and 28 deletions

View File

@ -5,6 +5,40 @@ The repository comes with a script that fires Ronin from within Localhost.
Launch Ronin and press **:**(colon) to display the command prompt.
Enjoy
## TODOs
General
Splash screen
Hide widget on mouseover
Add locks
Store values in modules, experiment with vector
Give name to settings
Merge layers
Export multiple layers file
% Render
balance auto=true ~ auto color
balance 0.8 ~ equal RGB balance
mirror ,100 ~ mirror
Brush
Texture paint
Save
$ 1280x800 ~ Export with size
Auto saveAs
History
Undo shortcut
> Terminal
Auto Complete
Progress update
Scroll logs
Expand logs
? Interrog
Inline Help
/ Load
Load .rin files, instead of "Presets"
Load default.rin on startup
* Eye
Swatches, handle all colors
this.collection = {};
this.collection["grid"] = {};
this.collection["grid"]["glyph"] = "@ 300x300; @ layer=background ; @ #A1A1A1 ; . 15x15 4,4 ; @ layer=main";

View File

@ -155,12 +155,12 @@ function Cursor(rune)
{
if(this.layer){ this.layer.clear(); }
this.position = position;
this.position = ronin.magnet.update_mouse(position);
if(this.mode.constructor.name != Cursor.name){
this.mode.mouse_from = position;
this.mode.mouse_from = this.position;
this.mode.mouse_held = true;
this.mode.mouse_down(position);
this.mode.mouse_down(this.position);
}
}
@ -170,33 +170,33 @@ function Cursor(rune)
this.layer.clear();
if(this.mode){this.mode.mouse_pointer(position);}
else{ this.mouse_pointer(position);}
this.position = ronin.magnet.update_mouse(position);
if(this.mode){this.mode.mouse_pointer(this.position);}
else{ this.mouse_pointer(this.position);}
if(this.mode.mouse_from == null){ return; }
this.position = position;
var rect = new Rect();
rect.width = this.position.x - this.mode.mouse_from.x;
rect.height = this.position.y - this.mode.mouse_from.y;
if(this.mode.constructor.name != Cursor.name){
this.mode.mouse_move(position,rect);
this.mode.mouse_prev = position;
this.mode.mouse_move(this.position,rect);
this.mode.mouse_prev = this.position;
}
}
this.mouse_up = function(position)
{
this.position = position;
this.position = ronin.magnet.update_mouse(position);
var rect = new Rect();
rect.width = this.position.x - this.mode.mouse_from.x;
rect.height = this.position.y - this.mode.mouse_from.y;
if(this.mode.constructor.name != Cursor.name){
this.mode.mouse_up(position,rect);
this.mode.mouse_up(this.position,rect);
this.mode.mouse_held = false;
}
ronin.terminal.input_element.focus();

View File

@ -2,14 +2,14 @@ function Magnet(rune)
{
Module.call(this,rune);
this.settings = {"grid" : new Rect("0x0"), "marker": new Position("4,4"), "reset" : new Bang()};
this.settings = {"grid" : new Rect("1x1"), "marker": new Position("4,4"), "reset" : new Bang()};
this.passive = function(cmd)
{
if(!this.layer){ this.create_layer(); }
this.layer.clear();
this.draw(cmd.setting("grid"),cmd.setting("marker"));
this.draw_grid(cmd.setting("grid"),cmd.setting("marker"));
}
this.active = function(cmd)
@ -22,10 +22,17 @@ function Magnet(rune)
if(!this.layer){ this.create_layer(); }
this.layer.clear();
this.draw(this.setting("grid"),this.setting("marker"));
this.draw_grid(this.settings["grid"],this.settings["marker"]);
}
this.draw = function(rect,grid)
this.context = function()
{
if(!this.layer){ this.create_layer(); }
return this.layer.context();
}
this.draw_grid = function(rect,grid)
{
if(!rect){ rect = new Rect("20x20"); }
if(!grid){ grid = new Position("4,4"); }
@ -45,13 +52,24 @@ function Magnet(rune)
}
}
this.draw_helper = function(position)
{
var magnetized = this.magnetic_position(position);
this.context().beginPath();
this.context().arc(magnetized.x, magnetized.y, 4, 0, 2 * Math.PI, false);
this.context().strokeStyle = 'white';
this.context().stroke();
this.context().closePath();
}
this.draw_marker = function(position,size = 0.5)
{
var context = this.layer.context();
context.beginPath();
context.arc(position.x, position.y, size, 0, 2 * Math.PI, false);
context.fillStyle = 'white';
context.fill();
this.context().beginPath();
this.context().arc(position.x, position.y, size, 0, 2 * Math.PI, false);
this.context().fillStyle = 'white';
this.context().fill();
this.context().closePath();
}
this.magnetic_position = function(position)
@ -62,6 +80,18 @@ function Magnet(rune)
return new Position(x,y);
}
this.update_mouse = function(position)
{
if(!this.layer){ this.create_layer(); }
this.layer.clear();
this.draw_helper(position);
this.draw_grid(this.settings["grid"],this.settings["marker"]);
return this.magnetic_position(position);
}
this.key_escape = function()
{
if(this.layer){ this.layer.remove(this); }

View File

@ -127,12 +127,6 @@ function Overlay(rune)
this.context().closePath();
}
this.context = function()
{
if(!this.layer){ this.create_layer(); this.layer.is_blinking = true; }
return this.layer.context();
}
this.clear = function()
{
this.context().clearRect(0, 0, ronin.surface.settings["size"].width, ronin.surface.settings["size"].height);

View File

@ -13,7 +13,7 @@ function Vector(rune)
this.passive = function(cmd)
{
if(!ronin.vector.layer){ ronin.vector.create_layer(); }
if(!ronin.vector.layer){ ronin.vector.create_layer(); ronin.vector.layer.is_blinking = true; }
this.layer.clear();
this.layer.context().lineCap = cmd.setting("line_cap") ? cmd.setting("line_cap").value : "square";