cryptpad/www/whiteboard/export.js

46 lines
1.5 KiB
JavaScript

// This file is used when a user tries to export the entire CryptDrive.
// Pads from the code app will be exported using this format instead of plain text.
define([
'/bower_components/secure-fabric.js/dist/fabric.min.js',
], function () {
var module = {};
var Fabric = window.fabric;
module.main = function (userDoc, cb) {
var canvas_node = document.createElement('canvas');
canvas_node.setAttribute('style', 'width:600px;height:600px;');
canvas_node.setAttribute('width', '600');
canvas_node.setAttribute('height', '600');
var canvas = new Fabric.Canvas(canvas_node);
var content = userDoc.content;
canvas.loadFromJSON(content, function () {
var w = 0;
var h = 0;
var MAX = 8192;
canvas.forEachObject(function (obj) {
var c = obj.getCoords();
Object.keys(c).forEach(function (k) {
if (c[k].x > w) { w = c[k].x + 1; }
if (c[k].y > h) { h = c[k].y + 1; }
});
});
w = Math.min(w, MAX);
h = Math.min(h, MAX);
canvas.setWidth(w);
canvas.setHeight(h);
canvas.calcOffset();
module.ext = '.png';
canvas_node.toBlob(cb);
/*
module.ext = '.svg';
cb(new Blob([canvas.toSVG()], {type: 'image/svg+xml'}));
*/
});
};
return module;
});