tools/export.js
function exportTool(editor) {
"use strict";
function createElement(elementName, args) {
var element;
args = args || {};
element = document.createElement(elementName);
Object.getOwnPropertyNames(args).forEach(function (name) {
if (typeof args[name] === "object") {
Object.getOwnPropertyNames(args[name]).forEach(function (subName) {
element[name][subName] = args[name][subName];
});
} else {
element[name] = args[name];
}
});
return element;
}
function toDataURL(bytes) {
return "data:application/octet-stream;base64," + btoa(String.fromCharCode.apply(null, bytes));
}
function toBinFormat(input) {
var output, inputIndex, outputIndex, highest, end;
highest = 26;
for (inputIndex = 0; inputIndex < input.length; inputIndex += 3) {
if (input[inputIndex]) {
highest = Math.max(Math.ceil(inputIndex / 240), highest);
}
}
output = new Uint8Array((input.length / 3 * 2) + 11);
output.set(new Uint8Array([88, 66, 73, 78, 26, 80, 0, highest, 0, 16, 0]), 0);
for (inputIndex = 0, outputIndex = 11, end = highest * 80 * 3; inputIndex < end; inputIndex += 3, outputIndex += 2) {
output[outputIndex] = input[inputIndex];
output[outputIndex + 1] = input[inputIndex + 1] + (input[inputIndex + 2] << 4);
}
return output;
}
function removeLink() {
var divExport;
divExport = document.getElementById("export");
if (divExport.firstChild) {
divExport.removeChild(divExport.firstChild);
}
}
function init() {
var anchor;
removeLink();
anchor = createElement("a", {"href": toDataURL(toBinFormat(editor.image)), "onclick": removeLink, "textContent": "Download", "download": "ansiedit.xb"});
document.getElementById("export").appendChild(anchor);
return false;
}
function toString() {
return "Export";
}
return {
"init": init,
"toString": toString,
"uid": "export"
};
}