Merging params with variables
This commit is contained in:
parent
e7307f7bdd
commit
15e019d455
@ -9,7 +9,7 @@
|
||||
<script type="text/javascript" src="scripts/units/value.js"></script>
|
||||
<script type="text/javascript" src="scripts/units/filepath.js"></script>
|
||||
<script type="text/javascript" src="scripts/units/any.js"></script>
|
||||
<script type="text/javascript" src="scripts/units/variable.js"></script>
|
||||
<script type="text/javascript" src="scripts/units/setting.js"></script>
|
||||
<script type="text/javascript" src="scripts/units/range.js"></script>
|
||||
|
||||
<script type="text/javascript" src="scripts/modules/default.js"></script>
|
||||
|
@ -81,13 +81,13 @@ function Command(content)
|
||||
return null;
|
||||
}
|
||||
|
||||
this.variable = function(name)
|
||||
this.setting = function(name)
|
||||
{
|
||||
for (i = 0; i < this.content.length; i++) {
|
||||
if(this.content[i].indexOf("=") >= 0){
|
||||
var parts = this.content[i].split("=");
|
||||
if(this.content[i].indexOf(":") >= 0){
|
||||
var parts = this.content[i].split(":");
|
||||
if(parts[0] == name){
|
||||
return new Variable(parts[0],parts[1]);
|
||||
return new Setting(parts[0],parts[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,13 +32,14 @@ starting_canvas.width = parseInt(starting_canvas.width/40) * 40;
|
||||
starting_canvas.height = parseInt(starting_canvas.height/40) * 40;
|
||||
|
||||
ronin.terminal.query("~ "+ronin.timestamp());
|
||||
ronin.terminal.query("@ "+starting_canvas.render());
|
||||
ronin.terminal.query("@ layer=Main");
|
||||
ronin.terminal.query("@ #ff0000");
|
||||
ronin.terminal.query("- 0,0");
|
||||
ronin.terminal.query("- 1,1");
|
||||
ronin.terminal.query("- 2,2");
|
||||
ronin.terminal.query("- #000000");
|
||||
ronin.terminal.query("@ size:"+starting_canvas.render());
|
||||
ronin.terminal.query("@ layer:Main");
|
||||
ronin.terminal.query("- color:#ff0000");
|
||||
// ronin.terminal.query("# fill=#ff0000");
|
||||
// ronin.terminal.query("- 0,0");
|
||||
// ronin.terminal.query("- 1,1");
|
||||
// ronin.terminal.query("- 2,2");
|
||||
|
||||
ronin.terminal.query("~ Ready.");
|
||||
|
||||
ronin.terminal.input_element.focus();
|
||||
|
@ -43,11 +43,11 @@ function Ronin()
|
||||
this.position_in_canvas = function(e)
|
||||
{
|
||||
var x = e.clientX;
|
||||
x -= (window.innerWidth - this.surface.size.width)/2;
|
||||
x -= parseInt(this.surface.element.style.marginLeft) + (this.surface.size.width/2);
|
||||
x -= (window.innerWidth - this.surface.settings["size"].width)/2;
|
||||
x -= parseInt(this.surface.element.style.marginLeft) + (this.surface.settings["size"].width/2);
|
||||
var y = e.clientY;
|
||||
y -= (window.innerHeight - this.surface.size.height)/2;
|
||||
y -= parseInt(this.surface.element.style.marginTop) + parseInt(this.surface.size.height/2);
|
||||
y -= (window.innerHeight - this.surface.settings["size"].height)/2;
|
||||
y -= parseInt(this.surface.element.style.marginTop) + parseInt(this.surface.settings["size"].height/2);
|
||||
return new Position(x,y);
|
||||
}
|
||||
|
||||
|
@ -19,9 +19,9 @@ function Widget()
|
||||
|
||||
this.on_resize = function()
|
||||
{
|
||||
this.element.style.left = (window.innerWidth/2)-(ronin.surface.size.width/2);
|
||||
this.element.style.top = (window.innerHeight/2)+(ronin.surface.size.height/2)+20;
|
||||
this.element.style.width = ronin.surface.size.width+"px";
|
||||
this.element.style.left = (window.innerWidth/2)-(ronin.surface.settings["size"].width/2);
|
||||
this.element.style.top = (window.innerHeight/2)+(ronin.surface.settings["size"].height/2)+20;
|
||||
this.element.style.width = ronin.surface.settings["size"].width+"px";
|
||||
|
||||
this.update();
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ function Filter_Balance()
|
||||
var imageObj = new Image();
|
||||
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
|
||||
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
|
||||
var originalData = ronin.surface.active_layer.context().getImageData(0, 0, w*2, h*2);
|
||||
var data = originalData.data;
|
||||
|
@ -8,7 +8,7 @@ function Filter_Chromatic()
|
||||
|
||||
this.render = function(cmd)
|
||||
{
|
||||
var position = cmd.position() ? cmd.position() : new Position(ronin.surface.size.width,ronin.surface.size.height);
|
||||
var position = cmd.position() ? cmd.position() : new Position(ronin.surface.settings["size"].width,ronin.surface.settings["size"].height);
|
||||
var value = cmd.value() ? cmd.value().float : 5;
|
||||
|
||||
ronin.overlay.clear();
|
||||
@ -26,8 +26,8 @@ function Filter_Chromatic()
|
||||
|
||||
this.draw = function(context = this.context(), value, position)
|
||||
{
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
|
||||
//no longer letting you set how far each chanel is shifted, not sure how to receive extra data any more
|
||||
var s = {r:value,g:value*.5,b:0};
|
||||
|
@ -78,6 +78,6 @@ function Filter()
|
||||
|
||||
this.pixels = function()
|
||||
{
|
||||
return ronin.surface.active_layer.context().getImageData(0,0,ronin.surface.size.width * 2,ronin.surface.size.height * 2);
|
||||
return ronin.surface.active_layer.context().getImageData(0,0,ronin.surface.settings["size"].width * 2,ronin.surface.settings["size"].height * 2);
|
||||
}
|
||||
}
|
@ -29,8 +29,8 @@ function Filter_Grey()
|
||||
var imageObj = new Image();
|
||||
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
|
||||
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
|
||||
var originalData = ronin.surface.active_layer.context().getImageData(0, 0, w*2, h*2);
|
||||
var data = originalData.data;
|
||||
|
@ -8,8 +8,8 @@ function Filter_Invert()
|
||||
var imageObj = new Image();
|
||||
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
|
||||
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
var context = ronin.surface.active_layer.context();
|
||||
|
||||
var originalData = context.getImageData(0, 0, w*2, h*2);
|
||||
|
@ -5,7 +5,7 @@ function Filter_Rotate()
|
||||
|
||||
this.render = function(cmd)
|
||||
{
|
||||
var position = cmd.position() ? cmd.position() : new Position(ronin.surface.size.width/2,ronin.surface.size.height/2);
|
||||
var position = cmd.position() ? cmd.position() : new Position(ronin.surface.settings["size"].width/2,ronin.surface.settings["size"].height/2);
|
||||
var angle = cmd.angle() ? cmd.angle().degrees : 90;
|
||||
|
||||
ronin.overlay.clear();
|
||||
@ -23,8 +23,8 @@ function Filter_Rotate()
|
||||
|
||||
this.draw = function(context = this.context(), angle, position)
|
||||
{
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
|
||||
ronin.overlay.context().drawImage(context.canvas,0,0,w,h);
|
||||
|
||||
|
@ -9,8 +9,8 @@ function Filter_Sharpen()
|
||||
var imageObj = new Image();
|
||||
imageObj.src = ronin.surface.active_layer.element.toDataURL('image/png');
|
||||
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
var context = ronin.surface.active_layer.context();
|
||||
|
||||
var originalData = context.getImageData(0, 0, w*2, h*2);
|
||||
|
@ -23,8 +23,8 @@ function Filter_Stencil()
|
||||
|
||||
this.draw = function(context = this.context(), angle, color)
|
||||
{
|
||||
var w = ronin.surface.size.width;
|
||||
var h = ronin.surface.size.height;
|
||||
var w = ronin.surface.settings["size"].width;
|
||||
var h = ronin.surface.settings["size"].height;
|
||||
|
||||
context.translate(w/2,h/2);
|
||||
|
||||
|
@ -2,32 +2,21 @@ function Brush(rune)
|
||||
{
|
||||
Module.call(this,rune);
|
||||
|
||||
this.parameters = [Position,Rect,Angle,Color,Value,Bang];
|
||||
this.variables = {"natural" : false,"banking" : false};
|
||||
// this.parameters = {"offset":Position,"mirror":Rect,"angle":Angle,"reset":Bang};
|
||||
this.parameters = [];
|
||||
this.settings = {"color":new Color("#ff0000"),"size":new Value(1)};
|
||||
this.pointers = [];
|
||||
|
||||
this.size = 1;
|
||||
this.opacity = 1;
|
||||
this.color = new Color();
|
||||
|
||||
// Module
|
||||
|
||||
this.install = function()
|
||||
{
|
||||
this.add_pointer(new Position("0,0"));
|
||||
}
|
||||
|
||||
this.active = function(cmd)
|
||||
{
|
||||
if(cmd.bang()){ this.pointers = []; }
|
||||
|
||||
// Pointer
|
||||
if(cmd.rect() || cmd.position() || cmd.angle()){
|
||||
this.add_pointer(cmd);
|
||||
}
|
||||
|
||||
// Global
|
||||
if(cmd.color()){
|
||||
this.color = cmd.color();
|
||||
}
|
||||
if(cmd.value()){
|
||||
this.size = cmd.value().float;
|
||||
}
|
||||
}
|
||||
|
||||
this.passive = function(cmd)
|
||||
@ -45,32 +34,23 @@ function Brush(rune)
|
||||
|
||||
this.size_up = function()
|
||||
{
|
||||
this.size -= this.size > 1 ? 1 : 0;
|
||||
this.settings["size"].float -= this.settings["size"].float > 1 ? 1 : 0;
|
||||
ronin.surface.update_widget();
|
||||
ronin.terminal.log(new Log(this,"Increased pointer size to: "+this.size));
|
||||
}
|
||||
|
||||
this.size_down = function()
|
||||
{
|
||||
this.size += 1;
|
||||
this.settings["size"].float += 1;
|
||||
ronin.surface.update_widget();
|
||||
ronin.terminal.log(new Log(this,"Decreased pointer size to: "+this.size));
|
||||
}
|
||||
|
||||
this.add_pointer = function(cmd)
|
||||
this.add_pointer = function(position)
|
||||
{
|
||||
ronin.terminal.log(new Log(this,"Added pointer at: "+position.render()));
|
||||
var pointer = new Pointer();
|
||||
|
||||
if(cmd.position()){
|
||||
pointer.offset = cmd.position();
|
||||
}
|
||||
if(cmd.rect()){
|
||||
pointer.mirror = cmd.rect();
|
||||
}
|
||||
if(cmd.angle()){
|
||||
pointer.angle = cmd.angle();
|
||||
}
|
||||
|
||||
pointer.offset = position;
|
||||
this.pointers.push(pointer);
|
||||
}
|
||||
|
||||
@ -87,7 +67,7 @@ function Brush(rune)
|
||||
ronin.surface.context().moveTo(this.position_prev.x,this.position_prev.y);
|
||||
ronin.surface.context().lineTo(position.x,position.y);
|
||||
ronin.surface.context().lineCap="round";
|
||||
ronin.surface.context().lineWidth = this.size * 5;
|
||||
ronin.surface.context().lineWidth = this.settings["size"].float * 5;
|
||||
ronin.surface.context().strokeStyle = new Color("#ff0000").rgba();
|
||||
ronin.surface.context().stroke();
|
||||
ronin.surface.context().closePath();
|
||||
@ -96,14 +76,19 @@ function Brush(rune)
|
||||
}
|
||||
|
||||
// Mouse
|
||||
|
||||
this.mouse_pointer = function(position)
|
||||
{
|
||||
return ronin.cursor.draw_pointer_circle(position,this.settings["size"]);
|
||||
}
|
||||
|
||||
this.mouse_mode = function()
|
||||
{
|
||||
if(keyboard.shift_held == true){
|
||||
return "Eraser "+this.size;
|
||||
return "Eraser "+this.settings["size"].float;
|
||||
}
|
||||
else{
|
||||
return "<i style='color:"+this.color.hex+"'>●</i> Brush "+ronin.brush.pointers.length+"x "+this.size;
|
||||
return "<i style='color:"+this.settings["color"].hex+"'>●</i> Brush "+ronin.brush.pointers.length+"x "+this.settings["size"].render();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ function Pointer(offset = new Position(), color = new Color('000000'))
|
||||
{
|
||||
var ratio = 10/this.position().distance_to(this.position_prev[0]);
|
||||
ratio = ratio > 1 ? 1 : ratio;
|
||||
return ronin.brush.size * ratio;
|
||||
return ronin.brush.settings["size"].float * ratio;
|
||||
}
|
||||
|
||||
//
|
||||
@ -57,7 +57,7 @@ function Pointer(offset = new Position(), color = new Color('000000'))
|
||||
|
||||
ronin.surface.context().lineCap="round";
|
||||
ronin.surface.context().lineWidth = this.thickness();
|
||||
ronin.surface.context().strokeStyle = ronin.brush.color.rgba();
|
||||
ronin.surface.context().strokeStyle = ronin.brush.settings["color"].rgba();
|
||||
ronin.surface.context().stroke();
|
||||
ronin.surface.context().closePath();
|
||||
|
||||
|
@ -2,8 +2,7 @@ function Cursor(rune)
|
||||
{
|
||||
Module.call(this,rune);
|
||||
|
||||
this.parameters = [Rect,Position,Bang];
|
||||
this.variables = {};
|
||||
this.settings = {"grid" : new Rect("10x10"), "markers": new Position("4,4"), "reset" : new Bang()};
|
||||
|
||||
this.mode = null;
|
||||
this.position = new Position();
|
||||
@ -46,8 +45,8 @@ function Cursor(rune)
|
||||
{
|
||||
if(rect.width < 5 || rect.height < 5){ return; }
|
||||
|
||||
var horizontal = ronin.surface.size.width/rect.width;
|
||||
var vertical = ronin.surface.size.height/rect.height;
|
||||
var horizontal = ronin.surface.settings["size"].width/rect.width;
|
||||
var vertical = ronin.surface.settings["size"].height/rect.height;
|
||||
|
||||
for (var x = 1; x < horizontal; x++) {
|
||||
for (var y = 1; y < vertical; y++) {
|
||||
@ -68,6 +67,44 @@ function Cursor(rune)
|
||||
context.fill();
|
||||
}
|
||||
|
||||
this.draw_pointer_arrow = 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().moveTo(position.x,position.y);
|
||||
this.layer.context().lineTo(position.x + 5,position.y);
|
||||
this.layer.context().moveTo(position.x,position.y);
|
||||
this.layer.context().lineTo(position.x,position.y + 5);
|
||||
|
||||
this.layer.context().lineCap="round";
|
||||
this.layer.context().lineWidth = 1;
|
||||
this.layer.context().strokeStyle = "white";
|
||||
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(); }
|
||||
|
||||
this.pointer_last = this.pointer_last ? this.pointer_last : position;
|
||||
|
||||
this.layer.context().beginPath();
|
||||
this.layer.context().arc(position.x, position.y, 3.5, 0, 2 * Math.PI, false);
|
||||
this.layer.context().lineWidth = 1;
|
||||
this.layer.context().strokeStyle = "white";
|
||||
this.layer.context().stroke();
|
||||
this.layer.context().closePath();
|
||||
|
||||
this.pointer_last = position;
|
||||
}
|
||||
|
||||
this.draw_pointer = function(position,size = 1)
|
||||
{
|
||||
if(!this.layer){ this.create_layer(); }
|
||||
@ -166,7 +203,10 @@ function Cursor(rune)
|
||||
if(!this.layer){ this.create_layer(); }
|
||||
|
||||
this.layer.clear();
|
||||
this.draw_pointer(position);
|
||||
|
||||
if(this.mode){this.mode.mouse_pointer(position);}
|
||||
else{ this.mouse_pointer(position);}
|
||||
|
||||
if(this.magnetism){ this.draw(this.magnetism,this.grid); }
|
||||
|
||||
if(this.mode.mouse_from == null){ return; }
|
||||
|
@ -29,8 +29,8 @@ function Default(rune)
|
||||
this.drag_offset_x -= offset_x;
|
||||
this.drag_offset_y -= offset_y;
|
||||
|
||||
ronin.surface.element.style.marginLeft = -(ronin.surface.size.width/2) + this.drag_offset_x;
|
||||
ronin.surface.element.style.marginTop = -(ronin.surface.size.height/2) + this.drag_offset_y;
|
||||
ronin.surface.element.style.marginLeft = -(ronin.surface.settings["size"].width/2) + this.drag_offset_x;
|
||||
ronin.surface.element.style.marginTop = -(ronin.surface.settings["size"].height/2) + this.drag_offset_y;
|
||||
|
||||
ronin.element.style.backgroundPosition = ((this.drag_offset_x/8))-(window.innerWidth % 20)+"px "+((this.drag_offset_y/8)-(window.innerWidth % 20))+"px";
|
||||
|
||||
|
@ -15,20 +15,20 @@ function FileSave(rune)
|
||||
|
||||
var w = window.open('about:blank','image from canvas');
|
||||
|
||||
if(cmd.variable("format") && cmd.variable("format").value == "svg"){
|
||||
if(cmd.setting("format") && cmd.setting("format").value == "svg"){
|
||||
w.document.write("<title>Untitled</title><body>"+ronin.vector.create_svg()+"</body>");
|
||||
}
|
||||
else if(cmd.variable("format") && cmd.variable("format").value == "jpg"){
|
||||
w.document.write("<title>Untitled</title><body><img src='"+this.merge().element.toDataURL('image/jpeg')+"' width='"+ronin.surface.size.width+"px' height='"+ronin.surface.size.height+"px'/></body>");
|
||||
else if(cmd.setting("format") && cmd.setting("format").value == "jpg"){
|
||||
w.document.write("<title>Untitled</title><body><img src='"+this.merge().element.toDataURL('image/jpeg')+"' width='"+ronin.surface.settings["size"].width+"px' height='"+ronin.surface.settings["size"].height+"px'/></body>");
|
||||
}
|
||||
else if(cmd.variable("format") && cmd.variable("format").value == "rin"){
|
||||
else if(cmd.setting("format") && cmd.setting("format").value == "rin"){
|
||||
var w = window.open('about:blank','source');
|
||||
var html = "";
|
||||
for (i = 0; i < ronin.terminal.history.length; i++) { html += ronin.terminal.history[i]+";<br />"; }
|
||||
w.document.write("<title>Source</title><pre>"+html+"</pre>");
|
||||
}
|
||||
else{
|
||||
w.document.write("<title>Untitled</title><body><img src='"+this.merge().element.toDataURL('image/png')+"' width='"+ronin.surface.size.width+"px' height='"+ronin.surface.size.height+"px'/></body>");
|
||||
w.document.write("<title>Untitled</title><body><img src='"+this.merge().element.toDataURL('image/png')+"' width='"+ronin.surface.settings["size"].width+"px' height='"+ronin.surface.settings["size"].height+"px'/></body>");
|
||||
}
|
||||
|
||||
this.layer.remove(this);
|
||||
@ -43,7 +43,7 @@ function FileSave(rune)
|
||||
}
|
||||
});
|
||||
for (i = 0; i < a.length; i++) {
|
||||
this.layer.context().drawImage(a[i].context().canvas,0,0,ronin.surface.size.width,ronin.surface.size.height);
|
||||
this.layer.context().drawImage(a[i].context().canvas,0,0,ronin.surface.settings["size"].width,ronin.surface.settings["size"].height);
|
||||
}
|
||||
return this.layer;
|
||||
}
|
||||
|
@ -2,8 +2,7 @@ function Module(rune)
|
||||
{
|
||||
this.rune = rune;
|
||||
this.element = null;
|
||||
this.parameters = [];
|
||||
this.variables = {};
|
||||
this.settings = {};
|
||||
this.layer = null;
|
||||
|
||||
this.docs = "Missing documentation.";
|
||||
@ -34,24 +33,24 @@ function Module(rune)
|
||||
{
|
||||
}
|
||||
|
||||
this.set_variables = function(cmd)
|
||||
this.update_settings = function(cmd)
|
||||
{
|
||||
for (var key in this.variables){
|
||||
if(!cmd.variable(key)){ continue; }
|
||||
this.variables[key] = cmd.variable(key).value;
|
||||
ronin.terminal.log(new Log(this,"Updated "+key+" with "+cmd.variable(key).value));
|
||||
for (var key in this.settings){
|
||||
if(!cmd.setting(key)){ continue; }
|
||||
var value = new this.settings[key].constructor(cmd.setting(key).value);
|
||||
this.settings[key] = value;
|
||||
ronin.terminal.log(new Log(this,"Updated "+key+" with "+cmd.setting(key).value));
|
||||
return;
|
||||
}
|
||||
ronin.terminal.log(new Log(this,"Unknown setting: "+key));
|
||||
}
|
||||
|
||||
this.hint = function(content)
|
||||
{
|
||||
var h = "<span class='name'>"+ronin.module.constructor.name+"</span> ";
|
||||
for(param in ronin.module.parameters){
|
||||
var name = new ronin.module.parameters[param]().constructor.name;
|
||||
h += name+" ";
|
||||
}
|
||||
for(variable in ronin.module.variables){
|
||||
h += variable+"="+ronin.module.variables[variable]+" ";
|
||||
var h = "<b>"+ronin.module.constructor.name+"</b> ";
|
||||
|
||||
for(setting in ronin.module.settings){
|
||||
h += setting+":"+ronin.module.settings[setting].render()+" ";
|
||||
}
|
||||
|
||||
h += ronin.module.mouse_mode() ? "<i>"+ronin.module.mouse_mode()+"</i>" : "";
|
||||
@ -80,6 +79,11 @@ function Module(rune)
|
||||
return null;
|
||||
}
|
||||
|
||||
this.mouse_pointer = function(position)
|
||||
{
|
||||
return ronin.cursor.draw_pointer_arrow(position);
|
||||
}
|
||||
|
||||
this.mouse_from = null;
|
||||
this.mouse_held = null;
|
||||
this.mouse_prev = null;
|
||||
|
@ -135,7 +135,7 @@ function Overlay(rune)
|
||||
|
||||
this.clear = function()
|
||||
{
|
||||
this.context().clearRect(0, 0, ronin.surface.size.width, ronin.surface.size.height);
|
||||
this.context().clearRect(0, 0, ronin.surface.settings["size"].width, ronin.surface.settings["size"].height);
|
||||
}
|
||||
|
||||
// Cursor
|
||||
|
@ -3,15 +3,12 @@ function Surface(rune)
|
||||
Module.call(this,rune);
|
||||
|
||||
this.element = null;
|
||||
this.parameters = [Rect,Color,Bang];
|
||||
this.variables = {"layer" : "main"};
|
||||
this.settings = {"size":new Rect("200x200")};
|
||||
|
||||
this.layers = {};
|
||||
this.active_layer = null;
|
||||
this.render_layer = null;
|
||||
|
||||
this.size = new Rect("200x200");
|
||||
|
||||
this.widget_element = document.createElement("widget");
|
||||
|
||||
this.install = function()
|
||||
@ -30,29 +27,12 @@ function Surface(rune)
|
||||
|
||||
this.active = function(cmd)
|
||||
{
|
||||
if(cmd.rect()){
|
||||
this.resize(cmd.rect(),cmd.position());
|
||||
}
|
||||
|
||||
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();
|
||||
ronin.terminal.log(new Log(this,"Filled layer: "+cmd.color().hex));
|
||||
this.element.style.border = "1px solid "+cmd.color().hex;
|
||||
this.element.setAttribute("class",cmd.color().style());
|
||||
if(cmd.setting("size")){
|
||||
this.resize(this.settings["size"],cmd.position());
|
||||
}
|
||||
|
||||
if(cmd.bang() && Object.keys(ronin.surface.layers).length > 1){
|
||||
this.layers[this.active_layer.name].element.outerHTML = "";
|
||||
delete this.layers[this.active_layer.name];
|
||||
this.select_any_layer();
|
||||
ronin.surface.update_widget();
|
||||
}
|
||||
|
||||
if(cmd.variable("layer")){
|
||||
var name = cmd.variable("layer").value;
|
||||
if(cmd.setting("layer")){
|
||||
var name = cmd.setting("layer").value;
|
||||
if(!this.layers[name]){
|
||||
this.add_layer(new Layer(name));
|
||||
}
|
||||
@ -60,6 +40,23 @@ function Surface(rune)
|
||||
}
|
||||
}
|
||||
|
||||
this.resize = function(rect, position = null)
|
||||
{
|
||||
Object.keys(ronin.surface.layers).forEach(function (key) {
|
||||
ronin.surface.layers[key].resize(rect);
|
||||
});
|
||||
|
||||
ronin.surface.element.width = rect.width * 2;
|
||||
ronin.surface.element.height = rect.height * 2;
|
||||
ronin.surface.element.style.width = rect.width+"px";
|
||||
ronin.surface.element.style.height = rect.height+"px";
|
||||
ronin.surface.element.style.marginLeft = -(rect.width/2);
|
||||
ronin.surface.element.style.marginTop = -(rect.height/2);
|
||||
|
||||
ronin.on_resize();
|
||||
ronin.terminal.log(new Log(this,"Resized Surface to "+this.settings["size"].render()));
|
||||
}
|
||||
|
||||
this.select_layer = function(layer)
|
||||
{
|
||||
console.log("Selecting layer:"+layer.name);
|
||||
@ -76,7 +73,7 @@ function Surface(rune)
|
||||
{
|
||||
ronin.terminal.log(new Log(this,"Creating layer:"+layer.name+(layer.manager ? "["+layer.manager.constructor.name+"]" : "")));
|
||||
|
||||
layer.resize(this.size);
|
||||
layer.resize(this.settings["size"]);
|
||||
this.layers[layer.name] = layer;
|
||||
this.element.appendChild(layer.element);
|
||||
}
|
||||
@ -88,30 +85,11 @@ function Surface(rune)
|
||||
}
|
||||
}
|
||||
|
||||
this.resize = function(rect, position = null)
|
||||
{
|
||||
this.size = rect;
|
||||
|
||||
Object.keys(ronin.surface.layers).forEach(function (key) {
|
||||
ronin.surface.layers[key].resize(rect);
|
||||
});
|
||||
|
||||
ronin.surface.element.width = rect.width * 2;
|
||||
ronin.surface.element.height = rect.height * 2;
|
||||
ronin.surface.element.style.width = rect.width+"px";
|
||||
ronin.surface.element.style.height = rect.height+"px";
|
||||
ronin.surface.element.style.marginLeft = -(rect.width/2);
|
||||
ronin.surface.element.style.marginTop = -(rect.height/2);
|
||||
|
||||
ronin.on_resize();
|
||||
ronin.terminal.log(new Log(this,"Resized Surface to "+this.size.render()));
|
||||
}
|
||||
|
||||
this.widget = function()
|
||||
{
|
||||
if(!this.active_layer){ return ""; }
|
||||
|
||||
return this.rune+" "+this.size.render();
|
||||
return this.rune+" "+this.settings["size"].render();
|
||||
}
|
||||
|
||||
// Widget
|
||||
@ -129,14 +107,14 @@ function Surface(rune)
|
||||
s += "<span class='cursor'>"+ronin.cursor.mode.mouse_mode()+"</span>";
|
||||
|
||||
var keys = Object.keys(ronin.surface.layers);
|
||||
var loc = keys.indexOf(this.active_layer.name);
|
||||
// var loc = keys.indexOf(this.active_layer.name);
|
||||
|
||||
if(keys.length > 1){
|
||||
s += "<span class='layer'>"+ronin.surface.active_layer.widget()+"("+(loc+1)+"/"+keys.length+")</span>";
|
||||
}
|
||||
else{
|
||||
s += "<span class='layer'>"+ronin.surface.active_layer.widget()+"</span>";
|
||||
}
|
||||
// if(keys.length > 1){
|
||||
// s += "<span class='layer'>"+ronin.surface.active_layer.widget()+"("+(loc+1)+"/"+keys.length+")</span>";
|
||||
// }
|
||||
// else{
|
||||
// s += "<span class='layer'>"+ronin.surface.active_layer.widget()+"</span>";
|
||||
// }
|
||||
|
||||
this.widget_element.innerHTML = s;
|
||||
}
|
||||
|
@ -21,6 +21,17 @@ function Layer(name,manager = null)
|
||||
this.context().scale(2,2);
|
||||
}
|
||||
|
||||
this.fill = function(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();
|
||||
ronin.terminal.log(new Log(this,"Filled layer: "+cmd.color().hex));
|
||||
this.element.style.border = "1px solid "+cmd.color().hex;
|
||||
this.element.setAttribute("class",cmd.color().style());
|
||||
}
|
||||
|
||||
this.clear = function()
|
||||
{
|
||||
this.context().clearRect(0, 0, this.element.width, this.element.height);
|
||||
@ -78,7 +89,7 @@ function Layer(name,manager = null)
|
||||
var offset_x = this.move_from.x - position.x;
|
||||
var offset_y = this.move_from.y - position.y;
|
||||
|
||||
var imageData = this.context().getImageData(0, 0, ronin.surface.size.width * 2, ronin.surface.size.height * 2);
|
||||
var imageData = this.context().getImageData(0, 0, ronin.surface.settings["size"].width * 2, ronin.surface.settings["size"].height * 2);
|
||||
this.clear();
|
||||
this.context().putImageData(imageData, -offset_x * 2, -offset_y * 2);
|
||||
|
||||
|
@ -88,7 +88,7 @@ function Terminal(rune)
|
||||
var cmd = new Command(content.substring(1).trim().split(" "));
|
||||
|
||||
if(ronin.modules[key]){
|
||||
ronin.modules[key].set_variables(cmd);
|
||||
ronin.modules[key].update_settings(cmd);
|
||||
ronin.modules[key].active(cmd);
|
||||
ronin.terminal.history.push(content);
|
||||
ronin.terminal.history_index = ronin.terminal.history.length-1;
|
||||
|
@ -9,7 +9,7 @@ function Typographe(rune)
|
||||
{
|
||||
if(this.layer){ this.layer.remove(this); }
|
||||
|
||||
if(cmd.variable("text")){
|
||||
if(cmd.setting("text")){
|
||||
this.add_text(ronin.surface.active_layer.context(),cmd);
|
||||
}
|
||||
}
|
||||
@ -18,7 +18,7 @@ function Typographe(rune)
|
||||
{
|
||||
if(!this.layer){ this.create_layer(); this.layer.is_blinking = true; }
|
||||
|
||||
if(cmd.variable("text")){
|
||||
if(cmd.setting("text")){
|
||||
this.layer.clear();
|
||||
this.add_text(this.layer.context(),cmd);
|
||||
}
|
||||
@ -28,11 +28,11 @@ function Typographe(rune)
|
||||
{
|
||||
var ctx = context;
|
||||
|
||||
var text = cmd.variable("text").value.replace("_"," ");
|
||||
var text = cmd.setting("text").value.replace("_"," ");
|
||||
var position = cmd.position() ? cmd.position() : new Position(20,40);
|
||||
var color = cmd.color() ? cmd.color() : new Color("#000000");
|
||||
var size = cmd.value() ? cmd.value().int : 40;
|
||||
var font = cmd.variable("font") ? cmd.variable("font").value : "Georgia";
|
||||
var font = cmd.setting("font") ? cmd.setting("font").value : "Georgia";
|
||||
|
||||
ctx.font = size+"px "+font;
|
||||
ctx.fillStyle = color.hex;
|
||||
|
@ -16,12 +16,12 @@ function Vector(rune)
|
||||
if(!ronin.vector.layer){ ronin.vector.create_layer(); }
|
||||
|
||||
this.layer.clear();
|
||||
this.layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "square";
|
||||
this.layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : 10;
|
||||
this.layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff";
|
||||
this.layer.context().fillStyle = cmd.variable("fill_color") ? cmd.variable("fill_color").value : "#ffffff";
|
||||
this.layer.context().lineCap = cmd.setting("line_cap") ? cmd.setting("line_cap").value : "square";
|
||||
this.layer.context().lineWidth = cmd.setting("stroke_width") ? cmd.setting("stroke_width").value : 10;
|
||||
this.layer.context().strokeStyle = cmd.setting("stroke_color") ? cmd.setting("stroke_color").value : "#ffffff";
|
||||
this.layer.context().fillStyle = cmd.setting("fill_color") ? cmd.setting("fill_color").value : "#ffffff";
|
||||
|
||||
if(cmd.variable("fill_color")){ronin.vector.layer.context().fill(new Path2D(cmd.content.join(" ")));}
|
||||
if(cmd.setting("fill_color")){ronin.vector.layer.context().fill(new Path2D(cmd.content.join(" ")));}
|
||||
ronin.vector.layer.context().stroke(new Path2D(cmd.content.join(" ")));
|
||||
}
|
||||
|
||||
@ -32,12 +32,12 @@ function Vector(rune)
|
||||
|
||||
if(this.layer){ this.layer.remove(this); }
|
||||
|
||||
ronin.surface.active_layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "square";
|
||||
ronin.surface.active_layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : 10;
|
||||
ronin.surface.active_layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff";
|
||||
ronin.surface.active_layer.context().fillStyle = cmd.variable("fill_color") ? cmd.variable("fill_color").value : "#ffffff";
|
||||
ronin.surface.active_layer.context().lineCap = cmd.setting("line_cap") ? cmd.setting("line_cap").value : "square";
|
||||
ronin.surface.active_layer.context().lineWidth = cmd.setting("stroke_width") ? cmd.setting("stroke_width").value : 10;
|
||||
ronin.surface.active_layer.context().strokeStyle = cmd.setting("stroke_color") ? cmd.setting("stroke_color").value : "#ffffff";
|
||||
ronin.surface.active_layer.context().fillStyle = cmd.setting("fill_color") ? cmd.setting("fill_color").value : "#ffffff";
|
||||
|
||||
if(cmd.variable("fill_color")){ronin.surface.active_layer.context().fill(new Path2D(cmd.content.join(" ")));}
|
||||
if(cmd.setting("fill_color")){ronin.surface.active_layer.context().fill(new Path2D(cmd.content.join(" ")));}
|
||||
ronin.surface.active_layer.context().stroke(new Path2D(cmd.content.join(" ")));
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ function Vector(rune)
|
||||
{
|
||||
var s = "";
|
||||
|
||||
s += "<svg width='"+ronin.surface.size.width+"' height='"+ronin.surface.size.height+"' xmlns='http://www.w3.org/2000/svg' baseProfile='full' version='1.1' style='fill:none;stroke:red;stroke-width:2px;stroke-linecap:square;'>";
|
||||
s += "<svg width='"+ronin.surface.settings["size"].width+"' height='"+ronin.surface.settings["size"].height+"' xmlns='http://www.w3.org/2000/svg' baseProfile='full' version='1.1' style='fill:none;stroke:red;stroke-width:2px;stroke-linecap:square;'>";
|
||||
|
||||
for (var i = 0; i < this.paths.length; i++) {
|
||||
s += "<path d='"+this.paths[i]+"' />";
|
||||
|
@ -1,4 +1,4 @@
|
||||
function Variable(key,value)
|
||||
function Setting(key,value)
|
||||
{
|
||||
Unit.call(this);
|
||||
|
Loading…
x
Reference in New Issue
Block a user