Merge branch 'espruino:master' into master
143
apps.json
|
|
@ -32,7 +32,7 @@
|
|||
{
|
||||
"id": "messages",
|
||||
"name": "Messages",
|
||||
"version": "0.05",
|
||||
"version": "0.07",
|
||||
"description": "App to display notifications from iOS and Gadgetbridge",
|
||||
"icon": "app.png",
|
||||
"type": "app",
|
||||
|
|
@ -41,17 +41,19 @@
|
|||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"messages.app.js","url":"app.js"},
|
||||
{"name":"messages.settings.js","url":"settings.js"},
|
||||
{"name":"messages.img","url":"app-icon.js","evaluate":true},
|
||||
{"name":"messages.wid.js","url":"widget.js"},
|
||||
{"name":"messages","url":"lib.js"}
|
||||
],
|
||||
"data": [{"name":"messages.json"}],
|
||||
"data": [{"name":"messages.json"},{"name":"messages.settings.json"}],
|
||||
"sortorder": -9
|
||||
},
|
||||
{
|
||||
"id": "android",
|
||||
"name": "Android Integration",
|
||||
"version": "0.03",
|
||||
"shortName": "Android",
|
||||
"version": "0.04",
|
||||
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
||||
"icon": "app.png",
|
||||
"tags": "tool,system,messages,notifications",
|
||||
|
|
@ -59,6 +61,7 @@
|
|||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"storage": [
|
||||
{"name":"android.app.js","url":"app.js"},
|
||||
{"name":"android.settings.js","url":"settings.js"},
|
||||
{"name":"android.img","url":"app-icon.js","evaluate":true},
|
||||
{"name":"android.boot.js","url":"boot.js"}
|
||||
],
|
||||
|
|
@ -137,6 +140,7 @@
|
|||
"icon": "app.png",
|
||||
"tags": "tool,system",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"screenshots": [{"url":"bangle1-about-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"about.app.js","url":"app-bangle1.js","supports": ["BANGLEJS"]},
|
||||
|
|
@ -212,7 +216,7 @@
|
|||
"id": "welcome",
|
||||
"name": "Welcome",
|
||||
"shortName": "Welcome",
|
||||
"version": "0.13",
|
||||
"version": "0.14",
|
||||
"description": "Appears at first boot and explains how to use Bangle.js",
|
||||
"icon": "app.png",
|
||||
"screenshots": [{"url":"screenshot_welcome.png"}],
|
||||
|
|
@ -238,6 +242,7 @@
|
|||
"tags": "start,welcome",
|
||||
"supports": ["BANGLEJS"],
|
||||
"custom": "custom.html",
|
||||
"screenshots": [{"url":"bangle1-customized-welcome-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"mywelcome.boot.js","url":"boot.js"},
|
||||
{"name":"mywelcome.app.js","url":"app.js"},
|
||||
|
|
@ -274,6 +279,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-morphing-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"mclock.app.js","url":"clock-morphing.js"},
|
||||
{"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true}
|
||||
|
|
@ -288,6 +294,7 @@
|
|||
"icon": "app.png",
|
||||
"tags": "",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-moon-phase-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"moonphase.app.js","url":"app.js"},
|
||||
|
|
@ -418,6 +425,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-sweep-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"sweepclock.app.js","url":"sweepclock.js"},
|
||||
{"name":"sweepclock.img","url":"sweepclock-icon.js","evaluate":true}
|
||||
|
|
@ -468,6 +476,7 @@
|
|||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-impercise-word-clock-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"impwclock.app.js","url":"clock-impword.js"},
|
||||
|
|
@ -544,13 +553,14 @@
|
|||
{
|
||||
"id": "cubescramble",
|
||||
"name": "Cube Scramble",
|
||||
"version":"0.03",
|
||||
"description": "A random scramble generator for the 3x3 Rubik's cube",
|
||||
"version":"0.04",
|
||||
"description": "A random scramble generator for the 3x3 Rubik's cube with a basic timer",
|
||||
"icon": "cube-scramble.png",
|
||||
"tags": "",
|
||||
"supports" : ["BANGLEJS","BANGLEJS2"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-cube-scramble-screenshot.png"},{"url":"bangle1-cube-scramble-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"cubescramble.app.js","url":"cube-scramble.js"},
|
||||
{"name":"cubescramble.img","url":"cube-scramble-icon.js","evaluate":true}
|
||||
|
|
@ -654,7 +664,7 @@
|
|||
{
|
||||
"id": "gpsrec",
|
||||
"name": "GPS Recorder",
|
||||
"version": "0.24",
|
||||
"version": "0.25",
|
||||
"description": "Application that allows you to record a GPS track. Can run in background",
|
||||
"icon": "app.png",
|
||||
"tags": "tool,outdoors,gps,widget",
|
||||
|
|
@ -775,6 +785,7 @@
|
|||
"tags": "battery",
|
||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-charge-animation-screenshot.png"},{"url":"bangle-charge-animation-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"chargeanim.app.js","url":"app.js"},
|
||||
{"name":"chargeanim.boot.js","url":"boot.js"},
|
||||
|
|
@ -980,6 +991,7 @@
|
|||
"readme": "README.md",
|
||||
"interface": "interface.html",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-stopwatch-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"swatch.app.js","url":"stopwatch.js"},
|
||||
{"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true}
|
||||
|
|
@ -1181,6 +1193,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-vibrate-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"vibrclock.app.js","url":"app.js"},
|
||||
{"name":"vibrclock.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -1196,6 +1209,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-simple-v-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"svclock.app.js","url":"vclock-simple.js"},
|
||||
{"name":"svclock.img","url":"vclock-simple-icon.js","evaluate":true}
|
||||
|
|
@ -1211,6 +1225,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-dev-clock-screenshot.png"},{"url":"bangle1-dev-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"dclock.app.js","url":"clock-dev.js"},
|
||||
{"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true}
|
||||
|
|
@ -1242,6 +1257,7 @@
|
|||
"tags": "party,parrot,lol",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-party-parrot-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"pparrot.app.js","url":"party-parrot.js"},
|
||||
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
||||
|
|
@ -1257,6 +1273,7 @@
|
|||
"tags": "rings,hypnosis,psychadelic",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-hypno-rings-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"hrings.app.js","url":"hypno-rings.js"},
|
||||
{"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true}
|
||||
|
|
@ -1324,6 +1341,7 @@
|
|||
"icon": "show-color.png",
|
||||
"type": "app",
|
||||
"tags": "tool",
|
||||
"screenshots": [{"url":"bangle1-view-color-screenshot.png"}],
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -1339,6 +1357,7 @@
|
|||
"icon": "clock-mixed.png",
|
||||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"screenshots": [{"url":"bangle1-mixed-clock-screenshot.png"}],
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -1356,6 +1375,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-binary-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"bclock.app.js","url":"clock-binary.js"},
|
||||
{"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true}
|
||||
|
|
@ -1369,6 +1389,7 @@
|
|||
"icon": "clock-tris.png",
|
||||
"tags": "game",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-clock-tris-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"clotris.app.js","url":"clock-tris.js"},
|
||||
|
|
@ -1428,6 +1449,7 @@
|
|||
"tags": "pomodoro,cooking,tools",
|
||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-pomodoro-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"pomodo.app.js","url":"pomodoro.js"},
|
||||
{"name":"pomodo.img","url":"pomodoro-icon.js","evaluate":true}
|
||||
|
|
@ -1444,6 +1466,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-large-digit-blob-clock-screenshot.png"},{"url":"bangle1-large-digit-blob-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"blobclk.app.js","url":"clock-blob.js"},
|
||||
{"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true}
|
||||
|
|
@ -1503,6 +1526,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"berlin-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
||||
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
||||
|
|
@ -1517,6 +1541,7 @@
|
|||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-center-clock-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"ctrclk.app.js","url":"app.js"},
|
||||
|
|
@ -1531,6 +1556,7 @@
|
|||
"icon": "app.png",
|
||||
"type": "app",
|
||||
"tags": "",
|
||||
"screenshots": [{"url":"bangle1-demo-loop-screenshot1.png"},{"url":"bangle1-demo-loop-screenshot2.png"},{"url":"bangle1-demo-loop-screenshot3.png"},{"url":"bangle1-demo-loop-screenshot4.png"}],
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -1563,6 +1589,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-pipboy-themed-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"pipboy.app.js","url":"app.js"},
|
||||
{"name":"pipboy.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -1609,6 +1636,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-workout-HRM-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"wohrm.app.js","url":"app.js"},
|
||||
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -1653,6 +1681,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": false,
|
||||
"screenshots": [{"url":"bangle1-mario-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"marioclock.app.js","url":"marioclock-app.js"},
|
||||
{"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true}
|
||||
|
|
@ -1715,6 +1744,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle2-dot-clcok-screenshot.png"},{"url":"bangle1-dot-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"dotclock.app.js","url":"clock-dot.js"},
|
||||
{"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true}
|
||||
|
|
@ -1824,6 +1854,7 @@
|
|||
"tags": "game,fun",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-rpg-dice-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"rpgdice.app.js","url":"app.js"},
|
||||
{"name":"rpgdice.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -1852,6 +1883,7 @@
|
|||
"tags": "clock,minion",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-minion-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"minionclk.app.js","url":"app.js"},
|
||||
{"name":"minionclk.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -1929,7 +1961,7 @@
|
|||
"icon": "custom.png",
|
||||
"type": "bootloader",
|
||||
"tags": "tool,system",
|
||||
"supports": ["BANGLEJS"],
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"custom": "custom.html",
|
||||
"storage": [
|
||||
{"name":"custom"}
|
||||
|
|
@ -1944,6 +1976,7 @@
|
|||
"icon": "app.png",
|
||||
"tags": "stopwatch,chrono,timer,chronometer",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"screenshots": [{"url":"bangle1-dev-stopwatch-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"devstopwatch.app.js","url":"app.js"},
|
||||
|
|
@ -1977,6 +2010,7 @@
|
|||
"tags": "app,learn,visual",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-NATO-alphabet-screenshot.png"},{"url":"bangle1-NATO-alphabet-screenshot2.png"}],
|
||||
"storage": [
|
||||
{"name":"nato.app.js","url":"nato.js"},
|
||||
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
||||
|
|
@ -1993,6 +2027,7 @@
|
|||
"tags": "numerals,clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-numerals-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"numerals.app.js","url":"numerals.app.js"},
|
||||
{"name":"numerals.img","url":"numerals-icon.js","evaluate":true},
|
||||
|
|
@ -2119,13 +2154,14 @@
|
|||
{
|
||||
"id": "metronome",
|
||||
"name": "Metronome",
|
||||
"version": "0.06",
|
||||
"version": "0.07",
|
||||
"readme": "README.md",
|
||||
"description": "Makes the watch blinking and vibrating with a given rate",
|
||||
"icon": "metronome_icon.png",
|
||||
"tags": "tool",
|
||||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-metronome-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"metronome.app.js","url":"metronome.js"},
|
||||
{"name":"metronome.img","url":"metronome-icon.js","evaluate":true},
|
||||
|
|
@ -2141,6 +2177,7 @@
|
|||
"icon": "blackjack.png",
|
||||
"tags": "game",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-black-jack-game-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"blackjack.app.js","url":"blackjack.app.js"},
|
||||
|
|
@ -2174,6 +2211,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-SWL-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"swlclk.app.js","url":"app.js"},
|
||||
{"name":"swlclk.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -2251,6 +2289,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-pong-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"pong.app.js","url":"app.js"},
|
||||
{"name":"pong.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -2313,6 +2352,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-large-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"largeclock.app.js","url":"largeclock.js"},
|
||||
{"name":"largeclock.img","url":"largeclock-icon.js","evaluate":true},
|
||||
|
|
@ -2364,6 +2404,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-timer-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"simpletimer.app.js","url":"app.js"},
|
||||
{"name":".tfnames","url":"gesture-tfnames.js","evaluate":true},
|
||||
|
|
@ -2380,6 +2421,7 @@
|
|||
"icon": "beebclock.png",
|
||||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"screenshots": [{"url":"bangle1-beeb-clock-screenshot.png"}],
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -2413,6 +2455,7 @@
|
|||
"tags": "tools,health",
|
||||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"screenshots": [{"url":"bangle1-get-up-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"getup.app.js","url":"app.js"},
|
||||
|
|
@ -2491,6 +2534,7 @@
|
|||
"version": "0.01",
|
||||
"description": "La palla predice il futuro",
|
||||
"icon": "app.png",
|
||||
"screenshots": [{"url":"bangle1-magic-8-ball-italiano-screenshot.png"}],
|
||||
"tags": "game",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
|
|
@ -2604,6 +2648,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-vertical-watch-face-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"verticalface.app.js","url":"app.js"},
|
||||
{"name":"verticalface.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -2631,6 +2676,7 @@
|
|||
"icon": "life.png",
|
||||
"tags": "game",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-game-of-life-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"life.app.js","url":"life.min.js"},
|
||||
|
|
@ -2678,6 +2724,7 @@
|
|||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-mixed-clock-2-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"miclock2.app.js","url":"clock-mixed.js"},
|
||||
|
|
@ -2813,6 +2860,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-CPR-assist-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"cprassist.app.js","url":"cprassist.js"},
|
||||
{"name":"cprassist.img","url":"cprassist-icon.js","evaluate":true},
|
||||
|
|
@ -2856,6 +2904,7 @@
|
|||
"icon": "counter_icon.png",
|
||||
"tags": "tool",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-counter-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"counter.app.js","url":"counter.js"},
|
||||
|
|
@ -3235,6 +3284,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"screenshots": [{"url":"bangle1-lazy-clock-screenshot.png"}],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
{"name":"lazyclock.app.js","url":"lazyclock-app.js"},
|
||||
|
|
@ -3336,6 +3386,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-slow-mo-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"slomoclock.app.js","url":"app.js"},
|
||||
{"name":"slomoclock.img","url":"app-icon.js","evaluate":true},
|
||||
|
|
@ -3675,6 +3726,7 @@
|
|||
"icon": "battleship-icon.png",
|
||||
"tags": "game",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-battle-ship-screenshot.png"}],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -3878,6 +3930,7 @@
|
|||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"bangle1-mystic-clock-screenshot.png"}],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -3894,6 +3947,7 @@
|
|||
"icon": "hcclock-icon.png",
|
||||
"type": "clock",
|
||||
"tags": "clock",
|
||||
"screenshots": [{"url":"bangle1-high-contrast-clock-screenshot.png"}],
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"storage": [
|
||||
|
|
@ -3975,6 +4029,7 @@
|
|||
"tags": "clock",
|
||||
"supports": ["BANGLEJS"],
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-vector-clock-screenshot.png"}],
|
||||
"storage": [
|
||||
{"name":"vectorclock.app.js","url":"app.js"},
|
||||
{"name":"vectorclock.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -4005,6 +4060,7 @@
|
|||
"supports": ["BANGLEJS"],
|
||||
"readme": "README.md",
|
||||
"allow_emulator": true,
|
||||
"screenshots": [{"url":"bangle1-choozi-screenshot1.png"},{"url":"bangle1-choozi-screenshot2.png"}],
|
||||
"storage": [
|
||||
{"name":"choozi.app.js","url":"app.js"},
|
||||
{"name":"choozi.img","url":"app-icon.js","evaluate":true}
|
||||
|
|
@ -4029,7 +4085,7 @@
|
|||
"id": "pastel",
|
||||
"name": "Pastel Clock",
|
||||
"shortName": "Pastel",
|
||||
"version": "0.05",
|
||||
"version": "0.06",
|
||||
"description": "A Configurable clock with custom fonts and background",
|
||||
"icon": "pastel.png",
|
||||
"screenshots": [{"url":"screenshot_pastel.png"}],
|
||||
|
|
@ -4038,6 +4094,14 @@
|
|||
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"f_architect","url":"f_architect.js"},
|
||||
{"name":"f_gochihand","url":"f_gochihand.js"},
|
||||
{"name":"f_cabin","url":"f_cabin.js"},
|
||||
{"name":"f_orbitron","url":"f_orbitron.js"},
|
||||
{"name":"f_monoton","url":"f_monoton.js"},
|
||||
{"name":"f_elite","url":"f_elite.js"},
|
||||
{"name":"f_lato","url":"f_lato.js"},
|
||||
{"name":"f_latosmall","url":"f_latosmall.js"},
|
||||
{"name":"pastel.app.js","url":"pastel.app.js"},
|
||||
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true},
|
||||
{"name":"pastel.settings.js","url":"pastel.settings.js"}
|
||||
|
|
@ -4297,7 +4361,7 @@
|
|||
"name": "LCARS Clock",
|
||||
"shortName":"LCARS",
|
||||
"icon": "lcars.png",
|
||||
"version":"0.04",
|
||||
"version":"0.05",
|
||||
"supports": ["BANGLEJS2"],
|
||||
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
||||
"type": "clock",
|
||||
|
|
@ -4320,8 +4384,10 @@
|
|||
"description": "Famous binary watch",
|
||||
"tags": "clock",
|
||||
"type": "clock",
|
||||
"storage": [
|
||||
"storage": [
|
||||
{"name":"binwatch.app.js","url":"app.js"},
|
||||
{"name":"binwatch.bg176.img","url":"Background176_center.img"},
|
||||
{"name":"binwatch.bg240.img","url":"Background240_center.img"},
|
||||
{"name":"binwatch.img","url":"app-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
|
|
@ -4358,23 +4424,36 @@
|
|||
],
|
||||
"data": [{"name":"authentiwatch.json"}]
|
||||
},
|
||||
{ "id": "schoolCalendar",
|
||||
"name": "School Calendar",
|
||||
"shortName":"SCalendar",
|
||||
"icon": "CalenderLogo.png",
|
||||
"version": "0.01",
|
||||
"description": "A simple calendar that you can see your upcoming events that you create in the customizer. Keep in note that your events reapeat weekly.(Beta)",
|
||||
"tags": "tool",
|
||||
"readme":"README.md",
|
||||
"custom":"custom.html",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
||||
"storage": [
|
||||
{"name":"schoolCalendar.app.js"},
|
||||
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
||||
],
|
||||
"data": [
|
||||
{"name":"app.json"}
|
||||
]
|
||||
{ "id": "schoolCalendar",
|
||||
"name": "School Calendar",
|
||||
"shortName":"SCalendar",
|
||||
"icon": "CalenderLogo.png",
|
||||
"version": "0.01",
|
||||
"description": "A simple calendar that you can see your upcoming events that you create in the customizer. Keep in note that your events reapeat weekly.(Beta)",
|
||||
"tags": "tool",
|
||||
"readme":"README.md",
|
||||
"custom":"custom.html",
|
||||
"supports": ["BANGLEJS"],
|
||||
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
||||
"storage": [
|
||||
{"name":"schoolCalendar.app.js"},
|
||||
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
||||
],
|
||||
"data": [
|
||||
{"name":"app.json"}
|
||||
]
|
||||
},
|
||||
{ "id": "timecal",
|
||||
"name": "TimeCal",
|
||||
"shortName":"TimeCal",
|
||||
"icon": "icon.png",
|
||||
"version":"0.01",
|
||||
"description": "TimeCal shows the Time along with a 3 week calendar",
|
||||
"tags": "clock",
|
||||
"type": "clock",
|
||||
"supports":["BANGLEJS2"],
|
||||
"storage": [
|
||||
{"name":"timecal.app.js","url":"timecal.app.js"}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -2,3 +2,4 @@
|
|||
0.02: Remove messages on disconnect
|
||||
Fix music control
|
||||
0.03: Handling of message actions (ok/clear)
|
||||
0.04: Android icon now goes to settings page with 'find phone'
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
// Config app not implemented yet
|
||||
setTimeout(()=>load("messages.app.js"),10);
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
eval(require("Storage").read("android.settings.js"))(()=>load());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
(function(back) {
|
||||
function gb(j) {
|
||||
Bluetooth.println(JSON.stringify(j));
|
||||
}
|
||||
var mainmenu = {
|
||||
"" : { "title" : "Android" },
|
||||
"< Back" : back,
|
||||
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
||||
"Find Phone" : () => E.showMenu({
|
||||
"" : { "title" : "Find Phone" },
|
||||
"< Back" : ()=>E.showMenu(mainmenu),
|
||||
"On" : _=>gb({t:"findPhone",n:true}),
|
||||
"Off" : _=>gb({t:"findPhone",n:false}),
|
||||
}),
|
||||
"Messages" : ()=>load("messages.app.js")
|
||||
};
|
||||
E.showMenu(mainmenu);
|
||||
})
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.2 KiB |
|
|
@ -1,3 +1,4 @@
|
|||
0.01: start of development
|
||||
0.02: first running version for BangleJs2
|
||||
0.03: corrected icon, added screen shot, extended description
|
||||
0.04: corrected format of background image (raw binary)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
require("Font7x11Numeric7Seg").add(Graphics);
|
||||
require("Font5x7Numeric7Seg").add(Graphics);
|
||||
|
||||
|
||||
/* constants and definitions */
|
||||
|
||||
/* Bangle 2: 176 x 176 */
|
||||
|
|
@ -63,7 +62,7 @@ const V2_BAT_SIZE_Y = 2;
|
|||
|
||||
const V2_SCREEN_SIZE_X = 176;
|
||||
const V2_SCREEN_SIZE_Y = 176;
|
||||
const V2_BACKGROUND_IMAGE = "Background176_center.png";
|
||||
const V2_BACKGROUND_IMAGE = "binwatch.bg176.img";
|
||||
const V2_BG_COLOR = 0;
|
||||
const V2_FG_COLOR = 1;
|
||||
|
||||
|
|
@ -91,7 +90,7 @@ const V1_BAT_SIZE_X = 3;
|
|||
const V1_BAT_SIZE_Y = 5;
|
||||
const V1_SCREEN_SIZE_X = 240;
|
||||
const V1_SCREEN_SIZE_Y = 240;
|
||||
const V1_BACKGROUND_IMAGE = "Background240_center.png";
|
||||
const V1_BACKGROUND_IMAGE = "binwatch.bg240.img";
|
||||
const V1_BG_COLOR = 1;
|
||||
const V1_FG_COLOR = 0;
|
||||
|
||||
|
|
@ -293,7 +292,7 @@ function setRuntimeValues(resolution) {
|
|||
bat_size_x = V1_BAT_SIZE_X;
|
||||
bat_size_y = V1_BAT_SIZE_Y;
|
||||
|
||||
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
||||
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
||||
|
||||
} else {
|
||||
x_step = V2_X_STEP;
|
||||
|
|
@ -362,8 +361,7 @@ function draw() {
|
|||
updateVTime();
|
||||
g.clear();
|
||||
g.drawImages([{image:cgimg},
|
||||
{image:require("Storage").read(backgroundImage)},
|
||||
// { x:bt_x, y:bt_y, rotate: 0, image:require("Storage").read("bt-icon.png")},
|
||||
{image:require("Storage").read(backgroundImage)}
|
||||
]);
|
||||
drawBT(g, NRF.getSecurityStatus().connected);
|
||||
// Bangle.drawWidgets();
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
|
@ -1,3 +1,4 @@
|
|||
0.01: Initial Release
|
||||
0.02: Replace icon with one found on https://icons8.com
|
||||
0.03: Re-render icon fixing display in settings
|
||||
0.04: Improved UX and display solve time
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
# Cube Scramble
|
||||
|
||||
A random scramble generator for the 3x3 Rubik's cube
|
||||
A random scramble generator for the 3x3 Rubik's cube with a basic timer.
|
||||
|
||||
## Future features
|
||||
|
||||
I'm keen to complete this project with
|
||||
|
||||
* Add a timer
|
||||
* Add the ability for times to be stored and exported
|
||||
|
||||
## Requests
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// Scramble code from: https://raw.githubusercontent.com/bjcarlson42/blog-post-sample-code/master/Rubik's%20Cube%20JavaScript%20Scrambler/part_two.js
|
||||
const makeScramble = () => {
|
||||
const options = ["F", "F2", "F'", "R", "R2", "R'", "U", "U2", "U'", "B", "B2", "B'", "L", "L2", "L'", "D", "D2", "D'"];
|
||||
|
|
@ -59,16 +58,36 @@ const getRandomInt = max => Math.floor(Math.random() * Math.floor(max)); // retu
|
|||
const getRandomIntBetween = (min, max) => Math.floor(Math.random() * (max - min) + min);
|
||||
|
||||
const presentScramble = () => {
|
||||
g.clear();
|
||||
E.showMessage(makeScramble().join(" "));
|
||||
showPrompt(makeScramble().join(" "), {
|
||||
buttons: {"solve": true, "reset": false}
|
||||
}).then((v) => {
|
||||
if (v) {
|
||||
const start = new Date();
|
||||
showPrompt(" ", {
|
||||
buttons: {"stop": true}
|
||||
}).then(() => {
|
||||
const time = parseFloat(((new Date()).getTime() - start.getTime()) / 1000);
|
||||
showPrompt(String(time.toFixed(3)), {
|
||||
buttons: {"next": true}
|
||||
}).then(() => {
|
||||
presentScramble();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
presentScramble();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const showPrompt = (text, options = {}) => {
|
||||
options.title = options.title || "cube scramble";
|
||||
return E.showPrompt(text, options);
|
||||
};
|
||||
|
||||
const init = () => {
|
||||
Bangle.setLCDTimeout(0);
|
||||
Bangle.setLCDPower(1);
|
||||
presentScramble();
|
||||
|
||||
setWatch(() => {
|
||||
presentScramble();
|
||||
}, BTN1, {repeat:true});
|
||||
};
|
||||
|
||||
init();
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
|
@ -23,6 +23,7 @@
|
|||
}
|
||||
var mainmenu = {
|
||||
"" : { "title" : "Gadgetbridge" },
|
||||
"< Back" : back,
|
||||
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
||||
"Show Icon" : {
|
||||
value: settings().showIcon,
|
||||
|
|
@ -34,8 +35,7 @@
|
|||
value: !!settings().hrm,
|
||||
format: v => v?"Yes":"No",
|
||||
onchange: v => updateSetting('hrm', v)
|
||||
},
|
||||
"< Back" : back,
|
||||
}
|
||||
};
|
||||
|
||||
var findPhone = {
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 2.3 KiB |
|
|
@ -26,3 +26,4 @@
|
|||
0.22: Ensure Bangle.setGPSPower uses 'gpsrec' as a tag
|
||||
0.23: Fix issue where tracks wouldn't record when running from OpenStMap if a period hadn't been set up first
|
||||
0.24: Better support for Bangle.js 2, avoid widget area for Graphs, smooth graphs more
|
||||
0.25: Fix issue where if Bangle.js 2 got a GPS fix but no reported time, errors could be caused by the widget (fix #935)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
fixToggle = !fixToggle;
|
||||
WIDGETS["gpsrec"].draw();
|
||||
if (hasFix) {
|
||||
if (fix.time===undefined) fix.time = new Date(); // Bangle.js 2 can provide a fix before time it seems
|
||||
var period = fix.time.getTime() - lastFixTime;
|
||||
if (period+500 > settings.period*1000) { // round up
|
||||
lastFixTime = fix.time.getTime();
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -1,4 +1,5 @@
|
|||
0.01: Launch app
|
||||
0.01: Launch app.
|
||||
0.02: Swipe left/right to set an alarm.
|
||||
0.03: New design with different icons if gps, hrm or compass is on.
|
||||
0.04: Inluded LCARS Logo.
|
||||
0.04: Inluded LCARS Logo.
|
||||
0.05: Additional icons for (1) charging and (2) bat < 30%.
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
|
@ -8,7 +8,7 @@ var hrmValue = "-";
|
|||
var backgroundImage = {
|
||||
width : 176, height : 151, bpp : 3,
|
||||
transparent : 2,
|
||||
buffer : require("heatshrink").decompress(atob("jlx44CdEQMHnnz54Ca/+OnHjAThlC8+evICaQf4CBQDqD/Qf6DruAlCAHJlC8BA8gCDDIPqD/Qf6D/QZEUQf6D/QYUEG2VwQf8D/yD/j//4CD+IIP4Qf6D/gH/Qf8HIIP/QfpBDGpCDzGQJBCj/x4CD4gY/CAAPj//4QZDCw+DFD/kBAQKD2n44Bn5BDJQWAQeh6BAQRBEgEf+CD0h7+CQYaACgf+Qel/4CDFYQYLCQeJ3DIJCPDQeNwII/wBASD0HAUPIJCDzj44DIJH/QeUffwZBE/yD6v5BE//AQesDIISD/QYvHj6D4PQRBCAoJBDh6DzgF+IIiJBIId/AQKDxGoZBCwCMB/6ABIIiDwF4RBB/hKEjlwCAaDwgP/8aCBGQcP/DLCQecB4/8QYJKFRIaDyAAKCB/AGDh6JEQeQABj//48cgEHHAKJEAGkD/0/QwIABAoJB4j/wQASGDIPQHFg/gIO59BIIyD4AH4A/AH4A/AH4A/AH4A/AEMcuPHAQoLLARvADQUYsOGASgZBkv/AA39EwUbtu27YCSwAaC6dNmgCUgEBNZImCj158+eASSDDjVp02aAScAh6CHQfDvKQesTQRCD3QBCD4QRKD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DNxkgwUIAQYmCiZoVDIUAyaDaD4YA5QQXgIPr+FQfxB+Qf6DD/qD/Qf4A/AH4A/AH4A/AH4A/AB0cuPHIP3z588Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DbwCD/Qf6DC8CD/48cQf88+fNmnTpoCLkAXCi/fvv3ASgvCARk4QYYCP4CbGAUpQNAQqDE/4Am/qD/Qf6D/Qf6D/Qf6D/ARoA="))
|
||||
buffer : require("heatshrink").decompress(atob("AAdx48cATojCufPnnzASocCyVJkgCdyAkCh158+eASsAgMHQDyDggKAeQcKAgQYodZgRoFpAkCAG0QJQtwIPMSQYtAIPLOGQfSADAQRA5Qf6D6g/gQf8H/iD/n//wCD9gP/Qf5BBQf5BC+CD9h5BB/yD8jl/IIPx46D6g4/BQYU//+AQe8B/6DD//Hj/x4CD2v/4AQJBC4ED/4IBQegvBPQJBERgSD1j/wgB9BAASACn/gQepECIIaACg/8QeY1DQYjCD/+AQeUHQZSPDwUIkACDQdT7DIJEfQYIAxg44DIJHwIOU/fwYAERgUDIOUBPQhBE/hB1QZRBFjlx44CDuBBpg4CCHwdxIIcfIIPnz15AQeAQdT+CIIXgZwJBDHAM8+fPAQbOqQY0AIIkcAQKDxg44BIIX4RgX/GoICCQeR3BIIXARIfwJoSDyfYI4B//+BAaABn/gAoKDxfYNx459BJQnx/4FCQeUAv7EBIIv//AFCQeUAgPH/lwAwUHQYPAQe0An6EBAAfj/wMDQeZ9B/jIC//HgCJDQe3gAYICCgF+Qe8B/4IGIIiD0nAHGhyD3ABqD0ABiD/Qf4ADjiD/gEnQYuQQf6D7gaDFzxB5gFzQYnz4JB5hyDFATfkEwUN23btoCVgEBQYoCcIIRhZDYMJQf4ABjiD/AH4A/AH4AGiFx48cATokCufPnnzASocCyVJkgCdyAkCj158+eASsAgKAfQcEJQDyDhNA8QoMEAQIqCACweEASkCNAtIHbIAfdI1wIPMSQYtAQf6D7QAYCCIHKD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/AH4A/AH4A/AH4Asjlx44CDsBB57dt2wCDQfWevPnAQaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4Akjlx44CDQfQA/AH4A/AH4A/ABM8+fPAQfwIPPnz15AQeAQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4AZjiD/gEHQYuQQf6D7gaDFzxB5gFzQYnz48cuICZEwQdZgECQYoCb8hBChMkyVJASsAgPHQYgCcQboABQf4ABfzACIQbg="))
|
||||
}
|
||||
|
||||
var iconPlanet = {
|
||||
|
|
@ -35,6 +35,18 @@ var iconAlarm = {
|
|||
buffer : require("heatshrink").decompress(atob("kmSpICEp//BAwCJn/+CJ8k//5CKAABCJs8uPH//x48EI5YjCAARNKEYUcv//jgFBExEnEYoAC+QmHIgIgC/gpCuPBCI2fIgU4AQXjA4P8CIuTEYZKBAolwHApXBEAWP//jxwpBAALaFDoYCIiQmDDIP4EAT+CEwnJEwYjLAQLaFEYomDKALmDNwoCIOIZuD8AkFgCYDHAQjMAQTdDNwOAEg0Dx0/cYeREZtxQYOTHgJuHOIvkXJy8DNwIACJQ8Ah4NDAAfxEZARHOIIkHg4jQAQb1CQ4KVJgEOnDIBSoIjNAQPBcAaVJcAKVBcDGOcD7OBMQM48BuH8f//JKCnhKNggRBkmfTQJxBEwhuD/gRCyVHJRlyCIVJXgYmB8ZQBAoIKBXIQmCOIt/NxAUCOIImCIgIpCBAJuDAQZEE/huIAQWTDgImBTYQGC8gRFcYpKFCI8kDwQAFCJBfBEAX/+IjBiQRIEw4jJAQc8v//NYwCIOgJrIJpA1OcwbaFAQWQA="))
|
||||
}
|
||||
|
||||
var iconCharging = {
|
||||
width : 50, height : 50, bpp : 3,
|
||||
transparent : 5,
|
||||
buffer : require("heatshrink").decompress(atob("23btugAwUBtoICARG0h048eODQYCJ6P/AAUCCJfbo4SDxYRLtEcuPHjlwgoRJ7RnIloUHoYjDAQfAExEAwUIkACEkSAIEYwCBhZKH6EIJI0CJRFHEY0BJRWBSgf//0AJRYSE4BKLj4SE8BKLv4RD/hK/JS2AXY0gXwRKG4cMmACCJQMAg8csEFJQsBAwfasEAm379u0gFbcBfHzgFBz1xMQZKBjY/D0E2+BOChu26yVEEYdww+cgAFCg+cgIfB6RKF4HbgEIkGChEAthfCJQ0eEAIjBBAMxk6GCJQtgtyVBwRKBAQMbHAJKGXIIFCgACBhl54qVG2E+EAJKBJoWAm0WJQ6SCXgdxFgMLJQvYjeAEAUwFIUitEtJQ14NwUHgEwKYZKGwOwNYX7XgWCg3CJQ5rB4MevPnAoPDJRJrCgEG/ECAoNsJRUwoEesIIBiJKI3CVDti/CJRKVDiJHBSo0YsOGjED8AjBcAcIgdhcAXAPIUAcAYIBcA4dBAQUG8BrBgBuCgOwcBEeXIK2BBAIFBgRqBGoYAChq8CcYUE4FbUYOACQsHzgjDgwFBCIImBAQsDtwYD7cAloRI22B86YBw5QBgoRJ7dAgYEDCJaeBJoMcsARMAQNoJIIRE6A"))
|
||||
}
|
||||
|
||||
var iconNoBattery = {
|
||||
width : 50, height : 50, bpp : 3,
|
||||
transparent : 2,
|
||||
buffer : require("heatshrink").decompress(atob("pMkyQCoycMmHDhgLEqVECg1Bw0YsOGBAdKpMSEwwjCmHCBAYDBHA4jCjFpBAUpkmJJR0lkmRL49Fy1ZsuWBAWkyQRGxcs2XLAQe0ymSNw9t23bAQnSyVICI1IEYoCBqSAIkwjF7dupMiQA5KH/KSIJQ+5SRBKH2fkSRBKH8iSHJRHPSRBKIH4PSCJBKFn1JhYRIJQqSBkdtJRscSQLgBJRliAwONcAJKM9MkyAFBJRm/AwM2AoJKMUgNCFIJKM7A8BOgRKMmVJg8MJRqSBAwMGJRqSBzVpJRu5kmTpMhJRmz8mQ2emJRqABm3cyK/BJRWPSQUauRKMSQVmpFbJRdSpMLOIODX4JKJpVJkYgB+gCBJRQDBEAQCDJREpkmNEAQCDJQ8lkmQEYpKJ0mScAIjEJRGUyVEcAJKNSQLgBJRqSBiVIJRqSBkTgBJRoDBAIJKNSQOJAoJKN0mRAoJKOyQFCSp4CikAA="))
|
||||
}
|
||||
|
||||
Graphics.prototype.setFontAntonioMedium = function(scale) {
|
||||
// Actual height 18 (17 - 0)
|
||||
g.setFontCustom(atob("AAAAAAAAAAAAAAAf4Mf/sYAMAAAAAAfgAfAAAAAfgAeAAAAAAiAAj8H/4fyEAv8f/gfiAAgAAAAD54H98eOPHn8Hz8AhwAAAP8Af+AYGAYCAf+AP8MAB8AHwA+AD4AfAAcf4A/8AwMAwMA/8Af4AAAAAwGD8f/8f8MY/cfz4PD8AHMAAAfAAeAAAAAAAAP/+f//YADAAAQABYADf//P/+AAAAAANAAPAAfwAfgAPAANAAAAAAEAAEAA/AA/AAEAAEAAAAAAZAAfAAYAAAAIAAIAAIAAIAAAAAAAAAMAAMAAAAAAAAEAB8Af4H+AfwAcAAAAAP/4f/8YAMf/8f/8H/wAAAAAAEAAMAAf/8f/8f/8AAAAAAAAAHgcfh8cH8YPMf8MPwEAAAAAAOB4eB8YYMY4Mf/8Pn4AAAAAgAHwA/wPwwf/8f/8AAwAAgAAAf54f58ZwMZwMY/8Qf4AAAAAAP/4f/8YYMYYMff8HP4AAAQAAYAAYD8Y/8f/AfgAcAAAAAAAAPv4f/8YYMY8Mf/8Pn4AAAAAAP94f98YGMcMMf/8H/wAAAAAABgwBgwAAAAAABgABg/Bg8AAAAEAAOAAbAA7gAxgBwwASAAbAAbAAbAAbAASAAAAAxwA5gAbAAPAAOAAAAPAAfHcYPcf8Af4AHgAAAAAAAB/gH/wOA4Y/MZ/sbAsbBkb/MZ/sOBsH/AAAAAAMAP8f/4fwwf4wH/8AH8AAMAAAf/8f/8YYMYYMf/8P/4ADgAAAP/4f/8YAMYAMfj8Pj4AAAAAAf/8f/8YAMYAMf/8P/4B/AAAAf/8f/8YMMYMMYIMAAAAAAf/8f/8YYAYYAYYAAAAAAAP/4f/8YAMYIMfP8Pv8AAAAAAf/8f/8AMAAMAf/8f/8f/8AAAAAAf/8f/8AAAAAAAD4AB8AAMf/8f/4f/gAAAAAAf/8f/8A+AD/gfj4eA8QAEAAAf/8f/8AAMAAMAAMAAAf/8f/8f8AB/wAB8AP8P/Af/8f/8AAAAAAf/8f/8HwAA+AAPwf/8f/8AAAAAAP/4f/8YAMYAMf/8P/4AAAAAAf/8f/8YGAYGAf8AP8ABAAAAAf/w//4wAYwAc//+f/yAAAAAAf/8f/8YMAYMAf/8f/8DA8CAAPj4fz8Y4MeeMfP8HD4YAAYAAf/8f/8YAAQAAAAAf/4f/8AAMAAMf/8f/4AAAYAAf4AP/4AP8AP8f/4fwAQAAYAAf8AP/8AD8D/8f8Af8AD/8AD8f/8f8AAAAQAEeB8P/4B/AP/4fA8QAEYAAfAAP4AB/8H/8fwAcAAAAMYD8Y/8f/MfwMcAMAAAf/+f//YADYADAAAAAAfAAf8AB/wAH8AAMQACYADf//f//AAAAA"), 32, atob("BAUHCAcTCAQFBQgGBAYFBggICAgICAgICAgEBQYGBggNCAgICAcHCAkECAgGCwkICAgIBwYICAwHBwYGBgY="), 18+(scale<<8)+(1<<16));
|
||||
|
|
@ -72,15 +84,19 @@ function draw(queue){
|
|||
}
|
||||
|
||||
for(var y=0; y<6; y++){
|
||||
g.drawLine(113, 105+y*10, 180, 105+y*10);
|
||||
g.drawLine(113, 105+y*10, 175, 105+y*10);
|
||||
}
|
||||
|
||||
// Draw symbol
|
||||
var bat = E.getBattery();
|
||||
|
||||
var iconImg =
|
||||
alarm >= 0 ? iconAlarm :
|
||||
Bangle.isGPSOn() ? iconGps :
|
||||
Bangle.isCompassOn() ? iconCompass :
|
||||
iconPlanet;
|
||||
Bangle.isCharging() ? iconCharging :
|
||||
bat < 30 ? iconNoBattery :
|
||||
Bangle.isGPSOn() ? iconGps :
|
||||
Bangle.isCompassOn() ? iconCompass :
|
||||
iconPlanet;
|
||||
g.drawImage(iconImg, 120, 107);
|
||||
|
||||
// Alarm within symbol
|
||||
|
|
@ -96,7 +112,7 @@ function draw(queue){
|
|||
var timeStr = locale.time(currentDate,1);
|
||||
g.setFontAlign(0,0,0);
|
||||
g.setFontAntonioLarge();
|
||||
g.drawString(timeStr, 55, 57);
|
||||
g.drawString(timeStr, 60, 55);
|
||||
|
||||
// Write date
|
||||
g.setFontAlign(-1,-1, 0);
|
||||
|
|
@ -104,24 +120,22 @@ function draw(queue){
|
|||
|
||||
var dayName = locale.dow(currentDate, true).toUpperCase();
|
||||
var day = currentDate.getDate();
|
||||
g.drawString(day, 100, 37);
|
||||
g.drawString(dayName, 100, 57);
|
||||
g.drawString(day, 100, 35);
|
||||
g.drawString(dayName, 100, 55);
|
||||
|
||||
// Temperature
|
||||
// HRM
|
||||
g.setFontAlign(-1,-1,0);
|
||||
g.drawString("HRM:", 20, 104);
|
||||
g.drawString(hrmValue, 60, 104);
|
||||
g.drawString("HRM:", 28, 102);
|
||||
g.drawString(hrmValue, 63, 102);
|
||||
|
||||
// Draw steps
|
||||
var steps = getSteps();
|
||||
g.drawString("STEP:", 20, 124);
|
||||
g.drawString(steps, 60, 124);
|
||||
g.drawString("STEP:", 28, 122);
|
||||
g.drawString(steps, 63, 122);
|
||||
|
||||
// Draw battery
|
||||
var bat = E.getBattery();
|
||||
var charging = Bangle.isCharging() ? "*" : "";
|
||||
g.drawString("BAT:", 20, 144);
|
||||
g.drawString(charging + bat+ "%", 60, 144);
|
||||
g.drawString("BAT:", 28, 142);
|
||||
g.drawString(bat+ "%", 63, 142);
|
||||
|
||||
// Queue draw in one minute
|
||||
if(queue){
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
|
@ -3,3 +3,8 @@
|
|||
0.03: Fixes for Bangle.js 1
|
||||
0.04: Add require("messages").clearAll()
|
||||
0.05: Handling of message actions (ok/clear)
|
||||
0.06: New messages now go at the start (fix #898)
|
||||
Answering true/false now exits the messages app if no new messages
|
||||
Back now marks a message as read
|
||||
Clicking top-left opens a menu which allows you to delete a message or mark unread
|
||||
0.07: Added settings menu with option to choose vibrate pattern and frequency (fix #909)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,10 @@ var MESSAGES = require("Storage").readJSON("messages.json",1)||[];
|
|||
if (!Array.isArray(MESSAGES)) MESSAGES=[];
|
||||
var onMessagesModified = function(msg) {
|
||||
// TODO: if new, show this new one
|
||||
if (msg.new) Bangle.buzz();
|
||||
if (msg.new) {
|
||||
if (WIDGETS["messages"]) WIDGETS["messages"].buzz();
|
||||
else Bangle.buzz();
|
||||
}
|
||||
showMessage(msg.id);
|
||||
};
|
||||
function saveMessages() {
|
||||
|
|
@ -111,7 +114,7 @@ function showMapMessage(msg) {
|
|||
msg.new = false;
|
||||
saveMessages();
|
||||
layout = undefined;
|
||||
checkMessages();
|
||||
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +129,7 @@ function showMusicMessage(msg) {
|
|||
msg.new = false;
|
||||
saveMessages();
|
||||
layout = undefined;
|
||||
checkMessages();
|
||||
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||
}
|
||||
layout = new Layout({ type:"v", c: [
|
||||
{type:"h", fillx:1, bgCol:colBg, c: [
|
||||
|
|
@ -148,6 +151,22 @@ function showMusicMessage(msg) {
|
|||
layout.render();
|
||||
}
|
||||
|
||||
function showMessageSettings(msg) {
|
||||
E.showMenu({"":{"title":"Message"},
|
||||
"< Back" : () => showMessage(msg.id),
|
||||
"Delete" : () => {
|
||||
MESSAGES = MESSAGES.filter(m=>m.id!=msg.id);
|
||||
saveMessages();
|
||||
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:0});
|
||||
},
|
||||
"Mark Unread" : () => {
|
||||
msg.new = true;
|
||||
saveMessages();
|
||||
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:0});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function showMessage(msgid) {
|
||||
var msg = MESSAGES.find(m=>m.id==msgid);
|
||||
if (!msg) return checkMessages(); // go home if no message found
|
||||
|
|
@ -163,30 +182,30 @@ function showMessage(msgid) {
|
|||
title = g.wrapString(title, w).join("\n");
|
||||
}
|
||||
var buttons = [
|
||||
{type:"btn", src:getBackImage(), cb:()=>checkMessages(true)}, // back
|
||||
msg.new?{type:"btn", src:atob("HRiBAD///8D///wj///Fj//8bj//x3z//Hvx/8/fx/j+/x+Ad/B4AL8Rh+HxwH+PHwf+cf5/+x/n/PH/P8cf+cx5/84HwAB4fgAD5/AAD/8AAD/wAAD/AAAD8A=="), cb:()=>{
|
||||
{type:"btn", src:getBackImage(), cb:()=>{
|
||||
msg.new = false; // read mail
|
||||
saveMessages();
|
||||
checkMessages();
|
||||
}}:{}
|
||||
checkMessages({clockIfNoMsg:1,clockIfAllRead:0,showMsgIfUnread:1});
|
||||
}} // back
|
||||
];
|
||||
if (msg.positive) {
|
||||
buttons.push({type:"btn", src:getPosImage(), cb:()=>{
|
||||
msg.new = false; saveMessages();
|
||||
Bangle.messageResponse(msg,true);
|
||||
checkMessages();
|
||||
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||
}});
|
||||
}
|
||||
if (msg.negative) {
|
||||
buttons.push({type:"btn", src:getNegImage(), cb:()=>{
|
||||
console.log("Response");
|
||||
msg.new = false; saveMessages();
|
||||
Bangle.messageResponse(msg,true);
|
||||
checkMessages();
|
||||
Bangle.messageResponse(msg,false);
|
||||
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||
}});
|
||||
}
|
||||
layout = new Layout({ type:"v", c: [
|
||||
{type:"h", fillx:1, bgCol:colBg, c: [
|
||||
{ type:"img", src:getMessageImage(msg), pad:2 },
|
||||
{ type:"btn", src:getMessageImage(msg), cb:()=>showMessageSettings(msg) },
|
||||
{ type:"v", fillx:1, c: [
|
||||
{type:"txt", font:fontMedium, label:msg.src||"Message", bgCol:colBg, fillx:1, pad:2 },
|
||||
title?{type:"txt", font:titleFont, label:title, bgCol:colBg, fillx:1, pad:2 }:{},
|
||||
|
|
@ -199,28 +218,37 @@ function showMessage(msgid) {
|
|||
layout.render();
|
||||
}
|
||||
|
||||
function checkMessages(forceShowMenu) {
|
||||
|
||||
/* options = {
|
||||
clockIfNoMsg : bool
|
||||
clockIfAllRead : bool
|
||||
showMsgIfUnread : bool
|
||||
}
|
||||
*/
|
||||
function checkMessages(options) {
|
||||
options=options||{};
|
||||
// If no messages, just show 'no messages' and return
|
||||
if (!MESSAGES.length) {
|
||||
if (forceShowMenu) return E.showPrompt("No Messages",{
|
||||
if (!options.clockIfNoMsg) return E.showPrompt("No Messages",{
|
||||
title:"Messages",
|
||||
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
|
||||
buttons : {"Ok":1}
|
||||
}).then(() => { load() });
|
||||
load();
|
||||
return;
|
||||
return load();
|
||||
}
|
||||
// we have >0 messages
|
||||
var newMessages = MESSAGES.filter(m=>m.new);
|
||||
// If we have a new message, show it
|
||||
if (!forceShowMenu) {
|
||||
var newMessages = MESSAGES.filter(m=>m.new);
|
||||
if (newMessages.length)
|
||||
return showMessage(newMessages[0].id);
|
||||
}
|
||||
if (options.showMsgIfUnread && newMessages.length)
|
||||
return showMessage(newMessages[0].id);
|
||||
// no new messages - go to clock?
|
||||
if (options.clockIfAllRead && newMessages.length==0)
|
||||
return load();
|
||||
|
||||
// Otherwise show a menu
|
||||
E.showScroller({
|
||||
h : 48,
|
||||
c : Math.min(MESSAGES.length+1,3), // workaround for 2v10.219 firmware (min 3 not needed for 2v11)
|
||||
c : Math.max(MESSAGES.length+1,3), // workaround for 2v10.219 firmware (min 3 not needed for 2v11)
|
||||
draw : function(idx, r) {"ram"
|
||||
var msg = MESSAGES[idx-1];
|
||||
if (msg && msg.new) g.setBgColor(colBg);
|
||||
|
|
@ -239,7 +267,7 @@ function checkMessages(forceShowMenu) {
|
|||
x += 50;
|
||||
}
|
||||
var m = msg.title+"\n"+msg.body;
|
||||
if (msg.src) g.setFontAlign(1,-1).setFont("6x8").drawString(msg.src, r.x+r.w-2, r.y+2);
|
||||
if (msg.src) g.setFontAlign(1,1).setFont("6x8").drawString(msg.src, r.x+r.w-2, r.y+r.h-2);
|
||||
if (title) g.setFontAlign(-1,-1).setFont(fontBig).drawString(title, x,r.y+2);
|
||||
if (body) {
|
||||
g.setFontAlign(-1,-1).setFont("6x8");
|
||||
|
|
@ -261,4 +289,6 @@ function checkMessages(forceShowMenu) {
|
|||
g.clear();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
checkMessages(true); // force showing a menu
|
||||
setTimeout(() => {
|
||||
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:1});
|
||||
},10); // if checkMessages wants to 'load', do that
|
||||
|
|
|
|||
|
|
@ -17,7 +17,10 @@ exports.pushMessage = function(event) {
|
|||
mIdx=-1;
|
||||
} else { // add/modify
|
||||
if (event.t=="add") event.new=true; // new message
|
||||
if (mIdx<0) mIdx=messages.push(event)-1;
|
||||
if (mIdx<0) {
|
||||
mIdx=0;
|
||||
messages.unshift(event); // add new messages to the beginning
|
||||
}
|
||||
else Object.assign(messages[mIdx], event);
|
||||
}
|
||||
require("Storage").writeJSON("messages.json",messages);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
(function(back) {
|
||||
function settings() {
|
||||
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
|
||||
if (settings.vibrate===undefined) settings.vibrate=".";
|
||||
if (settings.repeat===undefined) settings.repeat=4;
|
||||
return settings;
|
||||
}
|
||||
function updateSetting(setting, value) {
|
||||
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
|
||||
settings[setting] = value;
|
||||
require('Storage').writeJSON("messages.settings.json", settings);
|
||||
}
|
||||
|
||||
var vibPatterns = ["Off", ".", "-", "--", "-.-", "---"];
|
||||
var currentVib = settings().vibrate;
|
||||
var mainmenu = {
|
||||
"" : { "title" : "Messages" },
|
||||
"< Back" : back,
|
||||
'Vibrate': {
|
||||
value: Math.max(0,vibPatterns.indexOf(settings().vibrate)),
|
||||
min: 0, max: vibPatterns.length,
|
||||
format: v => vibPatterns[v]||"Off",
|
||||
onchange: v => {
|
||||
updateSetting("vibrate", vibPatterns[v]);
|
||||
}
|
||||
},
|
||||
'Repeat': {
|
||||
value: settings().repeat,
|
||||
min: 2, max: 10,
|
||||
format: v => v+"s",
|
||||
onchange: v => updateSetting("repeat", v)
|
||||
},
|
||||
};
|
||||
E.showMenu(mainmenu);
|
||||
})
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
||||
if (!this.width) return;
|
||||
var c = (Date.now()-this.t)/1000;
|
||||
|
|
@ -5,9 +6,11 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
|||
g.clearRect(this.x,this.y,this.x+this.width,this.y+23);
|
||||
g.setFont("6x8:1x2").setFontAlign(0,0).drawString("MESSAGES", this.x+this.width/2, this.y+12);
|
||||
//if (c<60) Bangle.setLCDPower(1); // keep LCD on for 1 minute
|
||||
if (c<120 && (Date.now()-this.l)>4000) {
|
||||
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
|
||||
if (settings.repeat===undefined) settings.repeat = 4;
|
||||
if (c<120 && (Date.now()-this.l)>settings.repeat*1000) {
|
||||
this.l = Date.now();
|
||||
Bangle.buzz(); // buzz every 4 seconds
|
||||
WIDGETS["messages"].buzz(); // buzz every 4 seconds
|
||||
}
|
||||
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
|
||||
},show:function() {
|
||||
|
|
@ -21,4 +24,13 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
|||
delete WIDGETS["messages"].l;
|
||||
WIDGETS["messages"].width=0;
|
||||
Bangle.drawWidgets();
|
||||
},buzz:function() {
|
||||
let v = (require('Storage').readJSON("messages.settings.json", true) || {}).vibrate || ".";
|
||||
function b() {
|
||||
var c = v[0];
|
||||
v = v.substr(1);
|
||||
if (c==".") Bangle.buzz().then(()=>setTimeout(b,100));
|
||||
if (c=="-") Bangle.buzz(500).then(()=>setTimeout(b,100));
|
||||
}
|
||||
b();
|
||||
}};
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@
|
|||
0.04: App shows instructions, Widgets remain visible, color changed
|
||||
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
||||
0.06: Correct string position
|
||||
0.07: Add support for Bangle.sjs2
|
||||
|
|
@ -4,11 +4,12 @@ This metronome makes your watch blink and vibrate with a given rate.
|
|||
|
||||
## Usage
|
||||
|
||||
* Tap the screen at least three times. The app calculates the mean rate of your tapping. This rate is displayed in bmp while the text blinks and the watch softly vibrates with every beat.
|
||||
* Use `BTN1` to increase the bmp value by one.
|
||||
* Use `BTN3` to decrease the bmp value by one.
|
||||
* Tap the screen at least three times. The app calculates the mean rate of your tapping. This rate is displayed in bpm while the text blinks and the watch softly vibrates with every beat.
|
||||
* Use `BTN1` to increase the bpm value by one.
|
||||
* Use `BTN3` to decrease the bpm value by one.
|
||||
* You can change the bpm value any time by tapping the screen or using `BTN1` and `BTN3`.
|
||||
* Intensity of buzzing and the beats per bar (default 4) can be changed with the settings-app. The first beat per bar will be marked in red.
|
||||
* On Bangle.js 2 tapping the center of the screen initiates bpm. in- or decreasing bpm can by 1 can be done by tapping left or right site of the screen.
|
||||
|
||||
## Attributions
|
||||
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 3.6 KiB |
|
|
@ -3,10 +3,9 @@ var cindex=0; // index to iterate through colous
|
|||
var bpm=60; // ininital bpm value
|
||||
var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
||||
var tindex=0; //index to iterate through time_diffs
|
||||
|
||||
|
||||
Bangle.setLCDTimeout(undefined); //do not deaktivate display while running this app
|
||||
|
||||
// set background colour
|
||||
g.setTheme({bg:"#000"});
|
||||
Bangle.setLCDTimeout(undefined); //do not deactivate display while running this app
|
||||
const storage = require("Storage");
|
||||
const SETTINGS_FILE = 'metronome.settings.json';
|
||||
|
||||
|
|
@ -15,7 +14,7 @@ function setting(key) {
|
|||
//define default settings
|
||||
const DEFAULTS = {
|
||||
'beatsperbar': 4,
|
||||
'buzzintens': 0.75,
|
||||
'buzzintens': 1.0,
|
||||
};
|
||||
if (!settings) { loadSettings(); }
|
||||
return (key in settings) ? settings[key] : DEFAULTS[key];
|
||||
|
|
@ -40,6 +39,10 @@ function changecolor() {
|
|||
7: { value: 0xFFFF, name: "White" },
|
||||
};
|
||||
g.setColor(colors[cindex].value);
|
||||
if ((process.env.HWVERSION==2 )) {
|
||||
g.drawLine(39,0,39,g.getWidth()/3);
|
||||
g.drawLine(136,0,136,g.getWidth()/3);
|
||||
}
|
||||
if (cindex == setting('beatsperbar')-1) {
|
||||
cindex = 0;
|
||||
}
|
||||
|
|
@ -50,43 +53,73 @@ function changecolor() {
|
|||
}
|
||||
|
||||
function updateScreen() {
|
||||
g.reset().clearRect(0, 50, 250, 150);
|
||||
g.reset().clearRect(0, 50, 250, 120);
|
||||
changecolor();
|
||||
try {
|
||||
Bangle.buzz(50, setting('buzzintens'));
|
||||
} catch(err) {
|
||||
}
|
||||
g.setFont("Vector",40).setFontAlign(0,0);
|
||||
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, 100);
|
||||
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, g.getWidth()/2);
|
||||
}
|
||||
|
||||
Bangle.on('touch', function(button) {
|
||||
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
||||
if (tindex < time_diffs.length) {
|
||||
if (Date.now()-tStart < 5000) {
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
} else {
|
||||
tindex=0;
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
tindex += 1;
|
||||
mean_time = 0.0;
|
||||
for(count = 0; count < time_diffs.length; count++) {
|
||||
mean_time += time_diffs[count];
|
||||
}
|
||||
time_diff = mean_time/count;
|
||||
//Write user instructuins to screen
|
||||
function printInstructions() {
|
||||
g.clear(1).setFont("4x6");
|
||||
g.setColor(-1); //set color to white
|
||||
g.drawString('Drum the beat on the center\nof the screen to set tempo.', 30, g.getWidth()/3*2+15);
|
||||
if(process.env.HWVERSION==1) {
|
||||
g.drawString('Use BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 30, g.getWidth()/3*2+30);
|
||||
}
|
||||
else {
|
||||
g.drawString('Touch left part of the screen\nto decrease, or the right site\nto increase bpm value by 1.', 30, g.getWidth()/3*2+30);
|
||||
}
|
||||
}
|
||||
|
||||
tStart = Date.now();
|
||||
clearInterval(time_diff);
|
||||
bpm = (60 * 1000/(time_diff));
|
||||
updateScreen();
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
return bpm;
|
||||
Bangle.on('touch', function(zone, e) {
|
||||
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
||||
if ((process.env.HWVERSION==2 && e.x > 39 && e.x < 136) || process.env.HWVERSION==1){
|
||||
if (tindex < time_diffs.length) {
|
||||
if (Date.now()-tStart < 5000) {
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
} else {
|
||||
tindex=0;
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
tindex += 1;
|
||||
mean_time = 0.0;
|
||||
for (count = 0; count < time_diffs.length; count++) {
|
||||
mean_time += time_diffs[count];
|
||||
}
|
||||
time_diff = mean_time/count;
|
||||
|
||||
tStart = Date.now();
|
||||
clearInterval(time_diff);
|
||||
bpm = (60 * 1000/(time_diff));
|
||||
updateScreen();
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
return bpm;
|
||||
}
|
||||
else if (e.x < 39) {
|
||||
if (bpm > 1) {
|
||||
bpm -= 1;
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
}
|
||||
}
|
||||
else if (e.x > 136) {
|
||||
if (bpm > 1) {
|
||||
bpm += 1;
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
}}
|
||||
});
|
||||
|
||||
// enable bpm finetuning via buttons.
|
||||
|
||||
// enable bpm finetuning
|
||||
if ((process.env.HWVERSION==1)) {
|
||||
setWatch(() => {
|
||||
bpm += 1;
|
||||
clearInterval(interval);
|
||||
|
|
@ -101,10 +134,10 @@ setWatch(() => {
|
|||
}
|
||||
}, BTN3, {repeat:true});
|
||||
|
||||
}
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
printInstructions();
|
||||
|
||||
g.clear(1).setFont("6x8");
|
||||
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
|
||||
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -3,3 +3,5 @@
|
|||
0.03: Make it work with Gadgetbridge, Notifications fullscreen on a Bangle 2
|
||||
0.04: Leave space at the bottom for Chrono widget, set back option at first option
|
||||
0.05: Added 2 new fonts
|
||||
0.06: COnverted fonts to font modules
|
||||
0.07: Added info line that cycles on BTN1/BTN3 (or vitual buttons on a bangle 2)
|
||||
|
|
|
|||
|
|
@ -1,20 +1,44 @@
|
|||
# Pastel Clock - a configurable clock with custom fonts and background
|
||||
# Pastel Clock
|
||||
|
||||
*a configurable clock with custom fonts and background*
|
||||
|
||||
* Designed specifically for Bangle 1 and Bangle 2
|
||||
* A choice of 7 different custom fonts
|
||||
* Supports the Light and Dark themes
|
||||
* Has a settings menu, change font, enable/disable the grid and the date display
|
||||
* Has a settings menu, change font, enable/disable the grid
|
||||
* On Bangle 1 use BTN1,BTN3 to cycle through the info display (Date, ID, Batt %, Ram % etc)
|
||||
* On Bangle 2 touch the top right/top left to cycle through the info display (Date, ID, Batt %, Ram % etc)
|
||||
|
||||
|
||||
I came up with the name Pastel due to the shade of the grid background.
|
||||
|
||||

|
||||

|
||||

|
||||
## Creator
|
||||
[Hugh Barney](https://github.com/hughbarney)
|
||||
|
||||

|
||||

|
||||
## Lato
|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
## Architect
|
||||

|
||||
|
||||
|
||||
## Gochihand
|
||||

|
||||
|
||||
|
||||
## Monoton
|
||||

|
||||
|
||||
|
||||
## Elite
|
||||

|
||||
|
||||
|
||||
## Cabin Sketch
|
||||

|
||||
|
||||
|
||||
## Orbitron
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
var widths = atob("CBolByEeJykkJCYhCg==");
|
||||
var font = atob("AAAAAAAAAAAAAAAAYAAAAAAAADgAAAAAAAAeAAAAAAAAB4AAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAD4AAAAAAAA/AAAAAAAAH4AAAAAAAB/AAAAAAAAf4AAAAAAAD+AAAAAAAA/wAAAAAAAH+AAAAAAAB/gAAAAAAAP8AAAAAAAD/AAAAAAAAf4AAAAAAAH+AAAAAAAA/gAAAAAAAP8AAAAAAAB/AAAAAAAAfwAAAAAAAH8AAAAAAAA/AAAAAAAAPwAAAAAAAB8AAAAAAAAfAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAP/8AAAAAAH//4AAAAAB///wAAAAAf/APgAAAAD/gAeAAAAA/wAA8AAAAH8AABwAAAA/AAAHgAAAHwAAAeAAAA+AAAA4AAADgAAADgAAAcAAAAOAAABwAAAA4AAAOAAAADgAAA4AAAAOAAADgAAAA4AAAOAAAADgAAA4AAAAOAAADgAAAB4AAAOAAAAHAAAA4AAAAcAAADwAAADwAAAHAAAAOAAAAeAAAB4AAAA4AAAPAAAADwAAB4AAAAHwAAPgAAAAPgAD8AAAAAf4D/gAAAAAf//4AAAAAAf/+AAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAP////4AAAB/////gAAAH////+AAAAf////gAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAADwAADAAAAAeAAAeAAAAD4AAD4AAAAfAAAfgAAAD4AAD+AAAAPAAAf4AAAB8AAH/AAAAHgAA/8AAAAcAAH/wAAADwAA/vAAAAOAAP48AAAA4AB/DgAAADgAf4OAAAAPAD+A4AAAA8A/wHgAAAD8/8AcAAAAH//gBwAAAAP/wAPAAAAAf8AA8AAAAAAAADgAAAAAAAAeAAAAAAAAB4AAAAAAAAHgAAAAAAAA+AAAAAAAAD4AAAAAAAAPAAAAAAAAA8AAAAAAAAHwAAAAAAAAfAAAAAAAAA4AAAAAAAABAAAAAAIAAAAAAAADwAAAAAAAAPAAAAAAAAA8AAAAAAAADgAAAAAAAAeAAAAAAAAB4AYAAAAAAHgBwAAAAAAeAPABAAAADwA8AGAAAAPAHgAYAAAA8AeADgAAADwDwAOAAAAOAPAB4AAAB4B8AHgAAAHgPwA8AAAAeA+ADwAAAB4H4AeAAAAHgfgD4AAAAeD+AfAAAAB4e4D8AAAAHj7gfgAAAAf/PH8AAAAB/4//gAAAAH/D/8AAAAAP4H/gAAAAA+Af8AAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADwAAAAAAAAfAAAAAAAAD8AAAAAAAA/wAAAAAAAH/AAAAAAAA/8AAAAAAAPxwAAAAAAB+HAAAAAAAPwcAAAAAAB+BwAAAAAAfwPAAAAAAD+A8AAAAAAfwDwAAAAAD+APAAAAAAPwA8AAAAAB+ADwAAAAAP/////AAAA/////8AAAB/////wAAAD/////AAAAD////8AAAAAAH8AAAAAAAAeAAAAAAAAB4AAAAAAAAHgAAAAAAAAeAAAAAAAAB4AAAAAAAAHgAAAAAAAAcAAAAAAAABwAAAAAAAAHAAAAAAAAAcAAAAAAAABwAAAAAAAAGAAAAAAAAAAAAAAAAAAOAAAAAAAH/8AAAAAAf//wAAAAAD///AAAAAAP//8AAAAAA///wAAAAAAPgPAB4AAAA+A4APgAAAD4DgA+AAAAPAeAB4AAAA8BwAHgAAADwHAAeAAAAPAcAB4AAAB4BgAHgAAAHgGAAeAAAAeAYAD4AAAB4BgAPAAAAPgGAA8AAAA8AYADwAAADwBwAOAAAAPAHAB4AAAA8AcAHgAAAHwB4A8AAAAeAHgHgAAAB4APh+AAAAHgA//wAAAA+AB/+AAAADwAD/wAAAAPAAD8AAAAA8AAAAAAAAHwAAAAAAAAfAAAAAAAAB4AAAAAAAAHgAAAAAAAAeAAAAAAAAB4AAAAAAAAHAAAAAAAAAcAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAAH//AAAAAAB///AAAAAAP//+AAAAAD///8AAAAAf+B/4AAAAD/AA/wAAAA/wAA/gAAAD8AAB+AAAAfAAAD8AAAD4AAAPwAAAfAAAB/AAAB4AAAP+AAAPAAAB/4AAA8AAAP/gAAHgAAB++AAAeAAAPz4AABwAAB+PgAAHAAAPw+AAAcAAA+D4AABgAAHwPgAAAAAA/A+AAAAAAD4H4AAAAAAfAfAAAAAAB4D8AAAAAAPgPgAAAAAA8B+AAAAAADwPwAAAAAAPA+AAAAAAA8P4AAAAAAD//AAAAAAAP/4AAAAAAAf+AAAAAAAA/gAAAAAAAAAAAAAAAIAAAAAAAABwAAAAAAAAHAAAAAAAAAcAAAAAAAABwAAAAAAAAHAAAAAAAAAcAAAAAAAABwAAAAAAAAHAAAAAAAAAcAAAAAAAABwAAAAAAAAHAAAAAAAAAcAAAAAAAADwAAAAAAAAPAAAAAAAAA8AAAAAAAADwAAAAAAAAPAAAP4AAAA8AAP/gAAADwAH/+AAAAfAB//wAAAB8Af//AAAAHwH/4AAAAAfB/4AAAAAB8f8AAAAAAH//AAAAAAAf/wAAAAAAB/8AAAAAAAP/gAAAAAAA/4AAAAAAAD/AAAAAAAAPwAAAAAAAA+AAAAAAAADwAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAH+AAAAAAAA/8AAAAAAAP/4AAAAAfB//gAAAAH/Pw/AAAAA//8A8AAAAH//gDwAAAA//8AHgAAAD4fwAeAAAAeA+AB4AAAB4DwADgAAAPAPAAOAAAA4A4AA4AAADgDgADgAAAOAOAAOAAABwAwAA4AAAHAHAADgAAAcAcAAOAAABwBwAA4AAAHAPAAHgAAAcA8AAcAAABwDgABwAAAHAeAAHAAAAcB8AA4AAABwPwAHgAAAHg/AAcAAAAeH8ADwAAAB4/4AeAAAAD//gD4AAAAP+fA/AAAAAfx//4AAAAAAD//AAAAAAAP/wAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAA/wAAAAAAAH/gAAAAAAA/+AAAAAAAH/8AAAAAAA/nwAAAAAAD4PAAAAAAAeA8AAAAAADwDwAAAAAAPAPAAAAAAB4A8AAwAAAHgDwAHgAAAeAPAAeAAADwA8AD4AAAPADwAfgAAA8AOAB8AAADwA4APwAAAPADgB+AAAA8AeAPwAAAD4B4B/AAAAHgHgf4AAAAfA+D+AAAAA/D5/wAAAAB///+AAAAAH///gAAAAAH//4AAAAAAP/+AAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAA4AAAAAAAADwDAAAAAAAOAeAAAAAAAYB4AAAAAAAAHgAAAAAAAAMAAAAAAAAAAAAA=");
|
||||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontArchitect = function(scale) {
|
||||
// Actual height 40 (41 - 2)
|
||||
this.setFontCustom(font, 46, widths, 58+(scale<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
var widths = atob("ECMtGCEiJSIkHyYlDw==");
|
||||
var font = atob("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");
|
||||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontCabinSketch = function() {
|
||||
// Actual height 48 (51 - 4)
|
||||
this.setFontCustom(font, 46, widths, 65+(1<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontSpecialElite = function(scale) {
|
||||
// Actual height 40 (39 - 0)
|
||||
this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAYAAAAAAAfwAAAAAAP/AAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAAv8AAAAAAN6AAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAfAAAAAAAPwAAAAAAP8AAAAAAH+AAAAAAH+AAAAAAD+AAAAAAD/AAAAAAD/AAAAAAB/AAAAAAB/AAAAAAB/AAAAAAB/gAAAAAB/gAAAAAB/gAAAAAA/gAAAAAB/wAAAAAA/4AAAAAA/wAAAAAA/4AAAAAA/4AAAAAAf8AAAAAAP8AAAAAAD8AAAAAAA8AAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAP///gAAAH/9/+AAAD/gAf4AAB/AAB+AAA/AAAHwAAPAAAA+AADgAAAPgAAwAAAD4AAcAAAAfAAHAAAAHwABwAAAB8AA4AAAAfAAOAAAAHwABwAAAB8AAcAAAA/AAHgAAAPgAB+AAAH4AAPgAAD8AAD+AAD+AAA/4Af/AAAB////AAAAP///wAAAAP//gAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAOAAAAHAADgAAAD4AB4AAAA+AAeAAAAPgAHgAAAD4AB4AAAAeAAeAAAAHgAHgAAAB4AB4AAAAcAAeAAAAPAAH4AAP/wAB/////+AAf/////gAH/////4AB///+/+AAAAQAAPgAAAAAAB4AAAAAAAeAAAAAAAHgAAAAAAD4AAAAAAA+AAAAAAAPgAAAAAADwAAAAAAA+AAAAAAAPgAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAcAAAB+AAfwAAA/wAf/AAA/8Af/wAAf/AP/8AAGPwP//AADh8D48AAA4OB8OAAAOAAfDgAAHAAPg4AABwADwPAAAcAB8DwAAHAAeAeAABwAHAHgAAcADwB8AAHAB4APgAB4A+AB4AAPAfAAeAAD4fgADgAAf/4AA4AAD/8AAeAAAf+AAfAAAB8AAPwAAAAAAD4AAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAAf8AAB/wAH/wAAf8AB/8AAH+AAffgAB4AcDx4AAcAPAAfAAHAPwAHwABwHwAA8AAcB+AAPAAHA/gADwABw/4AA8AAcf+AAPAAHP/gAHwABz74AB8AAf8fAA/AAH8DwAPgAD/A8AHwAA/gHwP8AAPwA//+AADwAH//AAAAAA//gAAAAAD/wAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAP8AAAAAAD/AAAAAAD/wAAAAAD/8AAAAAB/PAAAAAA/jwAAAAAfg8AAAAAPwPAAAAAH4DwAAAAD4A8HAAAD8APBwAAB+ADw8AAA+AA8PAAA/AAPDgAAPgADw8AAHwAB8/AAD+B///wAA/////8AAP/////AAB+f///wAAAAAHx8AAAAAB8PAAAAAAPDwAAAAADw8AAAAAA4PAAAAAAODwAAAAADgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAB/gAAH//wf8AAB//+H/gAAf//h/4AAHJ/wf/AABwD4D/4AAeA+AAeAAHgPAAHgAB4DwAB4AAeA4AAeAAHgOAAHgAA4DgAB4AAOA8AAeAADgPAAHgAB4D4ADwAAeAeAB4AAHAHwAeAABgAfAPgAAYAD8fgAAAAA//wAAAAAH/4AAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAA//wAAAAB///AAAAB////AAAB/7//wAAA/AfB+AAAfAPAPwAAPgHgB+AAHwBwAPgAB4A8AB8AAeAPAAfAAPADwAHwADgA8AB8AA8APAAfAAPADwAHwADwA8AB8AA8AHgA+AAP8B4APgAD/wfAH4AA/8D4D8AAH/A///AAB/wH//gAAH8A//wAAA8AH/4AAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAB/4AAAAAA/8AAAAAAP+AAAAAAD+AAAAAAAeAAAAAAAHAAAAAAADwAAAAAAB8AAAAAAAfAAAAAAAHwAAA/8AD+AAB//AA/gAB//wAP4AB//gAB+AB//AAAfwB//AAAH8A/wAAAA/A/wAAAAHw/wAAAAB8/wAAAAAffwAAAAAP/wAAAAAD/4AAAAAA/4AAAAAAP8AAAAAAD4AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAP/wAAAH8H/+AAAH/z//wAAD////+AAB///h/gAA/B/gH4AAPAP4A/AAHwB8AHwAB4APAB8AAeADgAfAAHgA4ADwABwAOAA8AAcADgAPAAHAA4ADwAB4AeAA8AAfAHwAPAADwB8AHgAA+A/gD4AAPgP4B+AAB+P/h/gAAP////wAAB/8f/4AAAP8D/8AAAAAAf8AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAA/4APAAAA//gH4AAAP/8D/gAAP4Pg/8AADwB8P/AAB4AfD/4AAeAD4d+AAHAA+AfwADwAHgH8AA4AA8A/AAOAAPAPgADgADwD4AA8AA4B+AAPAAeAfAAB4AHgHgAAeADwD4AAHwA8A8AAA+AfA/AAAHp/h/gAAA3//+gAAAB//+gAAAAd//gAAAACf/wAAAAAH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAABwB/AAAAB/A/8AAAA/wf/gAAAP+H/4AAAH/h/+AAAB/8f/gAAAP+H/4AAAD/h/+AAAAfwf/gAAAH8C/wAAAAAA3oAAAAAABwAAAAAAAAAAAAAAAAAAAA=="), 46, atob("ERwfHB0cHxsdHB4dEQ=="), 50+(scale<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
var widths = atob("DhglJSUlJSUlJSUlEA==");
|
||||
var font = atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAHwAAAAAAAAA/gAAAAAAAAH/AAAAAAAAAf8AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAHwAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAB/AAAAAAAAAf8AAAAAAAAP/wAAAAAAAD/8AAAAAAAB//AAAAAAAAf/wAAAAAAAP/4AAAAAAAD/+AAAAAAAA//AAAAAAAAf/wAAAAAAAH/4AAAAAAAD/+AAAAAAAA//AAAAAAAAf/wAAAAAAAH/4AAAAAAAD/+AAAAAAAA//AAAAAAAAf/wAAAAAAAD/4AAAAAAAAP+AAAAAAAAA/AAAAAAAAADwAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAA////AAAAAAP////gAAAAD/////AAAAA//////AAAAH/////+AAAA//gAH/8AAAH/gAAB/4AAA/4AAAB/wAAD+AAAAB/AAAfwAAAAD+AAB+AAAAAH4AAH4AAAAAfgAAfAAAAAA+AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAAfAAAAAA+AAB+AAAAAD4AAH4AAAAAfgAAfwAAAAD+AAA/gAAAAfwAAD/gAAAH/AAAH/gAAB/4AAAP/4AB//AAAAf/////4AAAA//////AAAAA/////4AAAAB////+AAAAAA////AAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAB8AAAAAAAAAPwAAAD4AAAB/AAAAPgAAAP4AAAA+AAAB/AAAAD4AAAP8AAAAPgAAA/gAAAA+AAAH8AAAAD4AAA/gAAAAPgAAH8AAAAA+AAA/gAAAAD4AAH///////gAAf//////+AAB///////4AAH///////gAAf//////+AAB///////4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAADwAAAA+AAAA/AAAAH4AAAP8AAAA/gAAB/wAAAH+AAAP/AAAA/4AAB/4AAAH/gAAH+AAAA/+AAA/gAAAH/4AAD8AAAA/vgAAfgAAAH8+AAB+AAAA/n4AAHwAAAH8fgAA/AAAA/h+AAD8AAAH8H4AAPwAAA/gfgAA/AAAH8B+AAD8AAA/gH4AAPwAAH8AfgAAfAAB/gB+AAB+AAP8AH4AAH8AB/gAfgAAP4Af8AB+AAA/8f/gAH4AAB///8AAfgAAH///gAB+AAAP//4AAH4AAAP//AAAfgAAAf/wAAB+AAAAP4AAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAHgAAAAA8AAA/gAAAAPwAAD/AAAAD/AAAP+AAAAf8AAA/8AAAD/wAAB/4AAAf+AAAB/wAAD/gAAAB/AAAP4AAAAD+AAB/AAAAAH4AAH4AAAAAfgAAfgAAAAA+AAB8AAAAAD8AAPwAB4AAPwAA/AAHgAA/AAD8AAfAAD8AAPwAD8AAPwAA/AAPwAA/AAD8AA/AAD4AAHwAH8AAfgAAfgAf4AB+AAB/AD/gAP4AAD+AffAB/AAAP//9/Af8AAAf//n///gAAB//+P//8AAAD//wf//gAAAD/+A//8AAAAH/gB//gAAAAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAB+AAAAAAAAAf4AAAAAAAAD/gAAAAAAAAf+AAAAAAAAH/4AAAAAAAA//gAAAAAAAH++AAAAAAAB/z4AAAAAAAP+PgAAAAAAB/g+AAAAAAAf8D4AAAAAAD/gPgAAAAAAf4A+AAAAAAH/AD4AAAAAA/wAPgAAAAAH+AA+AAAAAB/wAD4AAAAAP8AAPgAAAAB/gAA+AAAAAf8AAD4AAAAD/AAAPgAAAAf4AAA+AAAAB///////4AAH///////gAAf//////+AAB///////4AAH///////gAAAAAAA+AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAADwAAAAAAQAAfgAAAAA/gAB+AAAAD/+AAH8AAAP//4AAPwAAH///gAAfgAAf//+AAB+AAB///4AAH4AAH/wPgAAPgAAfgB8AAA/AAB+AHwAAD8AAH4AfAAAPwAAfgB8AAA/AAB+AHwAAD8AAH4AfAAAPwAAfgB+AAA+AAB+AH4AAD4AAH4AfgAAfgAAfgA/AAD+AAB+AD8AAPwAAH4AP4AD/AAAfgAf4Af4AAB+AB////AAAH4AD///4AAAfAAH///AAAB8AAP//4AAAHwAAf//AAAAAAAAf/wAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAAAAAAAB//gAAAAAAAf//gAAAAAAH///gAAAAAA////AAAAAAP///8AAAAAB//Af4AAAAAf/wAfwAAAAD/8AA/AAAAAf/wAB+AAAAH/+AAH4AAAA/7wAAPgAAAH/PAAA/AAAB/58AAD8AAAP+HwAAPwAAB/wfAAA/AAAf+B8AAD8AAD/wHwAAPwAAf8AfAAA+AAB/gB8AAD4AAH8AH4AAfgAAfgAfgAB+AAB4AA/AAPwAAHAAD+AB/AAAYAAP+Af4AAAAAAf///AAAAAAA///8AAAAAAB///gAAAAAAD//4AAAAAAAH//AAAAAAAAH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB+AAAAAAAAAH4AAAAAAgAAfgAAAAAOAAB+AAAAAD4AAH4AAAAA/gAAfgAAAAP+AAB+AAAAD/4AAH4AAAA//AAAfgAAAP/4AAB+AAAD/+AAAH4AAA//gAAAfgAAP/4AAAB+AAD/+AAAAH4AA//gAAAAfgAP/4AAAAB+AB/+AAAAAH4Af/gAAAAAfgH/4AAAAAB+B/+AAAAAAH4f/gAAAAAAfn/4AAAAAAB//+AAAAAAAH//gAAAAAAAf/4AAAAAAAB/+AAAAAAAAH/gAAAAAAAAf4AAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAwAD/+AAAAA/8Af/8AAAAP/4D//4AAAB//4f//wAAAP//j///gAAB///P8H/AAAP////AH8AAA/gH/wAP4AAH4AH+AAfgAAfgAf4AA+AAB8AA/gAD4AAHwAD8AAPwAA+AAHwAAfAAD4AAfAAB8AAPgAB8AAHwAA+AAHwAAfAAD4AAfAAB8AAHwAD8AAPwAAfAAPwAA+AAB+AB/gAD4AAH4AH+AAfgAAP4B/8AD+AAA/8//4AfwAAB///P8H/AAAD//8///4AAAH//h///AAAAP/4D//4AAAAP/AH//AAAAAHAAP/4AAAAAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAP/8AAAAAAAD//4AAAAAAAf//4AAAAAAD///gAAAAAAf///AAAIAAB/gP+AABgAAP4AP4AAeAAA/AAfwAD4AAH4AA/AAfgAAfgAB8AH+AAB8AAHwA/4AAPwAAfAH/gAA/AAB8B/8AAD8AAHwP/AAAPwAAfB/4AAA/AAB8P+AAAD8AAHj/wAAAHwAAef8AAAAfgAD7/gAAAB+AAP/8AAAAD8AB//AAAAAP4AP/4AAAAAf4D/+AAAAAB////wAAAAAD///8AAAAAAH///gAAAAAAH//4AAAAAAAP/+AAAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAfAAAAAD8AAD+AAAAAf4AAP4AAAAB/gAB/wAAAAH+AAH/AAAAAf4AAP4AAAAA/AAA/gAAAAB4AAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
|
||||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontLato = function() {
|
||||
// Actual height 50 (53 - 4)
|
||||
this.setFontCustom(font, 46, widths, 64+(1<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
var widths = atob("BAgJDQ0RDwUHBwkNBQgFCA0NDQ0NDQ0NDQ0GBg0NDQkSDw4PEQ0MEBEHCg8LFBESDRIODA0QDxYODg4HCAcNCQcLDAoMDAcLDAYGDAYSDAwMDAkKCAwLEQsLCgcHBw0A");
|
||||
var font = atob("AAAAAAAAAAAAAAAAAAAAAAAAEA/84D/zgAAEAAAAAAAAAAAA+AAD8AAAAAAAAAD4AAPgAAAAAAAAAABAADGIAM/gB/8A/+AD8YAAx+AD/4B/4APxgAjGAAIAAAAAAAAAAAAADwMAfg4DnBgMMHg///P/5gMGGAwc4Bg/AEB4AAAAA4AAHwAA5gYDCDgMIcAxjgB84ADnAAA4AAHOABz8AOMYBwwgMDCAgP4AAfAAAAAAAAAAeAAH8APY4B/BgMcGAw4YDBxgMDmA4HwBwPAAB8AAf4ABhgAACAAAAD4AAPgAAAAAAAAAAAAAH/gB//wfAHzgAHAAAAAAAAAAAOAAcfAPwf/8Af+AAAAAAAAAAAANgAAUAABwAAfwAAcAADQAAJAAAAAAAAAAAGAAAYAABgAAGAAP/gA/+AAGAAAYAABgAAGAAAQAAAAAAAEAAA7AAD4AAAAAAAAAAAAGAAAYAABgAAGAAAYAAAgAAAAAAAAAADgAAOAAAYAAAAAAPAAD4AB8AAfAAHwAD4AAeAABAAAADgAB/wAf/wBwHAMAGAwAYDABgMAGA4A4B4PAD/4AH/AAAAAAAAAAAAAYAgDgGAcAYDgBgP/+A//4AABgAAGAAAYAAAAAAAAAAAAQBgHgOAcB4DgPgMA2AwGYDAxgOOGAfwYB+BgBgGAAAAAAAADA4AcDwDgDgMAGAwgYDDBgMcGA5w4B9/ADj4AAAAAAAAABgAAOAAB4AAfgADmAAcYADhgA4GAD//gP/+AAGAAAYAAAgAAAAAADAH4OA/gYDGBgMYGAxgYDGDgMccAw/wCB8AAAAAAAAAAYAAH4AB/wAPjgB8GAOwYDzBgOMGAg44AD/AAH4AACAAAAAAAAAwAADAAAMAGAwB4DAfAMHwAw8ADPAAPwAA+AADgAAAAAAAAAA4+AH38A/44DHBgMMGAwwYDHBgOeOAffwA4/AABwAAAAAAAAAAAAPgAB/AAOMGAww4DBngMF4Aw/ADj4AH+AAPwAAAAAAAAADg4AODgAwGAAAAAAAAAAAABAAAODsA4PgBAYAAAAAAAAAQAABgAAPAAA8AAG4AAZgADHAAMMABgwAAAAAAAAAAAAAAAAEQAAZgABmAAGYAAZgABmAAGYAAZgABmAAGYAAAAAAAAAAAAAAAAGDAAMMAAxwABmAAG4AAPAAA8AABgAAEAAAAAAAAAEAAA4AADABgMHOAw84DGAAP4AAfAAAAAAACAAD/gAePADgGAYAMBh8YMPxgxxGDGEIIYwgxOCDH8IMYRgYBGAwMwD/hAD8AAAAAAAGAAB4AAfgAP4AD+AA/YAPhgA4GAD4YAD9gAD+AAD+AAB+AAB4AABgAAAAAAAD//gP/+AwYYDBhgMGGAwYYDDhgOOGA/84B+/ABh4AAAAAAAAA/gAH/gA+/AHAcA4A4DgBgMAGAwAYDABgMAGA4A4BgDAGAMAAAAAAAAAAAA//4D//gMAGAwAYDABgMAGAwAYDABgOAOAYAwB4PAD/4AH/AAHwAAAAAAAAAAAAP/+A//4DDBgMMGAwwYDDBgMMGAwwYDABgMAGAAAAAAAAAAAA//4D//gMGAAwYADBgAMGAAwYADBgAMGAAwAAAAAAA/gAH/AA++AHAcA4A4DgBgMAGAwAYDABgMGGAwYYDhjgGH8AAfwAAAAAAAAAAAD//gP/+A//4ADAAAMAAAwAADAAAMAAAwAADAAAMAA//4D//gAAAAAAAAAAAAAAA//4D//gAAAAAAAAAAAAAAAAAYAABgAAGAAA4AAHgP/8A//gAAAAAAAAAAAAAAAP/+A//4ADAAAMAAB4AAPwABzgAOHABwPAOAeAwA4CAAgAAAAAAAAAAAP/+A//4AABgAAGAAAYAABgAAGAAAYAABgAAAA//4D//gP/+AeAAAeAAAeAAA+AAA8AAA4AAHgAB4AAeAAHwAA8AAPAAA//4D//gAAAAAAAAAAAAAAA//4D//gHAAAOAAAeAAA8AAA4AABwAADwAADgAAHAP/+A//4AAAAAAAAAAAAP4AD/4AeDwBwHAOAOAwAYDABgMAGAwAYDABgOAOAcBwB4PAD/4AD+AABAAAAAAAAAAAAAP/+A//4DBgAMGAAwYADBgAMGAA44AB/AAH4AAHAAAAAAA/gAP/gB4PAHAcA4A4DABgMAGAwAYDABgMAGA4A4BwHwHg/gP/nAP4MAEAQAAAAAAAAAAA//4D//gMGAAwYADBgAMHAAw/ADneAH4eAPA4AABgAAAAAAwA8DAH4OA5wYDDBgMMGAw4YDBjgOH8AYPgAAIAAAAAwAADAAAMAAAwAADAAAP/+A//4DAAAMAAAwAADAAAMAAAAAAAAAAAAAA//AD//AAAcAAA4AABgAAGAAAYAABgAAOAABwD//AP/4A/8AAAAAOAAA+AAB+AAB/AAA/AAA/AAAeAAD4AA/AAPwAH8AB+AAPgAA4AAAAAAOAAA/AAB/gAA/wAAf4AAPgAB+AA/gAfwAH4AA8AAD8AAD+AAB/AAB/gAA+AAH4AD/AD/gA/wAD4AAMAAAgAYDgDgPAeAeHgAe8AA/AAA4AAHwAB/wAPHgDwPgOAOAgAYAAAAIAAA4AADwAAHwAAHgAAHgAAP+AA/4APgAB4AAeAADwAAMAAAgAAAAAAMAGAwA4DAPgMB+AwPYDDxgMeGAzwYD8BgPgGA8AYDABgAAAAAAAH//8f//xAABEAAEAAAAAAAHAAAPAAAPgAAPgAAHwAAHwAAHgAADAAAAEAAEQAAR///H//8AAAAAAAAAAAAAAABgAAeAADwAA8AADgAAHgAAPAAAOAAAIAAAAAAAAAAAAQAABAAAEAAAQAABAAAEAAAQAABAAAAAAAAgAADAAAOAAAIAAAAAAAAAAAAAAAHAAY+ADnYAMYgAxiADGYAORAAf+AA/4AAAAAAAB//4H//gAYMADAYAMBgAwGADAYAPHgAf8AA/gAAAAAAAAA/gAH/AA4OADAYAMBgAwGADAYAMDgAQEAAAAAB+AAf8ADx4AMBgAwGADAYAMBgAYMB//4H//gAAAAAAAAB8AAf8ADpwAMhgAyGADIYAMhgA6GAB4wADhAAAAACAAAMAAH/+A//4DMAAMwAAzAAABAcAff4D/5gMbmAwmYDCZgMZmA/mYD8fAMA4AgAAAAAAAAAf/+B//4AGAAAwAADAAAMAAA4AAD/4AH/gAAAAAAACAAAc/+Bz/4CAAAAAAAAABiAAGc//5z//CAAAAAAAAAAAAAAf/+B//4AAYAADgAAfAAHuAA4cADAYAIAgAAAAAAAAAAAf/+B//4AAAAAAAAAAAAAAAA/+AD/4AEAAAwAADAAAMAAA/+AB/4AH/gAwAADAAAMAAA4AAD/4AD/gAAAAAAAAAAAA/+AD/4AGAAAwAADAAAMAAAwAAD/4AH/gAAAAAAAAD+AAf8ADg4AMBgAwGADAYAMBgA4OAB/wAD+AADgAAAAAP/+A//4BgwAMBgAwGADAYAMBgA8eAB/wAD8AAAAAAAAAB+AAf8ADx4AMBgAwGADAYAMBgAYMAD//gP/+AAAAAAAAP/gA/+ABwAAOAAAwAADAAAMAAAAAAAAQAHhgA/GADMYAMxgAxmADH4AEPAAAQAAAAAMAAAwAAf/wD//gAwGADAYAMBgAAAAAAAAP/AA/+AAAYAABgAAGAAAYAADAA/+AD/4AAAAAAAADgAAPgAAfgAAPwAAPgAAeAAHwAD8AA/AADgAAIAAA4AAD8AAD+AAB+AAB4AA/AAfgADwAAPgAAfwAAP4AAHgAB+AA/gAPwAA4AAAAAAAAgAwGADh4AHvAAPwAAOAAB8AAe8ADh4AMBgAgCACAAAOAAA+AAA/BgA/eAA/wAD8AA/AAPgAD4AAOAAAgGADA4AMHgAx+ADOYANxgA+GADgYAMBgAAAAAMAD//4f9/xgADEAAEAAAAAAAAAAAAAAB///n//+AAAAAAAAAAAAAABAABGAAMf9/w//+AAwAAAAAAAAAA4AADgAAYAABgAAHAAAMAAAwAADAAAcAADgAAAAAAAA");
|
||||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontLatoSmall = function() {
|
||||
// Actual height 21 (20 - 0)
|
||||
this.setFontCustom(font, 32, widths, 22+(1<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
exports.add = function(graphics) {
|
||||
graphics.prototype.setFontMonoton = function(scale) {
|
||||
// Actual height 44 (43 - 0)
|
||||
this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAD+AAAAAAf8AAAAAD/ggAAAAf8HwAAAD/g/4AAAf8H/AAAD/g/4OAAf8H/B/AD/g/4P+Af8H/B/wAfg/4P+AAMH/B/wAAA/4H+AAAD/A/4AAAB4H/AAAAAA/4AAAAAH/AAAAAAP4AAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAH//gAAAAf//8AAAA/AAPgAAA8f/x8AAB4//+PAAB5+APxwABzwfwecAAzj//jnAA7n+P85gA7ngAPO4AbnH/xzsAdnP/+c3AN3PAHndgGzOAA5m4DbuAAO7MD9mAADN2Bs3AAB2bA2bAAAbNgbNgAANmwNmwAAGzYGzYAADZsDdmAADN2B+7AABuzAbMwABmbgNneAD3NgHZ3+/3MwBuc//nO4A7nB8HGYAM58AfOcAHeP/+OcABzx/8ecAAc+AA+cAAHH//8cAAB4//48AAAPg+B8AAAD+AP4AAAAP//wAAAAA/+AAAAAAAAAAAAAAAAAAABsAAAAAAA2AAAAAAAbAAAAAAANgAAAAAAGwAAAAAADf////8ABv////+AA3/////AAbAAAAAAAN/////wAG/////4ADYAAAAAABv////+AA3/////AAb/////gANgAAAAAAG/////4ADf////8AAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAADcAAAA2wBs2AADbYA2bAADtsAbZgADm2AftwAHjbAN24AHNtgGzYAPO2wDZsAPebYBs2AOeNsA2bAec22AbNge87bANmwc55tgG7c8542wD9355zbYA2Z5zztsAbODzjm2ANz/nnjbADc/nnhtgBnCPHA2wA74fPAbYAOf+OANsADj8eAG2AA8A+ADbAAP/8AAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgG6AAAAuwDdsAAG3YBs2AADZuA27AABu3A/ZgAA7dgbtwAAduwN2w2zG3YGzYbZjZsDZsNsxs2Bs2G2Y2bA2bDbMbNgbNhtmNmwNmw2zGzYG7MbdnbsD939m/d2A2Z/7PM3AbuBtwO7AOz73eeZgDc/9n+dwB3H2Y8cwAZ4HnA84AGf/5/84ADz/OP44AAeALwB4AAH/+//4AAA/+H/wAAADwAfAAAAAAAAAAAAAAAAAAAAAAAZsAAAAAB82AAAAAD+bAAAAAHzNgAAAAPjmwAAAAfHzYAAAB+P5sAAAD8fM2AAAHw+ObAAAPj8fNgAAfH4/mwAA+Ph8zYAAcfH4ZsAAA+Px82AAB8fD+bAAD4+HzNgABh8PhmwAAH4/AzYAAPx+AZsAAPD4AM2AAGHwP+bfgAfgH/NvwA/AABmwAA8AAAzYAAYAA/5t+AAAAf82/AAAAAGbAAAAAADNgAAAAAAAAAAAAAAAAAAAAAAAGAAE///ADAAGf//gBwADP//wCcABmAAADmAAz//8C7gAZ//+DMwAMwAAA3YAGf//hZsADP//xu3ABn//4zdgAzDNsNuwAZhu2GzYAMw2bDZsAGYbNhs2ADMNmw2bABmGzYbNgAzDZsdmwAZhs2M3YAMw3d+zcAGYZm+ZsADMOzgd2ABmDM883AAzB3P87AAZgZx47gAMwOcB5gAGYDn/5gADMA4/zwAAAAPADwAAAAD8fgAAAAAf/gAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAD////AAAHwAADwAAHH//8eAAHP///ngAHfgAB8wAHeH/8PcADcf//x3ADsf//+ZgBu8AADu4B2c//8zMA3d///M2AbNwAB2bgduxs2bswP2Z2/O3YGzYzbDZsDZsbths2Bs2Nmw2bA2bGzYbNgbNjZsNmwNmxs2GzYH7c2bHbsDtmbtzdmA2bM3fs3AbMHZnO7AM3BuYOZgHZAzP+dgBmAMx+cwA7gHeAcwAMgB3584AHAAc/84ABgAHHx4AAAAB4D4AAAAAf/wAAAAAD/gAAAAAAAAAAAAAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAPAGbAAAB/gDNgAAP+ABmwAD/wYAzYAf+D8AZsD/wf8AM2f8D/gAGT/gf8HgAf8D/g/wB/g/8H/AA8H/g/4MAA/8H/B+AH/g/4P+AH4H/B/wADA/4P+AAAH/B/wAAA/4P+AAAAfB/wAAAAAP+AAAAAB/wAAAAAD+AAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAGAAwAAAA/8H/gAAB//v/8AAB4B/APgADz+PP54ABn/x//OABng8eDzAB3HHOcdwA3P9z/nYA7P/d/5mAbOBmYO7ANmebvzNwP3fs392YGzc3ZmbsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNjNmNmwNmxmzGzYGzYzZjZsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNzNmNmwP2Zm7s3YDbv7M+7MBszt3OZuA3MGZwd2ANn/uf8zAGY+zn47gDvAc4A7gA78/Pj5gAOf/z/zwADj8cPjwAA+A/gHgAAH/9//gAAA/4P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAD/4AAAAAHw/AAAAAHADwADAAHP8cABgAHf/nAA4AHeB5gDuAHcfOYAzADc/7uBdwBs8ezBmYBu4DdgbsA2Z924s3AbN+bM3bgfsxt2duwNm4zbG3YGzYZtjZsDZsM2xs2Bs2GbY2bA2bDNsbNgbNhv2NmwP242zO3YHbszbm7sBs3AAHZuA2Z///M2Abuf//O7AGzh/8ObgDc8AA+dgB3P//+dwAdx//8cwAGeAAA8wADn///44AA8///54AAPgAAB4AAB+AAPwAAAP///gAAAA//+AAAAAAAAAAAAAAAAAAAAAAAAAAAADbBmwAAABtgzYAAAA2wZsAAAAbYM2AAAANsGbAAAAG2DNgAAADbBmwAAABtgzYAAAA2wZsAAAAAAAAAAAAAAAAAAA="), 46, atob("DRYpFR0eHiImHygmDQ=="), 49+(scale<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
|
||||
var widths = atob("ChcmEiUlISUlHiYlCg==");
|
||||
var font = atob("AAAAAAAAAAAAAAAAAAAAPAAAAAAB4AAAAAAPAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAPwAAAAAD8AAAAAA+AAAAAAPgAAAAAD4AAAAAB+AAAAAAfgAAAAAHwAAAAAB8AAAAAAfAAAAAAPwAAAAAD4AAAAAA+AAAAAAPgAAAAAH4AAAAAB+AAAAAAfAAAAAAHwAAAAAB8AAAAAA/AAAAAAPwAAAAAD4AAAAAAAAAAAAAAAAAAAAAB///+AAA////8AAP////wAD/////AAfgAA/4ADwAAH/AAeAAB94ADwAAfPAAeAAH54ADwAB+PAAeAAPh4ADwAD4PAAeAA+B4ADwAPgPAAeAD8B4ADwAfAPAAeAHwB4ADwB8APAAeAfAB4ADwH4APAAeB+AB4ADwPgAPAAeD4AB4ADw+AAPAAePwAB4ADz8AAPAAefAAB4AD3wAAPAAf8AAB4AD/////AAf////4AB////+AAH////gAAH///gAAAAAAAAAAAAAAAAAACAAAAAAAwAAAAAAOAAAAAADwAAAAAB+AAAAAAfwAAAAAH4AAAAAB+AAAAAAfgAAAAAD4AAAAAAf////4AD/////AAf////4AD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAf/4AA+AP//AAPwD//4AD+Af//AAfgH4H4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4AD//8APAAf//gB4AB//4APAAH/+AB4AAH+AAHAAAAAAAAAAAAAAAAAAAAAAAAAOAAA4AAHwAAHgAB+AAA+AAfwAAH4AD4AAAfAAeAAAB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAfAPgB4AD//8APAAP////4AA////+AAD////wAAAAP/8AAAAAAAAAAAAAAAAAAAAPgAAAAAD8AAAAAA/gAAAAAP8AAAAAB/gAAAAAf8AAAAAH3gAAAAB88AAAAAfHgAAAAHw8AAAAB+HgAAAAfg8AAAAH4HgAAAA+A8AAAAPgHgAAAD4A8AAAA/AHgAAAPwA8AAAD8AHgAAA/AA8AAAPwAHgAAB8AA8AAAfgAHgAAD/////AAf////4AD/////AAf////4AAAAA8AAAAAAHgAAAAAA8AAAAAAHgAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAD//4BwAAf//APgAD//4B+AAf//AP4AD8H4A/AAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAP//4ADwA///AAeAD//wADwAP/8AAcAAP8AAAAAAAAAAAAAAAAAAAAAAAAAB///+AAA////8AAP////wAD/////AAfg/AH4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAeAPAB4ADwB4APAAAAPAB4AAAB///AAAAH//4AAAAf/+AAAAB//gAAAAB/gAAAAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAeAAAAAADwAAAAAAf////4AB/////AAP////4AA/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+D/wAAH////gAB////+AAf////4AD8D+A/AAeAHgB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA4APAAeAHAB4ADwA8APAAf////4AB/////AAP////wAAf/v/8AAA/gP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gAAAAH/+ABgAB//4AOAAf//gB4AD4B8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA8APAAeAHgB4ADwA+APAAf////4AB////+AAP////wAAf///4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAB4AADwAAPAAAeAAB4AADwAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
|
||||
|
||||
exports.add = function(graphics) {
|
||||
// Actual height 32 (35 - 4)
|
||||
graphics.prototype.setFontOrbitron = function() {
|
||||
this.setFontCustom(font, 46, widths, 45+(1<<8)+(1<<16));
|
||||
}
|
||||
};
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
// initialize with default settings...
|
||||
let s = {
|
||||
'grid': false,
|
||||
'date': false,
|
||||
'font': "Lato"
|
||||
}
|
||||
|
||||
|
|
@ -43,14 +42,6 @@
|
|||
s.grid = !s.grid
|
||||
save()
|
||||
},
|
||||
},
|
||||
'Show Date': {
|
||||
value: s.date,
|
||||
format: () => (s.date ? 'Yes' : 'No'),
|
||||
onchange: () => {
|
||||
s.date = !s.date
|
||||
save()
|
||||
},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 45 KiB |