From 33cb21482c21223df3e071a0f9756516ed5f52dd Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 21 Mar 2022 21:38:29 +0100 Subject: [PATCH 01/44] Create readme.md --- apps/glbasic/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/glbasic/readme.md diff --git a/apps/glbasic/readme.md b/apps/glbasic/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/apps/glbasic/readme.md @@ -0,0 +1 @@ + From 7ddcfd7565f9920e5f3fed1b5b37a97c74ec5253 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 21 Mar 2022 21:39:02 +0100 Subject: [PATCH 02/44] Add files via upload --- apps/glbasic/GLBasic-Watchface-Bangle.JS2.js | 114 +++++++++++++++++++ apps/glbasic/glbasic.icon.js | 1 + apps/glbasic/glbasic_screenshot.png | Bin 0 -> 1809 bytes apps/glbasic/icon48.png | Bin 0 -> 1365 bytes apps/glbasic/metadata.json | 18 +++ 5 files changed, 133 insertions(+) create mode 100644 apps/glbasic/GLBasic-Watchface-Bangle.JS2.js create mode 100644 apps/glbasic/glbasic.icon.js create mode 100644 apps/glbasic/glbasic_screenshot.png create mode 100644 apps/glbasic/icon48.png create mode 100644 apps/glbasic/metadata.json diff --git a/apps/glbasic/GLBasic-Watchface-Bangle.JS2.js b/apps/glbasic/GLBasic-Watchface-Bangle.JS2.js new file mode 100644 index 000000000..d51d02a10 --- /dev/null +++ b/apps/glbasic/GLBasic-Watchface-Bangle.JS2.js @@ -0,0 +1,114 @@ + +Graphics.prototype.setFontLECO1976Regular42 = function(scale) { + // Actual height 42 (41 - 0) + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60+(scale<<8)+(1<<16)); +}; + +Graphics.prototype.setFontLECO1976Regular22 = function(scale) { + // Actual height 22 (21 - 0) +g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22+(scale<<8)+(1<<16)); +}; + + +require("Font7x11Numeric7Seg").add(Graphics); + + +var temperature = 13; + +//the following 2 sections are used from waveclk to schedule minutely updates +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +} + +function drawBackground() { + g.setBgColor(0,0,0); + g.setColor(1,1,1); + g.clear(); +} + +function digit(num){ + return String.fromCharCode(num + 48); +} +function timeString(h, m){ + return digit(h/10) + digit(h%10) + ":" + digit(m/10) + digit(m%10); +} +function dayString(w){ + return digit(w/10) + digit(w%10); +} + +function getSteps() { + if (WIDGETS.wpedom !== undefined) { + return WIDGETS.wpedom.getSteps(); + } + return '????'; +} + + + +function draw(){ + drawBackground(); + var date = new Date(); + var h = date.getHours(), m = date.getMinutes(); + var d = date.getDate(), w = date.getDay(); + + g.setBgColor(0,0,0); + g.setColor(1,1,1); + + + // g.setFont('Vector', 30); + // g.setFont("7x11Numeric7Seg", 5); + g.setFontLECO1976Regular42(); + g.setFontAlign(0, -1); + g.drawString(timeString(h, m), g.getWidth()/2,28); + g.drawString(dayString(w), g.getWidth()*3/4,88); + g.setColor(0,1,0); + g.fillRect(0,76,g.getWidth(), 80); + g.reset(); + + // Steps + g.setFontLECO1976Regular22(); + g.setFontAlign(-1, -1); + g.drawString(getSteps(), 8, 88); + + // g.drawString(temperature, 4, 108); + + + // widget redraw + Bangle.drawWidgets(); + queueDraw(); +} + + +//////////////////////////////////////////////////// +// Bangle.setBarometerPower(true); + +Bangle.loadWidgets(); +draw(); + + +// Bangle.on('pressure', function(e){ +// temperature = e.temperature; +// draw(); +// }); + +//the following section is also from waveclk +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + +Bangle.setUI("clock"); + +Bangle.drawWidgets(); \ No newline at end of file diff --git a/apps/glbasic/glbasic.icon.js b/apps/glbasic/glbasic.icon.js new file mode 100644 index 000000000..0c3280635 --- /dev/null +++ b/apps/glbasic/glbasic.icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEw4UA///ssp4XthFCBwUBqoABqAaGBZcFBZdX1W1qgLHrwLKqv/6oLJAAILHioLJn5qBAAYLEBQoLeHQQABv4LjGAgLYq2qAAOlBbBHFBdPAKcQLdWcb7jAAoLcn4LKgEVHQVUBQsAgoLLq//6oLIr2q2oXJBZQvCqALGgILTA=")) diff --git a/apps/glbasic/glbasic_screenshot.png b/apps/glbasic/glbasic_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e5ff9f714ffdca28588be6cd6e87376f12cce9 GIT binary patch literal 1809 zcmds&`!|$%9LLAggNM+JX z$6zpuF8dt4(J1(~AQ^OTZl4Z9gVafHhCQa~8F3zikr{At+VSS^u+ zRTmX$Jc_o-yeFk<_Nw`DMvt@M?ehb7Cx2@1JF5vrx{7#68Iw1*M~-Zy73qP2+ew;l zaB8w`+UZCjpD%_AHU;ACM2&rnc`y}NYFYQT9am4mtAqK{|=d zdE>aKc^355KK4vD(Wr7(`!sFm28G(ZSCE+R#Sc65;nuQu~eBq3fCkLf?ePWX)BAi zDeJdeb1O<~)jC%#R}G^VwCCb2JQc98C;hX66rOnqjc_o#Va2a`G zQ^EP(&l`?j6T4Z@{=Q*ej%XV*h;go^ZYhUmr}s5{YRP^1s+U!clq0LPScpZlP_Bg+ zy31&ir^ZBd!;6QOT4L+H2Y+9guqxL7sL-Gi-Q%~wR9(Ag z)I9k0W&rql*@Fm3wh;lUAO$+rxiHR^T*abqIR(Kd4%`)NI>zw4f1yjiX1e6dj;9g3 zm~19{om3VdLNP)sJP?D}*GH^t;SN@v`%#~c-&TfpsJ+q++qw8V`)nwOs~E;@z7Ilnfo;wMrh@ea@80m@ zw73u#xRIcnfjEKKH7&7086_Q2=f!s9VSvM6ZBu!r8k2MF@WrmUyswJY_kszl@l`2a_EBJBI=vO*#@=m z(viI-w*ovd@Th6%BeE2z^zhnnB5I#XOMMwRG6#FCb@Vd0;R6$>O0s%;Rf*YH<)hQ3tr=g|jfS_!I z6a%i(b~f9yw^#y6 z8aa@`^{q-CZ0bE!>^5U3Qd-QQ`{!pM-B*MQyQRQXTjHE1iDGuuO%FAWA78v%#4f{uHkR48&=R(DU|9i5r$V1{zloT?{-g0#DbauG%AMI0d$oe9w!tOwqX z{WR}PH#$vXPF{^1S#Zqp5gUMP;%SaAKve=pTo1abh|)*|RhL0bRKakN^Mx literal 0 HcmV?d00001 diff --git a/apps/glbasic/icon48.png b/apps/glbasic/icon48.png new file mode 100644 index 0000000000000000000000000000000000000000..368e08750d5ede99497d54b310fe9b91e03d9c10 GIT binary patch literal 1365 zcmV-b1*-aqP)Px)4@pEpRA@upn$J%oWf;f5@65Ech+x zv{2{Lr1SoGKJW9q@AEwGGXxf&j*gBFO6h${sg)5nRaJf3O2^bb#OfezZEaUYQ5<26 zhgpeNqlqU<|a5!MM+tXy)-`__( z9#8#$LlA_fU@-V^J`k4nfTAcL1GvSlA&<$o1wnW%7!2OaV+?Bo$g<3Zznss+0AlfY z{JrJnjL8}`p4TwIc*HA2YF(Z&`TV|N3A zz$du?84BR>cxDJ8uUk3qa}k8M36YTEp zVrM5|vZwa&)vv9sO$dJk(C_#AZ`$UZ?XIgKO%tB)k~ zeOsM?$OPbWxe^*+jQ#2LdS5(s4KNT?RZs-3hq1m%@Nml*fG*HbV6|8N+4QG#d;Sbsoppz&lSeLBj3C!9cC9YdJ} zgjOVc_*FUp_XC8G&!(rRuMH0mI|MRySs0P!{IVQ$id*?;AX)$vDvuA$b@u1 zkaUa|#*v-02h4zE(?HQ2+5ZCIsS1i;M#9*O7@ow(6eEcYp%ok6|03NF6iov>l&Ekr zd~>M?YqU0q$(nx@?Wa7n*j z*EFq$Qd)@X_31z$&}T~Wqeg}RnFecZZM`K3LTMB@G65)x@)3aBW^T8$tmZbQ^wp)M zrTe+8cxqcq8c-DFO#r+!bgan7E0wm?91_5}EAq9pv^*zC(r>9{)}f&xw70jXm02ey zCNMfWn!0$4s;a({&*~>qSE~akin0peS-pR@Lign4Bp$&|E$>&@`<(6bhZ)rv|btUl9c1rWOBiEEs&!V)H@V+` XI5?_a++oDw00000NkvXXu0mjfkw}hY literal 0 HcmV?d00001 diff --git a/apps/glbasic/metadata.json b/apps/glbasic/metadata.json new file mode 100644 index 000000000..03559823a --- /dev/null +++ b/apps/glbasic/metadata.json @@ -0,0 +1,18 @@ +{ + "id": "glbasic", + "name": "GLBasic Clock", + "shortName": "GLBasic", + "version": "0.01", + "description": "A clock with large numbers", + "dependencies": {"widpedom":"app"}, + "readme": "README.md", + "icon": "icon48.png", + "screenshots": [{"url":glbasic_screenshot.png"}], + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS", "BANGLEJS2"], + "storage": [ + {"name":"glbasic.app.js","url":"glbasic.app.js"}, + {"name":"glbasic.img","url":"glbasic.icon.js","evaluate":true} + ] +} \ No newline at end of file From a699247ad1ca640bff3a2845baaef6363f3204a2 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 21 Mar 2022 22:02:55 +0100 Subject: [PATCH 03/44] Typos Typos --- apps/glbasic/metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/glbasic/metadata.json b/apps/glbasic/metadata.json index 03559823a..f4fe042db 100644 --- a/apps/glbasic/metadata.json +++ b/apps/glbasic/metadata.json @@ -7,7 +7,7 @@ "dependencies": {"widpedom":"app"}, "readme": "README.md", "icon": "icon48.png", - "screenshots": [{"url":glbasic_screenshot.png"}], + "screenshots": [{"url":"glbasic_screenshot.png"}], "type": "clock", "tags": "clock", "supports": ["BANGLEJS", "BANGLEJS2"], @@ -15,4 +15,4 @@ {"name":"glbasic.app.js","url":"glbasic.app.js"}, {"name":"glbasic.img","url":"glbasic.icon.js","evaluate":true} ] -} \ No newline at end of file +} From 5beec202f964c2eb54ee60c3d08b6b31f13a0c5b Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 21 Mar 2022 22:04:25 +0100 Subject: [PATCH 04/44] Add files via upload --- apps/glbasic/glbasic.app.js | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 apps/glbasic/glbasic.app.js diff --git a/apps/glbasic/glbasic.app.js b/apps/glbasic/glbasic.app.js new file mode 100644 index 000000000..d51d02a10 --- /dev/null +++ b/apps/glbasic/glbasic.app.js @@ -0,0 +1,114 @@ + +Graphics.prototype.setFontLECO1976Regular42 = function(scale) { + // Actual height 42 (41 - 0) + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60+(scale<<8)+(1<<16)); +}; + +Graphics.prototype.setFontLECO1976Regular22 = function(scale) { + // Actual height 22 (21 - 0) +g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22+(scale<<8)+(1<<16)); +}; + + +require("Font7x11Numeric7Seg").add(Graphics); + + +var temperature = 13; + +//the following 2 sections are used from waveclk to schedule minutely updates +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +} + +function drawBackground() { + g.setBgColor(0,0,0); + g.setColor(1,1,1); + g.clear(); +} + +function digit(num){ + return String.fromCharCode(num + 48); +} +function timeString(h, m){ + return digit(h/10) + digit(h%10) + ":" + digit(m/10) + digit(m%10); +} +function dayString(w){ + return digit(w/10) + digit(w%10); +} + +function getSteps() { + if (WIDGETS.wpedom !== undefined) { + return WIDGETS.wpedom.getSteps(); + } + return '????'; +} + + + +function draw(){ + drawBackground(); + var date = new Date(); + var h = date.getHours(), m = date.getMinutes(); + var d = date.getDate(), w = date.getDay(); + + g.setBgColor(0,0,0); + g.setColor(1,1,1); + + + // g.setFont('Vector', 30); + // g.setFont("7x11Numeric7Seg", 5); + g.setFontLECO1976Regular42(); + g.setFontAlign(0, -1); + g.drawString(timeString(h, m), g.getWidth()/2,28); + g.drawString(dayString(w), g.getWidth()*3/4,88); + g.setColor(0,1,0); + g.fillRect(0,76,g.getWidth(), 80); + g.reset(); + + // Steps + g.setFontLECO1976Regular22(); + g.setFontAlign(-1, -1); + g.drawString(getSteps(), 8, 88); + + // g.drawString(temperature, 4, 108); + + + // widget redraw + Bangle.drawWidgets(); + queueDraw(); +} + + +//////////////////////////////////////////////////// +// Bangle.setBarometerPower(true); + +Bangle.loadWidgets(); +draw(); + + +// Bangle.on('pressure', function(e){ +// temperature = e.temperature; +// draw(); +// }); + +//the following section is also from waveclk +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + +Bangle.setUI("clock"); + +Bangle.drawWidgets(); \ No newline at end of file From a23e4ecd38f135228663f7cbea43bf4904ae82c3 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 21 Mar 2022 22:06:03 +0100 Subject: [PATCH 05/44] Update metadata.json --- apps/glbasic/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/glbasic/metadata.json b/apps/glbasic/metadata.json index f4fe042db..589ea6004 100644 --- a/apps/glbasic/metadata.json +++ b/apps/glbasic/metadata.json @@ -5,7 +5,7 @@ "version": "0.01", "description": "A clock with large numbers", "dependencies": {"widpedom":"app"}, - "readme": "README.md", + "readme": "readme.md", "icon": "icon48.png", "screenshots": [{"url":"glbasic_screenshot.png"}], "type": "clock", From e7f3c0f00e23b8ee9f732bb85ccc5a7cb147d3a7 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 22 Mar 2022 06:41:32 +0100 Subject: [PATCH 06/44] Added Calendar --- apps/glbasic/glbasic.app.js | 145 ++++++++++++++++++++++++++++-------- 1 file changed, 116 insertions(+), 29 deletions(-) diff --git a/apps/glbasic/glbasic.app.js b/apps/glbasic/glbasic.app.js index d51d02a10..b2b6f45ed 100644 --- a/apps/glbasic/glbasic.app.js +++ b/apps/glbasic/glbasic.app.js @@ -1,20 +1,17 @@ - Graphics.prototype.setFontLECO1976Regular42 = function(scale) { // Actual height 42 (41 - 0) - g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60+(scale<<8)+(1<<16)); + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60 + (scale << 8) + (1 << 16)); }; Graphics.prototype.setFontLECO1976Regular22 = function(scale) { // Actual height 22 (21 - 0) -g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22+(scale<<8)+(1<<16)); + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22 + (scale << 8) + (1 << 16)); }; require("Font7x11Numeric7Seg").add(Graphics); -var temperature = 13; - //the following 2 sections are used from waveclk to schedule minutely updates // timeout used to update every minute var drawTimeout; @@ -29,19 +26,21 @@ function queueDraw() { } function drawBackground() { - g.setBgColor(0,0,0); - g.setColor(1,1,1); + g.setBgColor(0, 0, 0); + g.setColor(1, 1, 1); g.clear(); } -function digit(num){ +function digit(num) { return String.fromCharCode(num + 48); } -function timeString(h, m){ - return digit(h/10) + digit(h%10) + ":" + digit(m/10) + digit(m%10); + +function timeString(h, m) { + return digit(h / 10) + digit(h % 10) + ":" + digit(m / 10) + digit(m % 10); } -function dayString(w){ - return digit(w/10) + digit(w%10); + +function dayString(w) { + return digit(w / 10) + digit(w % 10); } function getSteps() { @@ -51,36 +50,124 @@ function getSteps() { return '????'; } +/** + * draws calender week view (-1,0,1) for given date + */ +function drawCal() { + d = /*this.date ? this.date : */ new Date(); + + const DAY_NAME_FONT_SIZE = 10; + const CAL_Y = g.getHeight() - 44; // Bangle.appRect.y+this.DATE_FONT_SIZE()+10+this.TIME_FONT_SIZE()+3; + const CAL_AREA_H = 44; // g.getHeight()-CAL_Y+24; //+24: top widgtes only + const CELL_W = g.getWidth() / 7; //cell width + const CELL_H = (CAL_AREA_H - DAY_NAME_FONT_SIZE) / 3; //cell heigth + const DAY_NUM_FONT_SIZE = Math.min(CELL_H + 3, 15); //size down, max 15 + + const wdStrt = 1; + + const ABR_DAY = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const IS_SUNDAY = [1, 0, 0, 0, 0, 1, 1]; // what days are sunday? + const nrgb = ["#000", "#FFF", "#F00", "#0F0", "#00F", "#FF0"]; //fg, r ,g , b + const suClr = 5; // sunday color fg + const tdyMrkClr = 3; // today bk + const tdyNumClr = 0; // today fg + + g.setFont("Vector", DAY_NAME_FONT_SIZE+3); + g.setColor(nrgb[1]); + g.setFontAlign(-1, -1); + // g.clearRect(Bangle.appRect.x, CAL_Y, Bangle.appRect.x2, CAL_Y+CAL_AREA_H); + + //draw grid & Headline + const dNames = ABR_DAY.map((a) => a.length <= 2 ? a : a.substr(0, 2)); //force shrt 2 + for (var dNo = 0; dNo < dNames.length; dNo++) { + const dIdx = wdStrt >= 0 ? ((wdStrt + dNo) % 7) : ((dNo + d.getDay() + 4) % 7); + const dName = dNames[dIdx]; + // if(dNo>0) { g.drawLine(dNo*CELL_W, CAL_Y, dNo*CELL_W, CAL_Y+CAL_AREA_H-1);} -function draw(){ + var colTx = 0; + var colBk = 1; + if (IS_SUNDAY[dIdx]) { + colBk = suClr; + } + + g.setColor(nrgb[colBk]); + g.fillRect(dNo * CELL_W, CAL_Y, dNo * CELL_W + CELL_W, CAL_Y + DAY_NAME_FONT_SIZE-1); + g.setColor(nrgb[colTx]); + g.drawString(dName, dNo * CELL_W + (CELL_W - g.stringWidth(dName)) / 2 + 2, CAL_Y-1); + // g.setColor(nrgb[clTxt]); + } + g.setColor(nrgb[1]); + var nextY = CAL_Y + DAY_NAME_FONT_SIZE; + + // horizontal lines + // for(i=0; i<3; i++){ const y=nextY+i*CELL_H; g.drawLine(Bangle.appRect.x, y, Bangle.appRect.x2, y); } + + g.setFont("Vector", DAY_NUM_FONT_SIZE); + + g.setFont("7x11Numeric7Seg", 1); + + //write days + const tdyDate = d.getDate(); + const days = wdStrt >= 0 ? 7 + ((7 + d.getDay() - wdStrt) % 7) : 10; //start day (week before=7 days + days in this week realtive to week start) or fixed 7+3 days + var rD = new Date(d.getTime()); + rD.setDate(rD.getDate() - days); + var rDate = rD.getDate(); + for (var y = 0; y < 3; y++) { + for (var x = 0; x < dNames.length; x++) { + if (rDate === tdyDate) { //today + g.setColor(nrgb[tdyMrkClr]); //today marker color or fg color + + // rectangle + g.fillRect(x * CELL_W, nextY + CELL_H-1, x * CELL_W + CELL_W, nextY + CELL_H + CELL_H - 1); + g.setColor(nrgb[tdyNumClr]); //today color or fg color + + // simulate "bold" + g.drawString(rDate, 1+ x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); + + } else if (IS_SUNDAY[rD.getDay()]) { //sundays + g.setColor(nrgb[suClr]); + } else { //default + g.setColor(nrgb[1]); + } + g.drawString(rDate, x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); + rD.setDate(rDate + 1); + rDate = rD.getDate(); + } + } +} + + +function draw() { drawBackground(); var date = new Date(); - var h = date.getHours(), m = date.getMinutes(); - var d = date.getDate(), w = date.getDay(); + var h = date.getHours(), + m = date.getMinutes(); + var d = date.getDate(), + w = date.getDay(); // d=1..31; w=0..6 + + g.setBgColor(0, 0, 0); + g.setColor(1, 1, 1); + - g.setBgColor(0,0,0); - g.setColor(1,1,1); - - // g.setFont('Vector', 30); // g.setFont("7x11Numeric7Seg", 5); g.setFontLECO1976Regular42(); g.setFontAlign(0, -1); - g.drawString(timeString(h, m), g.getWidth()/2,28); - g.drawString(dayString(w), g.getWidth()*3/4,88); - g.setColor(0,1,0); - g.fillRect(0,76,g.getWidth(), 80); + g.drawString(timeString(h, m), g.getWidth() / 2, 28); + g.drawString(dayString(d), g.getWidth() * 3 / 4, 88); + g.setColor(0, 1, 0); + g.fillRect(0, 76, g.getWidth(), 80); g.reset(); - + // Steps g.setFontLECO1976Regular22(); g.setFontAlign(-1, -1); g.drawString(getSteps(), 8, 88); - // g.drawString(temperature, 4, 108); - - + drawCal(); + + // widget redraw Bangle.drawWidgets(); queueDraw(); @@ -100,7 +187,7 @@ draw(); // }); //the following section is also from waveclk -Bangle.on('lcdPower',on=>{ +Bangle.on('lcdPower', on => { if (on) { draw(); // draw immediately, queue redraw } else { // stop draw timer @@ -111,4 +198,4 @@ Bangle.on('lcdPower',on=>{ Bangle.setUI("clock"); -Bangle.drawWidgets(); \ No newline at end of file +Bangle.drawWidgets(); From 9df926f062d49c6087bc462061e2ca7edb4ac33a Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 22 Mar 2022 06:42:31 +0100 Subject: [PATCH 07/44] Version --- apps/glbasic/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/glbasic/metadata.json b/apps/glbasic/metadata.json index 589ea6004..9d8f5ec7b 100644 --- a/apps/glbasic/metadata.json +++ b/apps/glbasic/metadata.json @@ -2,7 +2,7 @@ "id": "glbasic", "name": "GLBasic Clock", "shortName": "GLBasic", - "version": "0.01", + "version": "0.2", "description": "A clock with large numbers", "dependencies": {"widpedom":"app"}, "readme": "readme.md", From 200e6fcc1dab2d087a825e824d0ea4b065c3abe8 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 22 Mar 2022 07:42:40 +0100 Subject: [PATCH 08/44] Update widget.js Buzz on connection loss. --- apps/widbt/widget.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index c7ef8c0ad..a6c15a97f 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -5,8 +5,11 @@ WIDGETS["bluetooth"]={area:"tr",width:15,draw:function() { else g.setColor(g.theme.dark ? "#666" : "#999"); g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="),2+this.x,2+this.y); -},changed:function() { +},connect:function() { + WIDGETS["bluetooth"].draw(); +},dicconnect:function() { + Bangle.buzz(1000,1); // buzz on connection loss WIDGETS["bluetooth"].draw(); }}; -NRF.on('connect',WIDGETS["bluetooth"].changed); -NRF.on('disconnect',WIDGETS["bluetooth"].changed); +NRF.on('connect',WIDGETS["bluetooth"].connect); +NRF.on('disconnect',WIDGETS["bluetooth"].disconnect); From 0743af578641b5886b2fef52bb769d5cef2f83dc Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 22 Mar 2022 07:45:00 +0100 Subject: [PATCH 09/44] Update metadata.json --- apps/widbt/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/metadata.json b/apps/widbt/metadata.json index e2d5082a5..78a61496c 100644 --- a/apps/widbt/metadata.json +++ b/apps/widbt/metadata.json @@ -1,7 +1,7 @@ { "id": "widbt", "name": "Bluetooth Widget", - "version": "0.08", + "version": "0.09", "description": "Show the current Bluetooth connection status in the top right of the clock", "icon": "widget.png", "type": "widget", From aa118dc3fa40501193874727235f9c86e4c7bedb Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 22 Mar 2022 07:46:04 +0100 Subject: [PATCH 10/44] Update ChangeLog 0.09 --- apps/widbt/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/widbt/ChangeLog b/apps/widbt/ChangeLog index 4c2132122..3b9024ee4 100644 --- a/apps/widbt/ChangeLog +++ b/apps/widbt/ChangeLog @@ -5,3 +5,4 @@ 0.06: Tweaking colors for dark/light themes and low bpp screens 0.07: Memory usage improvements 0.08: Disable LCD on, on bluetooth status change +0.09: Vibrate on connection loss From c7242674f27f4be0d0ab2576a855169a2d6ba6fe Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 23 Mar 2022 09:20:59 +0100 Subject: [PATCH 11/44] Update widget.js Typos --- apps/widbt/widget.js | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index a6c15a97f..246b8d65b 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -1,15 +1,23 @@ -WIDGETS["bluetooth"]={area:"tr",width:15,draw:function() { - g.reset(); - if (NRF.getSecurityStatus().connected) - g.setColor((g.getBPP()>8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); - else - g.setColor(g.theme.dark ? "#666" : "#999"); - g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="),2+this.x,2+this.y); -},connect:function() { - WIDGETS["bluetooth"].draw(); -},dicconnect:function() { - Bangle.buzz(1000,1); // buzz on connection loss - WIDGETS["bluetooth"].draw(); -}}; -NRF.on('connect',WIDGETS["bluetooth"].connect); -NRF.on('disconnect',WIDGETS["bluetooth"].disconnect); +WIDGETS.bluetooth = { + area: "tr", + width: 15, + draw: function() { + g.reset(); + if (NRF.getSecurityStatus().connected) { + g.setColor((g.getBPP() > 8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); + } else { + g.setColor(g.theme.dark ? "#666" : "#999"); + } + g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y); + }, + connect: function() { + WIDGETS.bluetooth.draw(); + }, + diconnect: function() { + Bangle.buzz(1000, 1); // buzz on connection loss + WIDGETS.bluetooth.draw(); + } +}; + +NRF.on('connect', WIDGETS.bluetooth.connect); +NRF.on('disconnect', WIDGETS.bluetooth.diconnect); From 8d7cf2dde6f2e40801abcda5d8dcd9df5cf9ad97 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 23 Mar 2022 09:21:48 +0100 Subject: [PATCH 12/44] Update ChangeLog bug fix --- apps/widbt/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/widbt/ChangeLog b/apps/widbt/ChangeLog index 3b9024ee4..04bff2b1a 100644 --- a/apps/widbt/ChangeLog +++ b/apps/widbt/ChangeLog @@ -6,3 +6,4 @@ 0.07: Memory usage improvements 0.08: Disable LCD on, on bluetooth status change 0.09: Vibrate on connection loss +0.10: Bug fix From ef6fcc92f0423954d444b9d26948b9b142474f92 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 23 Mar 2022 09:22:10 +0100 Subject: [PATCH 13/44] Update metadata.json version update --- apps/widbt/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/metadata.json b/apps/widbt/metadata.json index 78a61496c..29d960f33 100644 --- a/apps/widbt/metadata.json +++ b/apps/widbt/metadata.json @@ -1,7 +1,7 @@ { "id": "widbt", "name": "Bluetooth Widget", - "version": "0.09", + "version": "0.10", "description": "Show the current Bluetooth connection status in the top right of the clock", "icon": "widget.png", "type": "widget", From b8e495d422b824b173df487240bf6f1265cd01ba Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 23 Mar 2022 09:40:36 +0100 Subject: [PATCH 14/44] Add files via upload updated screenshot --- apps/glbasic/glbasic_screenshot.png | Bin 1809 -> 2678 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/glbasic/glbasic_screenshot.png b/apps/glbasic/glbasic_screenshot.png index e6e5ff9f714ffdca28588be6cd6e87376f12cce9..151ee38b922b4a10c35d81e44a2ecdcae1556759 100644 GIT binary patch literal 2678 zcmbVOdo^Y8N5!3cyX*dY*Sddvzk7ez=d<_P>$CRW>zm?WXDNb_!2ke6 zPMx%H;#=mwju4uE*SAc2^9>@@$+LYo>(%|;?T)&lb zO9tv>{B!MwZ+f~fTk%2X;8U~n*V-n6zdwX4FwqEJMV9hHumF%2YbFDzMMvRx6k%sz zEdaq@X7Pel=}`{^__H;7hbT;7HX*^&@C_k($cGvr03zqVh!eqccmxA@BQwg8ATh31 z5^!t#EO}rjilPZ%N)DZikVgMMiJuDdewfXku8fH>HSgQ5k;y?mat);%)B(6%7i?=D zKAGl89;5AO_4Ne!{W$1myl`TUo*?%j4Db>*1Uw|5B(DnG)G7ugfJwraohT~ZYV07; z8rlsd_!`?Hn9gc!0{B{0CWnH}O|_xgQq}n_S2}~7ZhaLqsor~kAESrzo0C5B&pJ=+He9IM zu&j@hB$cDK)d~JeB)$fUGvpl1gHRC#fsCwoRYqVmfi$7W=m{tHMWiGDofwSYEK$fK z-;H9)|A)g8B!TZw&M;cef6h9eaUGjcl}rYp#Q)avUP6XbGn_?W*N2aIV^ zn+I9`o~hBN{|nU2iQR4arF4MgOmnxFWt6(DE#*^0aqo2@<=IF9 z;HIdg`jH>E(%9W_6k)e-hmx;vArcVnqlno5K?Zx0lT&E?Ng^(uAx7OOvYf zmhyw7j$gfDWU88=r0M5b6DKL@K9smi!Y{R#1>D^4zX()6=2%gYhJ~`S-21cnfd5Yb zO(`rf$YuXIHWlbDUTLTU$W_`*1e|X!M0juk2_YioV~}iq;mEX)_W>0YS{A{&0L28Q zG*uuC&AvIn+X(|L_+nwoUJ%9hsIN{-9+s7zg;#Q8mKWkWDMKWu-o)a5Nl5BZ^KVtR z%XYvFDf7JwpaD((qBp(=pm-s3nK*v=SwxW*0T>YR#^uKWnyO;|JctI!f-{G+^TavI z_V$7Ar!E_AwOrSi*8fTt@Ec~~(h;o0X53m0rnmYEB1BM#VpI3i#RkcJ_L9tWokDVP zV$HdpKixfJ#^Y@oY7Bn=%P9sPeDc%PZVYEdxH^#2v5?8p5FF7vl!%dBZ#_^b z-W~9CXsR?!TPA0-&n`~%Z zg$?453pBD0(5KqyR>}W z*rZYP`s!9kNBKyPK7DIfeswsjJL$sSvvqOxeQ0*;p*11xW2U>fE`t3*YNY|wUx|TG zsDnp=_L$2+UM=1RQ$+68-dK->LcLgx?Y~6y96}eNd5A0a5G6VnS@bH_AZ_SU^FG&?D_k<0EnuIjUj)YOmMWx_brE-fFgUCY5oFpVqri~z_ZICKy&*B32#@AUc6cxU~ubmgiQ$Dv8R)!@RCGu@fdL!;Icx}DvRZPbIrLODt_GfWhm zH#Q;r3&yLCyo!J;b$w2&+`MUZ&%^mbvgxKq(@nC>V~yqe=II) zTBRBW-E{`RlN3d-S4qMl(-KFUHXa#&VuFFV+}0(iG3*Z|?(AlAxz(rdLwhR@2bPI0 zz3MuP=TEZm(u$tScI%iQd{C`b2hCmT-Je;G>PSJt8G9pl`Us1Q1%yOsg}-teS}JV| zqpqn|@7w%Uv?Vq`)aJIJ;lXIrx!4W}bMOvf?j! zsqxV5xeM)u-3i2Q>MQXan%4d~7`raL+9hM#P(79Xp>EX&869r?abhbp zqR>NulOI+V(exwcq`iCo&`1rfpdvP@b{Yj8;mYp408Yni8Xxrk!e4#3(B`-M5mc}h z2yG|Xda~jZWL=6P99|CjGp^l~T&B#IZZ?Qji;%;d_sA9PzS4F6@7)Ghl(Vs)Y@3%D zoBT!H8GXrV1#77^Aq8m;m7u;^l%h<$2^QY=4Y$;=)o8mQwqa1Of|~I=g8ja&B-{L} zQ{{~_+Sit@G|ASS^lUP-fs~IC_6VHN z$6zpuF8dt4(J1(~AQ^OTZl4Z9gVafHhCQa~8F3zikr{At+VSS^u+ zRTmX$Jc_o-yeFk<_Nw`DMvt@M?ehb7Cx2@1JF5vrx{7#68Iw1*M~-Zy73qP2+ew;l zaB8w`+UZCjpD%_AHU;ACM2&rnc`y}NYFYQT9am4mtAqK{|=d zdE>aKc^355KK4vD(Wr7(`!sFm28G(ZSCE+R#Sc65;nuQu~eBq3fCkLf?ePWX)BAi zDeJdeb1O<~)jC%#R}G^VwCCb2JQc98C;hX66rOnqjc_o#Va2a`G zQ^EP(&l`?j6T4Z@{=Q*ej%XV*h;go^ZYhUmr}s5{YRP^1s+U!clq0LPScpZlP_Bg+ zy31&ir^ZBd!;6QOT4L+H2Y+9guqxL7sL-Gi-Q%~wR9(Ag z)I9k0W&rql*@Fm3wh;lUAO$+rxiHR^T*abqIR(Kd4%`)NI>zw4f1yjiX1e6dj;9g3 zm~19{om3VdLNP)sJP?D}*GH^t;SN@v`%#~c-&TfpsJ+q++qw8V`)nwOs~E;@z7Ilnfo;wMrh@ea@80m@ zw73u#xRIcnfjEKKH7&7086_Q2=f!s9VSvM6ZBu!r8k2MF@WrmUyswJY_kszl@l`2a_EBJBI=vO*#@=m z(viI-w*ovd@Th6%BeE2z^zhnnB5I#XOMMwRG6#FCb@Vd0;R6$>O0s%;Rf*YH<)hQ3tr=g|jfS_!I z6a%i(b~f9yw^#y6 z8aa@`^{q-CZ0bE!>^5U3Qd-QQ`{!pM-B*MQyQRQXTjHE1iDGuuO%FAWA78v%#4f{uHkR48&=R(DU|9i5r$V1{zloT?{-g0#DbauG%AMI0d$oe9w!tOwqX z{WR}PH#$vXPF{^1S#Zqp5gUMP;%SaAKve=pTo1abh|)*|RhL0bRKakN^Mx From bacc9e80af40ec2940fd9fb901647e682a998728 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 08:24:12 +0200 Subject: [PATCH 16/44] Update widget.js -Avoid too many notifications on connection loss. -Change non-connected icon color. --- apps/widbt/widget.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 246b8d65b..96656324e 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -1,12 +1,14 @@ WIDGETS.bluetooth = { area: "tr", width: 15, + warningEnabled: 1, draw: function() { g.reset(); if (NRF.getSecurityStatus().connected) { g.setColor((g.getBPP() > 8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); } else { - g.setColor(g.theme.dark ? "#666" : "#999"); + // g.setColor(g.theme.dark ? "#666" : "#999"); + g.setColor("#f00"); // red is easier to distinguish from blue } g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y); }, @@ -14,7 +16,11 @@ WIDGETS.bluetooth = { WIDGETS.bluetooth.draw(); }, diconnect: function() { - Bangle.buzz(1000, 1); // buzz on connection loss + if(warningEnabled == 1){ + Bangle.buzz(700, 1); // buzz on connection loss + warningEnabled = 0; + setTimeout('WIDGETS.bluetooth.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. + } WIDGETS.bluetooth.draw(); } }; From 9ad0704cd26a7c1ab56c8ce5573d0b724247c5c4 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 08:24:40 +0200 Subject: [PATCH 17/44] Update metadata.json Version update. --- apps/widbt/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/metadata.json b/apps/widbt/metadata.json index 29d960f33..6e705584e 100644 --- a/apps/widbt/metadata.json +++ b/apps/widbt/metadata.json @@ -1,7 +1,7 @@ { "id": "widbt", "name": "Bluetooth Widget", - "version": "0.10", + "version": "0.11", "description": "Show the current Bluetooth connection status in the top right of the clock", "icon": "widget.png", "type": "widget", From c8bc3f7254f0aa32ff80a6c176c1c8715401d7b0 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 08:25:36 +0200 Subject: [PATCH 18/44] Update ChangeLog 0.11: Avoid too many notifications. Change disconnected colour to red. --- apps/widbt/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/widbt/ChangeLog b/apps/widbt/ChangeLog index 04bff2b1a..b5a50210e 100644 --- a/apps/widbt/ChangeLog +++ b/apps/widbt/ChangeLog @@ -7,3 +7,4 @@ 0.08: Disable LCD on, on bluetooth status change 0.09: Vibrate on connection loss 0.10: Bug fix +0.11: Avoid too many notifications. Change disconnected colour to red. From 464643db38fb264ab0f0766fe6183e2dd5b12ebd Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 21:40:10 +0200 Subject: [PATCH 19/44] Update widget.js --- apps/widbt/widget.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 96656324e..b9035e9bb 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -15,10 +15,11 @@ WIDGETS.bluetooth = { connect: function() { WIDGETS.bluetooth.draw(); }, - diconnect: function() { + disconnect: function() { if(warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss - warningEnabled = 0; + E.showMessage("Connection\nlost.","Bluetooth"); + WIDGETS.bluetooth.warningEnabled = 0; setTimeout('WIDGETS.bluetooth.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. } WIDGETS.bluetooth.draw(); @@ -26,4 +27,4 @@ WIDGETS.bluetooth = { }; NRF.on('connect', WIDGETS.bluetooth.connect); -NRF.on('disconnect', WIDGETS.bluetooth.diconnect); +NRF.on('disconnect', WIDGETS.bluetooth.disconnect); From cd1294af40f8365e0fa62b6828a29c8c6ac2b988 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 21:53:55 +0200 Subject: [PATCH 20/44] Update widget.js --- apps/widbt/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index b9035e9bb..58b4d4b4a 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -16,7 +16,7 @@ WIDGETS.bluetooth = { WIDGETS.bluetooth.draw(); }, disconnect: function() { - if(warningEnabled == 1){ + if(WIDGETS.bluetooth.warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss E.showMessage("Connection\nlost.","Bluetooth"); WIDGETS.bluetooth.warningEnabled = 0; From a06c782edeb56ed540f8baf6b160b7f01e24d42f Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 21:57:52 +0200 Subject: [PATCH 21/44] Update settings.js -Option to unlock the watch, when a message arrives, so the buttons can directly be touched. --- apps/messages/settings.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/messages/settings.js b/apps/messages/settings.js index 99843602b..1e9605360 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -4,6 +4,7 @@ if (settings.vibrate===undefined) settings.vibrate="."; if (settings.repeat===undefined) settings.repeat=4; if (settings.unreadTimeout===undefined) settings.unreadTimeout=60; + if( settings.unlockWatch===undefined) settings.unlockWatch = false; settings.openMusic=!!settings.openMusic; settings.maxUnreadTimeout=240; return settings; @@ -49,6 +50,11 @@ format: v => v?/*LANG*/'Yes':/*LANG*/'No', onchange: v => updateSetting("openMusic", v) }, + /*LANG*/'Unlock Watch': { + value: !!settings().unlockWatch, + format: v => v?/*LANG*/'Yes':/*LANG*/'No', + onchange: v => updateSetting("unlockWatch", v) + }, }; E.showMenu(mainmenu); }) From af7f67205378c374d87fa0ab5bf890a81fed0ebf Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:08:16 +0200 Subject: [PATCH 22/44] Update lib.js Unlock the watch, to get touch access, if the user want that. --- apps/messages/lib.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index 0f514a73d..3e6dd2426 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -58,6 +58,7 @@ exports.pushMessage = function(event) { var loadMessages = Bangle.CLOCK || event.important; // first, buzz var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; + var unlockWatch = (require('Storage').readJSON('setting.json',1)||{}).unlockWatch; if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages) WIDGETS.messages.buzz(); // after a delay load the app, to ensure we have all the messages @@ -65,7 +66,12 @@ exports.pushMessage = function(event) { exports.messageTimeout = setTimeout(function() { exports.messageTimeout = undefined; // if we're in a clock or it's important, go straight to messages app - if (loadMessages) return load("messages.app.js"); + if (loadMessages){ + if(unlockWatch){ + Bangle.setLocked(false); + } + return load("messages.app.js"); + } if (!quiet && (!global.WIDGETS || !WIDGETS.messages)) return Bangle.buzz(); // no widgets - just buzz to let someone know WIDGETS.messages.show(); }, 500); From 29f93c01655b9026df946a1e4699bd4719696472 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:10:29 +0200 Subject: [PATCH 23/44] Update README.md --- apps/messages/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/messages/README.md b/apps/messages/README.md index 655c549b9..780d8e50b 100644 --- a/apps/messages/README.md +++ b/apps/messages/README.md @@ -20,6 +20,7 @@ to the clock where a ringing bell will be shown in the Widget bar. is chosen if there isn't much message text, but this specifies the smallest the font should get before it starts getting clipped. * `Auto-Open Music` - Should the app automatically open when the phone starts playing music? +* `Unlock Watch` - Should the app unlock the watch when a new message arrives, so you can touch the buttons at the bottom of the app? ## New Messages From 148e571769bd9cd5e2add8884e26f634a24c1fa6 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:12:19 +0200 Subject: [PATCH 24/44] Update ChangeLog 0.27: Option to auto-unlock the watch when a new message arrives --- apps/messages/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index c39e7d6fe..e263227e5 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -39,3 +39,4 @@ 0.24: Remove left-over debug statement 0.25: Fix widget memory usage issues if message received and watch repeatedly calls Bangle.drawWidgets (fix #1550) 0.26: Setting to auto-open music +0.27: Option to auto-unlock the watch when a new message arrives From febcdf4f536360fab3b6fba853a19eefc887c9f1 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:15:41 +0200 Subject: [PATCH 25/44] Update metadata.json --- apps/messages/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/messages/metadata.json b/apps/messages/metadata.json index a3d3f4179..4fb5a4045 100644 --- a/apps/messages/metadata.json +++ b/apps/messages/metadata.json @@ -1,7 +1,7 @@ { "id": "messages", "name": "Messages", - "version": "0.26", + "version": "0.27", "description": "App to display notifications from iOS and Gadgetbridge/Android", "icon": "app.png", "type": "app", From 14e8a93c81840788ee1e7264cb85356abdfc6d77 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:28:39 +0200 Subject: [PATCH 26/44] Update lib.js --- apps/messages/lib.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index 3e6dd2426..ba632cb46 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -58,18 +58,19 @@ exports.pushMessage = function(event) { var loadMessages = Bangle.CLOCK || event.important; // first, buzz var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; - var unlockWatch = (require('Storage').readJSON('setting.json',1)||{}).unlockWatch; - if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages) + var unlockWatch = !!((require('Storage').readJSON("messages.settings.json", true) || {}).unlockWatch; + if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); + if(unlockWatch){ + Bangle.setLocked(false); + } + } // after a delay load the app, to ensure we have all the messages if (exports.messageTimeout) clearTimeout(exports.messageTimeout); exports.messageTimeout = setTimeout(function() { exports.messageTimeout = undefined; // if we're in a clock or it's important, go straight to messages app if (loadMessages){ - if(unlockWatch){ - Bangle.setLocked(false); - } return load("messages.app.js"); } if (!quiet && (!global.WIDGETS || !WIDGETS.messages)) return Bangle.buzz(); // no widgets - just buzz to let someone know From b5010b41098e862d0f53f42d4c0c1ee32f12683c Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:33:52 +0200 Subject: [PATCH 27/44] Update lib.js --- apps/messages/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index ba632cb46..f7489c276 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -58,7 +58,7 @@ exports.pushMessage = function(event) { var loadMessages = Bangle.CLOCK || event.important; // first, buzz var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; - var unlockWatch = !!((require('Storage').readJSON("messages.settings.json", true) || {}).unlockWatch; + var unlockWatch = !!((require('Storage').readJSON("messages.settings.json", true) || {}).unlockWatch); if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); if(unlockWatch){ From a011858cab9218642bf43344dd3d389b83c203c1 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:43:46 +0200 Subject: [PATCH 28/44] Update lib.js --- apps/messages/lib.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index f7489c276..30ffe0a95 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -57,11 +57,11 @@ exports.pushMessage = function(event) { // otherwise load messages/show widget var loadMessages = Bangle.CLOCK || event.important; // first, buzz - var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; - var unlockWatch = !!((require('Storage').readJSON("messages.settings.json", true) || {}).unlockWatch); + var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; + var unlockWatch = (require('Storage').readJSON('setting.json',1)||{}).unlockWatch; if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); - if(unlockWatch){ + if(!!unlockWatch){ Bangle.setLocked(false); } } From cf53626c5957e7eb08f9080964b28560b11b0fbd Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 22:45:41 +0200 Subject: [PATCH 29/44] Update lib.js --- apps/messages/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index 30ffe0a95..fa607b268 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -61,7 +61,7 @@ exports.pushMessage = function(event) { var unlockWatch = (require('Storage').readJSON('setting.json',1)||{}).unlockWatch; if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); - if(!!unlockWatch){ + if(unlockWatch != false){ Bangle.setLocked(false); } } From 284da20f01b3425b6238c558de8761433ddb01aa Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Mon, 28 Mar 2022 23:14:00 +0200 Subject: [PATCH 30/44] Update ChangeLog --- apps/messages/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 91d2bb0bf..7815cc3d1 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -40,3 +40,4 @@ 0.25: Fix widget memory usage issues if message received and watch repeatedly calls Bangle.drawWidgets (fix #1550) 0.26: Setting to auto-open music 0.27: Add 'mark all read' option to popup menu (fix #1624) + Option to auto-unlock the watch when a new message arrives From deb18b0ef5cc8138f17a00a356daa38f64fb67db Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 29 Mar 2022 07:15:05 +0200 Subject: [PATCH 31/44] Update widget.js Reload the clock after the "connection lost" message was shown. --- apps/widbt/widget.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 58b4d4b4a..5d752b575 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -18,7 +18,10 @@ WIDGETS.bluetooth = { disconnect: function() { if(WIDGETS.bluetooth.warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss - E.showMessage("Connection\nlost.","Bluetooth"); + + E.showMessage(/*LANG*/"Connection\nlost.","Bluetooth"); + setInterval(()=>{load();}, 3000); // clear message + WIDGETS.bluetooth.warningEnabled = 0; setTimeout('WIDGETS.bluetooth.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. } From be3d00e9746528d82564d9d4f3be78d4e216d01b Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 29 Mar 2022 07:25:56 +0200 Subject: [PATCH 32/44] Update widget.js --- apps/widbt/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 5d752b575..6fa7f3b7a 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -19,7 +19,7 @@ WIDGETS.bluetooth = { if(WIDGETS.bluetooth.warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss - E.showMessage(/*LANG*/"Connection\nlost.","Bluetooth"); + E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); setInterval(()=>{load();}, 3000); // clear message WIDGETS.bluetooth.warningEnabled = 0; From 5ff8ab62a2c7344eb5abaf6b0f4b92f68915b9c0 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 29 Mar 2022 07:44:41 +0200 Subject: [PATCH 33/44] Update settings.js --- apps/messages/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/messages/settings.js b/apps/messages/settings.js index 1e9605360..589d603da 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -4,7 +4,7 @@ if (settings.vibrate===undefined) settings.vibrate="."; if (settings.repeat===undefined) settings.repeat=4; if (settings.unreadTimeout===undefined) settings.unreadTimeout=60; - if( settings.unlockWatch===undefined) settings.unlockWatch = false; + settings.unlockWatch=!!settings.unlockWatch; settings.openMusic=!!settings.openMusic; settings.maxUnreadTimeout=240; return settings; From 30c946ceaa6d767874c74c5b5321c9790dd51b4c Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 29 Mar 2022 07:54:18 +0200 Subject: [PATCH 34/44] Update lib.js --- apps/messages/lib.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index fa607b268..d7c95570b 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -63,6 +63,7 @@ exports.pushMessage = function(event) { WIDGETS.messages.buzz(); if(unlockWatch != false){ Bangle.setLocked(false); + Bangle.setLCDPower(1); // turn screen on } } // after a delay load the app, to ensure we have all the messages From 8df137b21ddfa41cebd26f628b4b6413c34c593b Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Tue, 29 Mar 2022 14:32:33 +0200 Subject: [PATCH 35/44] widget 'widbt_notify' New Widget 'widbt_notify' is a bluetooth widget, that vibrates, when the connection gets lost. --- apps/widbt_notify/ChangeLog | 10 ++++++++++ apps/widbt_notify/metadata.json | 13 +++++++++++++ apps/widbt_notify/widget.js | 33 ++++++++++++++++++++++++++++++++ apps/widbt_notify/widget.png | Bin 0 -> 1119 bytes 4 files changed, 56 insertions(+) create mode 100644 apps/widbt_notify/ChangeLog create mode 100644 apps/widbt_notify/metadata.json create mode 100644 apps/widbt_notify/widget.js create mode 100644 apps/widbt_notify/widget.png diff --git a/apps/widbt_notify/ChangeLog b/apps/widbt_notify/ChangeLog new file mode 100644 index 000000000..b5a50210e --- /dev/null +++ b/apps/widbt_notify/ChangeLog @@ -0,0 +1,10 @@ +0.02: Tweaks for variable size widget system +0.03: Ensure redrawing works with variable size widget system +0.04: Fix automatic update of Bluetooth connection status +0.05: Make Bluetooth widget thinner, and when on a bright theme use light grey for disabled color +0.06: Tweaking colors for dark/light themes and low bpp screens +0.07: Memory usage improvements +0.08: Disable LCD on, on bluetooth status change +0.09: Vibrate on connection loss +0.10: Bug fix +0.11: Avoid too many notifications. Change disconnected colour to red. diff --git a/apps/widbt_notify/metadata.json b/apps/widbt_notify/metadata.json new file mode 100644 index 000000000..0b795c2c8 --- /dev/null +++ b/apps/widbt_notify/metadata.json @@ -0,0 +1,13 @@ +{ + "id": "widbt_notify", + "name": "Bluetooth Widget with Notification", + "version": "0.11", + "description": "Show the current Bluetooth connection status in the top right of the clock and vibrate when disconnected.", + "icon": "widget.png", + "type": "widget", + "tags": "widget,bluetooth", + "supports": ["BANGLEJS","BANGLEJS2"], + "storage": [ + {"name":"widbt_notify.wid.js","url":"widget.js"} + ] +} diff --git a/apps/widbt_notify/widget.js b/apps/widbt_notify/widget.js new file mode 100644 index 000000000..04f91a698 --- /dev/null +++ b/apps/widbt_notify/widget.js @@ -0,0 +1,33 @@ +WIDGETS.bluetooth_notify = { + area: "tr", + width: 15, + warningEnabled: 1, + draw: function() { + g.reset(); + if (NRF.getSecurityStatus().connected) { + g.setColor((g.getBPP() > 8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); + } else { + // g.setColor(g.theme.dark ? "#666" : "#999"); + g.setColor("#f00"); // red is easier to distinguish from blue + } + g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y); + }, + connect: function() { + WIDGETS.bluetooth_notify.draw(); + }, + disconnect: function() { + if(WIDGETS.bluetooth_notify.warningEnabled == 1){ + Bangle.buzz(700, 1); // buzz on connection loss + + E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); + setInterval(()=>{load();}, 3000); // clear message + + WIDGETS.bluetooth_notify.warningEnabled = 0; + setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. + } + WIDGETS.bluetooth_notify.draw(); + } +}; + +NRF.on('connect', WIDGETS.bluetooth_notify.connect); +NRF.on('disconnect', WIDGETS.bluetooth_notify.disconnect); diff --git a/apps/widbt_notify/widget.png b/apps/widbt_notify/widget.png new file mode 100644 index 0000000000000000000000000000000000000000..1a884a62c1029ae43243f8f58ef9dc3a3327e437 GIT binary patch literal 1119 zcmV-l1fctgP)cE5(396`@Dz$wLqIPzYppJ*B(brZX|I zHChYW;Hm1lL~9feUi^283bm!!Ka0DG`v(zZvk8h?W%2@c?XT zES*ZPJU3a{7h{cB0RRrPTh=dGr*a^!0&xQX?DMczGEQwQ4)Y`c0EQJR_Oa?r)W%5x z0HhI_x1HK2pc0j7k^sKW*iQXQ=2YX6D9n-q_%qO+(!1;R%(3!ggBm9SkZ!j|fYm^E zR%O?(qZ5_=gLo$b@WZ#`wXJ`4=)@t~Y>Yv)Y!7y;OB zeO8rs?l*_RK!7NCKLhRU0}||esEhzCyx)O;I=Y5XtC(@B$NTljy45^tT?SHJ10ruX zOS$(<@@!=?P@`0+S)vnkL!=bB)DOg{Q*}L+GO)XAK;&$g@DSo22n#XlR9!)?07D(! zDxz;SOSunBbNCAVm!5U2c~9jVx@WU3=u3)pJ!ur3cu;sm-)NQ!pM}i;0{{TnZpA^Z ztASvff%b#?JdoF$<=hv8)Q159pyx{LBoBD4SyIzhb(HlW;>}!J+1=AqCDO_A6&XN}=e)0!pcibn z_HtD9d_@BAknp}zDCb9=>MK#y^fmCZ_8GoYkv>KTT7e$nHy?0mXP*UpX*>1PgVgRc z3#Fdn#d~2}5mATky^{qxZ#%U!Ve5AonQN!;&C-!_@cJGbKmk6^xYakqWbkDSU>e?6 zF9=onXw<2mHO=A62q0{DUp*iYB(+@Ja7a-n2aQU$C-1do)^M)j_l7Z`m-DHf;N2WNgeIsEr6@kFmJ z8_YbwGn3bL?QPY+LOBr_TDRcEMmfJ|;s=HR0IQ!ry9xAti1(G5Y&@#1^&${_&Hfi+ z9c`2jUpMuHhg{we{KebpwXs3NLqaRiAr)b6sg!$n>kZxDN)lj0k<-mm?qZatNdeqJ z)Lky+8&Ml40dUjvB)_tlzY&Ld+&A&{bh~wEWib~^c!+ZagoS&X-t=l^d_A@r#J2*U lKABp3ezkHW*6{xc{R@3@kib`1LqGrk002ovPDHLkV1l684mkh- literal 0 HcmV?d00001 From 9c86c483980ff76427675fec0050c437a5779b90 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 07:17:52 +0200 Subject: [PATCH 36/44] Update widget.js --- apps/widbt_notify/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt_notify/widget.js b/apps/widbt_notify/widget.js index 04f91a698..f1e4d372f 100644 --- a/apps/widbt_notify/widget.js +++ b/apps/widbt_notify/widget.js @@ -20,7 +20,7 @@ WIDGETS.bluetooth_notify = { Bangle.buzz(700, 1); // buzz on connection loss E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); - setInterval(()=>{load();}, 3000); // clear message + // setInterval(()=>{load();}, 3000); // clear message - this will reload the widget, resetting 'warningEnabled'. WIDGETS.bluetooth_notify.warningEnabled = 0; setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. From a59579476b914f03cb397c0cedb5f51d25476cfc Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 07:19:58 +0200 Subject: [PATCH 37/44] Revert "Update widget.js" This reverts commit be3d00e9746528d82564d9d4f3be78d4e216d01b. --- apps/widbt/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 6fa7f3b7a..5d752b575 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -19,7 +19,7 @@ WIDGETS.bluetooth = { if(WIDGETS.bluetooth.warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss - E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); + E.showMessage(/*LANG*/"Connection\nlost.","Bluetooth"); setInterval(()=>{load();}, 3000); // clear message WIDGETS.bluetooth.warningEnabled = 0; From 3986899c8b305b5dbff421d0cb43d65602e9d338 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 07:20:11 +0200 Subject: [PATCH 38/44] Revert "Update widget.js" This reverts commit deb18b0ef5cc8138f17a00a356daa38f64fb67db. --- apps/widbt/widget.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 5d752b575..58b4d4b4a 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -18,10 +18,7 @@ WIDGETS.bluetooth = { disconnect: function() { if(WIDGETS.bluetooth.warningEnabled == 1){ Bangle.buzz(700, 1); // buzz on connection loss - - E.showMessage(/*LANG*/"Connection\nlost.","Bluetooth"); - setInterval(()=>{load();}, 3000); // clear message - + E.showMessage("Connection\nlost.","Bluetooth"); WIDGETS.bluetooth.warningEnabled = 0; setTimeout('WIDGETS.bluetooth.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. } From 85a0c4100d954793ec5581840da16e07a64c5500 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 07:25:49 +0200 Subject: [PATCH 39/44] Restored widbt I restored the widbt code and made a separate widget widbt_notify. --- apps/widbt/ChangeLog | 3 --- apps/widbt/metadata.json | 2 +- apps/widbt/widget.js | 42 ++++++++++++---------------------------- 3 files changed, 13 insertions(+), 34 deletions(-) diff --git a/apps/widbt/ChangeLog b/apps/widbt/ChangeLog index b5a50210e..4c2132122 100644 --- a/apps/widbt/ChangeLog +++ b/apps/widbt/ChangeLog @@ -5,6 +5,3 @@ 0.06: Tweaking colors for dark/light themes and low bpp screens 0.07: Memory usage improvements 0.08: Disable LCD on, on bluetooth status change -0.09: Vibrate on connection loss -0.10: Bug fix -0.11: Avoid too many notifications. Change disconnected colour to red. diff --git a/apps/widbt/metadata.json b/apps/widbt/metadata.json index 6e705584e..e2d5082a5 100644 --- a/apps/widbt/metadata.json +++ b/apps/widbt/metadata.json @@ -1,7 +1,7 @@ { "id": "widbt", "name": "Bluetooth Widget", - "version": "0.11", + "version": "0.08", "description": "Show the current Bluetooth connection status in the top right of the clock", "icon": "widget.png", "type": "widget", diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index 58b4d4b4a..c7ef8c0ad 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -1,30 +1,12 @@ -WIDGETS.bluetooth = { - area: "tr", - width: 15, - warningEnabled: 1, - draw: function() { - g.reset(); - if (NRF.getSecurityStatus().connected) { - g.setColor((g.getBPP() > 8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); - } else { - // g.setColor(g.theme.dark ? "#666" : "#999"); - g.setColor("#f00"); // red is easier to distinguish from blue - } - g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y); - }, - connect: function() { - WIDGETS.bluetooth.draw(); - }, - disconnect: function() { - if(WIDGETS.bluetooth.warningEnabled == 1){ - Bangle.buzz(700, 1); // buzz on connection loss - E.showMessage("Connection\nlost.","Bluetooth"); - WIDGETS.bluetooth.warningEnabled = 0; - setTimeout('WIDGETS.bluetooth.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. - } - WIDGETS.bluetooth.draw(); - } -}; - -NRF.on('connect', WIDGETS.bluetooth.connect); -NRF.on('disconnect', WIDGETS.bluetooth.disconnect); +WIDGETS["bluetooth"]={area:"tr",width:15,draw:function() { + g.reset(); + if (NRF.getSecurityStatus().connected) + g.setColor((g.getBPP()>8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); + else + g.setColor(g.theme.dark ? "#666" : "#999"); + g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="),2+this.x,2+this.y); +},changed:function() { + WIDGETS["bluetooth"].draw(); +}}; +NRF.on('connect',WIDGETS["bluetooth"].changed); +NRF.on('disconnect',WIDGETS["bluetooth"].changed); From b5e66340045b3d6f6c32c3d912921917f69ef731 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 10:42:00 +0200 Subject: [PATCH 40/44] bugfix settings.json Read settings from the wron file. --- apps/messages/lib.js | 2 +- apps/widbt_notify/widget.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index d7c95570b..c517fde73 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -58,7 +58,7 @@ exports.pushMessage = function(event) { var loadMessages = Bangle.CLOCK || event.important; // first, buzz var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; - var unlockWatch = (require('Storage').readJSON('setting.json',1)||{}).unlockWatch; + var unlockWatch = (require('Storage').readJSON('messages.setting.json',1)||{}).unlockWatch; if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); if(unlockWatch != false){ diff --git a/apps/widbt_notify/widget.js b/apps/widbt_notify/widget.js index f1e4d372f..d6bad5dc9 100644 --- a/apps/widbt_notify/widget.js +++ b/apps/widbt_notify/widget.js @@ -17,13 +17,16 @@ WIDGETS.bluetooth_notify = { }, disconnect: function() { if(WIDGETS.bluetooth_notify.warningEnabled == 1){ - Bangle.buzz(700, 1); // buzz on connection loss - E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); // setInterval(()=>{load();}, 3000); // clear message - this will reload the widget, resetting 'warningEnabled'. WIDGETS.bluetooth_notify.warningEnabled = 0; setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. + + var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; + if(!quiet){ + Bangle.buzz(700, 1); // buzz on connection loss + } } WIDGETS.bluetooth_notify.draw(); } From 5254f20bb660d0ae2737ad720c1b9dbb5d18beed Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 17:43:46 +0200 Subject: [PATCH 41/44] Redrawing the current clock, if a 'draw()' function exists. --- apps/widbt_notify/widget.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/widbt_notify/widget.js b/apps/widbt_notify/widget.js index d6bad5dc9..0c0a53bba 100644 --- a/apps/widbt_notify/widget.js +++ b/apps/widbt_notify/widget.js @@ -12,16 +12,26 @@ WIDGETS.bluetooth_notify = { } g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y); }, + + redrawCurrentApp: function(){ + if(typeof(draw)=='function'){ + draw(); + }else{ + load(); // fallback. This might reset some variables + } + }, + connect: function() { WIDGETS.bluetooth_notify.draw(); }, + disconnect: function() { if(WIDGETS.bluetooth_notify.warningEnabled == 1){ E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); - // setInterval(()=>{load();}, 3000); // clear message - this will reload the widget, resetting 'warningEnabled'. + setInterval(WIDGETS.bluetooth_notify.redrawCurrentApp()=>{;}, 3000); // clear message WIDGETS.bluetooth_notify.warningEnabled = 0; - setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // re-notify only after 30 seconds. + setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // don't buzz for the next 30 seconds. var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; if(!quiet){ From 50e38126fba23c3893e3b62036f4be87b132b24c Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 17:45:58 +0200 Subject: [PATCH 42/44] typos --- apps/widbt_notify/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbt_notify/widget.js b/apps/widbt_notify/widget.js index 0c0a53bba..47765f3d0 100644 --- a/apps/widbt_notify/widget.js +++ b/apps/widbt_notify/widget.js @@ -28,7 +28,7 @@ WIDGETS.bluetooth_notify = { disconnect: function() { if(WIDGETS.bluetooth_notify.warningEnabled == 1){ E.showMessage(/*LANG*/'Connection\nlost.', 'Bluetooth'); - setInterval(WIDGETS.bluetooth_notify.redrawCurrentApp()=>{;}, 3000); // clear message + setInterval(()=>{WIDGETS.bluetooth_notify.redrawCurrentApp();}, 3000); // clear message - this will reload the widget, resetting 'warningEnabled'. WIDGETS.bluetooth_notify.warningEnabled = 0; setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', 30000); // don't buzz for the next 30 seconds. From 2e05c57259eb4dae4568912c4a84c3bb818a3354 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Wed, 30 Mar 2022 18:03:54 +0200 Subject: [PATCH 43/44] typo fixed --- apps/messages/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/messages/lib.js b/apps/messages/lib.js index c517fde73..7d49d4c64 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -58,7 +58,7 @@ exports.pushMessage = function(event) { var loadMessages = Bangle.CLOCK || event.important; // first, buzz var quiet = (require('Storage').readJSON('setting.json',1)||{}).quiet; - var unlockWatch = (require('Storage').readJSON('messages.setting.json',1)||{}).unlockWatch; + var unlockWatch = (require('Storage').readJSON('messages.settings.json',1)||{}).unlockWatch; if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ WIDGETS.messages.buzz(); if(unlockWatch != false){ From 1642dbc93a937a8f73f05f4fa3b9c824c6bafb36 Mon Sep 17 00:00:00 2001 From: KungPhoo Date: Thu, 31 Mar 2022 07:37:43 +0200 Subject: [PATCH 44/44] reset graphics before drawing --- apps/glbasic/glbasic.app.js | 237 ++++++++++++++++++------------------ 1 file changed, 119 insertions(+), 118 deletions(-) diff --git a/apps/glbasic/glbasic.app.js b/apps/glbasic/glbasic.app.js index b2b6f45ed..ff7837ada 100644 --- a/apps/glbasic/glbasic.app.js +++ b/apps/glbasic/glbasic.app.js @@ -1,176 +1,177 @@ -Graphics.prototype.setFontLECO1976Regular42 = function(scale) { - // Actual height 42 (41 - 0) - g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60 + (scale << 8) + (1 << 16)); +Graphics.prototype.setFontLECO1976Regular42 = function (scale) { + // Actual height 42 (41 - 0) + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAA/AAAAAAAAH/AAAAAAAA//AAAAAAAP//AAAAAAB///AAAAAAP///AAAAAB////AAAAAf////AAAAD////4AAAAf////AAAAH////4AAAA////+AAAAA////wAAAAA///+AAAAAA///gAAAAAA//8AAAAAAA//gAAAAAAA/4AAAAAAAA/AAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAH/AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA//h////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////gD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4AAAH/AAA/4B/gH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAA////wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAAAAB/wAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA////x//AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/4B////AAA/wB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA//gAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA/4AAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA////wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA/4B/wH/AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAA///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAP+AAH/AAAAH+AAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 46, atob("ERkmHyYmJiYmJCYmEQ=="), 60 + (scale << 8) + (1 << 16)); }; -Graphics.prototype.setFontLECO1976Regular22 = function(scale) { - // Actual height 22 (21 - 0) - g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22 + (scale << 8) + (1 << 16)); +Graphics.prototype.setFontLECO1976Regular22 = function (scale) { + // Actual height 22 (21 - 0) + g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nA/+cD/5wP/nAAAAAAAAPwAA/gAD+AAPwAAAAAD+AAP4AA/gAAAAAAAAAAAAAcOAP//A//8D//wP//AHDgAcOAP//A//8D//wP//AHDgAAAAAAAAH/jgf+OB/44H/jj8OP/w4//Dj/8OPxw/4HD/gcP+Bw/4AAAAAAAP+AA/8AD/wQOHHA4c8D//wP/8A//gAD4AAfAAH/8A//wP//A84cDjhwIP/AA/8AB/wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8ABwAAAAAAAAD8AAP4AA/gAD8AAAAAAAAAAAEAAD+AB//A///v/D//gB/wABwAAAAAADgAA/wAf/4P8///wf/4AP8AAOAAAAAAAAAyAAHcAAPwAD/gAP/AA/8AA/AAH8AAMwAAAAAAAAAAAAADgAAOAAA4AAf8AD/wAP/AA/8AAOAAA4AADgAAAAAAAAAAD8AAfwAB/AAD8AAAAAAAADgAAOAAA4AADgAAOAAA4AADgAAAAAAAAAADgAAOAAA4AADgAAAAAAAAABwAB/AA/8A//gP/gA/wADwAAIAAAAAAD//wP//A//8D//wOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA4AcDgBwOAHA//8D//wP//A//8AABwAAHAAAcAAAAAAAA+f8D5/wPn/A+f8DhxwOHHA4ccDhxwP/HA/8cD/xwP/HAAAAAAAAOAHA4AcDhxwOHHA4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/wAP/AA/8AD/wAAHAAAcAABwAAHAA//8D//wP//A//8AAAAAAAA/98D/3wP/fA/98DhxwOHHA4ccDhxwOH/A4f8Dh/wOH/AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccDh/wOH/A4f8Dh/wAAAAAAAD4AAPgAA+AADgAAOAAA4AADgAAP//A//8D//wP//AAAAAAAAP//A//8D//wP//A4ccDhxwOHHA4ccD//wP//A//8D//wAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA//8D//wP//A//8AAAAAAAAOA4A4DgDgOAOA4AAAAAAAAOA/A4H8DgfwOA/AAAAAAAAB4AAPwAA/AAD8AAf4ABzgAPPAA8cAHh4AAAAAAAAAAAAHHAAccABxwAHHAAccABxwAHHAAccABxwAHHAAAAAAAAAOHAA4cADzwAPPAAf4AB/gAD8AAPwAAeAAB4AAAAAAAAA+AAD4AAPgAA+ecDh9wOH3A4fcDhwAP/AA/8AD/wAP/AAAAAAAAAP//4///j//+P//44ADjn/OOf845/zjnHOP8c4//zj//OP/84AAAAAAAP//A//8D//wP//A4cADhwAOHAA4cAD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA//8D//wP9/A/j8AAAAAAAA//8D//wP//A//8DgBwOAHA4AcDgBwOAHA4AcDgBwOAHAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA8A8D//wH/+AP/wAf+AAAAAAAAD//wP//A//8D//wOHHA4ccDhxwOHHA4ccDhxwOAHA4AcAAAAAAAA//8D//wP//A//8DhwAOHAA4cADhwAOHAA4cADgAAOAAAAAAD//wP//A//8D//wOAHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA//8D//wP//A//8ABwAAHAAAcAABwAP//A//8D//wP//AAAAAAAAP//A//8D//wP//AAAAAAAAOAHA4AcDgBwOAHA4AcDgBwOAHA//8D//wP//A//8AAAAAAAA//8D//wP//A//8AHwAA/AAP8AB/wAPn/A8f8DB/wIH/AAAAAAAAP//A//8D//wP//AAAcAABwAAHAAAcAABwAAHAAAAAAAAP//A//8D//wP//Af8AAP+AAH/AAD8AAHwAD/AB/wAf8AP+AA//8D//wP//AAAAAAAAP//A//8D//wP//AfwAAfwAAfwAAfwAAfwP//A//8D//wAAAAAAAAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//wP//A//8D//wAAAAAAAD//wP//A//8D//wOHAA4cADhwAOHAA/8AD/wAP/AA/8AAAAAP//A//8D//wP//A4AcDgBwOAHA4AcD//+P//4///j//+AAA4AADgAAAP//A//8D//wP//A4eADh+AOH8A4f4D/3wP/HA/8MD/wQAAAAAAAD/xwP/HA/8cD/xwOHHA4ccDhxwOHHA4f8Dh/wOH/A4f8AAAAAAAA4AADgAAOAAA//8D//wP//A//8DgAAOAAA4AADgAAAAAA//8D//wP//A//8AABwAAHAAAcAABwP//A//8D//wP//AAAADAAAPgAA/wAD/4AB/8AA/8AAfwAB/AA/8Af+AP/AA/wAD4AAMAAA4AAD+AAP/gA//8AH/wAB/AAf8Af/wP/4A/4AD/gAP/4AH/8AB/wAB/AB/8D//wP/gA/gADgAAIABA4AcDwDwPw/Afn4Af+AA/wAD/AA//AH5+A/D8DwDwOAHAgAEAAAAP/AA/8AD/wAP/AAAf8AB/wAH/AAf8D/wAP/AA/8AD/wAAAAAAAADh/wOH/A4f8Dh/wOHHA4ccDhxwOHHA/8cD/xwP/HA/8cAAAAAAAAf//9///3///f//9wAA3AADcAAMAAAOAAA/gAD/wAH/8AB/8AA/wAAPAAAEAAAAHAADcAANwAB3///f//9///wAA"), 32, atob("BwYLDg4UDwYJCQwMBgkGCQ4MDg4ODg4NDg4GBgwMDA4PDg4ODg4NDg4GDQ4MEg8ODQ8ODgwODhQODg4ICQg="), 22 + (scale << 8) + (1 << 16)); }; require("Font7x11Numeric7Seg").add(Graphics); -//the following 2 sections are used from waveclk to schedule minutely updates +// the following 2 sections are used from waveclk to schedule minutely updates // timeout used to update every minute var drawTimeout; // schedule a draw for the next minute function queueDraw() { - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function() { - drawTimeout = undefined; - draw(); - }, 60000 - (Date.now() % 60000)); + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function () { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); } function drawBackground() { - g.setBgColor(0, 0, 0); - g.setColor(1, 1, 1); - g.clear(); + g.setBgColor(0, 0, 0); + g.setColor(1, 1, 1); + g.clear(); } function digit(num) { - return String.fromCharCode(num + 48); + return String.fromCharCode(num + 48); } function timeString(h, m) { - return digit(h / 10) + digit(h % 10) + ":" + digit(m / 10) + digit(m % 10); + return digit(h / 10) + digit(h % 10) + ":" + digit(m / 10) + digit(m % 10); } function dayString(w) { - return digit(w / 10) + digit(w % 10); + return digit(w / 10) + digit(w % 10); } function getSteps() { - if (WIDGETS.wpedom !== undefined) { - return WIDGETS.wpedom.getSteps(); - } - return '????'; + if (WIDGETS.wpedom !== undefined) { + return WIDGETS.wpedom.getSteps(); + } + return '????'; } /** * draws calender week view (-1,0,1) for given date */ function drawCal() { - d = /*this.date ? this.date : */ new Date(); + d = /*this.date ? this.date : */ new Date(); - const DAY_NAME_FONT_SIZE = 10; - const CAL_Y = g.getHeight() - 44; // Bangle.appRect.y+this.DATE_FONT_SIZE()+10+this.TIME_FONT_SIZE()+3; - const CAL_AREA_H = 44; // g.getHeight()-CAL_Y+24; //+24: top widgtes only - const CELL_W = g.getWidth() / 7; //cell width - const CELL_H = (CAL_AREA_H - DAY_NAME_FONT_SIZE) / 3; //cell heigth - const DAY_NUM_FONT_SIZE = Math.min(CELL_H + 3, 15); //size down, max 15 + const DAY_NAME_FONT_SIZE = 10; + const CAL_Y = g.getHeight() - 44; // Bangle.appRect.y+this.DATE_FONT_SIZE()+10+this.TIME_FONT_SIZE()+3; + const CAL_AREA_H = 44; // g.getHeight()-CAL_Y+24; //+24: top widgtes only + const CELL_W = g.getWidth() / 7; //cell width + const CELL_H = (CAL_AREA_H - DAY_NAME_FONT_SIZE) / 3; //cell heigth + const DAY_NUM_FONT_SIZE = Math.min(CELL_H + 3, 15); //size down, max 15 - const wdStrt = 1; + const wdStrt = 1; - const ABR_DAY = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - const IS_SUNDAY = [1, 0, 0, 0, 0, 1, 1]; // what days are sunday? - const nrgb = ["#000", "#FFF", "#F00", "#0F0", "#00F", "#FF0"]; //fg, r ,g , b - const suClr = 5; // sunday color fg - const tdyMrkClr = 3; // today bk - const tdyNumClr = 0; // today fg + const ABR_DAY = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const IS_SUNDAY = [1, 0, 0, 0, 0, 1, 1]; // what days are sunday? + const nrgb = ["#000", "#FFF", "#F00", "#0F0", "#00F", "#FF0"]; //fg, r ,g , b + const suClr = 5; // sunday color fg + const tdyMrkClr = 3; // today bk + const tdyNumClr = 0; // today fg - g.setFont("Vector", DAY_NAME_FONT_SIZE+3); - g.setColor(nrgb[1]); - g.setFontAlign(-1, -1); - // g.clearRect(Bangle.appRect.x, CAL_Y, Bangle.appRect.x2, CAL_Y+CAL_AREA_H); + g.setFont("Vector", DAY_NAME_FONT_SIZE + 3); + g.setColor(nrgb[1]); + g.setFontAlign(-1, -1); + // g.clearRect(Bangle.appRect.x, CAL_Y, Bangle.appRect.x2, CAL_Y+CAL_AREA_H); - //draw grid & Headline - const dNames = ABR_DAY.map((a) => a.length <= 2 ? a : a.substr(0, 2)); //force shrt 2 - for (var dNo = 0; dNo < dNames.length; dNo++) { - const dIdx = wdStrt >= 0 ? ((wdStrt + dNo) % 7) : ((dNo + d.getDay() + 4) % 7); - const dName = dNames[dIdx]; - // if(dNo>0) { g.drawLine(dNo*CELL_W, CAL_Y, dNo*CELL_W, CAL_Y+CAL_AREA_H-1);} + //draw grid & Headline + const dNames = ABR_DAY.map((a) => a.length <= 2 ? a : a.substr(0, 2)); //force shrt 2 + for (var dNo = 0; dNo < dNames.length; dNo++) { + const dIdx = wdStrt >= 0 ? ((wdStrt + dNo) % 7) : ((dNo + d.getDay() + 4) % 7); + const dName = dNames[dIdx]; + // if(dNo>0) { g.drawLine(dNo*CELL_W, CAL_Y, dNo*CELL_W, CAL_Y+CAL_AREA_H-1);} - var colTx = 0; - var colBk = 1; - if (IS_SUNDAY[dIdx]) { - colBk = suClr; + var colTx = 0; + var colBk = 1; + if (IS_SUNDAY[dIdx]) { + colBk = suClr; + } + + g.setColor(nrgb[colBk]); + g.fillRect(dNo * CELL_W, CAL_Y, dNo * CELL_W + CELL_W, CAL_Y + DAY_NAME_FONT_SIZE - 1); + g.setColor(nrgb[colTx]); + g.drawString(dName, dNo * CELL_W + (CELL_W - g.stringWidth(dName)) / 2 + 2, CAL_Y - 1); + // g.setColor(nrgb[clTxt]); } + g.setColor(nrgb[1]); + var nextY = CAL_Y + DAY_NAME_FONT_SIZE; - g.setColor(nrgb[colBk]); - g.fillRect(dNo * CELL_W, CAL_Y, dNo * CELL_W + CELL_W, CAL_Y + DAY_NAME_FONT_SIZE-1); - g.setColor(nrgb[colTx]); - g.drawString(dName, dNo * CELL_W + (CELL_W - g.stringWidth(dName)) / 2 + 2, CAL_Y-1); - // g.setColor(nrgb[clTxt]); - } - g.setColor(nrgb[1]); - var nextY = CAL_Y + DAY_NAME_FONT_SIZE; + // horizontal lines + // for(i=0; i<3; i++){ const y=nextY+i*CELL_H; g.drawLine(Bangle.appRect.x, y, Bangle.appRect.x2, y); } - // horizontal lines - // for(i=0; i<3; i++){ const y=nextY+i*CELL_H; g.drawLine(Bangle.appRect.x, y, Bangle.appRect.x2, y); } + g.setFont("Vector", DAY_NUM_FONT_SIZE); - g.setFont("Vector", DAY_NUM_FONT_SIZE); + g.setFont("7x11Numeric7Seg", 1); - g.setFont("7x11Numeric7Seg", 1); - - //write days - const tdyDate = d.getDate(); - const days = wdStrt >= 0 ? 7 + ((7 + d.getDay() - wdStrt) % 7) : 10; //start day (week before=7 days + days in this week realtive to week start) or fixed 7+3 days - var rD = new Date(d.getTime()); - rD.setDate(rD.getDate() - days); - var rDate = rD.getDate(); - for (var y = 0; y < 3; y++) { - for (var x = 0; x < dNames.length; x++) { - if (rDate === tdyDate) { //today - g.setColor(nrgb[tdyMrkClr]); //today marker color or fg color + //write days + const tdyDate = d.getDate(); + const days = wdStrt >= 0 ? 7 + ((7 + d.getDay() - wdStrt) % 7) : 10; //start day (week before=7 days + days in this week realtive to week start) or fixed 7+3 days + var rD = new Date(d.getTime()); + rD.setDate(rD.getDate() - days); + var rDate = rD.getDate(); + for (var y = 0; y < 3; y++) { + for (var x = 0; x < dNames.length; x++) { + if (rDate === tdyDate) { //today + g.setColor(nrgb[tdyMrkClr]); //today marker color or fg color - // rectangle - g.fillRect(x * CELL_W, nextY + CELL_H-1, x * CELL_W + CELL_W, nextY + CELL_H + CELL_H - 1); - g.setColor(nrgb[tdyNumClr]); //today color or fg color + // rectangle + g.fillRect(x * CELL_W, nextY + CELL_H - 1, x * CELL_W + CELL_W, nextY + CELL_H + CELL_H - 1); + g.setColor(nrgb[tdyNumClr]); //today color or fg color - // simulate "bold" - g.drawString(rDate, 1+ x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); + // simulate "bold" + g.drawString(rDate, 1 + x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); - } else if (IS_SUNDAY[rD.getDay()]) { //sundays - g.setColor(nrgb[suClr]); - } else { //default - g.setColor(nrgb[1]); - } - g.drawString(rDate, x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); - rD.setDate(rDate + 1); - rDate = rD.getDate(); + } else if (IS_SUNDAY[rD.getDay()]) { //sundays + g.setColor(nrgb[suClr]); + } else { //default + g.setColor(nrgb[1]); + } + g.drawString(rDate, x * CELL_W + ((CELL_W - g.stringWidth(rDate)) / 2) + 2, nextY + ((CELL_H - DAY_NUM_FONT_SIZE + 2) / 2) + (CELL_H * y)); + rD.setDate(rDate + 1); + rDate = rD.getDate(); + } } - } } function draw() { - drawBackground(); - var date = new Date(); - var h = date.getHours(), - m = date.getMinutes(); - var d = date.getDate(), - w = date.getDay(); // d=1..31; w=0..6 + g.reset(); + drawBackground(); + var date = new Date(); + var h = date.getHours(), + m = date.getMinutes(); + var d = date.getDate(), + w = date.getDay(); // d=1..31; w=0..6 - g.setBgColor(0, 0, 0); - g.setColor(1, 1, 1); + g.setBgColor(0, 0, 0); + g.setColor(1, 1, 1); - // g.setFont('Vector', 30); - // g.setFont("7x11Numeric7Seg", 5); - g.setFontLECO1976Regular42(); - g.setFontAlign(0, -1); - g.drawString(timeString(h, m), g.getWidth() / 2, 28); - g.drawString(dayString(d), g.getWidth() * 3 / 4, 88); - g.setColor(0, 1, 0); - g.fillRect(0, 76, g.getWidth(), 80); - g.reset(); + // g.setFont('Vector', 30); + // g.setFont("7x11Numeric7Seg", 5); + g.setFontLECO1976Regular42(); + g.setFontAlign(0, -1); + g.drawString(timeString(h, m), g.getWidth() / 2, 28); + g.drawString(dayString(d), g.getWidth() * 3 / 4, 88); + g.setColor(0, 1, 0); + g.fillRect(0, 76, g.getWidth(), 80); + g.reset(); - // Steps - g.setFontLECO1976Regular22(); - g.setFontAlign(-1, -1); - g.drawString(getSteps(), 8, 88); + // Steps + g.setFontLECO1976Regular22(); + g.setFontAlign(-1, -1); + g.drawString(getSteps(), 8, 88); - drawCal(); + drawCal(); - // widget redraw - Bangle.drawWidgets(); - queueDraw(); + // widget redraw + Bangle.drawWidgets(); + queueDraw(); } @@ -188,12 +189,12 @@ draw(); //the following section is also from waveclk Bangle.on('lcdPower', on => { - if (on) { - draw(); // draw immediately, queue redraw - } else { // stop draw timer - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = undefined; - } + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } }); Bangle.setUI("clock");