102 lines
2.2 KiB
JavaScript
102 lines
2.2 KiB
JavaScript
function IO()
|
|
{
|
|
Module.call(this,"io");
|
|
|
|
this.settings = {anchor:{x:0,y:0,width:0,height:0}};
|
|
|
|
this.methods = {};
|
|
|
|
this.methods.import = function(q)
|
|
{
|
|
var filepath = dialog.showOpenDialog({properties: ['openFile']});
|
|
|
|
if(!filepath){ console.log("Nothing to load"); return; }
|
|
|
|
fs.readFile(filepath[0], 'utf-8', (err, data) => {
|
|
if(err){ alert("An error ocurred reading the file :" + err.message); return; }
|
|
|
|
var img = new Image();
|
|
img.src = filepath[0];
|
|
|
|
img.onload = function() {
|
|
ronin.io.draw_image(img,ronin.commander.query());
|
|
}
|
|
});
|
|
}
|
|
|
|
this.methods.load = function(q)
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
this.methods.save = function(q)
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
this.render = function()
|
|
{
|
|
var fs = require('fs');
|
|
var data = ronin.render.to_base64().replace(/^data:image\/\w+;base64,/, "");
|
|
var buf = new Buffer(data, 'base64');
|
|
|
|
dialog.showSaveDialog((fileName) => {
|
|
if (fileName === undefined){ return; }
|
|
fs.writeFile(fileName+'.png', buf);
|
|
});
|
|
}
|
|
|
|
this.drag_over = function(e)
|
|
{
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
e.dataTransfer.dropEffect = 'copy';
|
|
}
|
|
|
|
this.drop = function(e)
|
|
{
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
var files = e.dataTransfer.files;
|
|
var file = files[0];
|
|
|
|
if (!file.type.match(/image.*/)) { console.log("Not image"); return false; }
|
|
|
|
var reader = new FileReader();
|
|
|
|
reader.onload = function(event)
|
|
{
|
|
ronin.io.inject(event.target.result);
|
|
}
|
|
reader.readAsDataURL(file);
|
|
}
|
|
|
|
this.inject = function(data_url)
|
|
{
|
|
var img = new Image();
|
|
img.src = data_url;
|
|
|
|
var width = parseInt(img.naturalWidth * 0.5);
|
|
var height = parseInt(img.naturalHeight * 0.5);
|
|
|
|
if(height > 900){
|
|
width *= 0.5;
|
|
height *= 0.5;
|
|
}
|
|
|
|
img.onload = function() {
|
|
ronin.render.context().drawImage(img, 0,0,width * 2,height * 2);
|
|
}
|
|
}
|
|
|
|
this.draw_image = function(img,params)
|
|
{
|
|
var anchor = ronin.io.settings.anchor;
|
|
|
|
var width = parseInt(img.naturalWidth * 0.5);
|
|
var height = parseInt(img.naturalHeight * 0.5);
|
|
var scale = (anchor.width/width) * 2;
|
|
|
|
ronin.render.context().drawImage(img, anchor.x * 2,anchor.y * 2,width * scale,height * scale);
|
|
}
|
|
} |