Skip to content
Snippets Groups Projects
Commit 9d889b75 authored by rswindell's avatar rswindell
Browse files

New methods: compress_preview(), encode_preview(), decode_preview(), and

draw_preview().
This file is now dependent on lz-string.js (for compressing preview data)
parent 6d5ca8e4
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,8 @@
// Synchronet BBS List (SBL) v4 Library
load("synchronet-json.js"); // For compatibility with older verisons of Synchronet/JavaScript-C without the JSON object
load("graphic.js");
load("lz-string.js");
var list_fname = system.data_dir + 'sbbslist.json';
......@@ -577,6 +579,35 @@ function syncterm_list(list, dir)
return f.name;
}
const base64_max_line_len = 72;
function compress_preview(preview)
{
var compressed = LZString.compressToBase64(base64_decode(preview.join("")));
return ["!LZ"].concat(compressed.match(new RegExp('([\x00-\xff]{0,' + base64_max_line_len + '})', 'g')));
}
function encode_preview(ansi_capture)
{
var graphic = new Graphic();
graphic.ANSI = ansi_capture.join("\r\n");
return compress_preview(graphic.base64_encode());
}
function decode_preview(preview)
{
if(preview[0] == "!LZ")
return LZString.decompressFromBase64(preview.slice(1).join(""));
else
return base64_decode(preview.join(""));
}
function draw_preview(bbs)
{
var graphic = new Graphic();
graphic.BIN = decode_preview(bbs.preview);
graphic.draw();
}
/* Leave as last line for convenient load() usage: */
this;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment