2020-05-06 10:03:04 +00:00
|
|
|
/*
|
|
|
|
Draws a fullscreen image from flash memory
|
|
|
|
Saves a small image to flash which is just the area where the clock is
|
|
|
|
Keeps an offscreen buffer and draws the time to that
|
|
|
|
*/
|
|
|
|
var inf = require("Storage").readJSON("imgclock.face.json");
|
|
|
|
var img = require("Storage").read("imgclock.face.img");
|
|
|
|
var IX = inf.x, IY = inf.y, IBPP = inf.bpp;
|
|
|
|
var IW = 110, IH = 45, OY = 24;
|
2020-05-08 13:59:15 +00:00
|
|
|
var bgwidth = img.charCodeAt(0);
|
|
|
|
var bgoptions;
|
|
|
|
if (bgwidth<240)
|
|
|
|
bgoptions = { scale : 240/bgwidth };
|
|
|
|
|
2020-05-06 10:03:04 +00:00
|
|
|
require("Font7x11Numeric7Seg").add(Graphics);
|
2020-05-07 10:52:15 +00:00
|
|
|
var cg = Graphics.createArrayBuffer(IW,IH,IBPP,{msb:true});
|
2020-05-06 10:03:04 +00:00
|
|
|
var cgimg = {width:IW,height:IH,bpp:IBPP,buffer:cg.buffer};
|
|
|
|
var locale = require("locale");
|
|
|
|
|
|
|
|
// store clock background image in bgimg (a file in flash memory)
|
|
|
|
var bgimg = require("Storage").read("imgclock.face.bg");
|
|
|
|
// if it doesn't exist, make it
|
|
|
|
function createBgImg() {
|
2020-05-08 13:59:15 +00:00
|
|
|
cg.drawImage(img,-IX,-IY,bgoptions);
|
2020-05-06 10:03:04 +00:00
|
|
|
require("Storage").write("imgclock.face.bg", cg.buffer);
|
|
|
|
bgimg = require("Storage").read("imgclock.face.bg");
|
|
|
|
}
|
|
|
|
if (!bgimg || !bgimg.length) createBgImg();
|
|
|
|
|
|
|
|
function draw() {
|
|
|
|
var t = new Date();
|
|
|
|
// quickly set background image
|
|
|
|
new Uint8Array(cg.buffer).set(bgimg);
|
|
|
|
// draw time
|
2020-05-06 12:53:22 +00:00
|
|
|
cg.setColor(inf.col);
|
2020-05-08 13:59:15 +00:00
|
|
|
var x = 40;
|
2020-05-06 10:03:04 +00:00
|
|
|
cg.setFont("7x11Numeric7Seg",3);
|
2020-05-08 13:59:15 +00:00
|
|
|
cg.setFontAlign(1,-1);
|
|
|
|
cg.drawString(t.getHours(), x, 0);
|
|
|
|
x+=2;
|
2020-05-06 10:03:04 +00:00
|
|
|
cg.fillRect(x, 10, x+2, 10+2).fillRect(x, 20, x+2, 20+2);
|
|
|
|
x+=6;
|
2020-05-08 13:59:15 +00:00
|
|
|
cg.setFontAlign(-1,-1);
|
2020-05-06 10:03:04 +00:00
|
|
|
cg.drawString(("0"+t.getMinutes()).substr(-2), x, 0);
|
|
|
|
x+=44;
|
|
|
|
cg.setFont("7x11Numeric7Seg",1);
|
|
|
|
cg.drawString(("0"+t.getSeconds()).substr(-2), x, 20);
|
|
|
|
cg.setFont("6x8",1);
|
|
|
|
cg.setFontAlign(0,-1);
|
|
|
|
cg.drawString(locale.date(t),IW/2,IH-8);
|
|
|
|
// draw to screen
|
|
|
|
g.drawImage(cgimg,IX,IY+OY);
|
|
|
|
}
|
|
|
|
|
|
|
|
// draw background
|
2020-05-08 13:59:15 +00:00
|
|
|
g.drawImage(img, 0,OY,bgoptions);
|
2020-05-06 10:03:04 +00:00
|
|
|
// draw clock itself and do it every second
|
|
|
|
draw();
|
|
|
|
var secondInterval = setInterval(draw,1000);
|
|
|
|
// load widgets
|
|
|
|
Bangle.loadWidgets();
|
|
|
|
Bangle.drawWidgets();
|
|
|
|
// Stop when LCD goes off
|
|
|
|
Bangle.on('lcdPower',on=>{
|
|
|
|
if (secondInterval) clearInterval(secondInterval);
|
|
|
|
secondInterval = undefined;
|
|
|
|
if (on) {
|
2020-05-11 09:34:20 +00:00
|
|
|
secondInterval = setInterval(draw,1000);
|
2020-05-06 10:03:04 +00:00
|
|
|
draw();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
// Show launcher when middle button pressed
|
|
|
|
setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" });
|