From 6cd3c02253a2916d6388c9ea95a883af8c8a2b71 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sat, 25 Feb 2023 18:43:59 +0100 Subject: [PATCH 1/7] fork bwclklite from bwclk --- apps/bwclklite/ChangeLog | 33 +++ apps/bwclklite/README.md | 27 +++ apps/bwclklite/app-icon.js | 1 + apps/bwclklite/app.js | 376 ++++++++++++++++++++++++++++++++ apps/bwclklite/app.png | Bin 0 -> 2116 bytes apps/bwclklite/metadata.json | 19 ++ apps/bwclklite/screenshot.png | Bin 0 -> 2841 bytes apps/bwclklite/screenshot_2.png | Bin 0 -> 3038 bytes apps/bwclklite/screenshot_3.png | Bin 0 -> 3031 bytes apps/bwclklite/settings.js | 50 +++++ 10 files changed, 506 insertions(+) create mode 100644 apps/bwclklite/ChangeLog create mode 100644 apps/bwclklite/README.md create mode 100644 apps/bwclklite/app-icon.js create mode 100644 apps/bwclklite/app.js create mode 100644 apps/bwclklite/app.png create mode 100644 apps/bwclklite/metadata.json create mode 100644 apps/bwclklite/screenshot.png create mode 100644 apps/bwclklite/screenshot_2.png create mode 100644 apps/bwclklite/screenshot_3.png create mode 100644 apps/bwclklite/settings.js diff --git a/apps/bwclklite/ChangeLog b/apps/bwclklite/ChangeLog new file mode 100644 index 000000000..06f94854e --- /dev/null +++ b/apps/bwclklite/ChangeLog @@ -0,0 +1,33 @@ +0.01: New App. +0.02: Use build in function for steps and other improvements. +0.03: Adapt colors based on the theme of the user. +0.04: Steps can be hidden now such that the time is even larger. +0.05: Included icons for information. +0.06: Design and usability improvements. +0.07: Improved positioning. +0.08: Select the color of widgets correctly. Additional settings to hide colon. +0.09: Larger font size if colon is hidden to improve readability further. +0.10: HomeAssistant integration if HomeAssistant is installed. +0.11: Performance improvements. +0.12: Implements a 2D menu. +0.13: Clicks < 24px are for widgets, if fullscreen mode is disabled. +0.14: Adds humidity to weather data. +0.15: Added option for a dynamic mode to show widgets only if unlocked. +0.16: You can now show your agenda if your calendar is synced with Gadgetbridge. +0.17: Fix - Step count was no more shown in the menu. +0.18: Set timer for an agenda entry by simply clicking in the middle of the screen. Only one timer can be set. +0.19: Fix - Compatibility with "Digital clock widget" +0.20: Better handling of async data such as getPressure. +0.21: On the default menu the week of year can be shown. +0.22: Use the new clkinfo module for the menu. +0.23: Feedback of apps after run is now optional and decided by the corresponding clkinfo. +0.24: Update clock_info to avoid a redraw +0.25: Use Bangle.setUI({remove:...}) to allow loading the launcher without a full reset on fw2v16. + ClockInfo Fix: Use .get instead of .show as .show is not implemented for weather etc. +0.26: Use clkinfo.addInteractive instead of a custom implementation +0.27: Clean out some leftovers in the remove function after switching to +clkinfo.addInteractive that would cause ReferenceError. +0.28: Option to show (1) time only and (2) week of year. +0.29: use setItem of clockInfoMenu to change the active item +0.30: Use widget_utils +0.31: Use clock_info module as an app diff --git a/apps/bwclklite/README.md b/apps/bwclklite/README.md new file mode 100644 index 000000000..882d525f6 --- /dev/null +++ b/apps/bwclklite/README.md @@ -0,0 +1,27 @@ +# BW Clock +A very minimalistic clock. + +![](screenshot.png) + +## Features +The BW clock implements features that are exposed by other apps through the `clkinfo` module. +For example, if you install the HomeAssistant app, this menu item will be shown if you first +touch the bottom of the screen and then swipe left/right to the home assistant menu. To select +sub-items simply swipe up/down. To run an action (e.g. trigger home assistant), simply select the clkinfo (border) and touch on the item again. See also the screenshot below: + +![](screenshot_3.png) + +Note: Check out the settings to change different themes. + +## Settings +- Screen: Normal (widgets shown), Dynamic (widgets shown if unlocked) or Full (widgets are hidden). +- Enable/disable lock icon in the settings. Useful if fullscreen mode is on. +- The colon (e.g. 7:35 = 735) can be hidden in the settings for an even larger time font to improve readability further. +- Your bangle uses the sys color settings so you can change the color too. + +## Thanks to +- Thanks to Gordon Williams not only for the great BangleJs, but specifically also for the implementation of `clkinfo` which simplified the BWClock a lot and moved complexety to the apps where it should be located. +- Icons created by Flaticon + +## Creator +[David Peer](https://github.com/peerdavid) diff --git a/apps/bwclklite/app-icon.js b/apps/bwclklite/app-icon.js new file mode 100644 index 000000000..1df0fa6a5 --- /dev/null +++ b/apps/bwclklite/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwgIcah0EgEB/H8iFsAoOY4kMBYMDhmGgXkAoUGiWkAoQQBoAFCjgnCAoM4hgFDuEI+wpC8EKyg1C/0eAoMAsEAiQvBAAeAApQAB/4Ao+P4v/wn0P8Pgn/wnkH4Pjv/j/nn9PH//n/nj/IFF4F88AXBAoM88EcAoPHj//jlDAoOf/+Y+YFHjnnjAjBEIIjD+BHDO9IALA==")) diff --git a/apps/bwclklite/app.js b/apps/bwclklite/app.js new file mode 100644 index 000000000..770c053c2 --- /dev/null +++ b/apps/bwclklite/app.js @@ -0,0 +1,376 @@ +{ // must be inside our own scope here so that when we are unloaded everything disappears + +/************************************************ + * Includes + */ +const locale = require('locale'); +const storage = require('Storage'); +const clock_info = require("clock_info"); +const widget_utils = require("widget_utils"); + +/************************************************ + * Globals + */ +const SETTINGS_FILE = "bwclk.setting.json"; +const W = g.getWidth(); +const H = g.getHeight(); + +/************************************************ + * Settings + */ +let settings = { + screen: "Normal", + showLock: true, + hideColon: false, + menuPosX: 0, + menuPosY: 0, +}; + +let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; +for (const key in saved_settings) { + settings[key] = saved_settings[key]; +} + +let isFullscreen = function() { + var s = settings.screen.toLowerCase(); + if(s == "dynamic"){ + return Bangle.isLocked(); + } else { + return s == "full"; + } +}; + +let getLineY = function(){ + return H/5*2 + (isFullscreen() ? 0 : 8); +} + +/************************************************ + * Assets + */ +// Manrope font +Graphics.prototype.setLargeFont = function(scale) { + // Actual height 47 (48 - 2) + this.setFontCustom( + atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAD/AAAAAAAAA/wAAAAAAAAP8AAAAAAAAD/AAAAAAAAA/wAAAAAAAAP8AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAD/AAAAAAAAP/wAAAAAAAf/8AAAAAAB///AAAAAAH///wAAAAAf///8AAAAB/////AAAAH////8AAAAP////wAAAA/////AAAAB////+AAAAA////4AAAAAP///gAAAAAD//+AAAAAAA//4AAAAAAAP/gAAAAAAAD/AAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+AAAAAB////8AAAAB/////wAAAA/////+AAAA//////wAAAf/////+AAAH//////wAAD//////+AAB/+AAAf/gAAf+AAAA/8AAH/AAAAH/AAD/gAAAA/4AA/wAAAAH+AAP8AAAAB/gAD+AAAAAf4AA/gAAAAH+AAP4AAAAA/gAD+AAAAAf4AA/wAAAAH+AAP8AAAAB/gAD/AAAAA/4AA/4AAAAP+AAH/AAAAH/AAB/4AAAH/wAAP/wAAP/4AAD//////+AAAf//////AAAD//////gAAAf/////wAAAD/////4AAAAf////4AAAAB////4AAAAAB///gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAH/AAAAAAAAD/gAAAAAAAA/4AAAAAAAAf8AAAAAAAAH+AAAAAAAAD/gAAAAAAAB/wAAAAAAAAf8AAAAAAAAP///////AAD///////wAA///////8AAP///////AAD///////wAA///////8AAP///////AAD///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAB/AAAA/gAAA/wAAA/4AAAf8AAAf+AAAP/AAAP/gAAH/wAAH/4AAD/8AAD/+AAB//AAA//gAA//wAAf/AAAP/8AAH/AAAH//AAD/gAAD//wAA/wAAB//8AAP8AAA///AAD/AAAf+fwAA/gAAP/n8AAP4AAH/x/AAD+AAD/4fwAA/gAB/8H8AAP8AAf+B/AAD/AAP/AfwAA/4AH/gH8AAH/AH/wB/AAB/8H/4AfwAAP///8AH8AAD////AB/AAAf///gAfwAAD///wAH8AAAf//4AB/AAAD//4AAfwAAAP/8AAH8AAAAf4AAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAADgAAAfwAAAB+AAAH8AAAAfwAAB/AAAAH+AAAfwAAAB/wAAH8AAAA/+AAB/AAAAP/gAAfwA4AA/8AAH8AfgAH/AAB/AP8AA/4AAfwD/gAH+AAH8B/4AB/gAB/A/8AAf4AAfwf/AAD+AAH8P/wAA/gAB/H/8AAf4AAfz//gAH+AAH8//4AB/gAB/f//AA/4AAf/+/4Af8AAH//P/AP/AAB//j////gAAf/wf///4AAH/4H///8AAB/8A///+AAAf+AH///AAAH/AA///gAAB/gAD//wAAAfwAAP/wAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAH/wAAAAAAAH/8AAAAAAAH//AAAAAAAH//wAAAAAAH//8AAAAAAH///AAAAAAH///wAAAAAH///8AAAAAP//9/AAAAAP//8fwAAAAP//4H8AAAAP//4B/AAAAP//4AfwAAAP//4AH8AAAD//4AB/AAAA//4AAfwAAAP/4AAH8AAAD/wAAB/AAAA/wAAAfwAAAPwAH////AADwAB////wAAwAAf///8AAAAAH////AAAAAB////wAAAAAf///8AAAAAH////AAAAAA////wAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAGAHwAAAB///gB+AAAH///8AfwAAB////AP+AAAf///wD/wAAH///+A/+AAB////gP/gAAf///4A/8AAH/8P8AH/AAB/AD+AA/4AAfwA/gAH+AAH8AfwAB/gAB/AH8AAf4AAfwB/AAH+AAH8AfwAB/gAB/AH8AAf4AAfwB/gAH+AAH8Af4AB/gAB/AH/AA/wAAfwB/4Af8AAH8AP/AP/AAB/AD////gAAfwAf///wAAH8AD///8AAB/AA///+AAAfwAH///AAAAAAA///gAAAAAAD//gAAAAAAAP/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAAAH////wAAAAH/////AAAAD/////4AAAB//////AAAA//////4AAAf//////AAAP//////4AAD/8D/w/+AAB/4B/wD/wAAf8A/wAf8AAP+AP4AD/gAD/AD+AAf4AA/wB/AAH+AAP4AfwAB/gAD+AH8AAf4AA/gB/AAH+AAP4AfwAB/gAD+AH+AAf4AA/wB/gAH+AAP8Af8AD/gAD/gH/gB/wAAf8A/8A/8AAH/AP///+AAB/gB////gAAPwAP///wAAB4AD///4AAAMAAf//8AAAAAAD//+AAAAAAAP/+AAAAAAAA/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAABwAAfwAAAAB8AAH8AAAAD/AAB/AAAAD/wAAfwAAAH/8AAH8AAAH//AAB/AAAP//wAAfwAAP//8AAH8AAf//+AAB/AAf//8AAAfwA///8AAAH8A///4AAAB/A///4AAAAfx///wAAAAH9///wAAAAB////gAAAAAf///gAAAAAH///AAAAAAB///AAAAAAAf/+AAAAAAAH/+AAAAAAAB/8AAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAf/AAAAAP+Af/8AAAAP/4P//wAAAP//P//+AAAH//////wAAB//////8AAA///////gAAf//////8AAH////gP/AAD/wf/wA/wAA/4D/4AP+AAP8Af8AB/gAD/AH/AAf4AA/gA/wAH+AAP4AP4AA/gAD+AD/AAP4AA/gA/wAH+AAP8Af8AB/gAD/AH/AAf4AA/4D/4AP+AAP/B//AH/AAB////4D/wAAf//////8AAD//////+AAAf//////AAAH//////wAAA//8///4AAAD/+D//8AAAAP+Af/8AAAAAAAB/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/gAAAAAAAB//AAAAAAAB//8AAAAAAB///gAAgAAA///8AAcAAAf///gAPAAAH///8AH4AAD////AD/AAB/+H/4B/wAAf+Af+Af8AAP+AB/wD/gAD/gAf8Af4AA/wAD/AH+AAP8AA/wB/gAD+AAH8AP4AA/gAB/AD+AAP4AAfwB/gAD+AAH8Af4AA/wAD/AH+AAP8AA/gD/gAD/gAf4A/wAAf8AP8A/8AAH/gH/Af/AAA///////gAAP//////wAAB//////8AAAP/////+AAAB//////AAAAP/////AAAAA/////gAAAAD////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wA/wAAAAAP8AP8AAAAAD/AD/AAAAAA/wA/wAAAAAP8AP8AAAAAD/AD/AAAAAA/wA/wAAAAAP8AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='), + 46, + atob("ExspGyUkJiQnISYnFQ=="), + 62+(scale<<8)+(1<<16) + ); + return this; +}; + +Graphics.prototype.setMediumFont = function(scale) { + // Actual height 41 (42 - 2) + this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAB/AAAAAAAP/AAAAAAD//AAAAAA///AAAAAP///AAAAB///8AAAAf///AAAAH///wAAAB///+AAAAH///gAAAAH//4AAAAAH/+AAAAAAH/wAAAAAAH8AAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///8AAAAH////AAAAP////wAAAf////4AAA/////8AAB/////+AAD/gAAH+AAD+AAAD/AAH8AAAB/AAH4AAAA/gAH4AAAAfgAH4AAAAfgAPwAAAAfgAPwAAAAfgAPwAAAAfgAHwAAAAfgAH4AAAAfgAH4AAAA/gAH8AAAA/AAD+AAAD/AAD/gAAH/AAB/////+AAB/////8AAA/////4AAAf////wAAAH////gAAAB///+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAfwAAAAAAA/gAAAAAAA/AAAAAAAB/AAAAAAAD+AAAAAAAD8AAAAAAAH8AAAAAAAH//////AAH//////AAH//////AAH//////AAH//////AAH//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAA/AAAP4AAB/AAAf4AAD/AAA/4AAD/AAB/4AAH/AAD/4AAP/AAH/AAAf/AAH8AAA//AAH4AAB//AAP4AAD//AAPwAAH+/AAPwAAP8/AAPwAAf4/AAPwAA/4/AAPwAA/w/AAPwAB/g/AAPwAD/A/AAP4AH+A/AAH8AP8A/AAH/A/4A/AAD///wA/AAD///gA/AAB///AA/AAA//+AA/AAAP/8AA/AAAD/wAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAH4AAAHwAAH4AAAH4AAH4AAAH8AAH4AAAP+AAH4AAAH+AAH4A4AB/AAH4A+AA/AAH4B/AA/gAH4D/AAfgAH4H+AAfgAH4P+AAfgAH4f+AAfgAH4/+AAfgAH5/+AAfgAH5//AAfgAH7+/AA/gAH/8/gB/AAH/4f4H/AAH/wf//+AAH/gP//8AAH/AH//8AAH+AD//wAAH8AB//gAAD4AAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAD/AAAAAAAP/AAAAAAB//AAAAAAH//AAAAAAf//AAAAAB///AAAAAH///AAAAAf/8/AAAAB//w/AAAAH/+A/AAAA//4A/AAAD//gA/AAAH/+AA/AAAH/4AA/AAAH/gAA/AAAH+AAA/AAAHwAAA/AAAHAAf///AAEAAf///AAAAAf///AAAAAf///AAAAAf///AAAAAf///AAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAP/AHgAAH///AP4AAH///gP8AAH///gP8AAH///gP+AAH///gD/AAH/A/AB/AAH4A/AA/gAH4A+AAfgAH4B+AAfgAH4B+AAfgAH4B8AAfgAH4B8AAfgAH4B+AAfgAH4B+AAfgAH4B+AA/gAH4B/AA/AAH4A/gD/AAH4A/4H+AAH4Af//+AAH4AP//8AAH4AP//4AAHwAD//wAAAAAB//AAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///8AAAAD////AAAAP////wAAAf////4AAA/////8AAB/////+AAD/gP4H+AAD/AfgD/AAH8A/AB/AAH8A/AA/gAH4B+AAfgAH4B+AAfgAPwB8AAfgAPwB8AAfgAPwB+AAfgAPwB+AAfgAH4B+AAfgAH4B/AA/gAH8B/AB/AAH+A/wD/AAD+A/8P+AAB8Af//+AAB4AP//8AAAwAH//4AAAAAD//gAAAAAA//AAAAAAAP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAHAAPwAAAA/AAPwAAAD/AAPwAAAf/AAPwAAB//AAPwAAP//AAPwAA//8AAPwAH//wAAPwAf/+AAAPwB//4AAAPwP//AAAAPw//8AAAAP3//gAAAAP//+AAAAAP//wAAAAAP//AAAAAAP/4AAAAAAP/gAAAAAAP+AAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAAH+A//gAAAf/h//4AAA//z//8AAB/////+AAD/////+AAD///+H/AAH+H/4B/AAH8B/wA/gAH4A/gAfgAH4A/gAfgAPwA/AAfgAPwA/AAfgAPwA/AAfgAPwA/AAfgAH4A/gAfgAH4A/gAfgAH8B/wA/gAH/H/4B/AAD///+H/AAD/////+AAB/////+AAA//z//8AAAf/h//4AAAH+A//gAAAAAAH+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAAD/8AAAAAAP/+AAAAAAf//AAcAAA///gA8AAB///wB+AAD/x/4B/AAD+AP4B/AAH8AH8A/gAH4AH8A/gAH4AD8AfgAP4AD8AfgAPwAB8AfgAPwAB8AfgAPwAB8AfgAPwAB8AfgAH4AD8AfgAH4AD4A/gAH8AH4B/AAD+APwD/AAD/g/wP+AAB/////+AAA/////8AAAf////4AAAP////wAAAH////AAAAA///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), 46, atob("DxcjFyAfISAiHCAiEg=="), 54+(scale<<8)+(1<<16)); + return this; +}; + +Graphics.prototype.setSmallFont = function(scale) { + // Actual height 28 (27 - 0) + this.setFontCustom( + atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+cB//5wH//nAAAAAAAAAAAAAAAAAAAB8AAAHwAAAfAAAAAAAAAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAQcAADhwAAOHBAA4c8ADh/wAP/+AB/+AA//wAH+HAAe4cMBDh/wAOP/AA//wAP/wAH/3AAf4cABzhwAAOHAAA4cAADgAAAOAAAAAAAAAAAAAAAAAAAAwAH8HwA/4PgD/geAePA8BwcBw/BwH78DgfvwOB+HA4HAeBwcA8HDgB4f+ADg/wAGB+AAAAAAAAAAAAAAAH4AAA/wBwHngPAcOB4Bw4PAHDh4AcOPAA/x4AD/PAADx4AAAPAAAB5wAAPPwAB5/gAPOPAB4wcAPDBwB4MHAPA4cA4B/gBAH8AAAHAAAAAAAAAAAAAPAAHD/AB/f+AP/x4B4+DwHB4HAcDwcBwHhwHAPHAcAccB4A5wDgB+AGA/4AAH/AAAf+AAAA8AAABgAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AD//+A/+/+H4AD98AAB3gAADIAAAAAAAAAAAAAIAAABwAAAXwAAHPwAB8P8D/gP//4AH/8AAAAAAAAAAAAAAAAAAAAAAAAHAAAAcwAAA/gAAb8AAB/gAAH+AAAD+AAAOwAABxAAADAAAAAAAAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAB//AAH/8AAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAABwAAAHIAAAfgAAB8AAAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAABwAAAHAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAA/wAA//AA//AA//AAH/AAAfAAABAAAAAAAAAAAAAAAAAAAf/wAH//wA///gDgAOAcAAcBwABwHAAHAcAAcBwABwHgAPAPAB4Af//AA//4AA/+AAAAAAAAAAAAAAAAMAAABwAAAOAAAB4AAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAAwAcAPADwB8AfAPAB8B4APwHAB/AcAPcBwB5wHAPHAcB4cA8PBwD/4HAH/AcAHwBwAAAAAAAAAAAAGAHAAcAcAB4BwYDwHDwHAceAcBz4BwHfgHAf3AcB+eDwHw/+AeB/wBwD+AAAAAAAAAAAAAAAAABwAAAfAAAP8AAD/wAA/nAAP4cAD+BwAfgHAB4AcAEA//AAD/8AAP/wAABwAAAHAAAAMAAAAAAAAAAAAAEAH/w4Af/D4B/8HgHDgPAcOAcBw4BwHDgHAcOAcBw8DwHB4eAcH/wBgP+AAAPwAAAAAAAAAAAAAAAB//AAf//AD//+AOHB4Bw4BwHDgHAcOAcBw4BwHDgHAcPA8A4eHgDh/8AEB/gAAD4AAAAAAAAAABwAAAHAAAAcAAMBwADwHAB/AcA/4BwP8AHH/AAd/gAB/wAAH8AAAeAAAAAAAAAAAAAAAEAAPD+AB/f8AP//4B4+DwHDwHAcHAcBwcBwHBwHAcPAcB/+DgD//+AH5/wACB8AAAAAAAAAAAAAAAAEAAAD+AAAf+DAD74OAODw8BwHBwHAOHAcA4cBwDBwHAcHAeBw8A+ePgB//8AD//gAB/wAAAAAAAAAAAAAAAAAAAAAHBwAAcHAABwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AcgDgB+AOAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAeAAAD8AAAf4AADzwAAeHgADwPAAGAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACAAOAcAA8DgAB4cAABzgAAD8AAAHgAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAHgAAA+AAAHgAAAcAAABwD5wHAfnAcD8cBweAAHzwAAP+AAAfwAAAcAAAAAAAAAAAAAAAAAAB/AAA//AAH/+AA8A8AHAA4A4ABwDg+HAcH8OBw444GDBhgYMGGBgwYYHDjjgcP8OBw/44DgDhAOAGAAeAYAA+HgAB/8AAB/gAAAAAAAAAAAAABAAAA8AAAfwAAP/AAH/gAD/4AB/zgAf4OAB8A4AHwDgAf4OAA/84AAP/gAAH/AAAD/gAAB/AAAA8AAAAQAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBweBwHj4HAP/58Afz/gAcH8AAAPAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB8B8ADwHgADAYAAAAAAAAAAAAAAAH///Af//8B///wHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAeAA8A8AHgB8B+AD//gAH/8AAD/AAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOAAHA4AAcDgABwOAAHA4AAcDgABwOAAHAAAAcAAAAAAAAAP/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwGBwHgYPAOBg4A+GPgB4f8ADh/gAAH4AAAAAAAAAAAAAAAH///Af//8B///wAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAABgAAAHgAAAeAAAA8AAABwAAAHAAAAcAAABwH///Af//4B///AAAAAAAAAAAAAAAAAAAAf//8B///wH///AAHgAAA/AAAH+AAA88AAHh8AA8D4AHgDwA8AHgHgAPAYAAcBAAAwAAABAAAAAAAAAAH///Af//8B///wAAAHAAAAcAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAAAAAAAAAAAAH///Af//8B///wB/AAAB/AAAA/AAAA/gAAA/gAAA/gAAA/AAAD8AAA/AAAfwAAH8AAB/AAAfgAAP4AAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wD8AAAD4AAAH4AAAHwAAAPwAAAPgAAAPgAAAfAAAAfAAAA/Af//8B///wH///AAAAAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAH///Af//8B///wHAOAAcA4ABwDgAHAOAAcA4ABwDgAHAeAAeBwAA+fAAD/4AAD/AAADgAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAnAcAHcA4AfgDwA+AH4P4AP//wAf/3AAP4AAAAAAAAAAAf//8B///wH///AcA4ABwDgAHAOAAcA4ABwDgAHAOAAcB+AB4H+AD59/AP/h8AP8BwAOABAAAAAAAAAAAAAwAD4HwA/4fAD/geAePA8BwcBwHBwHAcDgcBwOBwHA4HAcDgcA4HDwD4eeAHw/4AOD/AAIDwAAAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAH///Af//8B///wHAAAAcAAABwAAAHAAAAcAAABwAAAGAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAGAAAAfAAAB/gAAB/wAAA/4AAAf8AAAP/AAAH8AAADwAAA/AAAf8AAP+AAP/AAH/gAB/wAAH4AAAcAAABAAAAHwAAAf4AAA/+AAAP/gAAH/wAAB/wAAA/AAAf8AAf/AAP/gAP/gAB/gAAH4AAAf+AAAf/AAAH/wAAB/8AAAfwAAB/AAB/8AA/+AA/+AAf+AAB/AAAHAAAAAAAAAAAAQGAADAeAA8B8AHwD8B+AD4PgAH74AAH/AAAPwAAA/gAAP/gAD8fAAfA/AH4A+AeAA8BwABwEAABAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAABAcAAcBwADwHAA/AcAP8BwD/wHAfnAcH4cBx+BwHPwHAf8AcB/ABwH4AHAeAAcBgABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////gAAAOAAAA4AAADAAAAAAAAAAAAAAAAAAAAAAAeAAAB/gAAH/4AAB/+AAAf/gAAH/AAAB8AAAAQAAAAAAAAAAAAAAOAAAA4AAADgAAAP/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAB4AAADwAAADgAAAHAAAAOAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xwAOGHAA44MADjgwAOOHAA44YADjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAAAf//8B///wH//+AAcA4ADgBwAOAHAA4AcADgBwAOAHAA8A8AB8PgAD/8AAH/gAAH4AAAAAAAAAAAAH4AAB/4AAP/wAB4HgAPAPAA4AcADgBwAOAHAA4AcADgBwAPAPAAeB4AA4HAABgYAAAAAAAAAAAAfgAAH/gAB//gAHgeAA8A8ADgBwAOAHAA4AcADgBwAOAHAAcA4B///wH///Af//8AAAAAAAAAAAAAAAAH4AAB/4AAP/wAB7HgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAwAAAAAAAAAAAAwAAADAAAB///AP//8B///wHMAAAYwAABjAAAGMAAAAAAAAAPwAAD/wMA//w4DwPHgeAePBwA4cHADhwcAOHBwA4cHADhwOAcPB///4H///Af//wAAAAAAAAAAAAAAAAAAB///wH///AAf/8ABwAAAOAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAAAAAc//8Bz//wHP//AAAAAAAAAAAAAAHAAAAcAAAH+f///5///7H//8AAAAAAAAAAAAAAH///Af//8B///wAAPAAAB+AAAP8AAB54AAfDwAD4HgAOAPAAwAcACAAwAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAAD4AAAH//AAP/8AB//wAHAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAADgAAAPAAAAf/8AA//wAB//AAAAAAAAAAAAAAAAB+AAAf+AAD/8AAeB4ADwDwAOAHAA4AcADgBwAOAHAA4AcADwDwAHw+AAP/wAAf+AAAfgAAAAAAAAAAAAAAAB///8H///wP///A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAA//wADwPAAeAeABwA4AHADgAcAOABwA4AHADgAOAcAB///8H///wf///AAAAAAAAAAAAAAAAAAAD//wAP//AAf/8ABwAAAOAAAA4AAADgAAAOAAAAAAAAAYGAAD4cAAfx4AD3DwAOOHAA44cADjhwAOGHAA4ccADxzwAHj+AAOP4AAYOAAAAAAAwAAADAAAAMAAAP//wA///gD///AAwAcADABwAMAHAAwAcADAAwAAAAAAAAAAD/gAAP/4AA//4AAA/gAAAPAAAAcAAABwAAAHAAAAcAAABwAAAOAA//8AD//wAP//AAAAAAAAAAAIAAAA4AAAD8AAAH+AAAH/AAAD/gAAB/AAAB8AAA/wAAf8AAP+AAD/AAAPgAAAwAAAAAAAAIAAAA8AAAD/AAAH/gAAD/wAAA/wAAA/AAAf8AAP+AAP+AAA/AAAD+AAAH/AAAD/gAAA/wAAA/AAAf8AAP/AAP/AAA/gAADgAAAAAAAAAAEADAAwAOAHAA+B8AB8PgAB74AAD/AAAH4AAA/wAAHvgAB8PgAPgfAA4AcADAAwAAABABAAAAHAAAAfgAAA/wAAA/wAwAf4fAAP/8AAP/AAB/gAA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAEADAAwAOAPAA4B8ADgPwAOD/AA4ecADnxwAO8HAA/gcAD8BwAPAHAA4AcACAAwAAAAAAAAAAAAAAAAAAAAAAAAAA8AB////f//////n/+AAAA4AAADgAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAA4AAADgAAAOAAAA//5/9////z////AAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAB8AAAHwAAAcAAABwAAAHgAAAOAAAA8AAABwAAAHAAAB8AAAHwAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAGAAABwAAAOAAABwAAAHAAAAcAAAA4AAABwAAABgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAOAB4B4ADwPAAHh4AAPPAAAf4AAA/AAAB4AAAPwAAB/gAAPPAAB4eAAPA8AB4B4AHADgAIAEAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAHDDgA8MPADww8AGDBgAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn//gOf/+A5//4AAAAAAAAAAAAAAAAAAAD/AAA//AAH/+AA+B8ADgBwAOAHAHwAPgfAA+B8AD4A4AcADwDwAHgeAAOBwAAQCAAAAAAAAAAAADgcAAOBwAA4HAD//8A///wD///AeDgcBwOBwHA4HAcDgcB4GBwD4AHAHgAcAOAAAAAAAAAAAAAMAGAB7+8AD//gAHx8AAcBwADgDgAOAOAA4A4ADgDgAOAOAA4A4ABwHAAHg8AA//4AH//wAMOGAAAAAAQAAABwAAAHwMYAPwxgAfjGAAfsYAAf7gAAf/wAB//AAf/8AH7GAA/MYAPwxgB8DGAHAAAAQAAAAAAAAAAAAAf/D/5/8P/n/w/+AAAAAAAAAAAAAAAAAAAABwAAffhwD//Hgf+cfBzwwcGHDhwYcOHBxw4cHDhxwfOPvA8//4Bx//AADwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAP/wAB//gAPAPAB4AOAPDw8A4/xwHH/jgc4HOBzgc4HMAzgcwDOBzgc4HPDjgOcOeA4whwBwAOAHwD4APw/AAf/4AAf+AAAPAAAAAAAATgAAD/AAANsAAA2wAADTAAAP8AAAfwAAAAAAAAAAAAAAAAAAgAAAPAAAB+AAAOeAADw8AAOIwAADxAAAfgAADngAA8PAADgMAAEAQAAAAAAAAAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAB+AAAH4AAAAAAAAAAAAAAAAAAAAD8AAA/8AAHh4AAYDgAD/3AAN/MAA0QwADRjAAN/MAA7hwABwOAADhwAAH+AAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAD/AAAeeAABw4AAGDgAAYOAABw4AAH/AAAP8AAAfAAAAAAAAAAAAAAAAAAAwYAADBgAAMGAAAwYAADBgAAMGAAP+YAA/5gAD/mAAAwYAADBgAAMGAAAwYAADBgAAAAAAAAAAAAAAAMDAABwcAAPDwAAwPAADB8AAMOwAA5zAAB+MAADwwAAAAAAAAAAAIBAAAwGAADMcAANwwAA/DAAD8MAAO/wAAx+AAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///B///8H//AAAAeAAAA4AAADgAAAOAAAA4AAADgAAAcAB//gAH//gAf/+AAAAAAAAAAAAAAAAAAAAP4AAB/4AAP/gAB//AAH/8AAf/wAB//AAH///8f///x////AAAAAAAAAB////H///8f///wAAAAAAAAAAAAAAABAAAAOAAAB4AAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzAAAPMAAA/wAAAeAAAAAAAAAAAAAAAAAAAIAAABgAAAMAAAA//AAD/8AAAAAAAAAAAAAAAAAAAAAA8AAAP4AAAwwAADDAAAMMAAA5wAAB+AAADwAAAAAAAAAAAAAAAAAMAwAA8HAAB44AAD/AAAD4AADGMAAOBwAAeOAAA/wAAA+AAABgAAAAAAAAAAAAAAABAAAAMAAABwAAAH/8CAf/wcAAAHgAAA8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgCAA8A8APAfwB4H7AHB+MAAHAwAAQ/wAAD/AAAAwAAADAAAAAAAAAAAAAAAAAAAAEAAAAwAAAHAAAAf/wIB//BwAAAeAAADwAAAeAAAHgAAA8AAAHgAAB4AAAPAAAD4AAAeAAADwAAA8GAwHg4HAcHA8AAYHwABg7AAGHMAAf4wAA/DAAA4MAAAAAAAAAAYBgABgHAAGMOAAZwYABvBgAH8OCAe/wcBx+HgABg8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgHAA8B8APAfwB4HzADB8MAAHAwAAQ/wAAD/AAAAwAAAAAAAAAAAAAAAAAA4AAAP4AAB/wAAPHgABwOA4/A4Dn4DgOfAOAAAA4AAAHgAAB8AAAHgAAAYAAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAAAAAABwAAA/AAAf8AAP/AAH/wfD/nD+/wcMb4BwxvgHD+/wcHx/5wEAf/AAAP+AAAH/AAAD8AAABwAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAcAOABwA4AHADgAf//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAYAAMAAAAAAAAAAA/4AAP/4AD//4APAHgB4APAPAAeA4AA4DgADg+AAPz4AA//gAD/+AAOe4AA4BwAHAHgA8APgPgAeA8AAYDAAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcAAcBwABwAAAAAAAAAAAAAAH///Af//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwABwHAAHAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAABgAAAGAAH///Af//8B///wHAYHAcBgcBwGBwHAYHAcBgcBwABwHAAHAeAA8A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAAAAAf//8B///wH///APwAAAPgAAAfgAAAfAAAA/AAAA+AAAA+AAAB8AAAB8AAAD8B///wH///Af//8AAAAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAB/wAAf/wAH//wAeAPADwAeAeAA8BwABwHAAHAcAAcBwABwHAAHAcAAcBwABwDgAOAPAB4Afg/AA//4AB//AAA/gAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAGDgAA8eAAB7wAAD+AAAHwAAAfAAAD+AAAe8AADw4AAGBAAAAAAAAAAAAAAAAAf8MAH//4B///AHgD4A8AfgHgD/AcAecBwDxwHAeHAcDwcBw+BwHHgHAc8AcA/gDgD8AeAH4PwA//+AH//wAMP4AAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAAAAAAAAAAB//8AH//4Af//wAAAHgAAAPAAAAcAAABwAAAHAAAAcAAABwAAAHAAAA4AAAHgH//8Af//gB//4AAAAAAAAAAAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAAAAf//8B///wH///ABwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHg8AAP/gAAf8AAA/gAAAAAAAAAAAAAAAA///AP//8A///wHgAAAcAAcBwABwHBwHAcHAcB4+BwD/4PAH954APn/gAAP8AAAOAAAAAAAAAAAAAD4AAcfwADz/gAfOOCBww4PHHBg+ccGAZxw4AHHDAAcYcAA//gAD//gAD/+AAAAAAAAAAAAAAAAAPgABx/AAPP+AB844AHDDgAccGAZxwYPnHDg8ccMDBxhwAD/+AAP/+AAP/4AAAAAAAAAAAAAAAAA+AAHH8AA8/4BnzjgOcMOBxxwYOHHBg4ccOBxxwwDnGHAGP/4AA//4AA//gAAAAAAAAAAAAAAAAHwAA4/gAHn/A8+ccDzhhwMOODA444MBjjhwHOOGAM4w4Dx//AOH//AAH/8AAAAAAAAAAAAAAAAAfAADj+AAef8Bz5xwHOGHAc44MADjgwAOOHAY44YBzjDgHH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xweOGHD844MMzjgwzOOHD844YHjjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAHwAAx/gAHn/AAc4cADjhwAOMDAA4wcADjBwAOMHAA4w4AB//AAH/4AAP/wAB/fgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAAAAAAAAAA/AAAP/AAB/+AAPA8AB4B4AHADgwcAPzBwA/8HADngcAOMB4B4ADwPAAHA4AAMDAAAAAAAAAAAAA/AAAP/AAB/+AAPY8AB5h4OHGDg+cYOB5xg4AnGDgAcYOAB5h4AD+PAAH44AAPjAAAGAAAAAAAAAAAAAPwAAD/wAAf/gAD2PAAeYeABxg4AHGDgOcYOD5xg4OHGDggeYeAA/jwAB+OAAD4wAABgAAAAAAAAAAAAD8AAA/8AAH/4AY9jwDnmHgecYODhxg4OHGDg8cYOB5xg4BnmHgCP48AAfjgAA+MAAAYAAAAAAAAAAAAB+AAAf+AAD/8Acex4BzzDwHOMHAA4wcADjBwAOMHAc4wcBzzDwGH8eAAPxwAAfGAAAMAAAAAAAAAAAOAAAA+f/+A5//4An//gAAAAAAAAAAAAAAAAAAAJ//4Dn//g+f/+DgAAAAAAAAMAAABwAAAOP//Aw//8Dj//wHAAAAMAAABwAAAHAAAAA//8AD//wAP//AcAAABwAAAAAAAAAA/gAAP/AAB//AAPA8AA4A4DDgDgPMAOA/wA4D7ADgPOAOB+8B4C/+/AA//4AB//AAAHAAAAAAAAAAAAP//AA//8Bx//wPHAAAw4AADjgAAGOAAAc4AAAzgAAPPAAA4f/8AA//wAB//AAAAAAAAAAAAAAAAA/AAAP/AAB/+AAPA8CB4B4OHADg+cAOA5wA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAAf/gADwPAAeAeABwA4AnADgecAOD5wA4OHADgAeAeAA+HwAB/+AAD/wAAD8AAAAAAAAAAAAD8AAA/8AAH/4AY8DwDngHgecAODhwA4OHADg8cAOB5wA4BngHgCPh8AAf/gAA/8AAA/AAAAAAAAAAAAB+AAAf+AAD/8AceB4DzwDwMOAHA44AcBjgBwHOAHAM4AcDzwDwOHw+AAP/wAAf+AAAfgAAAAAAAAAAAAfgAAH/gAA//AHHgeAc8A8BzgBwAOAHAA4AcADgBwHOAHAc8A8Bh8PgAD/8AAH/gAAH4AAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAADtwAAO3AAA7cAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAH5gAB//AAP/4AB4PgAPB/AA4PcADh5wAOPHAA54cADvBwAP4PAAfD4AB//AAP/4AAZ+AAAAAAAAAAAAf8AAB//AAH//AAAH8AAAB4OAADg+AAOB4AA4AgADgAAAOAAABwAH//gAf/+AB//4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAB/AAAAeAAAA4BgADgeAAOD4AA4MAADgAAAcAB//4AH//gAf/+AAAAAAAAAAAAAAAB/wAAH/8AAf/8AYAfwDgAHgcAAODgAA4OAADg8AAOB4AA4BgAHACf/+AB//4AH//gAAAAAAAAAAAAAAA/4AAD/+AAP/+AcAP4BwADwHAAHAAAAcAAABwAAAHAcAAcBwADgGP//AA//8AD//wAAAAAAAAAABAAAAHAAAAfgAAA/wAAA/wAAAf4cAAP/zgAP/+AB/jgA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAAAAAAA//////////////A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAABAAAAHAAAAfgAAw/wADg/wA+Af4fAAP/8AAP/AAB/g4A/wDgf4AOP+AAB/AAAHgAAAQAAA=='), + 32, + atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), + 28+(scale<<8)+(1<<16) + ); + return this; +}; + +Graphics.prototype.setMiniFont = function(scale) { + // Actual height 16 (15 - 0) + this.setFontCustom( + atob('AAAAAAAAAAAAAP+w/5AAAAAA4ADgAOAA4AAAAAAAAAABgBmAGbAb8D+A+YDZ8B/wf4D5gJmAGQAQAAAAAAAeOD8cMwzxj/GPMYwc/Az4AAAAAHAA+DDIYMjA+YBzAAYADeA7MHMw4zDD4ADAAAAz4H/wzjDHMMMwwbBj4APgADAAAAAA4ADgAAAAAAAAAAfwH/54B+ABAAAAAOABeAcf/gfwAAAAACAAaAD4APgAOABgAAAAAAACAAIAAgA/wAMAAgACAAAAAAAAPAA4AAAAAAIAAgACAAIAAgAAAAAAADAAMAAAAAAAcAfwf4D4AIAAAAA/wH/gwDDAMMAwwDB/4D/AAAAAAGAAwAD/8P/wAAAAAHAw8HDA8MHww7DnMH4wGBAAAMBgyHDcMPww/DDv4MfAAAAAAAHgD+A+YPhgwGAH8AfwAEAAAAAA/GD8cMwwzDDMMM5wx+ABgAAAP8B/4MwwzDDMMMwwx+ADwAAAgADAAMBwwfDPgP4A8ADAAAAAe+D/8M4wxjDGMP5wf+ABwAAAfAB+cMYwwjDCMMYwf+A/wAAAAAAAAAxgBCAAAAAAAAAYPBA4AAAAAAAAAgAHAA+AHMAYYAAAAAAAAAAAAAAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAAABhgHMAPgAcAAgAAAAAAAABgAOAAwbDDsMYA/AA4AAAAAAAD4A/wGBgxzDPsMyQjJDPkM+wYIBxgD+AAAAAAABAA8A/gf8DwwODA/sAfwAHwADAAAP/w//DGMMYwxjDOMP9we+ABwA8AP8Bw4MAwwDDAMMAwwDDgcHDgMMAAAAAA//D/8MAwwDDAMMAw4HB/4D/AAAAAAP/w//DGMMYwxjDGMMQwgBAAAP/w//DDAMMAwwDDAMAADwA/wHDgwDDAMMAwwDDCMOJwc+ADwAAA//D/8AMAAwADAAMAAwD/8P/wAAAAAP/w//AAAABgAHAAMAAwAHD/4P+AAAAAAP/w//AOAB+AOcBw4MBwgDAAEAAA//D/8AAwADAAMAAwADAAAP/w//A8AA8AA+AA8AHwB8AeAHgA//D/8AAAAAD/8P/wcAAcAA8AA4AB4P/w//AAAA8AP8Bw4MAwwDDAMMAwwDDgcH/gP8AAAAAA//D/8MMAwwDDAMYA7gB8ABgADwA/wHDgwDDAMMAwwDDA8ODwf/A/8AAAAAD/8P/wwwDDAMMAx4Dv4HxwEBAAAHjg/HDMMMYwxjDGMONwc+ABwMAAwADAAMAA//D/8MAAwADAAIAAAAD/wP/gAHAAMAAwADAAMAHg/8AAAMAA+AA/AAfgAPAA8AfgPwD4AMAAwAD4AD+AA/AA8A/g/gDwAP4AH8AB8APwH8D8AMAAgBDAMPDgO8APAB8AOcDw8MAwgBCAAOAAeAAeAAfwH/B4AOAAwAAAAMAwwPDB8Mew3jD4MPAwwDAAAAAAAAB//3//QABAAAAAAADgAP4AH+AB8AAQAABAAEAAf/9//wAAAAAAAAAAGAAwAGAAwABgADAAGAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAQA3wHbAZMBswGzAf4A/wAAAAAP/w//AYMBgwGDAYMA/gB8AAAAEAD+Ae8BgwGDAYMBgwDGAAAAMAD+Ae8BgwGDAYMBhw//D/8AAAAYAP4B/wGTAZMBkwGTAP4AcAEAAYAP/w//CQAJAAAwAP4hz3GDMQMxAzGHcf/h/8AAAAAP/w//AYABgAGAAYAA/wB/AAAAAA3/Df8AAAAAOf/9//AAAAAP/w//ADgAfADGAYMBAQAAD/8P/wAAAAAB/wH/AYABgAGAAf8A/wGAAYABgAH/AP8AAAAAAf8B/wGAAYABgAGAAP8AfwAAADAA/gHvAYMBgwGDAYMA/gB8AAAAAAH/8f/xgwGDAYMBgwD+AHwAAAAwAP4B7wGDAYMBgwGHAf/x//AAAAAB/wH/AYABgAEAAAAA5gHzAbMBkwGbAd8AzgEAAYAP/wf/AQMBAwAAAAAB/gH/AAMAAwADAAcB/wH/AAABAAHgAPwAHwAPAH4B8AGAAQAB8AB+AA8APwHwAeAA/AAPAD8B+AHAAQEBgwHOAHwAOAD+AccBAwAAAQAB4AD4EB/wB8A/APgBwAAAAAEBgwGPAZ8B8wHjAcMBAQAAAAAABgf/9/n2AAAAAAAP/w//AAAEAAYAB/nz//AGAAAAAAAAAAAAcABgAGAAcAAwAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), + 32, + atob("AwUHDwoOCwQHBwcJBAcEBgoGCQkKCQoICQoFBQoMCgkPCgoMCwkICwsECAoIDgsMCgwKCgoLCg8KCQoHBgcLCwgJCgkKCQYKCgQECAQOCgoKCgYIBwoIDAkJCAcEBwsQ"), + 16+(scale<<8)+(1<<16) + ); + return this; +}; + +let imgLock = function() { + return { + width : 16, height : 16, bpp : 1, + transparent : 0, + buffer : E.toArrayBuffer(atob("A8AH4A5wDDAYGBgYP/w//D/8Pnw+fD58Pnw//D/8P/w=")) + }; +}; + + +/************************************************ + * Clock Info + */ +let clockInfoItems = clock_info.load(); + +// Add some custom clock-infos +let weekOfYear = function() { + var date = new Date(); + date.setHours(0, 0, 0, 0); + // Thursday in current week decides the year. + date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7); + // January 4 is always in week 1. + var week1 = new Date(date.getFullYear(), 0, 4); + // Adjust to Thursday in week 1 and count number of weeks from date to week1. + return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 + - 3 + (week1.getDay() + 6) % 7) / 7); +} + +clockInfoItems[0].items.unshift({ name : "weekofyear", + get : function() { return { text : "Week " + weekOfYear(), + img : null}}, + show : function() {}, + hide : function() {}, +}) + +// Empty for large time +clockInfoItems[0].items.unshift({ name : "nop", + get : function() { return { text : null, + img : null}}, + show : function() {}, + hide : function() {}, +}) + + + +let clockInfoMenu = clock_info.addInteractive(clockInfoItems, { + app: "bwclk", + x : 0, + y: 135, + w: W, + h: H-135, + draw : (itm, info, options) => { + var hideClkInfo = info.text == null; + + g.setColor(g.theme.fg); + g.fillRect(options.x, options.y, options.x+options.w, options.y+options.h); + + g.setFontAlign(0,0); + g.setColor(g.theme.bg); + + if (options.focus){ + var y = hideClkInfo ? options.y+20 : options.y+2; + var h = hideClkInfo ? options.h-20 : options.h-2; + g.drawRect(options.x, y, options.x+options.w-2, y+h-1); // show if focused + g.drawRect(options.x+1, y+1, options.x+options.w-3, y+h-2); // show if focused + } + + // In case we hide the clkinfo, we show the time again as the time should + // be drawn larger. + if(hideClkInfo){ + drawTime(); + return; + } + + // Set text and font + var image = info.img; + var text = String(info.text); + if(text.split('\n').length > 1){ + g.setMiniFont(); + } else { + g.setSmallFont(); + } + + // Compute sizes + var strWidth = g.stringWidth(text); + var imgWidth = image == null ? 0 : 24; + var midx = options.x+options.w/2; + + // Draw + if (image) { + var scale = imgWidth / image.width; + g.drawImage(image, midx-parseInt(imgWidth*1.3/2)-parseInt(strWidth/2), options.y+6, {scale: scale}); + } + g.drawString(text, midx+parseInt(imgWidth*1.3/2), options.y+20); + + // In case we are in focus and the focus box changes (fullscreen yes/no) + // we draw the time again. Otherwise it could happen that a while line is + // not cleared correctly. + if(options.focus) drawTime(); + } +}); + + +/************************************************ + * Draw + */ +let draw = function() { + // Queue draw again + queueDraw(); + + // Draw clock + drawDate(); + drawTime(); + drawLock(); + drawWidgets(); +}; + + +let drawDate = function() { + // Draw background + var y = getLineY() + g.reset().clearRect(0,0,W,y); + + // Draw date + y = parseInt(y/2)+4; + y += isFullscreen() ? 0 : 8; + var date = new Date(); + var dateStr = date.getDate(); + dateStr = ("0" + dateStr).substr(-2); + g.setMediumFont(); // Needed to compute the width correctly + var dateW = g.stringWidth(dateStr); + + g.setSmallFont(); + var dayStr = locale.dow(date, true); + var monthStr = locale.month(date, 1); + var dayW = Math.max(g.stringWidth(dayStr), g.stringWidth(monthStr)); + var fullDateW = dateW + 10 + dayW; + + g.setFontAlign(-1,0); + g.drawString(dayStr, W/2 - fullDateW/2 + 10 + dateW, y-12); + g.drawString(monthStr, W/2 - fullDateW/2 + 10 + dateW, y+11); + + g.setMediumFont(); + g.setColor(g.theme.fg); + g.drawString(dateStr, W/2 - fullDateW / 2, y+2); +}; + + +let drawTime = function() { + var hideClkInfo = clockInfoMenu.menuA == 0 && clockInfoMenu.menuB == 0; + + // Draw background + var y1 = getLineY(); + var y = y1; + var date = new Date(); + + var hours = String(date.getHours()); + var minutes = date.getMinutes(); + minutes = minutes < 10 ? String("0") + minutes : minutes; + var colon = settings.hideColon ? "" : ":"; + var timeStr = hours + colon + minutes; + + // Set y coordinates correctly + y += parseInt((H - y)/2) + 5; + + if (hideClkInfo){ + g.setLargeFont(); + } else { + y -= 15; + g.setMediumFont(); + } + + // Clear region and draw time + g.setColor(g.theme.fg); + g.fillRect(0,y1,W,y+20 + (hideClkInfo ? 1 : 0) + (isFullscreen() ? 3 : 0)); + + g.setColor(g.theme.bg); + g.setFontAlign(0,0); + g.drawString(timeStr, W/2, y); +}; + + +let drawLock = function() { + if(settings.showLock && Bangle.isLocked()){ + g.setColor(g.theme.fg); + g.drawImage(imgLock(), W-16, 2); + } +}; + + +let drawWidgets = function() { + if(isFullscreen()){ + widget_utils.hide(); + } else { + Bangle.drawWidgets(); + } +}; + + +/************************************************ + * Listener + */ +// timeout used to update every minute +let drawTimeout; + +// schedule a draw for the next minute +let queueDraw = function() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +}; + + +// Stop updates when LCD is off, restart when on +let lcdListenerBw = function(on) { + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}; +Bangle.on('lcdPower', lcdListenerBw); + +let lockListenerBw = function(isLocked) { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + + if(!isLocked && settings.screen.toLowerCase() == "dynamic"){ + // If we have to show the widgets again, we load it from our + // cache and not through Bangle.loadWidgets as its much faster! + widget_utils.show(); + } + + draw(); +}; +Bangle.on('lock', lockListenerBw); + +let charging = function(charging){ + // Jump to battery + clockInfoMenu.setItem(0, 2); + drawTime(); +} +Bangle.on('charging', charging); + +let kill = function(){ + clockInfoMenu.remove(); + delete clockInfoMenu; +}; +E.on("kill", kill); + +/************************************************ + * Startup Clock + */ + +// The upper part is inverse i.e. light if dark and dark if light theme +// is enabled. In order to draw the widgets correctly, we invert the +// dark/light theme as well as the colors. +let themeBackup = g.theme; +g.setTheme({bg:g.theme.fg,fg:g.theme.bg, dark:!g.theme.dark}).clear(); + +// Show launcher when middle button pressed +Bangle.setUI({ + mode : "clock", + remove : function() { + // Called to unload all of the clock app + Bangle.removeListener('lcdPower', lcdListenerBw); + Bangle.removeListener('lock', lockListenerBw); + Bangle.removeListener('charging', charging); + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + // save settings + kill(); + E.removeListener("kill", kill); + g.setTheme(themeBackup); + widget_utils.show(); + } +}); + +// Load widgets and draw clock the first time +Bangle.loadWidgets(); + +// Draw first time +draw(); + +} // End of app scope diff --git a/apps/bwclklite/app.png b/apps/bwclklite/app.png new file mode 100644 index 0000000000000000000000000000000000000000..5073f0ed0ee9f9c74536e8120360af8caf25aa46 GIT binary patch literal 2116 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 bu7T|roXdI-%T9jpy1+p%KhG+6@|Ax8FvV5G literal 0 HcmV?d00001 diff --git a/apps/bwclklite/screenshot_2.png b/apps/bwclklite/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2f1717f7bbebcac6557e2d6e475741f708ab67 GIT binary patch literal 3038 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 literal 0 HcmV?d00001 diff --git a/apps/bwclklite/screenshot_3.png b/apps/bwclklite/screenshot_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d52057569b0c80df6656e22333f4347e7552411a GIT binary patch literal 3031 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 literal 0 HcmV?d00001 diff --git a/apps/bwclklite/settings.js b/apps/bwclklite/settings.js new file mode 100644 index 000000000..116253fda --- /dev/null +++ b/apps/bwclklite/settings.js @@ -0,0 +1,50 @@ +(function(back) { + const SETTINGS_FILE = "bwclk.setting.json"; + + // initialize with default settings... + const storage = require('Storage') + let settings = { + screen: "Normal", + showLock: true, + hideColon: false, + }; + let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; + for (const key in saved_settings) { + settings[key] = saved_settings[key] + } + + function save() { + storage.write(SETTINGS_FILE, settings) + } + + var screenOptions = ["Normal", "Dynamic", "Full"]; + E.showMenu({ + '': { 'title': 'BW Clock' }, + '< Back': back, + 'Screen': { + value: 0 | screenOptions.indexOf(settings.screen), + min: 0, max: 2, + format: v => screenOptions[v], + onchange: v => { + settings.screen = screenOptions[v]; + save(); + }, + }, + 'Show Lock': { + value: settings.showLock, + format: () => (settings.showLock ? 'Yes' : 'No'), + onchange: () => { + settings.showLock = !settings.showLock; + save(); + }, + }, + 'Hide Colon': { + value: settings.hideColon, + format: () => (settings.hideColon ? 'Yes' : 'No'), + onchange: () => { + settings.hideColon = !settings.hideColon; + save(); + }, + } + }); + }) From 09eeac356b8adbcf17ca146ea26b2d96a3616744 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sat, 25 Feb 2023 18:52:29 +0100 Subject: [PATCH 2/7] Add changes to bwclklite after forking from bwclk. Change custom font to a standard bitmap one. Don't invert theme as this doesn't work very well with fastloading. Do an initial fillRect on the clock info area since it would wait for clock info before drawing out the previous app. Change all occurences of var to let. --- apps/bwclklite/ChangeLog | 4 ++ apps/bwclklite/app.js | 133 ++++++++++++----------------------- apps/bwclklite/metadata.json | 38 ++++++++-- 3 files changed, 79 insertions(+), 96 deletions(-) diff --git a/apps/bwclklite/ChangeLog b/apps/bwclklite/ChangeLog index 06f94854e..8b79a4c4e 100644 --- a/apps/bwclklite/ChangeLog +++ b/apps/bwclklite/ChangeLog @@ -31,3 +31,7 @@ clkinfo.addInteractive that would cause ReferenceError. 0.29: use setItem of clockInfoMenu to change the active item 0.30: Use widget_utils 0.31: Use clock_info module as an app +0.32: Diverge from BW Clock. Change out the custom font for a standard bitmap + one to speed up loading times. Remove invertion of theme as this doesn't + work very well with fastloading. Do an quick inital fillRect on the + clock info area. diff --git a/apps/bwclklite/app.js b/apps/bwclklite/app.js index 770c053c2..61a3feae1 100644 --- a/apps/bwclklite/app.js +++ b/apps/bwclklite/app.js @@ -32,7 +32,7 @@ for (const key in saved_settings) { } let isFullscreen = function() { - var s = settings.screen.toLowerCase(); + let s = settings.screen.toLowerCase(); if(s == "dynamic"){ return Bangle.isLocked(); } else { @@ -42,51 +42,11 @@ let isFullscreen = function() { let getLineY = function(){ return H/5*2 + (isFullscreen() ? 0 : 8); -} +}; /************************************************ * Assets */ -// Manrope font -Graphics.prototype.setLargeFont = function(scale) { - // Actual height 47 (48 - 2) - this.setFontCustom( - atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAD/AAAAAAAAA/wAAAAAAAAP8AAAAAAAAD/AAAAAAAAA/wAAAAAAAAP8AAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAD/AAAAAAAAP/wAAAAAAAf/8AAAAAAB///AAAAAAH///wAAAAAf///8AAAAB/////AAAAH////8AAAAP////wAAAA/////AAAAB////+AAAAA////4AAAAAP///gAAAAAD//+AAAAAAA//4AAAAAAAP/gAAAAAAAD/AAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+AAAAAB////8AAAAB/////wAAAA/////+AAAA//////wAAAf/////+AAAH//////wAAD//////+AAB/+AAAf/gAAf+AAAA/8AAH/AAAAH/AAD/gAAAA/4AA/wAAAAH+AAP8AAAAB/gAD+AAAAAf4AA/gAAAAH+AAP4AAAAA/gAD+AAAAAf4AA/wAAAAH+AAP8AAAAB/gAD/AAAAA/4AA/4AAAAP+AAH/AAAAH/AAB/4AAAH/wAAP/wAAP/4AAD//////+AAAf//////AAAD//////gAAAf/////wAAAD/////4AAAAf////4AAAAB////4AAAAAB///gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAH/AAAAAAAAD/gAAAAAAAA/4AAAAAAAAf8AAAAAAAAH+AAAAAAAAD/gAAAAAAAB/wAAAAAAAAf8AAAAAAAAP///////AAD///////wAA///////8AAP///////AAD///////wAA///////8AAP///////AAD///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAB/AAAA/gAAA/wAAA/4AAAf8AAAf+AAAP/AAAP/gAAH/wAAH/4AAD/8AAD/+AAB//AAA//gAA//wAAf/AAAP/8AAH/AAAH//AAD/gAAD//wAA/wAAB//8AAP8AAA///AAD/AAAf+fwAA/gAAP/n8AAP4AAH/x/AAD+AAD/4fwAA/gAB/8H8AAP8AAf+B/AAD/AAP/AfwAA/4AH/gH8AAH/AH/wB/AAB/8H/4AfwAAP///8AH8AAD////AB/AAAf///gAfwAAD///wAH8AAAf//4AB/AAAD//4AAfwAAAP/8AAH8AAAAf4AAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAADgAAAfwAAAB+AAAH8AAAAfwAAB/AAAAH+AAAfwAAAB/wAAH8AAAA/+AAB/AAAAP/gAAfwA4AA/8AAH8AfgAH/AAB/AP8AA/4AAfwD/gAH+AAH8B/4AB/gAB/A/8AAf4AAfwf/AAD+AAH8P/wAA/gAB/H/8AAf4AAfz//gAH+AAH8//4AB/gAB/f//AA/4AAf/+/4Af8AAH//P/AP/AAB//j////gAAf/wf///4AAH/4H///8AAB/8A///+AAAf+AH///AAAH/AA///gAAB/gAD//wAAAfwAAP/wAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAH/wAAAAAAAH/8AAAAAAAH//AAAAAAAH//wAAAAAAH//8AAAAAAH///AAAAAAH///wAAAAAH///8AAAAAP//9/AAAAAP//8fwAAAAP//4H8AAAAP//4B/AAAAP//4AfwAAAP//4AH8AAAD//4AB/AAAA//4AAfwAAAP/4AAH8AAAD/wAAB/AAAA/wAAAfwAAAPwAH////AADwAB////wAAwAAf///8AAAAAH////AAAAAB////wAAAAAf///8AAAAAH////AAAAAA////wAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAGAHwAAAB///gB+AAAH///8AfwAAB////AP+AAAf///wD/wAAH///+A/+AAB////gP/gAAf///4A/8AAH/8P8AH/AAB/AD+AA/4AAfwA/gAH+AAH8AfwAB/gAB/AH8AAf4AAfwB/AAH+AAH8AfwAB/gAB/AH8AAf4AAfwB/gAH+AAH8Af4AB/gAB/AH/AA/wAAfwB/4Af8AAH8AP/AP/AAB/AD////gAAfwAf///wAAH8AD///8AAB/AA///+AAAfwAH///AAAAAAA///gAAAAAAD//gAAAAAAAP/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAAAH////wAAAAH/////AAAAD/////4AAAB//////AAAA//////4AAAf//////AAAP//////4AAD/8D/w/+AAB/4B/wD/wAAf8A/wAf8AAP+AP4AD/gAD/AD+AAf4AA/wB/AAH+AAP4AfwAB/gAD+AH8AAf4AA/gB/AAH+AAP4AfwAB/gAD+AH+AAf4AA/wB/gAH+AAP8Af8AD/gAD/gH/gB/wAAf8A/8A/8AAH/AP///+AAB/gB////gAAPwAP///wAAB4AD///4AAAMAAf//8AAAAAAD//+AAAAAAAP/+AAAAAAAA/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAAAAAAfwAAAAAAAAH8AAAAAAAAB/AAAAABwAAfwAAAAB8AAH8AAAAD/AAB/AAAAD/wAAfwAAAH/8AAH8AAAH//AAB/AAAP//wAAfwAAP//8AAH8AAf//+AAB/AAf//8AAAfwA///8AAAH8A///4AAAB/A///4AAAAfx///wAAAAH9///wAAAAB////gAAAAAf///gAAAAAH///AAAAAAB///AAAAAAAf/+AAAAAAAH/+AAAAAAAB/8AAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAf/AAAAAP+Af/8AAAAP/4P//wAAAP//P//+AAAH//////wAAB//////8AAA///////gAAf//////8AAH////gP/AAD/wf/wA/wAA/4D/4AP+AAP8Af8AB/gAD/AH/AAf4AA/gA/wAH+AAP4AP4AA/gAD+AD/AAP4AA/gA/wAH+AAP8Af8AB/gAD/AH/AAf4AA/4D/4AP+AAP/B//AH/AAB////4D/wAAf//////8AAD//////+AAAf//////AAAH//////wAAA//8///4AAAD/+D//8AAAAP+Af/8AAAAAAAB/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/gAAAAAAAB//AAAAAAAB//8AAAAAAB///gAAgAAA///8AAcAAAf///gAPAAAH///8AH4AAD////AD/AAB/+H/4B/wAAf+Af+Af8AAP+AB/wD/gAD/gAf8Af4AA/wAD/AH+AAP8AA/wB/gAD+AAH8AP4AA/gAB/AD+AAP4AAfwB/gAD+AAH8Af4AA/wAD/AH+AAP8AA/gD/gAD/gAf4A/wAAf8AP8A/8AAH/gH/Af/AAA///////gAAP//////wAAB//////8AAAP/////+AAAB//////AAAAP/////AAAAA/////gAAAAD////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wA/wAAAAAP8AP8AAAAAD/AD/AAAAAA/wA/wAAAAAP8AP8AAAAAD/AD/AAAAAA/wA/wAAAAAP8AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='), - 46, - atob("ExspGyUkJiQnISYnFQ=="), - 62+(scale<<8)+(1<<16) - ); - return this; -}; - -Graphics.prototype.setMediumFont = function(scale) { - // Actual height 41 (42 - 2) - this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAB/AAAAAAAP/AAAAAAD//AAAAAA///AAAAAP///AAAAB///8AAAAf///AAAAH///wAAAB///+AAAAH///gAAAAH//4AAAAAH/+AAAAAAH/wAAAAAAH8AAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///8AAAAH////AAAAP////wAAAf////4AAA/////8AAB/////+AAD/gAAH+AAD+AAAD/AAH8AAAB/AAH4AAAA/gAH4AAAAfgAH4AAAAfgAPwAAAAfgAPwAAAAfgAPwAAAAfgAHwAAAAfgAH4AAAAfgAH4AAAA/gAH8AAAA/AAD+AAAD/AAD/gAAH/AAB/////+AAB/////8AAA/////4AAAf////wAAAH////gAAAB///+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAfwAAAAAAA/gAAAAAAA/AAAAAAAB/AAAAAAAD+AAAAAAAD8AAAAAAAH8AAAAAAAH//////AAH//////AAH//////AAH//////AAH//////AAH//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAA/AAAP4AAB/AAAf4AAD/AAA/4AAD/AAB/4AAH/AAD/4AAP/AAH/AAAf/AAH8AAA//AAH4AAB//AAP4AAD//AAPwAAH+/AAPwAAP8/AAPwAAf4/AAPwAA/4/AAPwAA/w/AAPwAB/g/AAPwAD/A/AAP4AH+A/AAH8AP8A/AAH/A/4A/AAD///wA/AAD///gA/AAB///AA/AAA//+AA/AAAP/8AA/AAAD/wAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAH4AAAHwAAH4AAAH4AAH4AAAH8AAH4AAAP+AAH4AAAH+AAH4A4AB/AAH4A+AA/AAH4B/AA/gAH4D/AAfgAH4H+AAfgAH4P+AAfgAH4f+AAfgAH4/+AAfgAH5/+AAfgAH5//AAfgAH7+/AA/gAH/8/gB/AAH/4f4H/AAH/wf//+AAH/gP//8AAH/AH//8AAH+AD//wAAH8AB//gAAD4AAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAD/AAAAAAAP/AAAAAAB//AAAAAAH//AAAAAAf//AAAAAB///AAAAAH///AAAAAf/8/AAAAB//w/AAAAH/+A/AAAA//4A/AAAD//gA/AAAH/+AA/AAAH/4AA/AAAH/gAA/AAAH+AAA/AAAHwAAA/AAAHAAf///AAEAAf///AAAAAf///AAAAAf///AAAAAf///AAAAAf///AAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAP/AHgAAH///AP4AAH///gP8AAH///gP8AAH///gP+AAH///gD/AAH/A/AB/AAH4A/AA/gAH4A+AAfgAH4B+AAfgAH4B+AAfgAH4B8AAfgAH4B8AAfgAH4B+AAfgAH4B+AAfgAH4B+AA/gAH4B/AA/AAH4A/gD/AAH4A/4H+AAH4Af//+AAH4AP//8AAH4AP//4AAHwAD//wAAAAAB//AAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///8AAAAD////AAAAP////wAAAf////4AAA/////8AAB/////+AAD/gP4H+AAD/AfgD/AAH8A/AB/AAH8A/AA/gAH4B+AAfgAH4B+AAfgAPwB8AAfgAPwB8AAfgAPwB+AAfgAPwB+AAfgAH4B+AAfgAH4B/AA/gAH8B/AB/AAH+A/wD/AAD+A/8P+AAB8Af//+AAB4AP//8AAAwAH//4AAAAAD//gAAAAAA//AAAAAAAP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAAAAPwAAAAHAAPwAAAA/AAPwAAAD/AAPwAAAf/AAPwAAB//AAPwAAP//AAPwAA//8AAPwAH//wAAPwAf/+AAAPwB//4AAAPwP//AAAAPw//8AAAAP3//gAAAAP//+AAAAAP//wAAAAAP//AAAAAAP/4AAAAAAP/gAAAAAAP+AAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAAH+A//gAAAf/h//4AAA//z//8AAB/////+AAD/////+AAD///+H/AAH+H/4B/AAH8B/wA/gAH4A/gAfgAH4A/gAfgAPwA/AAfgAPwA/AAfgAPwA/AAfgAPwA/AAfgAH4A/gAfgAH4A/gAfgAH8B/wA/gAH/H/4B/AAD///+H/AAD/////+AAB/////+AAA//z//8AAAf/h//4AAAH+A//gAAAAAAH+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAAD/8AAAAAAP/+AAAAAAf//AAcAAA///gA8AAB///wB+AAD/x/4B/AAD+AP4B/AAH8AH8A/gAH4AH8A/gAH4AD8AfgAP4AD8AfgAPwAB8AfgAPwAB8AfgAPwAB8AfgAPwAB8AfgAH4AD8AfgAH4AD4A/gAH8AH4B/AAD+APwD/AAD/g/wP+AAB/////+AAA/////8AAAf////4AAAP////wAAAH////AAAAA///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAD8APwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), 46, atob("DxcjFyAfISAiHCAiEg=="), 54+(scale<<8)+(1<<16)); - return this; -}; - -Graphics.prototype.setSmallFont = function(scale) { - // Actual height 28 (27 - 0) - this.setFontCustom( - atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+cB//5wH//nAAAAAAAAAAAAAAAAAAAB8AAAHwAAAfAAAAAAAAAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAQcAADhwAAOHBAA4c8ADh/wAP/+AB/+AA//wAH+HAAe4cMBDh/wAOP/AA//wAP/wAH/3AAf4cABzhwAAOHAAA4cAADgAAAOAAAAAAAAAAAAAAAAAAAAwAH8HwA/4PgD/geAePA8BwcBw/BwH78DgfvwOB+HA4HAeBwcA8HDgB4f+ADg/wAGB+AAAAAAAAAAAAAAAH4AAA/wBwHngPAcOB4Bw4PAHDh4AcOPAA/x4AD/PAADx4AAAPAAAB5wAAPPwAB5/gAPOPAB4wcAPDBwB4MHAPA4cA4B/gBAH8AAAHAAAAAAAAAAAAAPAAHD/AB/f+AP/x4B4+DwHB4HAcDwcBwHhwHAPHAcAccB4A5wDgB+AGA/4AAH/AAAf+AAAA8AAABgAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AD//+A/+/+H4AD98AAB3gAADIAAAAAAAAAAAAAIAAABwAAAXwAAHPwAB8P8D/gP//4AH/8AAAAAAAAAAAAAAAAAAAAAAAAHAAAAcwAAA/gAAb8AAB/gAAH+AAAD+AAAOwAABxAAADAAAAAAAAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAB//AAH/8AAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAABwAAAHIAAAfgAAB8AAAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAABwAAAHAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAA/wAA//AA//AA//AAH/AAAfAAABAAAAAAAAAAAAAAAAAAAf/wAH//wA///gDgAOAcAAcBwABwHAAHAcAAcBwABwHgAPAPAB4Af//AA//4AA/+AAAAAAAAAAAAAAAAMAAABwAAAOAAAB4AAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAAwAcAPADwB8AfAPAB8B4APwHAB/AcAPcBwB5wHAPHAcB4cA8PBwD/4HAH/AcAHwBwAAAAAAAAAAAAGAHAAcAcAB4BwYDwHDwHAceAcBz4BwHfgHAf3AcB+eDwHw/+AeB/wBwD+AAAAAAAAAAAAAAAAABwAAAfAAAP8AAD/wAA/nAAP4cAD+BwAfgHAB4AcAEA//AAD/8AAP/wAABwAAAHAAAAMAAAAAAAAAAAAAEAH/w4Af/D4B/8HgHDgPAcOAcBw4BwHDgHAcOAcBw8DwHB4eAcH/wBgP+AAAPwAAAAAAAAAAAAAAAB//AAf//AD//+AOHB4Bw4BwHDgHAcOAcBw4BwHDgHAcPA8A4eHgDh/8AEB/gAAD4AAAAAAAAAABwAAAHAAAAcAAMBwADwHAB/AcA/4BwP8AHH/AAd/gAB/wAAH8AAAeAAAAAAAAAAAAAAAEAAPD+AB/f8AP//4B4+DwHDwHAcHAcBwcBwHBwHAcPAcB/+DgD//+AH5/wACB8AAAAAAAAAAAAAAAAEAAAD+AAAf+DAD74OAODw8BwHBwHAOHAcA4cBwDBwHAcHAeBw8A+ePgB//8AD//gAB/wAAAAAAAAAAAAAAAAAAAAAHBwAAcHAABwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AcgDgB+AOAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAeAAAD8AAAf4AADzwAAeHgADwPAAGAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACAAOAcAA8DgAB4cAABzgAAD8AAAHgAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAHgAAA+AAAHgAAAcAAABwD5wHAfnAcD8cBweAAHzwAAP+AAAfwAAAcAAAAAAAAAAAAAAAAAAB/AAA//AAH/+AA8A8AHAA4A4ABwDg+HAcH8OBw444GDBhgYMGGBgwYYHDjjgcP8OBw/44DgDhAOAGAAeAYAA+HgAB/8AAB/gAAAAAAAAAAAAABAAAA8AAAfwAAP/AAH/gAD/4AB/zgAf4OAB8A4AHwDgAf4OAA/84AAP/gAAH/AAAD/gAAB/AAAA8AAAAQAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBweBwHj4HAP/58Afz/gAcH8AAAPAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB8B8ADwHgADAYAAAAAAAAAAAAAAAH///Af//8B///wHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAeAA8A8AHgB8B+AD//gAH/8AAD/AAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOAAHA4AAcDgABwOAAHA4AAcDgABwOAAHAAAAcAAAAAAAAAP/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwGBwHgYPAOBg4A+GPgB4f8ADh/gAAH4AAAAAAAAAAAAAAAH///Af//8B///wAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAABgAAAHgAAAeAAAA8AAABwAAAHAAAAcAAABwH///Af//4B///AAAAAAAAAAAAAAAAAAAAf//8B///wH///AAHgAAA/AAAH+AAA88AAHh8AA8D4AHgDwA8AHgHgAPAYAAcBAAAwAAABAAAAAAAAAAH///Af//8B///wAAAHAAAAcAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAAAAAAAAAAAAH///Af//8B///wB/AAAB/AAAA/AAAA/gAAA/gAAA/gAAA/AAAD8AAA/AAAfwAAH8AAB/AAAfgAAP4AAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wD8AAAD4AAAH4AAAHwAAAPwAAAPgAAAPgAAAfAAAAfAAAA/Af//8B///wH///AAAAAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAH///Af//8B///wHAOAAcA4ABwDgAHAOAAcA4ABwDgAHAeAAeBwAA+fAAD/4AAD/AAADgAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAnAcAHcA4AfgDwA+AH4P4AP//wAf/3AAP4AAAAAAAAAAAf//8B///wH///AcA4ABwDgAHAOAAcA4ABwDgAHAOAAcB+AB4H+AD59/AP/h8AP8BwAOABAAAAAAAAAAAAAwAD4HwA/4fAD/geAePA8BwcBwHBwHAcDgcBwOBwHA4HAcDgcA4HDwD4eeAHw/4AOD/AAIDwAAAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAH///Af//8B///wHAAAAcAAABwAAAHAAAAcAAABwAAAGAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAGAAAAfAAAB/gAAB/wAAA/4AAAf8AAAP/AAAH8AAADwAAA/AAAf8AAP+AAP/AAH/gAB/wAAH4AAAcAAABAAAAHwAAAf4AAA/+AAAP/gAAH/wAAB/wAAA/AAAf8AAf/AAP/gAP/gAB/gAAH4AAAf+AAAf/AAAH/wAAB/8AAAfwAAB/AAB/8AA/+AA/+AAf+AAB/AAAHAAAAAAAAAAAAQGAADAeAA8B8AHwD8B+AD4PgAH74AAH/AAAPwAAA/gAAP/gAD8fAAfA/AH4A+AeAA8BwABwEAABAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAABAcAAcBwADwHAA/AcAP8BwD/wHAfnAcH4cBx+BwHPwHAf8AcB/ABwH4AHAeAAcBgABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////gAAAOAAAA4AAADAAAAAAAAAAAAAAAAAAAAAAAeAAAB/gAAH/4AAB/+AAAf/gAAH/AAAB8AAAAQAAAAAAAAAAAAAAOAAAA4AAADgAAAP/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAB4AAADwAAADgAAAHAAAAOAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xwAOGHAA44MADjgwAOOHAA44YADjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAAAf//8B///wH//+AAcA4ADgBwAOAHAA4AcADgBwAOAHAA8A8AB8PgAD/8AAH/gAAH4AAAAAAAAAAAAH4AAB/4AAP/wAB4HgAPAPAA4AcADgBwAOAHAA4AcADgBwAPAPAAeB4AA4HAABgYAAAAAAAAAAAAfgAAH/gAB//gAHgeAA8A8ADgBwAOAHAA4AcADgBwAOAHAAcA4B///wH///Af//8AAAAAAAAAAAAAAAAH4AAB/4AAP/wAB7HgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAwAAAAAAAAAAAAwAAADAAAB///AP//8B///wHMAAAYwAABjAAAGMAAAAAAAAAPwAAD/wMA//w4DwPHgeAePBwA4cHADhwcAOHBwA4cHADhwOAcPB///4H///Af//wAAAAAAAAAAAAAAAAAAB///wH///AAf/8ABwAAAOAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAAAAAc//8Bz//wHP//AAAAAAAAAAAAAAHAAAAcAAAH+f///5///7H//8AAAAAAAAAAAAAAH///Af//8B///wAAPAAAB+AAAP8AAB54AAfDwAD4HgAOAPAAwAcACAAwAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAAD4AAAH//AAP/8AB//wAHAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAADgAAAPAAAAf/8AA//wAB//AAAAAAAAAAAAAAAAB+AAAf+AAD/8AAeB4ADwDwAOAHAA4AcADgBwAOAHAA4AcADwDwAHw+AAP/wAAf+AAAfgAAAAAAAAAAAAAAAB///8H///wP///A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAA//wADwPAAeAeABwA4AHADgAcAOABwA4AHADgAOAcAB///8H///wf///AAAAAAAAAAAAAAAAAAAD//wAP//AAf/8ABwAAAOAAAA4AAADgAAAOAAAAAAAAAYGAAD4cAAfx4AD3DwAOOHAA44cADjhwAOGHAA4ccADxzwAHj+AAOP4AAYOAAAAAAAwAAADAAAAMAAAP//wA///gD///AAwAcADABwAMAHAAwAcADAAwAAAAAAAAAAD/gAAP/4AA//4AAA/gAAAPAAAAcAAABwAAAHAAAAcAAABwAAAOAA//8AD//wAP//AAAAAAAAAAAIAAAA4AAAD8AAAH+AAAH/AAAD/gAAB/AAAB8AAA/wAAf8AAP+AAD/AAAPgAAAwAAAAAAAAIAAAA8AAAD/AAAH/gAAD/wAAA/wAAA/AAAf8AAP+AAP+AAA/AAAD+AAAH/AAAD/gAAA/wAAA/AAAf8AAP/AAP/AAA/gAADgAAAAAAAAAAEADAAwAOAHAA+B8AB8PgAB74AAD/AAAH4AAA/wAAHvgAB8PgAPgfAA4AcADAAwAAABABAAAAHAAAAfgAAA/wAAA/wAwAf4fAAP/8AAP/AAB/gAA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAEADAAwAOAPAA4B8ADgPwAOD/AA4ecADnxwAO8HAA/gcAD8BwAPAHAA4AcACAAwAAAAAAAAAAAAAAAAAAAAAAAAAA8AB////f//////n/+AAAA4AAADgAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAA4AAADgAAAOAAAA//5/9////z////AAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAB8AAAHwAAAcAAABwAAAHgAAAOAAAA8AAABwAAAHAAAB8AAAHwAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAGAAABwAAAOAAABwAAAHAAAAcAAAA4AAABwAAABgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAOAB4B4ADwPAAHh4AAPPAAAf4AAA/AAAB4AAAPwAAB/gAAPPAAB4eAAPA8AB4B4AHADgAIAEAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAHDDgA8MPADww8AGDBgAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn//gOf/+A5//4AAAAAAAAAAAAAAAAAAAD/AAA//AAH/+AA+B8ADgBwAOAHAHwAPgfAA+B8AD4A4AcADwDwAHgeAAOBwAAQCAAAAAAAAAAAADgcAAOBwAA4HAD//8A///wD///AeDgcBwOBwHA4HAcDgcB4GBwD4AHAHgAcAOAAAAAAAAAAAAAMAGAB7+8AD//gAHx8AAcBwADgDgAOAOAA4A4ADgDgAOAOAA4A4ABwHAAHg8AA//4AH//wAMOGAAAAAAQAAABwAAAHwMYAPwxgAfjGAAfsYAAf7gAAf/wAB//AAf/8AH7GAA/MYAPwxgB8DGAHAAAAQAAAAAAAAAAAAAf/D/5/8P/n/w/+AAAAAAAAAAAAAAAAAAAABwAAffhwD//Hgf+cfBzwwcGHDhwYcOHBxw4cHDhxwfOPvA8//4Bx//AADwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAP/wAB//gAPAPAB4AOAPDw8A4/xwHH/jgc4HOBzgc4HMAzgcwDOBzgc4HPDjgOcOeA4whwBwAOAHwD4APw/AAf/4AAf+AAAPAAAAAAAATgAAD/AAANsAAA2wAADTAAAP8AAAfwAAAAAAAAAAAAAAAAAAgAAAPAAAB+AAAOeAADw8AAOIwAADxAAAfgAADngAA8PAADgMAAEAQAAAAAAAAAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAB+AAAH4AAAAAAAAAAAAAAAAAAAAD8AAA/8AAHh4AAYDgAD/3AAN/MAA0QwADRjAAN/MAA7hwABwOAADhwAAH+AAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAD/AAAeeAABw4AAGDgAAYOAABw4AAH/AAAP8AAAfAAAAAAAAAAAAAAAAAAAwYAADBgAAMGAAAwYAADBgAAMGAAP+YAA/5gAD/mAAAwYAADBgAAMGAAAwYAADBgAAAAAAAAAAAAAAAMDAABwcAAPDwAAwPAADB8AAMOwAA5zAAB+MAADwwAAAAAAAAAAAIBAAAwGAADMcAANwwAA/DAAD8MAAO/wAAx+AAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///B///8H//AAAAeAAAA4AAADgAAAOAAAA4AAADgAAAcAB//gAH//gAf/+AAAAAAAAAAAAAAAAAAAAP4AAB/4AAP/gAB//AAH/8AAf/wAB//AAH///8f///x////AAAAAAAAAB////H///8f///wAAAAAAAAAAAAAAABAAAAOAAAB4AAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzAAAPMAAA/wAAAeAAAAAAAAAAAAAAAAAAAIAAABgAAAMAAAA//AAD/8AAAAAAAAAAAAAAAAAAAAAA8AAAP4AAAwwAADDAAAMMAAA5wAAB+AAADwAAAAAAAAAAAAAAAAAMAwAA8HAAB44AAD/AAAD4AADGMAAOBwAAeOAAA/wAAA+AAABgAAAAAAAAAAAAAAABAAAAMAAABwAAAH/8CAf/wcAAAHgAAA8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgCAA8A8APAfwB4H7AHB+MAAHAwAAQ/wAAD/AAAAwAAADAAAAAAAAAAAAAAAAAAAAEAAAAwAAAHAAAAf/wIB//BwAAAeAAADwAAAeAAAHgAAA8AAAHgAAB4AAAPAAAD4AAAeAAADwAAA8GAwHg4HAcHA8AAYHwABg7AAGHMAAf4wAA/DAAA4MAAAAAAAAAAYBgABgHAAGMOAAZwYABvBgAH8OCAe/wcBx+HgABg8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgHAA8B8APAfwB4HzADB8MAAHAwAAQ/wAAD/AAAAwAAAAAAAAAAAAAAAAAA4AAAP4AAB/wAAPHgABwOA4/A4Dn4DgOfAOAAAA4AAAHgAAB8AAAHgAAAYAAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAAAAAABwAAA/AAAf8AAP/AAH/wfD/nD+/wcMb4BwxvgHD+/wcHx/5wEAf/AAAP+AAAH/AAAD8AAABwAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAcAOABwA4AHADgAf//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAYAAMAAAAAAAAAAA/4AAP/4AD//4APAHgB4APAPAAeA4AA4DgADg+AAPz4AA//gAD/+AAOe4AA4BwAHAHgA8APgPgAeA8AAYDAAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcAAcBwABwAAAAAAAAAAAAAAH///Af//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwABwHAAHAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAABgAAAGAAH///Af//8B///wHAYHAcBgcBwGBwHAYHAcBgcBwABwHAAHAeAA8A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAAAAAf//8B///wH///APwAAAPgAAAfgAAAfAAAA/AAAA+AAAA+AAAB8AAAB8AAAD8B///wH///Af//8AAAAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAB/wAAf/wAH//wAeAPADwAeAeAA8BwABwHAAHAcAAcBwABwHAAHAcAAcBwABwDgAOAPAB4Afg/AA//4AB//AAA/gAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAGDgAA8eAAB7wAAD+AAAHwAAAfAAAD+AAAe8AADw4AAGBAAAAAAAAAAAAAAAAAf8MAH//4B///AHgD4A8AfgHgD/AcAecBwDxwHAeHAcDwcBw+BwHHgHAc8AcA/gDgD8AeAH4PwA//+AH//wAMP4AAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAAAAAAAAAAB//8AH//4Af//wAAAHgAAAPAAAAcAAABwAAAHAAAAcAAABwAAAHAAAA4AAAHgH//8Af//gB//4AAAAAAAAAAAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAAAAf//8B///wH///ABwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHg8AAP/gAAf8AAA/gAAAAAAAAAAAAAAAA///AP//8A///wHgAAAcAAcBwABwHBwHAcHAcB4+BwD/4PAH954APn/gAAP8AAAOAAAAAAAAAAAAAD4AAcfwADz/gAfOOCBww4PHHBg+ccGAZxw4AHHDAAcYcAA//gAD//gAD/+AAAAAAAAAAAAAAAAAPgABx/AAPP+AB844AHDDgAccGAZxwYPnHDg8ccMDBxhwAD/+AAP/+AAP/4AAAAAAAAAAAAAAAAA+AAHH8AA8/4BnzjgOcMOBxxwYOHHBg4ccOBxxwwDnGHAGP/4AA//4AA//gAAAAAAAAAAAAAAAAHwAA4/gAHn/A8+ccDzhhwMOODA444MBjjhwHOOGAM4w4Dx//AOH//AAH/8AAAAAAAAAAAAAAAAAfAADj+AAef8Bz5xwHOGHAc44MADjgwAOOHAY44YBzjDgHH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xweOGHD844MMzjgwzOOHD844YHjjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAHwAAx/gAHn/AAc4cADjhwAOMDAA4wcADjBwAOMHAA4w4AB//AAH/4AAP/wAB/fgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAAAAAAAAAA/AAAP/AAB/+AAPA8AB4B4AHADgwcAPzBwA/8HADngcAOMB4B4ADwPAAHA4AAMDAAAAAAAAAAAAA/AAAP/AAB/+AAPY8AB5h4OHGDg+cYOB5xg4AnGDgAcYOAB5h4AD+PAAH44AAPjAAAGAAAAAAAAAAAAAPwAAD/wAAf/gAD2PAAeYeABxg4AHGDgOcYOD5xg4OHGDggeYeAA/jwAB+OAAD4wAABgAAAAAAAAAAAAD8AAA/8AAH/4AY9jwDnmHgecYODhxg4OHGDg8cYOB5xg4BnmHgCP48AAfjgAA+MAAAYAAAAAAAAAAAAB+AAAf+AAD/8Acex4BzzDwHOMHAA4wcADjBwAOMHAc4wcBzzDwGH8eAAPxwAAfGAAAMAAAAAAAAAAAOAAAA+f/+A5//4An//gAAAAAAAAAAAAAAAAAAAJ//4Dn//g+f/+DgAAAAAAAAMAAABwAAAOP//Aw//8Dj//wHAAAAMAAABwAAAHAAAAA//8AD//wAP//AcAAABwAAAAAAAAAA/gAAP/AAB//AAPA8AA4A4DDgDgPMAOA/wA4D7ADgPOAOB+8B4C/+/AA//4AB//AAAHAAAAAAAAAAAAP//AA//8Bx//wPHAAAw4AADjgAAGOAAAc4AAAzgAAPPAAA4f/8AA//wAB//AAAAAAAAAAAAAAAAA/AAAP/AAB/+AAPA8CB4B4OHADg+cAOA5wA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAAf/gADwPAAeAeABwA4AnADgecAOD5wA4OHADgAeAeAA+HwAB/+AAD/wAAD8AAAAAAAAAAAAD8AAA/8AAH/4AY8DwDngHgecAODhwA4OHADg8cAOB5wA4BngHgCPh8AAf/gAA/8AAA/AAAAAAAAAAAAB+AAAf+AAD/8AceB4DzwDwMOAHA44AcBjgBwHOAHAM4AcDzwDwOHw+AAP/wAAf+AAAfgAAAAAAAAAAAAfgAAH/gAA//AHHgeAc8A8BzgBwAOAHAA4AcADgBwHOAHAc8A8Bh8PgAD/8AAH/gAAH4AAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAADtwAAO3AAA7cAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAH5gAB//AAP/4AB4PgAPB/AA4PcADh5wAOPHAA54cADvBwAP4PAAfD4AB//AAP/4AAZ+AAAAAAAAAAAAf8AAB//AAH//AAAH8AAAB4OAADg+AAOB4AA4AgADgAAAOAAABwAH//gAf/+AB//4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAB/AAAAeAAAA4BgADgeAAOD4AA4MAADgAAAcAB//4AH//gAf/+AAAAAAAAAAAAAAAB/wAAH/8AAf/8AYAfwDgAHgcAAODgAA4OAADg8AAOB4AA4BgAHACf/+AB//4AH//gAAAAAAAAAAAAAAA/4AAD/+AAP/+AcAP4BwADwHAAHAAAAcAAABwAAAHAcAAcBwADgGP//AA//8AD//wAAAAAAAAAABAAAAHAAAAfgAAA/wAAA/wAAAf4cAAP/zgAP/+AB/jgA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAAAAAAA//////////////A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAABAAAAHAAAAfgAAw/wADg/wA+Af4fAAP/8AAP/AAB/g4A/wDgf4AOP+AAB/AAAHgAAAQAAA=='), - 32, - atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), - 28+(scale<<8)+(1<<16) - ); - return this; -}; - -Graphics.prototype.setMiniFont = function(scale) { - // Actual height 16 (15 - 0) - this.setFontCustom( - atob('AAAAAAAAAAAAAP+w/5AAAAAA4ADgAOAA4AAAAAAAAAABgBmAGbAb8D+A+YDZ8B/wf4D5gJmAGQAQAAAAAAAeOD8cMwzxj/GPMYwc/Az4AAAAAHAA+DDIYMjA+YBzAAYADeA7MHMw4zDD4ADAAAAz4H/wzjDHMMMwwbBj4APgADAAAAAA4ADgAAAAAAAAAAfwH/54B+ABAAAAAOABeAcf/gfwAAAAACAAaAD4APgAOABgAAAAAAACAAIAAgA/wAMAAgACAAAAAAAAPAA4AAAAAAIAAgACAAIAAgAAAAAAADAAMAAAAAAAcAfwf4D4AIAAAAA/wH/gwDDAMMAwwDB/4D/AAAAAAGAAwAD/8P/wAAAAAHAw8HDA8MHww7DnMH4wGBAAAMBgyHDcMPww/DDv4MfAAAAAAAHgD+A+YPhgwGAH8AfwAEAAAAAA/GD8cMwwzDDMMM5wx+ABgAAAP8B/4MwwzDDMMMwwx+ADwAAAgADAAMBwwfDPgP4A8ADAAAAAe+D/8M4wxjDGMP5wf+ABwAAAfAB+cMYwwjDCMMYwf+A/wAAAAAAAAAxgBCAAAAAAAAAYPBA4AAAAAAAAAgAHAA+AHMAYYAAAAAAAAAAAAAAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAAABhgHMAPgAcAAgAAAAAAAABgAOAAwbDDsMYA/AA4AAAAAAAD4A/wGBgxzDPsMyQjJDPkM+wYIBxgD+AAAAAAABAA8A/gf8DwwODA/sAfwAHwADAAAP/w//DGMMYwxjDOMP9we+ABwA8AP8Bw4MAwwDDAMMAwwDDgcHDgMMAAAAAA//D/8MAwwDDAMMAw4HB/4D/AAAAAAP/w//DGMMYwxjDGMMQwgBAAAP/w//DDAMMAwwDDAMAADwA/wHDgwDDAMMAwwDDCMOJwc+ADwAAA//D/8AMAAwADAAMAAwD/8P/wAAAAAP/w//AAAABgAHAAMAAwAHD/4P+AAAAAAP/w//AOAB+AOcBw4MBwgDAAEAAA//D/8AAwADAAMAAwADAAAP/w//A8AA8AA+AA8AHwB8AeAHgA//D/8AAAAAD/8P/wcAAcAA8AA4AB4P/w//AAAA8AP8Bw4MAwwDDAMMAwwDDgcH/gP8AAAAAA//D/8MMAwwDDAMYA7gB8ABgADwA/wHDgwDDAMMAwwDDA8ODwf/A/8AAAAAD/8P/wwwDDAMMAx4Dv4HxwEBAAAHjg/HDMMMYwxjDGMONwc+ABwMAAwADAAMAA//D/8MAAwADAAIAAAAD/wP/gAHAAMAAwADAAMAHg/8AAAMAA+AA/AAfgAPAA8AfgPwD4AMAAwAD4AD+AA/AA8A/g/gDwAP4AH8AB8APwH8D8AMAAgBDAMPDgO8APAB8AOcDw8MAwgBCAAOAAeAAeAAfwH/B4AOAAwAAAAMAwwPDB8Mew3jD4MPAwwDAAAAAAAAB//3//QABAAAAAAADgAP4AH+AB8AAQAABAAEAAf/9//wAAAAAAAAAAGAAwAGAAwABgADAAGAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAQA3wHbAZMBswGzAf4A/wAAAAAP/w//AYMBgwGDAYMA/gB8AAAAEAD+Ae8BgwGDAYMBgwDGAAAAMAD+Ae8BgwGDAYMBhw//D/8AAAAYAP4B/wGTAZMBkwGTAP4AcAEAAYAP/w//CQAJAAAwAP4hz3GDMQMxAzGHcf/h/8AAAAAP/w//AYABgAGAAYAA/wB/AAAAAA3/Df8AAAAAOf/9//AAAAAP/w//ADgAfADGAYMBAQAAD/8P/wAAAAAB/wH/AYABgAGAAf8A/wGAAYABgAH/AP8AAAAAAf8B/wGAAYABgAGAAP8AfwAAADAA/gHvAYMBgwGDAYMA/gB8AAAAAAH/8f/xgwGDAYMBgwD+AHwAAAAwAP4B7wGDAYMBgwGHAf/x//AAAAAB/wH/AYABgAEAAAAA5gHzAbMBkwGbAd8AzgEAAYAP/wf/AQMBAwAAAAAB/gH/AAMAAwADAAcB/wH/AAABAAHgAPwAHwAPAH4B8AGAAQAB8AB+AA8APwHwAeAA/AAPAD8B+AHAAQEBgwHOAHwAOAD+AccBAwAAAQAB4AD4EB/wB8A/APgBwAAAAAEBgwGPAZ8B8wHjAcMBAQAAAAAABgf/9/n2AAAAAAAP/w//AAAEAAYAB/nz//AGAAAAAAAAAAAAcABgAGAAcAAwAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), - 32, - atob("AwUHDwoOCwQHBwcJBAcEBgoGCQkKCQoICQoFBQoMCgkPCgoMCwkICwsECAoIDgsMCgwKCgoLCg8KCQoHBgcLCwgJCgkKCQYKCgQECAQOCgoKCgYIBwoIDAkJCAcEBwsQ"), - 16+(scale<<8)+(1<<16) - ); - return this; -}; - let imgLock = function() { return { width : 16, height : 16, bpp : 1, @@ -103,31 +63,31 @@ let clockInfoItems = clock_info.load(); // Add some custom clock-infos let weekOfYear = function() { - var date = new Date(); + let date = new Date(); date.setHours(0, 0, 0, 0); // Thursday in current week decides the year. date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7); // January 4 is always in week 1. - var week1 = new Date(date.getFullYear(), 0, 4); + let week1 = new Date(date.getFullYear(), 0, 4); // Adjust to Thursday in week 1 and count number of weeks from date to week1. return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7); -} +}; clockInfoItems[0].items.unshift({ name : "weekofyear", get : function() { return { text : "Week " + weekOfYear(), - img : null}}, + img : null};}, show : function() {}, hide : function() {}, -}) +}); // Empty for large time clockInfoItems[0].items.unshift({ name : "nop", get : function() { return { text : null, - img : null}}, + img : null};}, show : function() {}, hide : function() {}, -}) +}); @@ -138,7 +98,7 @@ let clockInfoMenu = clock_info.addInteractive(clockInfoItems, { w: W, h: H-135, draw : (itm, info, options) => { - var hideClkInfo = info.text == null; + let hideClkInfo = info.text == null; g.setColor(g.theme.fg); g.fillRect(options.x, options.y, options.x+options.w, options.y+options.h); @@ -147,8 +107,8 @@ let clockInfoMenu = clock_info.addInteractive(clockInfoItems, { g.setColor(g.theme.bg); if (options.focus){ - var y = hideClkInfo ? options.y+20 : options.y+2; - var h = hideClkInfo ? options.h-20 : options.h-2; + let y = hideClkInfo ? options.y+20 : options.y+2; + let h = hideClkInfo ? options.h-20 : options.h-2; g.drawRect(options.x, y, options.x+options.w-2, y+h-1); // show if focused g.drawRect(options.x+1, y+1, options.x+options.w-3, y+h-2); // show if focused } @@ -161,22 +121,22 @@ let clockInfoMenu = clock_info.addInteractive(clockInfoItems, { } // Set text and font - var image = info.img; - var text = String(info.text); + let image = info.img; + let text = String(info.text); if(text.split('\n').length > 1){ - g.setMiniFont(); + g.setFont("6x8"); //g.setMiniFont(); } else { - g.setSmallFont(); + g.setFont("6x8:3"); //g.setSmallFont(); } // Compute sizes - var strWidth = g.stringWidth(text); - var imgWidth = image == null ? 0 : 24; - var midx = options.x+options.w/2; + let strWidth = g.stringWidth(text); + let imgWidth = image == null ? 0 : 24; + let midx = options.x+options.w/2; // Draw if (image) { - var scale = imgWidth / image.width; + let scale = imgWidth / image.width; g.drawImage(image, midx-parseInt(imgWidth*1.3/2)-parseInt(strWidth/2), options.y+6, {scale: scale}); } g.drawString(text, midx+parseInt(imgWidth*1.3/2), options.y+20); @@ -206,56 +166,56 @@ let draw = function() { let drawDate = function() { // Draw background - var y = getLineY() + let y = getLineY(); g.reset().clearRect(0,0,W,y); // Draw date y = parseInt(y/2)+4; y += isFullscreen() ? 0 : 8; - var date = new Date(); - var dateStr = date.getDate(); + let date = new Date(); + let dateStr = date.getDate(); dateStr = ("0" + dateStr).substr(-2); - g.setMediumFont(); // Needed to compute the width correctly - var dateW = g.stringWidth(dateStr); + g.setFont("6x8:4"); //g.setMediumFont(); // Needed to compute the width correctly + let dateW = g.stringWidth(dateStr); - g.setSmallFont(); - var dayStr = locale.dow(date, true); - var monthStr = locale.month(date, 1); - var dayW = Math.max(g.stringWidth(dayStr), g.stringWidth(monthStr)); - var fullDateW = dateW + 10 + dayW; + g.setFont("6x8:3"); //g.setSmallFont(); + let dayStr = locale.dow(date, true); + let monthStr = locale.month(date, 1); + let dayW = Math.max(g.stringWidth(dayStr), g.stringWidth(monthStr)); + let fullDateW = dateW + 10 + dayW; g.setFontAlign(-1,0); g.drawString(dayStr, W/2 - fullDateW/2 + 10 + dateW, y-12); g.drawString(monthStr, W/2 - fullDateW/2 + 10 + dateW, y+11); - g.setMediumFont(); + g.setFont("6x8:4"); //g.setMediumFont(); g.setColor(g.theme.fg); g.drawString(dateStr, W/2 - fullDateW / 2, y+2); }; let drawTime = function() { - var hideClkInfo = clockInfoMenu.menuA == 0 && clockInfoMenu.menuB == 0; + let hideClkInfo = clockInfoMenu.menuA == 0 && clockInfoMenu.menuB == 0; // Draw background - var y1 = getLineY(); - var y = y1; - var date = new Date(); + let y1 = getLineY(); + let y = y1; + let date = new Date(); - var hours = String(date.getHours()); - var minutes = date.getMinutes(); + let hours = String(date.getHours()); + let minutes = date.getMinutes(); minutes = minutes < 10 ? String("0") + minutes : minutes; - var colon = settings.hideColon ? "" : ":"; - var timeStr = hours + colon + minutes; + let colon = settings.hideColon ? "" : ":"; + let timeStr = hours + colon + minutes; // Set y coordinates correctly y += parseInt((H - y)/2) + 5; if (hideClkInfo){ - g.setLargeFont(); + g.setFont("6x8:5"); //g.setLargeFont(); } else { y -= 15; - g.setMediumFont(); + g.setFont("6x8:4"); //g.setMediumFont(); } // Clear region and draw time @@ -330,7 +290,7 @@ let charging = function(charging){ // Jump to battery clockInfoMenu.setItem(0, 2); drawTime(); -} +}; Bangle.on('charging', charging); let kill = function(){ @@ -343,12 +303,6 @@ E.on("kill", kill); * Startup Clock */ -// The upper part is inverse i.e. light if dark and dark if light theme -// is enabled. In order to draw the widgets correctly, we invert the -// dark/light theme as well as the colors. -let themeBackup = g.theme; -g.setTheme({bg:g.theme.fg,fg:g.theme.bg, dark:!g.theme.dark}).clear(); - // Show launcher when middle button pressed Bangle.setUI({ mode : "clock", @@ -362,7 +316,7 @@ Bangle.setUI({ // save settings kill(); E.removeListener("kill", kill); - g.setTheme(themeBackup); + Bangle.removeListener('charging', charging); widget_utils.show(); } }); @@ -371,6 +325,7 @@ Bangle.setUI({ Bangle.loadWidgets(); // Draw first time +g.setColor(g.theme.fg).fillRect(0,135,W,H); // Otherwise this rect will wait for clock_info before updating draw(); } // End of app scope diff --git a/apps/bwclklite/metadata.json b/apps/bwclklite/metadata.json index 430f466b2..8c68bc40d 100644 --- a/apps/bwclklite/metadata.json +++ b/apps/bwclklite/metadata.json @@ -1,19 +1,43 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.31", + "version": "0.32", "description": "A very minimalistic clock.", "readme": "README.md", "icon": "app.png", - "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}, {"url":"screenshot_3.png"}], + "screenshots": [ + { + "url": "screenshot.png" + }, + { + "url": "screenshot_2.png" + }, + { + "url": "screenshot_3.png" + } + ], "type": "clock", "tags": "clock,clkinfo", - "supports": ["BANGLEJS2"], - "dependencies" : { "clock_info":"module" }, + "supports": [ + "BANGLEJS2" + ], + "dependencies": { + "clock_info": "module" + }, "allow_emulator": true, "storage": [ - {"name":"bwclk.app.js","url":"app.js"}, - {"name":"bwclk.img","url":"app-icon.js","evaluate":true}, - {"name":"bwclk.settings.js","url":"settings.js"} + { + "name": "bwclk.app.js", + "url": "app.js" + }, + { + "name": "bwclk.img", + "url": "app-icon.js", + "evaluate": true + }, + { + "name": "bwclk.settings.js", + "url": "settings.js" + } ] } From 20e300182e21fb2cfc413efcd8f5bc714d2a00e8 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sat, 25 Feb 2023 19:03:59 +0100 Subject: [PATCH 3/7] Change all occurrances of bwclk to bwclklite --- apps/bwclklite/README.md | 7 +++++-- apps/bwclklite/app.js | 4 ++-- apps/bwclklite/metadata.json | 12 ++++++------ apps/bwclklite/settings.js | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/bwclklite/README.md b/apps/bwclklite/README.md index 882d525f6..974411be0 100644 --- a/apps/bwclklite/README.md +++ b/apps/bwclklite/README.md @@ -1,5 +1,5 @@ -# BW Clock -A very minimalistic clock. +# BW Clock Lite +This is a fork of a very minimalistic clock. ![](screenshot.png) @@ -25,3 +25,6 @@ Note: Check out the settings to change different themes. ## Creator [David Peer](https://github.com/peerdavid) + +## Contributors +thyttan diff --git a/apps/bwclklite/app.js b/apps/bwclklite/app.js index 61a3feae1..1008eae9c 100644 --- a/apps/bwclklite/app.js +++ b/apps/bwclklite/app.js @@ -11,7 +11,7 @@ const widget_utils = require("widget_utils"); /************************************************ * Globals */ -const SETTINGS_FILE = "bwclk.setting.json"; +const SETTINGS_FILE = "bwclklite.setting.json"; const W = g.getWidth(); const H = g.getHeight(); @@ -92,7 +92,7 @@ clockInfoItems[0].items.unshift({ name : "nop", let clockInfoMenu = clock_info.addInteractive(clockInfoItems, { - app: "bwclk", + app: "bwclklite", x : 0, y: 135, w: W, diff --git a/apps/bwclklite/metadata.json b/apps/bwclklite/metadata.json index 8c68bc40d..bab852623 100644 --- a/apps/bwclklite/metadata.json +++ b/apps/bwclklite/metadata.json @@ -1,8 +1,8 @@ { - "id": "bwclk", - "name": "BW Clock", + "id": "bwclklite", + "name": "BW Clock Lite", "version": "0.32", - "description": "A very minimalistic clock.", + "description": "A very minimalistic clock. This version of BW Clock is quicker at the cost of the custom font.", "readme": "README.md", "icon": "app.png", "screenshots": [ @@ -27,16 +27,16 @@ "allow_emulator": true, "storage": [ { - "name": "bwclk.app.js", + "name": "bwclklite.app.js", "url": "app.js" }, { - "name": "bwclk.img", + "name": "bwclklite.img", "url": "app-icon.js", "evaluate": true }, { - "name": "bwclk.settings.js", + "name": "bwclklite.settings.js", "url": "settings.js" } ] diff --git a/apps/bwclklite/settings.js b/apps/bwclklite/settings.js index 116253fda..2d3916a3d 100644 --- a/apps/bwclklite/settings.js +++ b/apps/bwclklite/settings.js @@ -1,5 +1,5 @@ (function(back) { - const SETTINGS_FILE = "bwclk.setting.json"; + const SETTINGS_FILE = "bwclklite.setting.json"; // initialize with default settings... const storage = require('Storage') From 05146ce283ef06bed856cac08164817e75607c03 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sat, 25 Feb 2023 19:17:29 +0100 Subject: [PATCH 4/7] change screenshots --- apps/bwclklite/screenshot.png | Bin 2841 -> 2022 bytes apps/bwclklite/screenshot_3.png | Bin 3031 -> 2307 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bwclklite/screenshot.png b/apps/bwclklite/screenshot.png index 37acf7cc07edd69a42f300923ecb8bfbec97a9cc..e5eee966040bddbe4dfaa92bf2705fec429760c1 100644 GIT binary patch literal 2022 zcmeHIdo+{@6dzxo`c#-np@_`HNTQ*qkyo=sFO8Yxo$`h4K}Iafc&p8$ z`5M_`6n&|TRIH-(klDPpLh>3Bv(wo>_pkkP&)IvZi@1t>u!+=D^GAg%fzl>`i@Ik6z6oPhS9#b6etJK67GMF$M$ zw?`7zEma*>C=P~g&Kx?fUn4o2f{pCYi(h4QuB3=hCWqJiS=0y=(=eJ1BGBFby7mbj z6_B1RQd=|n@(E)cN?qWqWhWEm2nKMvi*B1FpuU!d&j=eeLR~R%O~CeC21mau7XyUV zpRg97B=Hs%@O|vJg9b34a|D3yPL9Ro-s_&9qYqEclt0`~h3>ZbxPD#^Un@4|FH`|r zi@wvgq&4Qbt{-<#LoL^`n^@Q`#$~cta5Ya24rV>G1G)Gy@M*M*AQTK9;tyPA=Nf!~ z-t9cHMjKuvvt4-}4X>SVQCd5~s6OIWZ6*kNMeu!1a()W9csPOC8)Fi&T~aML-n`!h zGA}*65YN+U&&BjtA)#Qu>uHZ8>dBE_AlJ%gS+Qd>nzL&g?4L4r)IY2tTZCw`MK;ho z{Diy>=iNJTipAnMGzYCe@D-sriZhUk2};t{H`)*M^ti{V9=Z@V z_icZJ=8N_6W66mbjF=_-$b3>z=|uLU6>znq;V07%>oQDZu+d|HpdelJRYWbM*fM30 z6Sl#`1txQTz!O!2{D99%!|_kw%S$OOj6rmoqyloqab9p-4^g^8NL~ixrf-g$IB-BZ zXK-hUywzrQ;$U}Gr$pXbDWA-FBaPB$pA85MJn@A_5JOWIOW~k*xuw|YttBgk%VD8e z6YzcqCntSzWwlRB*Xvi8E*Vi78x+{Vx}bvly3eRKCkOI9FJj@)r<`9yOh_ z2lgSEFR~6Cucu21yu>1W)=j9su`DX~>QvNIzD51qM3a1C%d!*{GLO$nMTsS*f|muW z-`H%5`+RGxyj}wSIjk76>3HiFcDE(in)^+SVgvg(-2uI`q+YM;1E3)jGs+=4Ga|>a zJ|?y|Q~Yu^#r391fxpxkt)L)v+>tz#TaxJ}3z~U9JNnueQoY~ox%08%g&i_eNh{xq zxe>IOjw+3at#Ty+ZF|j_vTc5kbL}y3rk!Vqh6-5lAnUplh$X362M=KF{(TTJ>}l`G zIPAUN=SOuHk>Z34q~SVipmO-2*kuVDZB03 zNnY&ot&I|o?rh<0O+J(tzAS`Cml5BF^zAP@8CW-4x%PR*g$HWilM;MMQQJZ8$JwtP zvm~5kfg$OF%uecWL}C0uBW1^!nXljF(hnL3JymeepY zYY%~6Y476|H4X0h>43}b`1{Bd<=CP*P6Q3I8IH|#TJcNe!AtQsLEkqc+gxSBf4Nh79zU#j{P7ca`S1j5D)yu0&$ zOwoaH-raiHmK5_x%#2XQs-s}qEXW`99Gv1toN?pGi3-M&s|_OEj}D?L=PMT_<+jv7 zaRu_m3LrK-*L%J8?;d2e)aF~CMD)Ss!awp*SNkfA7jp3hO;p^9#_O!UEL5gfUa{$A zN$A>pMa8$%P_uPC3i8&;4N2Qq~FaLY^jVIhnv@!(eay6{%VYq1JfR%aZdjQ DNjG3t literal 2841 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 bu7T|roXdI-%T9jpy1+p%KhG+6@|Ax8FvV5G diff --git a/apps/bwclklite/screenshot_3.png b/apps/bwclklite/screenshot_3.png index d52057569b0c80df6656e22333f4347e7552411a..573675d28c55b01ddd97e99a86fd5e53b2552290 100644 GIT binary patch literal 2307 zcmdT`X;4!M5)Lmg%rRuCJ;)!^@Mb zwq?f_6bhy0cHG5B5&8czNLk^lYX3n|1f@$pWM@=mC-#dX0WUeb`9cb?pzw4Q3gWrB z9Q9>TrXENWMvgw z@0z?9jsQ^R7OsksY+}iq2#g@-0EqZ1X?r$8I8cBBvT24brU%qB&95TdPvluB6a8PP zzm%*9g)=ix8V9G{JLGA|C8nSMUf}*iv)Ii_;PkI+u7~dZ9&J@V@6ADCb_EE0Gy}=` zcs}Q`!#1GaJ0Fedbt%^On$7DRfQstc@6vJSP2OS%&X(3Xu$C;L#3WX&$Iu(|QrQOR zi5<-Pn#d~0^%dj=$v%n7u^JisIKfy;`9_9{iE z#=ZE@O!$9H1nZ{}!05-$g8b?ATi~6<}>9#|!C>_fY3}M~Co7Y-`d7V%x zp}M8@WUy`kIBnASZUiGV&DgCD=-LzNe+ZiANn6^(Ht$#NP(QUbPgVnZ>JsXSQE6GE zGd+t8+-RTefenHZXxH0Vj)<1u3$)80WFXL*wcPv|6?CPJ{$Rp9!xKAJ;9t%*%F3MPDLz?9V=eMC64(UhH>=g zh|&d(i@)K=bTXsYCfC~VrDSK&f56f!QpI)8li&w0{vl@4X z!O>JU>CysV4_ytlmxV~0e|28?)Ggd?3sM7PE~sWm>N8dN8=)^bV%(H}^n>Z$QWfvh z4QH7rrUiMUL5~()1mv%6nTk0QlJ@Gu_Aax;AXEC2nlRV-zsxq&l!58p&GA@vx0b=o z=p6(4s(N7vk}J1R>SS}<%BOXK@{GepHu)hTWJb{alc6_#CkoHrLz#)5ertH*LH|i3wUIQ zagvySC@wR;irAjY=yyTEe|5?!xq(th%q&t%38VoY1v>!f)SJ6cJV4EtDmLdMA*26P zC|O#xT@{v`Du%BXqJZ|>+xR&sfc`i0`~Tk=G73^QJj9cK5@xPv4MjJ79V?SpNO_#9 zu~fwJ5yaZKD;nC^FC2+%HVkY;^U;DOqU}cD(#p96YJy}p0AU+4Dhv*;LhW{vNqKkv zC{Op90p#|Mw!d< zE@^vf?JBoP+=LER^+G=-=YS|9;K=e#gWg^M zv(lg9z7xjeXMCkM5zC(##p^RT7*ypaWIA@u@|YicKG7w#t0ESJ zJ-M&l^4`?=Ign!g-tM{qp*%dA1enHl=vi0!&Q-mi0?w+QA%XWmO+75X?J~sXgm;=b0d^1}w)U9iuMj z{aNBBnY53~e(dyl1R^G%L&1U?&b1k^4HU1+@d@;|C$~9K%{)SDwDxGNRNslXw$ydo z%bhCsZEVZg4nMX^o}o6oQ#+BF-SeNetUb@FN;Vez@7!ouTCwl`Mqsap-ie^aaJc=6 zk>!=2&rRiwyKywD3TnG5-u2oBX79RU|6>G~SYym@LdU_49*5@$bH}eCOt(s`w*|jO zO8XvnsA?hDD0^TlyToPQRX~nfU`?lYOESKExp~%#OgyeSc}P%cyiawpqgKc80$W>n z#j(KtusB$-dUup5wiGX0<4$X?sD2dJ>B8IsTK4igoyH8JwO|^d$SX8xVgk;qDCAga zhxB-U$=S$Hckrtleua4Zo3+_xrq=_A?*n=C0t zq=Hr)ZM6LPM5j)ps29G%0Y#(|AtFVQ!A_hZr?AHN8)ZA=GV8f#f<&Ue=1$Fi+cu~R zH`|gWXduRI%{{y+ckO#=RO2srlllX|?oCZ^mh4>R1iw}`^b9LK6mX?)Po#_`?|ozS zZ2yThs~Z&mvSs9o+ViIBaqFJo3CcM|yO4=~6C?e2YZuPozH8PjXXl>9?>cb2t-QwSIQ^?Mz_Q|5+kh`+~w+0z|WfR)o uYgM~s{=uq_HmAT@PLAf3Cbg6WvUi&9?DnP0L literal 3031 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 From 137ad32d85db502a97a6c6848c31a6412f79ec41 Mon Sep 17 00:00:00 2001 From: thyttan <97237430+thyttan@users.noreply.github.com> Date: Sat, 25 Feb 2023 19:19:53 +0100 Subject: [PATCH 5/7] match new screenshot for clock info --- apps/bwclklite/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/bwclklite/README.md b/apps/bwclklite/README.md index 974411be0..1ad320894 100644 --- a/apps/bwclklite/README.md +++ b/apps/bwclklite/README.md @@ -5,9 +5,9 @@ This is a fork of a very minimalistic clock. ## Features The BW clock implements features that are exposed by other apps through the `clkinfo` module. -For example, if you install the HomeAssistant app, this menu item will be shown if you first -touch the bottom of the screen and then swipe left/right to the home assistant menu. To select -sub-items simply swipe up/down. To run an action (e.g. trigger home assistant), simply select the clkinfo (border) and touch on the item again. See also the screenshot below: +For example, if you install the Simple Timer app, this menu item will be shown if you first +touch the bottom of the screen and then swipe left/right to the Simple Timer menu. To select +sub-items simply swipe up/down. To run an action (e.g. add 5 min), simply select the clkinfo (border) and touch on the item again. See also the screenshot below: ![](screenshot_3.png) From 3bec7ffcdb00c50168018b18322cda00c98ca2d9 Mon Sep 17 00:00:00 2001 From: thyttan <97237430+thyttan@users.noreply.github.com> Date: Sat, 25 Feb 2023 19:21:41 +0100 Subject: [PATCH 6/7] Indentation --- apps/bwclklite/ChangeLog | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/bwclklite/ChangeLog b/apps/bwclklite/ChangeLog index 8b79a4c4e..c728997da 100644 --- a/apps/bwclklite/ChangeLog +++ b/apps/bwclklite/ChangeLog @@ -31,7 +31,6 @@ clkinfo.addInteractive that would cause ReferenceError. 0.29: use setItem of clockInfoMenu to change the active item 0.30: Use widget_utils 0.31: Use clock_info module as an app -0.32: Diverge from BW Clock. Change out the custom font for a standard bitmap - one to speed up loading times. Remove invertion of theme as this doesn't - work very well with fastloading. Do an quick inital fillRect on the - clock info area. +0.32: Diverge from BW Clock. Change out the custom font for a standard bitmap one to speed up loading times. + Remove invertion of theme as this doesn'twork very well with fastloading. + Do an quick inital fillRect on theclock info area. From f5211fff10e559cf4694449bc0f32621ba3221d4 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sat, 25 Feb 2023 19:30:42 +0100 Subject: [PATCH 7/7] use screenshot with widgets --- apps/bwclklite/screenshot.png | Bin 2022 -> 2489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bwclklite/screenshot.png b/apps/bwclklite/screenshot.png index e5eee966040bddbe4dfaa92bf2705fec429760c1..28983c9c44158b1929ef0d8a890321992dc3990f 100644 GIT binary patch literal 2489 zcmds(dpOf?8^C8KLo&xn&U+m)ksMOZLPq3#m{UJie#K}tWWPBK-%4Z-Z%C4D2^};> zV)CQDl|%HhlBOJ&L(Z9sRl;xm|Ni&>_ukj_-1qfd&wbz5bwAhhdG7m)x2KD|tcENE z0+Dw;>f|f7b-x#Un^<$WQ((a zOAH`x!FW5aaBFLJ@eapR3t2%ofLYD-E-s#tEU?v#$Z6n+hL_g9Z|Q8>>t=wHE6t>``i&G` z3(AfKcxrR31PW9<=E39IsoB@vH`ce5%;+2Hz;)5ocgGdDg*X10)|FwkZ0 zBOa9v#@ix8I^3ZR8F0oB4_>S-SZiGNM~Ym30vT)x5*z!?Tl)XO~J@f zG%IK%2HH<4ZpU%Pm%z)*`0z{$ORxJs6^n*-UvbWTH=8$Na@%sMSj$q*V+YExW+r*n zm2wVL<-m0_rv>`M2)4*CtK!md8fzm(K^oAihEcS3lTTzcnO(pGqOSNgixAh5{!Xbx zN%`}aH4Mm;$YIekvd{UK%0LSwl_kj{>Gk15rxG-fBeYB4Fd}5EoyHBo3rgEp_q4~f zVKHS(Rio!D*5z$78*}>esntQ~Z?d1-tKN-1djU*#);pi(m+9 z53zgC{QRaRwvyP6TBi_lw$GA}{0CH(KbN#*+oa5qJ6pP{ZgiG>n2W-DWSq9#6yJ z1lU`O%?g9j{?lt(39{wKZQX84lvEbMO;2Q#E`hNaMcce8O&Q>n|LG$z8^v7Wtr7k; zIfnzT-f_9*gh(9W=9_=3W&6W1A2}bgON)A2_|)PWAB8}?HmnK0v7XYR+8khe>>i)0 zW`iCNPQ$&VjW?|M#1FgMdSlr=>n` zFA>sYwjSXe|Xe8c5NuS()%J+(*0UUZ= zMt3jtsbX`|x`)#XKHL{v8zACD`vg81w#@SQWe+@Ptnhg ziy=LBtWj;SW~qAB>~Txy|Kv3tsabv06!@4rEFTWENd{G=6+tQ{oThV`=CC|NlMy23 zK~mAtn%IzGqZ5o}bDM4rDurn*;oNbhXIC#n)wVQhMwP1bB;jxhMYdd5IAUG&J#bi8 z7!a4ck;Ep5pTKx7f3{;^uVORLzaA?3=r-^#D7*|-YDI(Vl67jGJoM8+*ITY{Ga>)= zki4~(^5tp~-3kFWN(Vn4l__zB0G7l;bQuJii83G^)3+iN4Hjd31K7N>sx)8 zsc_P`HuyXrR4ebs>KOFjYgJ1Xv*)q)!}zN6bfXYehl_g1bGc$=!pS)7PDn^+O5dH$ zbetGHTlJ%a@hU7DwgY2ugEsN*=KzI2-%QiiQUIRHI9=R8ubkGAhN6V8B$^PaJKebI zYv6pYh_b6uDX-^2;SXXWQGva~n{-!glepq<7JcX%Ysl;%M}yav;Vpfy$xm+U5!D3Q z$msDRAsK8L_1^VvOI z^~JS;+n>B+oCW*tNAU(P4^&M`xLja2iA{5^G?VAqU W-{ce}`{?&9264rCI@LN7F8l*+;e2@j literal 2022 zcmeHIdo+{@6dzxo`c#-np@_`HNTQ*qkyo=sFO8Yxo$`h4K}Iafc&p8$ z`5M_`6n&|TRIH-(klDPpLh>3Bv(wo>_pkkP&)IvZi@1t>u!+=D^GAg%fzl>`i@Ik6z6oPhS9#b6etJK67GMF$M$ zw?`7zEma*>C=P~g&Kx?fUn4o2f{pCYi(h4QuB3=hCWqJiS=0y=(=eJ1BGBFby7mbj z6_B1RQd=|n@(E)cN?qWqWhWEm2nKMvi*B1FpuU!d&j=eeLR~R%O~CeC21mau7XyUV zpRg97B=Hs%@O|vJg9b34a|D3yPL9Ro-s_&9qYqEclt0`~h3>ZbxPD#^Un@4|FH`|r zi@wvgq&4Qbt{-<#LoL^`n^@Q`#$~cta5Ya24rV>G1G)Gy@M*M*AQTK9;tyPA=Nf!~ z-t9cHMjKuvvt4-}4X>SVQCd5~s6OIWZ6*kNMeu!1a()W9csPOC8)Fi&T~aML-n`!h zGA}*65YN+U&&BjtA)#Qu>uHZ8>dBE_AlJ%gS+Qd>nzL&g?4L4r)IY2tTZCw`MK;ho z{Diy>=iNJTipAnMGzYCe@D-sriZhUk2};t{H`)*M^ti{V9=Z@V z_icZJ=8N_6W66mbjF=_-$b3>z=|uLU6>znq;V07%>oQDZu+d|HpdelJRYWbM*fM30 z6Sl#`1txQTz!O!2{D99%!|_kw%S$OOj6rmoqyloqab9p-4^g^8NL~ixrf-g$IB-BZ zXK-hUywzrQ;$U}Gr$pXbDWA-FBaPB$pA85MJn@A_5JOWIOW~k*xuw|YttBgk%VD8e z6YzcqCntSzWwlRB*Xvi8E*Vi78x+{Vx}bvly3eRKCkOI9FJj@)r<`9yOh_ z2lgSEFR~6Cucu21yu>1W)=j9su`DX~>QvNIzD51qM3a1C%d!*{GLO$nMTsS*f|muW z-`H%5`+RGxyj}wSIjk76>3HiFcDE(in)^+SVgvg(-2uI`q+YM;1E3)jGs+=4Ga|>a zJ|?y|Q~Yu^#r391fxpxkt)L)v+>tz#TaxJ}3z~U9JNnueQoY~ox%08%g&i_eNh{xq zxe>IOjw+3at#Ty+ZF|j_vTc5kbL}y3rk!Vqh6-5lAnUplh$X362M=KF{(TTJ>}l`G zIPAUN=SOuHk>Z34q~SVipmO-2*kuVDZB03 zNnY&ot&I|o?rh<0O+J(tzAS`Cml5BF^zAP@8CW-4x%PR*g$HWilM;MMQQJZ8$JwtP zvm~5kfg$OF%uecWL}C0uBW1^!nXljF(hnL3JymeepY zYY%~6Y476|H4X0h>43}b`1{Bd<=CP*P6Q3I8IH|#TJcNe!AtQsLEkqc+gxSBf4Nh79zU#j{P7ca`S1j5D)yu0&$ zOwoaH-raiHmK5_x%#2XQs-s}qEXW`99Gv1toN?pGi3-M&s|_OEj}D?L=PMT_<+jv7 zaRu_m3LrK-*L%J8?;d2e)aF~CMD)Ss!awp*SNkfA7jp3hO;p^9#_O!UEL5gfUa{$A zN$A>pMa8$%P_uPC3i8&;4N2Qq~FaLY^jVIhnv@!(eay6{%VYq1JfR%aZdjQ DNjG3t