BangleApps/apps/loadingscreen/settings.js

81 lines
2.6 KiB
JavaScript

(function(back) {
function goBack() {
var im = require("Storage").read(".loading");
if (im && im.length>3) {
var i = g.imageMetrics(im);
g.reset().drawImage(im, (g.getWidth()-i.width)/2, (g.getHeight()-i.height)/2);
}
setTimeout(back, 500);
}
function savePattern(pattern) {
E.showMessage("Please wait...");
var im = Graphics.createImage(pattern,"string");
var w = g.getWidth(), h = g.getHeight();
var b = Graphics.createArrayBuffer(w,h,1,{msb:true});
for (var y=0;y<h;y+=im.height)
for (var x=0;x<w;x+=im.width)
b.drawImage(im,x,y);
b.transparent = 0;
require("Storage").write(".loading",b.asImage("string"));
goBack();
}
function iconHourglass() {
// To get FG+BG+transparent, convert a monochrome image as a 2 bit greyscale using the image converter
return require("heatshrink").decompress(atob("mE4wUBqAOJgtABZMBGjH/ABALlBhA8LBIJrBBZCDCBZEFqoLJqoLO4BBDgYLcn/wBYcP/gLFCYIbBBY38BYYFBBYVACIILE+EBBYY1BLgX/BYgVBEAQECBYSQCJAQcCRwNVqg8CBYIDCioLDCYQbDBYRUBFYPwBwJ8BBQQ8BCgQaCHQQLNEZQ7LKZZrLQYbKDQYabDAASbFYoQACWYg2DAQrjPNIRtCBYjKCBYLMCBaIKBAAILGAAwLNRwQLHgrJCBY8BRIQLHSoYLJBQ4MDBcYAWNYIAIgKDBABEFA="));
}
function iconRetro() {
// A mac-style loading window
return require("heatshrink").decompress(atob("rk1gP/ABP4DBMDwALJnAWK39/+4tH3EEgIWJoEXC34WZORSghZ1oW/CzkB8AQC4AWFhgEBgOMFowSCjAtGhkPx8HzncuwWE4OMjHY41sDgQWCjHPzOMs3MCwuNzOYCw9Y7IWI5oWE5uwCwUf5+O53es187aJJFogAFFooAEg4HCcv4Wbn//ACnwA"))
}
E.showMenu({
"": {title:/*LANG*/"Loading Screen"},
"Default" : () => {require("Storage").erase(".loading");goBack()},
"No Screen" : () => {require("Storage").write(".loading","NO");goBack()}, // less than 3 chars and nothing is rendered
"Hourglass" : () => {require("Storage").write(".loading",iconHourglass());goBack()},
"Retro" : () => {require("Storage").write(".loading",iconRetro());goBack()},
"Stripes" : () => savePattern(`
XX..XX..
.XX..XX.
..XX..XX
X..XX..X
XX..XX..
.XX..XX.
..XX..XX
X..XX..X
`),
"Lines" : () => savePattern(`
XXXXXXXX
........
XXXXXXXX
........
XXXXXXXX
........
XXXXXXXX
........
`),
"Dots" : () => savePattern(`
......
..XX..
.XXXX.
.XXXX.
..XX..
......
`)
});
/* For testing, this generates an image with a different colour surrounding on it
require("FontSinclair").add(Graphics);
var b = Graphics.createArrayBuffer(84,12,2);
b.setBgColor(1).clear();
b.transparent = 1;
b.setFont("Sinclair").setColor(0);
for (var y=-2;y<=2;y++) for (var x=-2;x<=2;x++) b.drawString("LOADING...",2+x,2+y);
b.setColor(3).drawString("LOADING...",2,2);
g.drawImage(b.asImage("string"));
*/
})