2022-12-20 20:10:51 +00:00
|
|
|
Graphics.prototype.setFontDigitalNumbersRegular = function(scale) {
|
|
|
|
// Actual height 32 (31 - 0)
|
|
|
|
this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///D5///w+///+Pv///z4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAHAAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4cAAAOHAAAHjwAAB48AAA+P4AAP//wA////v////8///8AD/+8AAG+PAAAPjwAAD48AAA+PAAAPj2AAD//8AD///z/////f///wA///AAB/jwAAD48AAA8OAAAPDgAADgwAAA4MAAAAAAAAAAAAAAAAAAAAAAAD//gAAf/wAAT/7AAG/84ABwAeAB///////////////8eAHgAHgB4AP//////////HgB4ABwAe/4YADP/EAAH/wAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAD4AAAA+Af8APgf8AD4f8AAAf8AAAf8AAAf8AAAf8AAAf8AAAf8OAAf8HwAf8B8AP8AfAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//3//P/8//t/+H/7v/J/99/jn8fAB8APwAfAH8AD4D/AAfA/sAH4f3gA+Pj8AH3x/AA/4AAAH+AAAB/AAAAPgAAAH8AAAD/gAAB/4AAA+eAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9//5//P/7f/h/97/wP+/AAAAfwAAAH8AAAB+AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAeAAAAPwAAAH8AAAB/f4B/Pv/B/93/4f/j//P/4//3//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAA/8AAAP/AAAD7gAAB/sAAA//wAAHf4AAA/8AAAO/AAAD/wAAA/8AAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAAAeAAAAHgAAAB4AAAH/wAAD//AAAf/gAAD/wAAAHgAAAB4AAAAeAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/wAAB/wAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAH/AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//3//P/8//t/+H/zv/A/98AAH8/AAAAfwAAAH8AAAB/AAAAfwAAAH8AAAB/AAAAfwAAAH9/wP++/+H/3f/j/+P/9//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf8D/gP/h/8H/4//j//f/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//wAAP/7AAJ/84AHP/fAB5/PwAeAH8AHgB/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHgB/f94APv/sAB3/6AAD//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgADgAcAB8AHgA/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHgB/AB4AfwAeAH9/3v++/83/3f/r/+P/9//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAD//AAAf/oAAD/3AAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAf97/gP/t/8H/6//j//f/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAD//AADf/oAA7/3AAfAB4APwAeAH8AHgB/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHgB/AB7/vgAN/9wAC//gAAf/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//3//P/8//t/+n/zv/c/98AHn8/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHv++AA3/3AAL/+AAB//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAOAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAD3/A/w7/wf/N/+P/4//3//AAB//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9//z//P/7f/p/87/3P/fAB5/PwAeAH8AHgB/AB4AfwAeAH8AHgB/AB4AfwAeAH8AHgB/f97/vv/t/93/6//j//f/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAP/8AAN/+gADv/cAA8AHgAPAB4ADwAeAA8AHgAPAB4ADwAeAA8AHgAPAB4ADwAeAA9/3v+O/+3/zf/r/+P/9//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPB4AAHweAAB8HgAAfB4AAHweAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4P4AAfH/gAHx/gAB8fgAAfHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAG4AAABuAAAA7wAAAe+AAAPvgAAD78AAB+/gAA/n8AAPw/AAH4P4AD+B/AA/APwAPgB8AD4AfAA8ADwAOAAcADAAHAAwAAwAIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYYAAAOOAAADzwAAA88AAAPPAAADzwAAA88AAAPPAAADzwAAA88AAAPPAAADzwAAA88AAAPPAAADjgAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAEADAADAA4ABwAOAA8ADwAPAA+AHwAPwD8AD8A/AA/gfgAH8P4AA/H8AAH5+AAB+/gAAPvwAAB74AAAO8AAADvAAAAbgAAACwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
|
|
return this;
|
|
|
|
};
|
|
|
|
Graphics.prototype.setFontDigitalNumbersSmall = function(scale) {
|
|
|
|
// Actual height 16 (15 - 0)
|
|
|
|
this.setFontCustom(atob("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"), 32, atob("DQ0NDQ0NDQ0NDQ0NAg0CDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0="), 16+(scale<<8)+(1<<16));
|
|
|
|
return this;
|
|
|
|
};
|
|
|
|
|
|
|
|
Graphics.prototype.setFontArkitechLight = function(scale) {
|
|
|
|
// Actual height 10 (10 - 1)
|
|
|
|
this.setFontCustom(atob("AAAAAAAAAAAAAAP0AAAAAAMAMAMAAAEgPwPwEgPwEgEgAAAAGEPEJEf+f+JEf+JEJsI4AAAAOAKAKEKMO4HgG8ckQkAkA8AYAAAAG4PsJEJEJEJEJEJEJEJEJ8BABAAAMAAAAAP8f+QCQCAAAAQCQCf+H4AAEAPAfAfAPAAAAABABAH4H4BABAAAAAAGAEAABABABABABABAAAAAAEAEAAAGAcBwHAcAQAAAH4OcIEIEIEIEIEIEIEIEMMH4DwIAIAP8H8AAAAGcO0IkIkIkIkIkJkJEJEJEPEAAAAMMNMJEJEJEJEJEJEJEJEJEP8AAAAAgBgDgGgMgIgAgAgAgAgP8P8AAPYLMJEJEJEJEJEJEJEJEJEJ8AAAAP8JMJEJEJEJEJEJEJEJEJEN8AAAAIEIEIMIIIYIQIgJgJALAOAAAAAP8JEJEJEJEJEJEJEJEJEJEP8AAAAPMJMJEJEJEJEJEJEJEJEJEP8AAAABEAAAABGBEAAAABACgCgEQEQIIAAAACQCQCQCQCQCQAAAAMYEQGwCgDgBAAAOAMAIAI0J0JAJAJAJAPAHAAAP4IIP4MYMYMYMYMYP4IYP4AAAAH8NAJAJAJAJAJAJAJANAH8AAAAP8JEJEJEJEJEJEJEJEJsO4AAAAH4OYIEIEIEIEIEIEIEIEIEAAP8IEIEIEIEIEIEIEIEMMH4AAAAH4FYJEJEJEJEJEJEJEJEJEAAAAH8NAJAJAJAJAJAJAJAJAIAAAH4OYIEIEIEIEJEJEJEBMB4AAAAP8BABABABABABABABAP8P8AAP8AAAAAwAYAEAEAEAEAEAEAMP4PwAAP8BABABABABABABABgO8OcAAAAP4AYAEAEAEAEAEAEAEAEAEAAP8IAMAHABwAcAEAcBwHAMAIAP8AAAAP8IAMAGADABgAwAYAMAEP8AAAAH4OcIEIEIEIEIEIEIEIEIEMMH4BgAAP8IgIgIgIgIgIgIgIgIgPgHAAAH4OcIEIEIEIEIEIEIEIEIEMMH8BkAAP8IgIgIgIgIgIgIgIwI4PsHEAACAPEJEJEJEJEJEJEJEJEJ8A4AAIAIAIAIAIAP8IAIAIAIAIAAAP4AcAEAEAEAEAEAEAMP4PwAAIAMAGADgAwAYAMAcAwBgDAOAIAIAAAP4AcAEAEAEAEAEAMP4P4AMAEAEAEAEAEAMP4AAAAOcGwBABABABABABADgO8McAAPADgAgAgAgA8AgAgBgPAOAAAIcIUI0IkIkJkJEJELEKEOEAAAAf+QCQCAAQAYAGABgAcAGACAAQCf+f+AA"), 32, atob("BQUECQwODgMGBgYIAwgDBw4FDg4NDg4NDg4DBAgIBwwNDQ0MDQ0MDQwDDA0MDw0PDQ8ODAwNDhQMDA0FBwU="), 12+(scale<<8)+(1<<16));
|
|
|
|
return this;
|
|
|
|
};
|
|
|
|
|
|
|
|
var nasa = require("heatshrink").decompress(atob("jEUwcCpMkyQBBqQFCAQOJAgQIEAgclAYUipdkBoWlkVJiVZkofDiVIyVZkmypMmAwIIDy1JyVEBAmTsmQiQKB/1bvnPlP8yQIB3/Z/0P5t8BAWz9s/yfbnoIC6VLtua5ctBANAIgMsiRcCGoVJkYCBsmUBAVIOAYIBMQNBBAekOgUJBA0gQw6YJVQwA="));
|
|
|
|
|
|
|
|
var runner = require("heatshrink").decompress(atob("kEgwINKhwDCj4DKB4UH+ADBh/4mAOB/wDBjn/BgM5//gAYPxAYMz+HAgEDAwIfBAYYKBEYIDGjoPCnlwGQU4GQPwAYMP8ADBAAIDXAAo"));
|
|
|
|
|
|
|
|
var calendar = require("heatshrink").decompress(atob("j0ZwMAv////7BQU4AYVgAQMBwADBgwKCjgDCDAIABBw0Yg0xx1gjHGnOAocIowODwkwwlnBwWcscY8wODAYQOB4EBBwIsBmOMBwlwAQMDLIX4A=="));
|
|
|
|
|
|
|
|
var heartImageData = require("heatshrink").decompress(atob("//z/4CD4EPAQgOBAQXggEfAQXwgEDAQX4EIN4AQN8AQMMAQMPGAkDwAGEsAFEjAFEgwFEgIYkjgFEh4SEgZmBDwf8RAoSEv5zBAAU//wFDj6MCFQX/QYUAg6iBGAYFBGQUBAoIyDAoIyDv4FBGQU/AoIyCGALICGAQABGQIwCGQQwCGQQwCGQYFDGQIwCGQQwCGQQwDAAPPAogiD"));
|
|
|
|
|
|
|
|
var colorPaletteActive = new Uint16Array([g.toColor(1,0,0), g.toColor(1,1,1)]);
|
|
|
|
var colorPaletteInactiveLightBg = new Uint16Array([g.toColor(0,0,0), g.toColor(1,0,1)]);
|
|
|
|
var colorPaletteInactiveDarkBg = new Uint16Array([g.toColor(1,1,1), g.toColor(1,0,1)]);
|
|
|
|
|
|
|
|
var light = require("heatshrink").decompress(atob("iEQwIEB8EBAIPAgYBBwABBg/gAIILBgOAAIUAgQBCAAY"));
|
|
|
|
|
|
|
|
var planet = require("heatshrink").decompress(atob("5F9wZC/AH4A/AH4AugMkyVJkmAIv4AEI4JKCAQJG/AAUCJQ0kyBJ/JROSpAgVhIcEJUcSJRACBwAdQgIcJJVp7QWRKYjJRlJDZsEDJQCCkBKePBjjNbpQcRJUOSoAaJDJzjgJR7jJI54CCpBLdGCDGGghKSpMgJUkAgLjMhJHREogAbGYxWLVigCFyBKhpAMFPZECJS2SJTbXFaggACIQp7BiRKXOYwAVJRhZFyEEI6r9HJUoABBwWAI64CCkBKaQIhKKbYT0FASyWbEIdIB5UJkEJJTeAJTSGCJRgABI7ICCyBKagQhDCCACZcLZKuoBKahIhCkDxOJW0BEIYPKI7YCCpDhbEIeABpEEJT1JJTY8DyBYMATkgJbYhDJX4AGiRKKgJKgkhKbgQhCoALGhJKhwBLbEIVIJVOQJTY/DKpJK8gIhCkBKoyRKbgAhDBAkCJX8Agi3HJUlAJbhsHiRK/IQohDJUlIJTkAEIxK/AAcJEgToGJX8BEgUgJUxzDADYkDJX4AHEgWQJX4AGiQkCAggChkBKegQkCoAEDJX4ABgwkCpEAJX4AFgIkCgEJJUckJT8AN4ZPDJX4ACggkCwBK/AA0SEgOQgBK/AAsCE4RPDJX4ADE4VIAgYCfwBKhgInCgEJJX4AFE4UgJ4ZK/R4ICBE4cEJX5KDkEAiQnByBPDJX8JEYQqCoECJX5KDSIIDByVIJ4ZK/SIUBFQUgAgZK/SIUEFQUAJX5KDSIMAFQTnBJX5KDSIMCFoUAiRK/EwaRBFoTnBJX4pEgEBc4YLFJXyRBc4hK/FIgIBc4cEJX4pEgESc4YEDJXEBFJDnDgRK/AQgJEUhBK8pEAc4hK/AQgLBAwWQghK/AQkAiTnDAgYCTJMBKLO4LnDgRK/AQkAhIGCkAEDJSeQJcAvKoAMECJZKLDwRKppINBAwR9BJScgCoNIJVZ6BiScDAgZKSNIRKqwEAAwR9BJScENIYAdEQYCJgEBGwYEDJSZpBJVVAUomAChoCDFAL2CyCWeGR6cEG4QXPgQXDJVckGQlIAgZKOgC0EJVbEBHIkJJRtIFAQSDJTrLPgEBTghKRC4cgJVg1BgicEChjZEMQgAbgRKOPIQ8EC5hKEC4eAJVh5BCQkAhL1LYA6tBADZKQFwJFEaAhKMMQZKtZwRRFLhQqIdQoAWZBYCGCgKKEfZBKHFQZKukBFEpAaIwAqGgIbEADIfDAR47BIojoEJRQPEJV2SoAVEbAIOFFZEEK5YASJSbcBGoZRBgDvFABBfEADI0EAR4+BiQGDWYgrKDYZKvY4TbGJRhfDVQIAZJSh8BSAbOCgTsBABMCfggAZZQgCQPgKuEQZz1EADJqDASRjGkBKrD4gCSwAYFAwIAKhJcQABofDAScAgLqGABIREJTQxFASNIDQLqGFRqnMABxKWIYUCcZxKEyBKaghKWIYT8FcZDAFJTTHFASaxHJVLHFJShmGagxKFUhAATJSxAEBgtIE4jvFBYoAWEQoCQRJRXEXoxKcgBKUkAcGDCBKcFyJ8KRgxKnFyACBDhLjHVx4AWhJKPwAcKghKsgDEcWhxKegESFxdADhzjNJT7jLbpYAGJVguJDihKtADpKIkBJ/AAMCJX6YQpBF/AH4A/AH4Au"));
|
|
|
|
|
|
|
|
const APP_NAME = "spaceclock";
|
|
|
|
const HEADER_LINE_Y = 25;
|
|
|
|
const HEADER_TEXT_X = 5;
|
|
|
|
const HEADER_TEXT_Y = 7;
|
|
|
|
const MAIN_IMAGE_X = 13;
|
|
|
|
const MAIN_IMAGE_Y = 70;
|
|
|
|
const BATTERY_IMAGE_X = 112;
|
|
|
|
const BATTERY_IMAGE_Y = 4;
|
|
|
|
const BATTERY_CIRCLE_X = 120;
|
|
|
|
const BATTERY_CIRCLE_Y = 11;
|
|
|
|
const BATTERY_CIRCLE_RAD = 10;
|
|
|
|
const BATTERY_TEXT_X = 134;
|
|
|
|
const BATTERY_TEXT_Y = 5;
|
|
|
|
const TIME_X = 0;
|
|
|
|
const TIME_Y = 33;
|
|
|
|
const DATE_X = 12;
|
|
|
|
const DATE_Y = 125;
|
|
|
|
const WEEKDAY_X = 130;
|
|
|
|
const WEEKDAY_Y = 30;
|
|
|
|
const TEMPERATURE_X = 130;
|
|
|
|
const TEMPERATURE_Y = 50;
|
|
|
|
const HEART_IMAGE_X = 137;
|
|
|
|
const HEART_IMAGE_Y = 71;
|
|
|
|
const HEART_RATE_X = 127;
|
|
|
|
const HEART_RATE_Y = 99;
|
|
|
|
const FOOTER_LINE_Y = 150;
|
|
|
|
const FOOTER_TEXT_LEFT_X = 5;
|
|
|
|
const FOOTER_TEXT_RIGHT_X = 105;
|
|
|
|
const FOOTER_TEXT_Y = 160;
|
|
|
|
const FOOTER_IMAGE_X = 75;
|
|
|
|
const FOOTER_IMAGE_Y = 154;
|
|
|
|
const RUNNER_IMAGE_X = 90;
|
|
|
|
const RUNNER_IMAGE_Y = 117;
|
|
|
|
const STEPS_TEXT_X = 130;
|
|
|
|
const STEPS_TEXT_Y = 128;
|
|
|
|
|
|
|
|
|
|
|
|
const isDarkBg = g.getBgColor() === 0;
|
|
|
|
const weekdays = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
|
|
|
|
|
|
|
|
const drawHeader = () => {
|
|
|
|
g.setFontArkitechLight(1);
|
|
|
|
g.drawString("ASTEROID", HEADER_TEXT_X, HEADER_TEXT_Y);
|
|
|
|
g.drawLine(0,HEADER_LINE_Y, g.getWidth(),HEADER_LINE_Y);
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawMainImage = ()=>{
|
|
|
|
g.drawImage(planet,MAIN_IMAGE_X, MAIN_IMAGE_Y,{scale:0.4});
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawBattery = ()=>{
|
|
|
|
const battery = Math.round(E.getBattery());
|
|
|
|
g.drawImage(light,BATTERY_IMAGE_X, BATTERY_IMAGE_Y);
|
|
|
|
g.drawCircle(BATTERY_CIRCLE_X,BATTERY_CIRCLE_Y,BATTERY_CIRCLE_RAD);
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(battery,BATTERY_TEXT_X,BATTERY_TEXT_Y);
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawTime = ()=>{
|
|
|
|
const date = new Date();
|
|
|
|
const month = date.getMonth()+1;
|
|
|
|
const day = date.getDate();
|
|
|
|
const hour = date.getHours();
|
|
|
|
const minute = date.getMinutes();
|
|
|
|
const weekdayInt = date.getDay();
|
|
|
|
|
|
|
|
// Time
|
|
|
|
g.setFontDigitalNumbersRegular(1);
|
|
|
|
g.drawString( ("0" + hour).substr(-2), TIME_X, TIME_Y);
|
|
|
|
g.drawString(":",TIME_X + 43,TIME_Y);
|
|
|
|
g.drawString(("0" + minute).substr(-2),TIME_X + 60,TIME_Y);
|
|
|
|
|
|
|
|
// Date
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(("0" + day).substr(-2) + "-" + ("0" + month).substr(-2), DATE_X, DATE_Y);
|
|
|
|
|
|
|
|
// Weekday
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(weekdays[weekdayInt], WEEKDAY_X, WEEKDAY_Y);
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawHeart = (isHRMOn) =>{
|
|
|
|
var palette;
|
|
|
|
|
|
|
|
if (isHRMOn){
|
|
|
|
palette = colorPaletteActive;
|
|
|
|
} else {
|
|
|
|
palette = isDarkBg ? colorPaletteInactiveDarkBg : colorPaletteInactiveLightBg;
|
|
|
|
}
|
|
|
|
|
|
|
|
var heart = {
|
|
|
|
width : 50, height : 43, bpp : 1,
|
|
|
|
buffer : heartImageData,
|
|
|
|
palette: palette,
|
|
|
|
transparent: 1
|
|
|
|
};
|
|
|
|
|
|
|
|
g.drawImage(heart, HEART_IMAGE_X, HEART_IMAGE_Y,{scale:0.5});
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawSteps = () => {
|
|
|
|
var steps = Bangle.getHealthStatus("day").steps;
|
2022-12-21 16:53:27 +00:00
|
|
|
const stepsRaw = steps/1000;
|
2022-12-20 20:10:51 +00:00
|
|
|
const decimal = stepsRaw >=10 ? 0 : 1;
|
|
|
|
steps =stepsRaw.toFixed(decimal) + "K";
|
|
|
|
console.log(steps);
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(steps, STEPS_TEXT_X, STEPS_TEXT_Y);
|
|
|
|
g.drawImage(runner, RUNNER_IMAGE_X, RUNNER_IMAGE_Y,{scale:0.9});
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawFooter = ()=>{
|
|
|
|
g.drawLine(0, FOOTER_LINE_Y, g.getWidth(), FOOTER_LINE_Y);
|
|
|
|
g.setFontArkitechLight(1);
|
|
|
|
g.drawString("SPACE", FOOTER_TEXT_LEFT_X, FOOTER_TEXT_Y);
|
|
|
|
g.drawString("RESIST", FOOTER_TEXT_RIGHT_X,FOOTER_TEXT_Y);
|
|
|
|
g.drawImage(nasa, FOOTER_IMAGE_X, FOOTER_IMAGE_Y);
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawTemp = () => {
|
|
|
|
Bangle.getPressure().then((measure) => {
|
|
|
|
if (measure){
|
|
|
|
g.clearRect(TEMPERATURE_X, TEMPERATURE_Y - 2,TEMPERATURE_X + 40, TEMPERATURE_Y+18);
|
|
|
|
const temp = Math.round(measure.temperature);
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(temp + "C", TEMPERATURE_X, TEMPERATURE_Y);
|
|
|
|
}}).catch((reason) => {
|
|
|
|
console.log("Error in getPressure(): " + reason);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const drawHeartRate =(hrm, isOn)=>{
|
|
|
|
const x = ((hrm < 100) || !hrm) ? HEART_RATE_X + 8 : HEART_RATE_X;
|
|
|
|
const measure = hrm ? hrm : "--";
|
|
|
|
g.clearRect(HEART_RATE_X, HEART_RATE_Y - 5, HEART_RATE_X + 42, HEART_RATE_Y + 18);
|
|
|
|
g.setFontDigitalNumbersSmall(1);
|
|
|
|
g.drawString(measure, x, HEART_RATE_Y);
|
|
|
|
};
|
|
|
|
|
|
|
|
var drawTimeout;
|
|
|
|
const queueDraw = () => {
|
|
|
|
if (drawTimeout) clearTimeout(drawTimeout);
|
|
|
|
drawTimeout = setTimeout(function() {
|
|
|
|
drawTimeout = undefined;
|
|
|
|
draw();
|
|
|
|
}, 60000 - (Date.now() % 60000));
|
|
|
|
};
|
|
|
|
|
|
|
|
const clearIntervals = () => {
|
|
|
|
if (drawTimeout) clearTimeout(drawTimeout);
|
|
|
|
drawTimeout = undefined;
|
|
|
|
};
|
|
|
|
|
|
|
|
const draw = ()=>{
|
|
|
|
queueDraw();
|
|
|
|
|
|
|
|
g.clear(1);
|
|
|
|
const whiteOrBlack = isDarkBg? 1 : 0;
|
|
|
|
g.setColor(whiteOrBlack, whiteOrBlack, whiteOrBlack);
|
|
|
|
|
|
|
|
drawHeader();
|
|
|
|
drawMainImage();
|
|
|
|
drawFooter();
|
|
|
|
drawHeart(Bangle.isHRMOn());
|
|
|
|
drawHeartRate(null, Bangle.isHRMOn());
|
|
|
|
drawTime();
|
|
|
|
drawBattery();
|
|
|
|
drawSteps();
|
|
|
|
drawTemp();
|
|
|
|
};
|
|
|
|
|
|
|
|
Bangle.on('HRM',(hrm)=>{
|
|
|
|
drawHeartRate(hrm.bpm, Bangle.isHRMOn());
|
|
|
|
});
|
|
|
|
|
|
|
|
Bangle.on('touch',(button, xy)=>{
|
|
|
|
// Toggle Heartrate
|
|
|
|
if (xy.x > 127 && xy.x < 167 && xy.y >71 && xy.y < 119) {
|
|
|
|
Bangle.setHRMPower(!Bangle.isHRMOn(),APP_NAME );
|
|
|
|
console.log("Setting HRM to: " + Bangle.isHRMOn());
|
|
|
|
drawHeart(Bangle.isHRMOn());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
Bangle.on("lcdPower", (on) => {
|
|
|
|
if (on) {
|
|
|
|
draw();
|
|
|
|
} else {
|
|
|
|
clearIntervals();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
Bangle.on("lock", (locked) => {
|
|
|
|
clearIntervals();
|
|
|
|
draw();
|
|
|
|
});
|
|
|
|
|
2022-12-20 21:35:28 +00:00
|
|
|
Bangle.setUI("clock");
|
2022-12-20 20:10:51 +00:00
|
|
|
Bangle.setBarometerPower(true, APP_NAME);
|
|
|
|
Bangle.setHRMPower(true,APP_NAME);
|
|
|
|
|
|
|
|
draw();
|