function Source(rune) { Module.call(this,rune); this.parameters = [Filepath,Position,Rect]; this.add_method(new Method("save",["name"],"Add point")); this.add_method(new Method("load",["path","position","rect"]),"Add point"); this.load = function(params,preview = false) // source.load ../assets/todo.jpg 200x200 40,40 { if(!params.filepath() || !params.rect() || !params.position()){ ronin.terminal.log(new Log(this,"Missing image path.","error")); return; } console.log("OK"); ronin.overlay.get_layer(true).clear(); ronin.overlay.draw_rect(params.position(),params.rect()); var position = params.position() ? params.position() : new Position(); base_image = new Image(); base_image.src = params.filepath().path; base_image.src += '?'+new Date().getTime(); base_image.crossOrigin = "Anonymous"; base_image.onload = function(){ var width = base_image.naturalWidth; var height = base_image.naturalHeight; if(params.rect()){ width = params.rect().width; height = params.rect().height; position.normalize(params.rect()); } // Scale with only 1 unit width = isNaN(width) && height > 0 ? (height*base_image.naturalWidth)/base_image.naturalHeight : width; height = isNaN(height) && width > 0 ? (width*base_image.naturalHeight)/base_image.naturalWidth : height; ronin.frame.context().drawImage(base_image, position.x, position.y, width, height); } } this.save = function(params,preview = false) { if(preview){ return; } if(!this.layer){ this.create_layer(); } var d = null; var w = window.open('about:blank','image from canvas'); if(params.setting("format") && params.setting("format").value == "svg"){ w.document.write("
"+html+""); } else{ console.log("!!") w.document.write("