Oktober 2022
Könnte man das Enigma-Ziffernblatt der Pebble nicht auch für die Bangle nachbauen? Etwa so:
Ja, geht!
Graphics.prototype.setFontLECO1976Regular42 = function(scale) {
// Actual height 34 (37 - 4)
this.setFontCustom(
E.toString(require('heatshrink').decompress(atob('ACkB/gFnADEEAol8AgcDFIk/AocB/4FDh4FE/4FDg4FEn4FB8AmBAgP+DYf/+AFEE4n4AonAAoZEEh4mBAobCiIIRZCAshTBZYQF2MtAAjO/53WF4QFmSqv8n5NDAsfgn+BAvCsBAswAjKYLRDApqb6WbL1DAsSzkFAOAAsoABn4F4Wf6zQx4vEAsPgn+BAvSVDAsSzmfcAFGWf6z8h4aEAsngAvT7XAqAApKdKDBn+BAvC5/WZ5TFAsKz/Wf4AJj/AgIpCAsYAQ'))),
46,
atob("DRQeGR4eHh4eHR4eDQ=="),
48+(scale<<8)+(1<<16)
);
return this;
}
const h = g.getHeight();
const w = g.getWidth();
function draw() {
let steps = Bangle.getHealthStatus("day").steps;
// prepare Date
let date = new Date();
let minute = date.getMinutes();
let hour = date.getHours();
h1 = Math.floor(hour / 10);
h2 = Math.floor(hour % 10);
m1 = Math.floor(minute / 10);
m2 = Math.floor(minute % 10);
let month = date.getMonth()+1;
let sm = (month > 9 ? "" : "0") + month;
let day = date.getDate();
let sd = (day > 9 ? "": "0") + day;
g.reset();
// background
g.setColor(0,0,0);
g.fillRect(0, 0, w, h);
// red background
g.setColor(1,0,0);
g.fillRect(0, h/2-25, w, h/2+25);
g.setColor(1,1,1);
g.setFontLECO1976Regular42();
g.setFontAlign(0, 0);
// first line: date
drawString(sd + sm, h/4 + 5);
// Second line: clock
drawString(h1+""+h2+""+m1+""+m2, h/2 + 10);
// third line: Steps
drawString(Math.floor(steps/1000)+""+Math.floor( (steps%1000)/100) +""+Math.floor( (steps%100)/10)+""+(steps%10), h/2+h/4 + 15);
// Decoration
g.setColor(0.5, 0.5, 0.5);
drawString("9876", 0);
drawString("1704", h + 20);
}
/*
* Helper function for drawing in cols
*/
function drawString(text, h){
const w4 = w/4;
let x = w4/2;
for (i=0; i < text.length && i < 4; i++){
g.drawString(text.charAt(i), x, h-6);//offset for smaller font
x += w4;
}
}
Bangle.setUI("clock");
g.clear();
Bangle.loadWidgets();
for (let wd of WIDGETS) {
wd.draw = () => {};
wd.area = "";
}
// Redraw every 15s
setInterval(draw, 15000);
draw();
Eigentlich ganz einfach, wenn keine Animation dabei ist.
Die finalen Dateien:
enigma.app.js
enigma.info
enigma.img