Update app.js

master
Chriz76 2024-06-30 21:52:29 +02:00 committed by GitHub
parent 283541fa1d
commit ff574897dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 72 additions and 47 deletions

View File

@ -1,3 +1,9 @@
var settings = Object.assign({
// default values
showWidgets: false,
alternativeColor: false,
}, require('Storage').readJSON("ashadyclock.json", true) || {});
let drawTimeout; let drawTimeout;
// schedule a draw for the next minute // schedule a draw for the next minute
function queueDraw() { function queueDraw() {
@ -8,28 +14,31 @@ function queueDraw() {
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} }
let images = new Array(10); let palBottom;
for (i=0;i<10;i++) { if (settings.alternativeColor) {
let image = palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([
{ g.toColor("#000"),
width : 98, height : 100, bpp : 3, g.toColor("#000"),
transparent: 4, g.toColor("#0FF"),
buffer : require("Storage").read("ashadyclock." + i + ".bin") g.toColor("#0FF"),
}; g.toColor("#00F"),
images[i] = image; g.toColor("#000"),
g.toColor("#00F"),
g.toColor("#000")
]).buffer)));
} else {
palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([
g.toColor("#000"),
g.toColor("#000"),
g.toColor("#F00"),
g.toColor("#FF0"),
g.toColor("#00F"),
g.toColor("#000"),
g.toColor("#FF0"),
g.toColor("#000")
]).buffer)));
} }
let palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([
g.toColor("#000"),
g.toColor("#000"),
g.toColor("#F00"),
g.toColor("#FF0"),
g.toColor("#00F"),
g.toColor("#000"),
g.toColor("#FF0"),
g.toColor("#000")
]).buffer)));
let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([
g.toColor("#FFF"), g.toColor("#FFF"),
g.toColor("#000"), g.toColor("#000"),
@ -41,41 +50,57 @@ let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([
g.toColor("#000"), g.toColor("#000"),
]).buffer))); ]).buffer)));
let xOffset = (g.getWidth() - 176) / 2;
let yOffset = (g.getHeight() - 176) / 2;
function drawTop(d0, d1) {
if (settings.showWidgets && g.getHeight()<=176) {
drawNumber(d0, 82 + xOffset, 24 + yOffset, palTop, {scale: 0.825});
drawNumber(d1, 13 + xOffset, 24 + yOffset, palTop, {scale: 0.825});
} else {
drawNumber(d0, 80, 0, palTop);
drawNumber(d1, -1, 0, palTop);
}
}
function drawBottom(d0, d1) {
if (settings.showWidgets && g.getHeight()<=176) {
drawNumber(d1, 82 + xOffset, 92 + yOffset, palBottom, {scale: 0.825});
drawNumber(d0, 13 + xOffset, 92 + yOffset, palBottom, {scale: 0.825});
} else {
drawNumber(d1, 80, 75, palBottom);
drawNumber(d0, -1, 75, palBottom);
}
}
function drawNumber(number, x, y, palette, options) {
let image =
{
width : 98, height : 100, bpp : 3,
transparent: 4,
buffer : require("Storage").read("ashadyclock." + number +".bin")
};
image.palette = palette;
g.drawImage(image, x, y, options);
}
function draw() { function draw() {
let d = new Date();
// work out how to display the current time g.clearRect(0, settings.showWidgets ? 24 : 0, g.getWidth(),g.getHeight());
let d = new Date(); drawBottom(0, 5);
drawTop(0, 5);
g.setColor(0,0,0);
g.fillRect(0,0,g.getWidth(),g.getHeight());
let xOffset = (g.getWidth() - 176) / 2;
let yOffset = (g.getWidth() - 176) / 2;
let imgUR = images[d.getMinutes() % 10];
let imgUL = images[Math.floor(d.getMinutes()/10)];
imgUR.palette = palBottom;
imgUL.palette = palBottom;
g.drawImage(imgUR, 75 + xOffset, 77 + yOffset);
g.drawImage(imgUL, 0 + xOffset, 77 + yOffset);
let imgOR = images[d.getHours() % 10];
let imgOL = images[Math.floor(d.getHours()/10)];
imgOR.palette = palTop;
imgOL.palette = palTop;
g.drawImage(imgOR, 75 + xOffset, 0 + yOffset);
g.drawImage(imgOL, 0 + xOffset, 0 + yOffset);
queueDraw(); queueDraw();
} }
// Clear the screen once, at startup
g.clear(); g.clear();
// draw immediately at first // draw immediately at first
draw(); draw();
// Show launcher when middle button pressed // Show launcher when middle button pressed
Bangle.setUI("clock"); Bangle.setUI("clock");
// Load widgets
Bangle.loadWidgets(); if(settings.showWidgets) {
Bangle.drawWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets();
}