tools/export.js
function exportTool(editor, toolbar) {
"use strict";
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 init() {
var modal;
function dismiss() {
modal.remove();
editor.startListening();
toolbar.startListening();
}
modal = modalBox();
modal.addButton("download", {"textContent": "Download ansiedit.xb", "href": toDataURL(toBinFormat(editor.image)), "onclick": dismiss, "download": "ansiedit.xb"});
modal.addButton("cancel", {"textContent": "Cancel", "href": "#", "onclick": function (evt) {
evt.preventDefault();
dismiss();
}});
editor.stopListening();
toolbar.stopListening();
modal.init();
return false;
}
function toString() {
return "Export";
}
return {
"init": init,
"toString": toString,
"uid": "export"
};
}