Merge branch 'espruino:master' into master
143
apps.json
|
|
@ -32,7 +32,7 @@
|
||||||
{
|
{
|
||||||
"id": "messages",
|
"id": "messages",
|
||||||
"name": "Messages",
|
"name": "Messages",
|
||||||
"version": "0.05",
|
"version": "0.07",
|
||||||
"description": "App to display notifications from iOS and Gadgetbridge",
|
"description": "App to display notifications from iOS and Gadgetbridge",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
@ -41,17 +41,19 @@
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"messages.app.js","url":"app.js"},
|
{"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.img","url":"app-icon.js","evaluate":true},
|
||||||
{"name":"messages.wid.js","url":"widget.js"},
|
{"name":"messages.wid.js","url":"widget.js"},
|
||||||
{"name":"messages","url":"lib.js"}
|
{"name":"messages","url":"lib.js"}
|
||||||
],
|
],
|
||||||
"data": [{"name":"messages.json"}],
|
"data": [{"name":"messages.json"},{"name":"messages.settings.json"}],
|
||||||
"sortorder": -9
|
"sortorder": -9
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "android",
|
"id": "android",
|
||||||
"name": "Android Integration",
|
"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.",
|
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system,messages,notifications",
|
"tags": "tool,system,messages,notifications",
|
||||||
|
|
@ -59,6 +61,7 @@
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"android.app.js","url":"app.js"},
|
{"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.img","url":"app-icon.js","evaluate":true},
|
||||||
{"name":"android.boot.js","url":"boot.js"}
|
{"name":"android.boot.js","url":"boot.js"}
|
||||||
],
|
],
|
||||||
|
|
@ -137,6 +140,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
|
"screenshots": [{"url":"bangle1-about-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"about.app.js","url":"app-bangle1.js","supports": ["BANGLEJS"]},
|
{"name":"about.app.js","url":"app-bangle1.js","supports": ["BANGLEJS"]},
|
||||||
|
|
@ -212,7 +216,7 @@
|
||||||
"id": "welcome",
|
"id": "welcome",
|
||||||
"name": "Welcome",
|
"name": "Welcome",
|
||||||
"shortName": "Welcome",
|
"shortName": "Welcome",
|
||||||
"version": "0.13",
|
"version": "0.14",
|
||||||
"description": "Appears at first boot and explains how to use Bangle.js",
|
"description": "Appears at first boot and explains how to use Bangle.js",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot_welcome.png"}],
|
"screenshots": [{"url":"screenshot_welcome.png"}],
|
||||||
|
|
@ -238,6 +242,7 @@
|
||||||
"tags": "start,welcome",
|
"tags": "start,welcome",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"custom": "custom.html",
|
"custom": "custom.html",
|
||||||
|
"screenshots": [{"url":"bangle1-customized-welcome-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"mywelcome.boot.js","url":"boot.js"},
|
{"name":"mywelcome.boot.js","url":"boot.js"},
|
||||||
{"name":"mywelcome.app.js","url":"app.js"},
|
{"name":"mywelcome.app.js","url":"app.js"},
|
||||||
|
|
@ -274,6 +279,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-morphing-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"mclock.app.js","url":"clock-morphing.js"},
|
{"name":"mclock.app.js","url":"clock-morphing.js"},
|
||||||
{"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true}
|
{"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true}
|
||||||
|
|
@ -288,6 +294,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-moon-phase-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"moonphase.app.js","url":"app.js"},
|
{"name":"moonphase.app.js","url":"app.js"},
|
||||||
|
|
@ -418,6 +425,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-sweep-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"sweepclock.app.js","url":"sweepclock.js"},
|
{"name":"sweepclock.app.js","url":"sweepclock.js"},
|
||||||
{"name":"sweepclock.img","url":"sweepclock-icon.js","evaluate":true}
|
{"name":"sweepclock.img","url":"sweepclock-icon.js","evaluate":true}
|
||||||
|
|
@ -468,6 +476,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-impercise-word-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"impwclock.app.js","url":"clock-impword.js"},
|
{"name":"impwclock.app.js","url":"clock-impword.js"},
|
||||||
|
|
@ -544,13 +553,14 @@
|
||||||
{
|
{
|
||||||
"id": "cubescramble",
|
"id": "cubescramble",
|
||||||
"name": "Cube Scramble",
|
"name": "Cube Scramble",
|
||||||
"version":"0.03",
|
"version":"0.04",
|
||||||
"description": "A random scramble generator for the 3x3 Rubik's cube",
|
"description": "A random scramble generator for the 3x3 Rubik's cube with a basic timer",
|
||||||
"icon": "cube-scramble.png",
|
"icon": "cube-scramble.png",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
"supports" : ["BANGLEJS","BANGLEJS2"],
|
"supports" : ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-cube-scramble-screenshot.png"},{"url":"bangle1-cube-scramble-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"cubescramble.app.js","url":"cube-scramble.js"},
|
{"name":"cubescramble.app.js","url":"cube-scramble.js"},
|
||||||
{"name":"cubescramble.img","url":"cube-scramble-icon.js","evaluate":true}
|
{"name":"cubescramble.img","url":"cube-scramble-icon.js","evaluate":true}
|
||||||
|
|
@ -654,7 +664,7 @@
|
||||||
{
|
{
|
||||||
"id": "gpsrec",
|
"id": "gpsrec",
|
||||||
"name": "GPS Recorder",
|
"name": "GPS Recorder",
|
||||||
"version": "0.24",
|
"version": "0.25",
|
||||||
"description": "Application that allows you to record a GPS track. Can run in background",
|
"description": "Application that allows you to record a GPS track. Can run in background",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,outdoors,gps,widget",
|
"tags": "tool,outdoors,gps,widget",
|
||||||
|
|
@ -775,6 +785,7 @@
|
||||||
"tags": "battery",
|
"tags": "battery",
|
||||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-charge-animation-screenshot.png"},{"url":"bangle-charge-animation-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"chargeanim.app.js","url":"app.js"},
|
{"name":"chargeanim.app.js","url":"app.js"},
|
||||||
{"name":"chargeanim.boot.js","url":"boot.js"},
|
{"name":"chargeanim.boot.js","url":"boot.js"},
|
||||||
|
|
@ -980,6 +991,7 @@
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"interface": "interface.html",
|
"interface": "interface.html",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-stopwatch-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"swatch.app.js","url":"stopwatch.js"},
|
{"name":"swatch.app.js","url":"stopwatch.js"},
|
||||||
{"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true}
|
{"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true}
|
||||||
|
|
@ -1181,6 +1193,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vibrate-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"vibrclock.app.js","url":"app.js"},
|
{"name":"vibrclock.app.js","url":"app.js"},
|
||||||
{"name":"vibrclock.img","url":"app-icon.js","evaluate":true}
|
{"name":"vibrclock.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1196,6 +1209,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-simple-v-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"svclock.app.js","url":"vclock-simple.js"},
|
{"name":"svclock.app.js","url":"vclock-simple.js"},
|
||||||
{"name":"svclock.img","url":"vclock-simple-icon.js","evaluate":true}
|
{"name":"svclock.img","url":"vclock-simple-icon.js","evaluate":true}
|
||||||
|
|
@ -1211,6 +1225,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-dev-clock-screenshot.png"},{"url":"bangle1-dev-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"dclock.app.js","url":"clock-dev.js"},
|
{"name":"dclock.app.js","url":"clock-dev.js"},
|
||||||
{"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true}
|
{"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true}
|
||||||
|
|
@ -1242,6 +1257,7 @@
|
||||||
"tags": "party,parrot,lol",
|
"tags": "party,parrot,lol",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-party-parrot-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pparrot.app.js","url":"party-parrot.js"},
|
{"name":"pparrot.app.js","url":"party-parrot.js"},
|
||||||
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
||||||
|
|
@ -1257,6 +1273,7 @@
|
||||||
"tags": "rings,hypnosis,psychadelic",
|
"tags": "rings,hypnosis,psychadelic",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-hypno-rings-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"hrings.app.js","url":"hypno-rings.js"},
|
{"name":"hrings.app.js","url":"hypno-rings.js"},
|
||||||
{"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true}
|
{"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true}
|
||||||
|
|
@ -1324,6 +1341,7 @@
|
||||||
"icon": "show-color.png",
|
"icon": "show-color.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
|
"screenshots": [{"url":"bangle1-view-color-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1339,6 +1357,7 @@
|
||||||
"icon": "clock-mixed.png",
|
"icon": "clock-mixed.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-mixed-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1356,6 +1375,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-binary-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"bclock.app.js","url":"clock-binary.js"},
|
{"name":"bclock.app.js","url":"clock-binary.js"},
|
||||||
{"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true}
|
{"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true}
|
||||||
|
|
@ -1369,6 +1389,7 @@
|
||||||
"icon": "clock-tris.png",
|
"icon": "clock-tris.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-clock-tris-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"clotris.app.js","url":"clock-tris.js"},
|
{"name":"clotris.app.js","url":"clock-tris.js"},
|
||||||
|
|
@ -1428,6 +1449,7 @@
|
||||||
"tags": "pomodoro,cooking,tools",
|
"tags": "pomodoro,cooking,tools",
|
||||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-pomodoro-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pomodo.app.js","url":"pomodoro.js"},
|
{"name":"pomodo.app.js","url":"pomodoro.js"},
|
||||||
{"name":"pomodo.img","url":"pomodoro-icon.js","evaluate":true}
|
{"name":"pomodo.img","url":"pomodoro-icon.js","evaluate":true}
|
||||||
|
|
@ -1444,6 +1466,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-large-digit-blob-clock-screenshot.png"},{"url":"bangle1-large-digit-blob-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"blobclk.app.js","url":"clock-blob.js"},
|
{"name":"blobclk.app.js","url":"clock-blob.js"},
|
||||||
{"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true}
|
{"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true}
|
||||||
|
|
@ -1503,6 +1526,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"berlin-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
||||||
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
||||||
|
|
@ -1517,6 +1541,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-center-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"ctrclk.app.js","url":"app.js"},
|
{"name":"ctrclk.app.js","url":"app.js"},
|
||||||
|
|
@ -1531,6 +1556,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
"tags": "",
|
"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"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1563,6 +1589,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-pipboy-themed-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pipboy.app.js","url":"app.js"},
|
{"name":"pipboy.app.js","url":"app.js"},
|
||||||
{"name":"pipboy.img","url":"app-icon.js","evaluate":true}
|
{"name":"pipboy.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1609,6 +1636,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-workout-HRM-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"wohrm.app.js","url":"app.js"},
|
{"name":"wohrm.app.js","url":"app.js"},
|
||||||
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
|
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1653,6 +1681,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": false,
|
"allow_emulator": false,
|
||||||
|
"screenshots": [{"url":"bangle1-mario-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"marioclock.app.js","url":"marioclock-app.js"},
|
{"name":"marioclock.app.js","url":"marioclock-app.js"},
|
||||||
{"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true}
|
{"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true}
|
||||||
|
|
@ -1715,6 +1744,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-dot-clcok-screenshot.png"},{"url":"bangle1-dot-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"dotclock.app.js","url":"clock-dot.js"},
|
{"name":"dotclock.app.js","url":"clock-dot.js"},
|
||||||
{"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true}
|
{"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true}
|
||||||
|
|
@ -1824,6 +1854,7 @@
|
||||||
"tags": "game,fun",
|
"tags": "game,fun",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-rpg-dice-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"rpgdice.app.js","url":"app.js"},
|
{"name":"rpgdice.app.js","url":"app.js"},
|
||||||
{"name":"rpgdice.img","url":"app-icon.js","evaluate":true}
|
{"name":"rpgdice.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1852,6 +1883,7 @@
|
||||||
"tags": "clock,minion",
|
"tags": "clock,minion",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-minion-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"minionclk.app.js","url":"app.js"},
|
{"name":"minionclk.app.js","url":"app.js"},
|
||||||
{"name":"minionclk.img","url":"app-icon.js","evaluate":true}
|
{"name":"minionclk.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1929,7 +1961,7 @@
|
||||||
"icon": "custom.png",
|
"icon": "custom.png",
|
||||||
"type": "bootloader",
|
"type": "bootloader",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"custom": "custom.html",
|
"custom": "custom.html",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"custom"}
|
{"name":"custom"}
|
||||||
|
|
@ -1944,6 +1976,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "stopwatch,chrono,timer,chronometer",
|
"tags": "stopwatch,chrono,timer,chronometer",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
|
"screenshots": [{"url":"bangle1-dev-stopwatch-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"devstopwatch.app.js","url":"app.js"},
|
{"name":"devstopwatch.app.js","url":"app.js"},
|
||||||
|
|
@ -1977,6 +2010,7 @@
|
||||||
"tags": "app,learn,visual",
|
"tags": "app,learn,visual",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-NATO-alphabet-screenshot.png"},{"url":"bangle1-NATO-alphabet-screenshot2.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"nato.app.js","url":"nato.js"},
|
{"name":"nato.app.js","url":"nato.js"},
|
||||||
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
||||||
|
|
@ -1993,6 +2027,7 @@
|
||||||
"tags": "numerals,clock",
|
"tags": "numerals,clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-numerals-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"numerals.app.js","url":"numerals.app.js"},
|
{"name":"numerals.app.js","url":"numerals.app.js"},
|
||||||
{"name":"numerals.img","url":"numerals-icon.js","evaluate":true},
|
{"name":"numerals.img","url":"numerals-icon.js","evaluate":true},
|
||||||
|
|
@ -2119,13 +2154,14 @@
|
||||||
{
|
{
|
||||||
"id": "metronome",
|
"id": "metronome",
|
||||||
"name": "Metronome",
|
"name": "Metronome",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
|
"readme": "README.md",
|
||||||
"description": "Makes the watch blinking and vibrating with a given rate",
|
"description": "Makes the watch blinking and vibrating with a given rate",
|
||||||
"icon": "metronome_icon.png",
|
"icon": "metronome_icon.png",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-metronome-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"metronome.app.js","url":"metronome.js"},
|
{"name":"metronome.app.js","url":"metronome.js"},
|
||||||
{"name":"metronome.img","url":"metronome-icon.js","evaluate":true},
|
{"name":"metronome.img","url":"metronome-icon.js","evaluate":true},
|
||||||
|
|
@ -2141,6 +2177,7 @@
|
||||||
"icon": "blackjack.png",
|
"icon": "blackjack.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-black-jack-game-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"blackjack.app.js","url":"blackjack.app.js"},
|
{"name":"blackjack.app.js","url":"blackjack.app.js"},
|
||||||
|
|
@ -2174,6 +2211,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-SWL-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"swlclk.app.js","url":"app.js"},
|
{"name":"swlclk.app.js","url":"app.js"},
|
||||||
{"name":"swlclk.img","url":"app-icon.js","evaluate":true}
|
{"name":"swlclk.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2251,6 +2289,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-pong-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pong.app.js","url":"app.js"},
|
{"name":"pong.app.js","url":"app.js"},
|
||||||
{"name":"pong.img","url":"app-icon.js","evaluate":true}
|
{"name":"pong.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2313,6 +2352,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-large-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"largeclock.app.js","url":"largeclock.js"},
|
{"name":"largeclock.app.js","url":"largeclock.js"},
|
||||||
{"name":"largeclock.img","url":"largeclock-icon.js","evaluate":true},
|
{"name":"largeclock.img","url":"largeclock-icon.js","evaluate":true},
|
||||||
|
|
@ -2364,6 +2404,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-timer-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"simpletimer.app.js","url":"app.js"},
|
{"name":"simpletimer.app.js","url":"app.js"},
|
||||||
{"name":".tfnames","url":"gesture-tfnames.js","evaluate":true},
|
{"name":".tfnames","url":"gesture-tfnames.js","evaluate":true},
|
||||||
|
|
@ -2380,6 +2421,7 @@
|
||||||
"icon": "beebclock.png",
|
"icon": "beebclock.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-beeb-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -2413,6 +2455,7 @@
|
||||||
"tags": "tools,health",
|
"tags": "tools,health",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
|
"screenshots": [{"url":"bangle1-get-up-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"getup.app.js","url":"app.js"},
|
{"name":"getup.app.js","url":"app.js"},
|
||||||
|
|
@ -2491,6 +2534,7 @@
|
||||||
"version": "0.01",
|
"version": "0.01",
|
||||||
"description": "La palla predice il futuro",
|
"description": "La palla predice il futuro",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
"screenshots": [{"url":"bangle1-magic-8-ball-italiano-screenshot.png"}],
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
|
@ -2604,6 +2648,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vertical-watch-face-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"verticalface.app.js","url":"app.js"},
|
{"name":"verticalface.app.js","url":"app.js"},
|
||||||
{"name":"verticalface.img","url":"app-icon.js","evaluate":true}
|
{"name":"verticalface.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2631,6 +2676,7 @@
|
||||||
"icon": "life.png",
|
"icon": "life.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-game-of-life-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"life.app.js","url":"life.min.js"},
|
{"name":"life.app.js","url":"life.min.js"},
|
||||||
|
|
@ -2678,6 +2724,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-mixed-clock-2-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"miclock2.app.js","url":"clock-mixed.js"},
|
{"name":"miclock2.app.js","url":"clock-mixed.js"},
|
||||||
|
|
@ -2813,6 +2860,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-CPR-assist-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"cprassist.app.js","url":"cprassist.js"},
|
{"name":"cprassist.app.js","url":"cprassist.js"},
|
||||||
{"name":"cprassist.img","url":"cprassist-icon.js","evaluate":true},
|
{"name":"cprassist.img","url":"cprassist-icon.js","evaluate":true},
|
||||||
|
|
@ -2856,6 +2904,7 @@
|
||||||
"icon": "counter_icon.png",
|
"icon": "counter_icon.png",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-counter-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"counter.app.js","url":"counter.js"},
|
{"name":"counter.app.js","url":"counter.js"},
|
||||||
|
|
@ -3235,6 +3284,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
|
"screenshots": [{"url":"bangle1-lazy-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"lazyclock.app.js","url":"lazyclock-app.js"},
|
{"name":"lazyclock.app.js","url":"lazyclock-app.js"},
|
||||||
|
|
@ -3336,6 +3386,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-slow-mo-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"slomoclock.app.js","url":"app.js"},
|
{"name":"slomoclock.app.js","url":"app.js"},
|
||||||
{"name":"slomoclock.img","url":"app-icon.js","evaluate":true},
|
{"name":"slomoclock.img","url":"app-icon.js","evaluate":true},
|
||||||
|
|
@ -3675,6 +3726,7 @@
|
||||||
"icon": "battleship-icon.png",
|
"icon": "battleship-icon.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-battle-ship-screenshot.png"}],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3878,6 +3930,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-mystic-clock-screenshot.png"}],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3894,6 +3947,7 @@
|
||||||
"icon": "hcclock-icon.png",
|
"icon": "hcclock-icon.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-high-contrast-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3975,6 +4029,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vector-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"vectorclock.app.js","url":"app.js"},
|
{"name":"vectorclock.app.js","url":"app.js"},
|
||||||
{"name":"vectorclock.img","url":"app-icon.js","evaluate":true}
|
{"name":"vectorclock.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -4005,6 +4060,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-choozi-screenshot1.png"},{"url":"bangle1-choozi-screenshot2.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"choozi.app.js","url":"app.js"},
|
{"name":"choozi.app.js","url":"app.js"},
|
||||||
{"name":"choozi.img","url":"app-icon.js","evaluate":true}
|
{"name":"choozi.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -4029,7 +4085,7 @@
|
||||||
"id": "pastel",
|
"id": "pastel",
|
||||||
"name": "Pastel Clock",
|
"name": "Pastel Clock",
|
||||||
"shortName": "Pastel",
|
"shortName": "Pastel",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "A Configurable clock with custom fonts and background",
|
"description": "A Configurable clock with custom fonts and background",
|
||||||
"icon": "pastel.png",
|
"icon": "pastel.png",
|
||||||
"screenshots": [{"url":"screenshot_pastel.png"}],
|
"screenshots": [{"url":"screenshot_pastel.png"}],
|
||||||
|
|
@ -4038,6 +4094,14 @@
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"storage": [
|
"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.app.js","url":"pastel.app.js"},
|
||||||
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true},
|
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true},
|
||||||
{"name":"pastel.settings.js","url":"pastel.settings.js"}
|
{"name":"pastel.settings.js","url":"pastel.settings.js"}
|
||||||
|
|
@ -4297,7 +4361,7 @@
|
||||||
"name": "LCARS Clock",
|
"name": "LCARS Clock",
|
||||||
"shortName":"LCARS",
|
"shortName":"LCARS",
|
||||||
"icon": "lcars.png",
|
"icon": "lcars.png",
|
||||||
"version":"0.04",
|
"version":"0.05",
|
||||||
"supports": ["BANGLEJS2"],
|
"supports": ["BANGLEJS2"],
|
||||||
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
@ -4320,8 +4384,10 @@
|
||||||
"description": "Famous binary watch",
|
"description": "Famous binary watch",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"binwatch.app.js","url":"app.js"},
|
{"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}
|
{"name":"binwatch.img","url":"app-icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -4358,23 +4424,36 @@
|
||||||
],
|
],
|
||||||
"data": [{"name":"authentiwatch.json"}]
|
"data": [{"name":"authentiwatch.json"}]
|
||||||
},
|
},
|
||||||
{ "id": "schoolCalendar",
|
{ "id": "schoolCalendar",
|
||||||
"name": "School Calendar",
|
"name": "School Calendar",
|
||||||
"shortName":"SCalendar",
|
"shortName":"SCalendar",
|
||||||
"icon": "CalenderLogo.png",
|
"icon": "CalenderLogo.png",
|
||||||
"version": "0.01",
|
"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)",
|
"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",
|
"tags": "tool",
|
||||||
"readme":"README.md",
|
"readme":"README.md",
|
||||||
"custom":"custom.html",
|
"custom":"custom.html",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"schoolCalendar.app.js"},
|
{"name":"schoolCalendar.app.js"},
|
||||||
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
||||||
],
|
],
|
||||||
"data": [
|
"data": [
|
||||||
{"name":"app.json"}
|
{"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
|
0.02: Remove messages on disconnect
|
||||||
Fix music control
|
Fix music control
|
||||||
0.03: Handling of message actions (ok/clear)
|
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
|
Bangle.loadWidgets();
|
||||||
setTimeout(()=>load("messages.app.js"),10);
|
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.01: start of development
|
||||||
0.02: first running version for BangleJs2
|
0.02: first running version for BangleJs2
|
||||||
0.03: corrected icon, added screen shot, extended description
|
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("Font7x11Numeric7Seg").add(Graphics);
|
||||||
require("Font5x7Numeric7Seg").add(Graphics);
|
require("Font5x7Numeric7Seg").add(Graphics);
|
||||||
|
|
||||||
|
|
||||||
/* constants and definitions */
|
/* constants and definitions */
|
||||||
|
|
||||||
/* Bangle 2: 176 x 176 */
|
/* 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_X = 176;
|
||||||
const V2_SCREEN_SIZE_Y = 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_BG_COLOR = 0;
|
||||||
const V2_FG_COLOR = 1;
|
const V2_FG_COLOR = 1;
|
||||||
|
|
||||||
|
|
@ -91,7 +90,7 @@ const V1_BAT_SIZE_X = 3;
|
||||||
const V1_BAT_SIZE_Y = 5;
|
const V1_BAT_SIZE_Y = 5;
|
||||||
const V1_SCREEN_SIZE_X = 240;
|
const V1_SCREEN_SIZE_X = 240;
|
||||||
const V1_SCREEN_SIZE_Y = 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_BG_COLOR = 1;
|
||||||
const V1_FG_COLOR = 0;
|
const V1_FG_COLOR = 0;
|
||||||
|
|
||||||
|
|
@ -293,7 +292,7 @@ function setRuntimeValues(resolution) {
|
||||||
bat_size_x = V1_BAT_SIZE_X;
|
bat_size_x = V1_BAT_SIZE_X;
|
||||||
bat_size_y = V1_BAT_SIZE_Y;
|
bat_size_y = V1_BAT_SIZE_Y;
|
||||||
|
|
||||||
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
x_step = V2_X_STEP;
|
x_step = V2_X_STEP;
|
||||||
|
|
@ -362,8 +361,7 @@ function draw() {
|
||||||
updateVTime();
|
updateVTime();
|
||||||
g.clear();
|
g.clear();
|
||||||
g.drawImages([{image:cgimg},
|
g.drawImages([{image:cgimg},
|
||||||
{image:require("Storage").read(backgroundImage)},
|
{image:require("Storage").read(backgroundImage)}
|
||||||
// { x:bt_x, y:bt_y, rotate: 0, image:require("Storage").read("bt-icon.png")},
|
|
||||||
]);
|
]);
|
||||||
drawBT(g, NRF.getSecurityStatus().connected);
|
drawBT(g, NRF.getSecurityStatus().connected);
|
||||||
// Bangle.drawWidgets();
|
// 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.01: Initial Release
|
||||||
0.02: Replace icon with one found on https://icons8.com
|
0.02: Replace icon with one found on https://icons8.com
|
||||||
0.03: Re-render icon fixing display in settings
|
0.03: Re-render icon fixing display in settings
|
||||||
|
0.04: Improved UX and display solve time
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
# Cube Scramble
|
# 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
|
## Future features
|
||||||
|
|
||||||
I'm keen to complete this project with
|
I'm keen to complete this project with
|
||||||
|
|
||||||
* Add a timer
|
|
||||||
* Add the ability for times to be stored and exported
|
* Add the ability for times to be stored and exported
|
||||||
|
|
||||||
## Requests
|
## 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
|
// Scramble code from: https://raw.githubusercontent.com/bjcarlson42/blog-post-sample-code/master/Rubik's%20Cube%20JavaScript%20Scrambler/part_two.js
|
||||||
const makeScramble = () => {
|
const makeScramble = () => {
|
||||||
const options = ["F", "F2", "F'", "R", "R2", "R'", "U", "U2", "U'", "B", "B2", "B'", "L", "L2", "L'", "D", "D2", "D'"];
|
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 getRandomIntBetween = (min, max) => Math.floor(Math.random() * (max - min) + min);
|
||||||
|
|
||||||
const presentScramble = () => {
|
const presentScramble = () => {
|
||||||
g.clear();
|
showPrompt(makeScramble().join(" "), {
|
||||||
E.showMessage(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 = () => {
|
const init = () => {
|
||||||
|
Bangle.setLCDTimeout(0);
|
||||||
|
Bangle.setLCDPower(1);
|
||||||
presentScramble();
|
presentScramble();
|
||||||
|
|
||||||
setWatch(() => {
|
|
||||||
presentScramble();
|
|
||||||
}, BTN1, {repeat:true});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
init();
|
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 = {
|
var mainmenu = {
|
||||||
"" : { "title" : "Gadgetbridge" },
|
"" : { "title" : "Gadgetbridge" },
|
||||||
|
"< Back" : back,
|
||||||
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
||||||
"Show Icon" : {
|
"Show Icon" : {
|
||||||
value: settings().showIcon,
|
value: settings().showIcon,
|
||||||
|
|
@ -34,8 +35,7 @@
|
||||||
value: !!settings().hrm,
|
value: !!settings().hrm,
|
||||||
format: v => v?"Yes":"No",
|
format: v => v?"Yes":"No",
|
||||||
onchange: v => updateSetting('hrm', v)
|
onchange: v => updateSetting('hrm', v)
|
||||||
},
|
}
|
||||||
"< Back" : back,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var findPhone = {
|
var findPhone = {
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
|
|
@ -26,3 +26,4 @@
|
||||||
0.22: Ensure Bangle.setGPSPower uses 'gpsrec' as a tag
|
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.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.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;
|
fixToggle = !fixToggle;
|
||||||
WIDGETS["gpsrec"].draw();
|
WIDGETS["gpsrec"].draw();
|
||||||
if (hasFix) {
|
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;
|
var period = fix.time.getTime() - lastFixTime;
|
||||||
if (period+500 > settings.period*1000) { // round up
|
if (period+500 > settings.period*1000) { // round up
|
||||||
lastFixTime = fix.time.getTime();
|
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.02: Swipe left/right to set an alarm.
|
||||||
0.03: New design with different icons if gps, hrm or compass is on.
|
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 = {
|
var backgroundImage = {
|
||||||
width : 176, height : 151, bpp : 3,
|
width : 176, height : 151, bpp : 3,
|
||||||
transparent : 2,
|
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 = {
|
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="))
|
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) {
|
Graphics.prototype.setFontAntonioMedium = function(scale) {
|
||||||
// Actual height 18 (17 - 0)
|
// 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));
|
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++){
|
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
|
// Draw symbol
|
||||||
|
var bat = E.getBattery();
|
||||||
|
|
||||||
var iconImg =
|
var iconImg =
|
||||||
alarm >= 0 ? iconAlarm :
|
alarm >= 0 ? iconAlarm :
|
||||||
Bangle.isGPSOn() ? iconGps :
|
Bangle.isCharging() ? iconCharging :
|
||||||
Bangle.isCompassOn() ? iconCompass :
|
bat < 30 ? iconNoBattery :
|
||||||
iconPlanet;
|
Bangle.isGPSOn() ? iconGps :
|
||||||
|
Bangle.isCompassOn() ? iconCompass :
|
||||||
|
iconPlanet;
|
||||||
g.drawImage(iconImg, 120, 107);
|
g.drawImage(iconImg, 120, 107);
|
||||||
|
|
||||||
// Alarm within symbol
|
// Alarm within symbol
|
||||||
|
|
@ -96,7 +112,7 @@ function draw(queue){
|
||||||
var timeStr = locale.time(currentDate,1);
|
var timeStr = locale.time(currentDate,1);
|
||||||
g.setFontAlign(0,0,0);
|
g.setFontAlign(0,0,0);
|
||||||
g.setFontAntonioLarge();
|
g.setFontAntonioLarge();
|
||||||
g.drawString(timeStr, 55, 57);
|
g.drawString(timeStr, 60, 55);
|
||||||
|
|
||||||
// Write date
|
// Write date
|
||||||
g.setFontAlign(-1,-1, 0);
|
g.setFontAlign(-1,-1, 0);
|
||||||
|
|
@ -104,24 +120,22 @@ function draw(queue){
|
||||||
|
|
||||||
var dayName = locale.dow(currentDate, true).toUpperCase();
|
var dayName = locale.dow(currentDate, true).toUpperCase();
|
||||||
var day = currentDate.getDate();
|
var day = currentDate.getDate();
|
||||||
g.drawString(day, 100, 37);
|
g.drawString(day, 100, 35);
|
||||||
g.drawString(dayName, 100, 57);
|
g.drawString(dayName, 100, 55);
|
||||||
|
|
||||||
// Temperature
|
// HRM
|
||||||
g.setFontAlign(-1,-1,0);
|
g.setFontAlign(-1,-1,0);
|
||||||
g.drawString("HRM:", 20, 104);
|
g.drawString("HRM:", 28, 102);
|
||||||
g.drawString(hrmValue, 60, 104);
|
g.drawString(hrmValue, 63, 102);
|
||||||
|
|
||||||
// Draw steps
|
// Draw steps
|
||||||
var steps = getSteps();
|
var steps = getSteps();
|
||||||
g.drawString("STEP:", 20, 124);
|
g.drawString("STEP:", 28, 122);
|
||||||
g.drawString(steps, 60, 124);
|
g.drawString(steps, 63, 122);
|
||||||
|
|
||||||
// Draw battery
|
// Draw battery
|
||||||
var bat = E.getBattery();
|
g.drawString("BAT:", 28, 142);
|
||||||
var charging = Bangle.isCharging() ? "*" : "";
|
g.drawString(bat+ "%", 63, 142);
|
||||||
g.drawString("BAT:", 20, 144);
|
|
||||||
g.drawString(charging + bat+ "%", 60, 144);
|
|
||||||
|
|
||||||
// Queue draw in one minute
|
// Queue draw in one minute
|
||||||
if(queue){
|
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.03: Fixes for Bangle.js 1
|
||||||
0.04: Add require("messages").clearAll()
|
0.04: Add require("messages").clearAll()
|
||||||
0.05: Handling of message actions (ok/clear)
|
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=[];
|
if (!Array.isArray(MESSAGES)) MESSAGES=[];
|
||||||
var onMessagesModified = function(msg) {
|
var onMessagesModified = function(msg) {
|
||||||
// TODO: if new, show this new one
|
// 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);
|
showMessage(msg.id);
|
||||||
};
|
};
|
||||||
function saveMessages() {
|
function saveMessages() {
|
||||||
|
|
@ -111,7 +114,7 @@ function showMapMessage(msg) {
|
||||||
msg.new = false;
|
msg.new = false;
|
||||||
saveMessages();
|
saveMessages();
|
||||||
layout = undefined;
|
layout = undefined;
|
||||||
checkMessages();
|
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -126,7 +129,7 @@ function showMusicMessage(msg) {
|
||||||
msg.new = false;
|
msg.new = false;
|
||||||
saveMessages();
|
saveMessages();
|
||||||
layout = undefined;
|
layout = undefined;
|
||||||
checkMessages();
|
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||||
}
|
}
|
||||||
layout = new Layout({ type:"v", c: [
|
layout = new Layout({ type:"v", c: [
|
||||||
{type:"h", fillx:1, bgCol:colBg, c: [
|
{type:"h", fillx:1, bgCol:colBg, c: [
|
||||||
|
|
@ -148,6 +151,22 @@ function showMusicMessage(msg) {
|
||||||
layout.render();
|
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) {
|
function showMessage(msgid) {
|
||||||
var msg = MESSAGES.find(m=>m.id==msgid);
|
var msg = MESSAGES.find(m=>m.id==msgid);
|
||||||
if (!msg) return checkMessages(); // go home if no message found
|
if (!msg) return checkMessages(); // go home if no message found
|
||||||
|
|
@ -163,30 +182,30 @@ function showMessage(msgid) {
|
||||||
title = g.wrapString(title, w).join("\n");
|
title = g.wrapString(title, w).join("\n");
|
||||||
}
|
}
|
||||||
var buttons = [
|
var buttons = [
|
||||||
{type:"btn", src:getBackImage(), cb:()=>checkMessages(true)}, // back
|
{type:"btn", src:getBackImage(), cb:()=>{
|
||||||
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:()=>{
|
|
||||||
msg.new = false; // read mail
|
msg.new = false; // read mail
|
||||||
saveMessages();
|
saveMessages();
|
||||||
checkMessages();
|
checkMessages({clockIfNoMsg:1,clockIfAllRead:0,showMsgIfUnread:1});
|
||||||
}}:{}
|
}} // back
|
||||||
];
|
];
|
||||||
if (msg.positive) {
|
if (msg.positive) {
|
||||||
buttons.push({type:"btn", src:getPosImage(), cb:()=>{
|
buttons.push({type:"btn", src:getPosImage(), cb:()=>{
|
||||||
msg.new = false; saveMessages();
|
msg.new = false; saveMessages();
|
||||||
Bangle.messageResponse(msg,true);
|
Bangle.messageResponse(msg,true);
|
||||||
checkMessages();
|
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
if (msg.negative) {
|
if (msg.negative) {
|
||||||
buttons.push({type:"btn", src:getNegImage(), cb:()=>{
|
buttons.push({type:"btn", src:getNegImage(), cb:()=>{
|
||||||
|
console.log("Response");
|
||||||
msg.new = false; saveMessages();
|
msg.new = false; saveMessages();
|
||||||
Bangle.messageResponse(msg,true);
|
Bangle.messageResponse(msg,false);
|
||||||
checkMessages();
|
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
layout = new Layout({ type:"v", c: [
|
layout = new Layout({ type:"v", c: [
|
||||||
{type:"h", fillx:1, bgCol:colBg, 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:"v", fillx:1, c: [
|
||||||
{type:"txt", font:fontMedium, label:msg.src||"Message", bgCol:colBg, fillx:1, pad:2 },
|
{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 }:{},
|
title?{type:"txt", font:titleFont, label:title, bgCol:colBg, fillx:1, pad:2 }:{},
|
||||||
|
|
@ -199,28 +218,37 @@ function showMessage(msgid) {
|
||||||
layout.render();
|
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 no messages, just show 'no messages' and return
|
||||||
if (!MESSAGES.length) {
|
if (!MESSAGES.length) {
|
||||||
if (forceShowMenu) return E.showPrompt("No Messages",{
|
if (!options.clockIfNoMsg) return E.showPrompt("No Messages",{
|
||||||
title:"Messages",
|
title:"Messages",
|
||||||
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
|
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
|
||||||
buttons : {"Ok":1}
|
buttons : {"Ok":1}
|
||||||
}).then(() => { load() });
|
}).then(() => { load() });
|
||||||
load();
|
return load();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
// we have >0 messages
|
// we have >0 messages
|
||||||
|
var newMessages = MESSAGES.filter(m=>m.new);
|
||||||
// If we have a new message, show it
|
// If we have a new message, show it
|
||||||
if (!forceShowMenu) {
|
if (options.showMsgIfUnread && newMessages.length)
|
||||||
var newMessages = MESSAGES.filter(m=>m.new);
|
return showMessage(newMessages[0].id);
|
||||||
if (newMessages.length)
|
// no new messages - go to clock?
|
||||||
return showMessage(newMessages[0].id);
|
if (options.clockIfAllRead && newMessages.length==0)
|
||||||
}
|
return load();
|
||||||
|
|
||||||
// Otherwise show a menu
|
// Otherwise show a menu
|
||||||
E.showScroller({
|
E.showScroller({
|
||||||
h : 48,
|
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"
|
draw : function(idx, r) {"ram"
|
||||||
var msg = MESSAGES[idx-1];
|
var msg = MESSAGES[idx-1];
|
||||||
if (msg && msg.new) g.setBgColor(colBg);
|
if (msg && msg.new) g.setBgColor(colBg);
|
||||||
|
|
@ -239,7 +267,7 @@ function checkMessages(forceShowMenu) {
|
||||||
x += 50;
|
x += 50;
|
||||||
}
|
}
|
||||||
var m = msg.title+"\n"+msg.body;
|
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 (title) g.setFontAlign(-1,-1).setFont(fontBig).drawString(title, x,r.y+2);
|
||||||
if (body) {
|
if (body) {
|
||||||
g.setFontAlign(-1,-1).setFont("6x8");
|
g.setFontAlign(-1,-1).setFont("6x8");
|
||||||
|
|
@ -261,4 +289,6 @@ function checkMessages(forceShowMenu) {
|
||||||
g.clear();
|
g.clear();
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
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;
|
mIdx=-1;
|
||||||
} else { // add/modify
|
} else { // add/modify
|
||||||
if (event.t=="add") event.new=true; // new message
|
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);
|
else Object.assign(messages[mIdx], event);
|
||||||
}
|
}
|
||||||
require("Storage").writeJSON("messages.json",messages);
|
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() {
|
WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
||||||
if (!this.width) return;
|
if (!this.width) return;
|
||||||
var c = (Date.now()-this.t)/1000;
|
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.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);
|
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<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();
|
this.l = Date.now();
|
||||||
Bangle.buzz(); // buzz every 4 seconds
|
WIDGETS["messages"].buzz(); // buzz every 4 seconds
|
||||||
}
|
}
|
||||||
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
|
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
|
||||||
},show:function() {
|
},show:function() {
|
||||||
|
|
@ -21,4 +24,13 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
||||||
delete WIDGETS["messages"].l;
|
delete WIDGETS["messages"].l;
|
||||||
WIDGETS["messages"].width=0;
|
WIDGETS["messages"].width=0;
|
||||||
Bangle.drawWidgets();
|
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.04: App shows instructions, Widgets remain visible, color changed
|
||||||
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
||||||
0.06: Correct string position
|
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
|
## 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.
|
* 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 bmp value by one.
|
* Use `BTN1` to increase the bpm value by one.
|
||||||
* Use `BTN3` to decrease the bmp 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`.
|
* 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.
|
* 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
|
## 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 bpm=60; // ininital bpm value
|
||||||
var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
||||||
var tindex=0; //index to iterate through time_diffs
|
var tindex=0; //index to iterate through time_diffs
|
||||||
|
// set background colour
|
||||||
|
g.setTheme({bg:"#000"});
|
||||||
Bangle.setLCDTimeout(undefined); //do not deaktivate display while running this app
|
Bangle.setLCDTimeout(undefined); //do not deactivate display while running this app
|
||||||
|
|
||||||
const storage = require("Storage");
|
const storage = require("Storage");
|
||||||
const SETTINGS_FILE = 'metronome.settings.json';
|
const SETTINGS_FILE = 'metronome.settings.json';
|
||||||
|
|
||||||
|
|
@ -15,7 +14,7 @@ function setting(key) {
|
||||||
//define default settings
|
//define default settings
|
||||||
const DEFAULTS = {
|
const DEFAULTS = {
|
||||||
'beatsperbar': 4,
|
'beatsperbar': 4,
|
||||||
'buzzintens': 0.75,
|
'buzzintens': 1.0,
|
||||||
};
|
};
|
||||||
if (!settings) { loadSettings(); }
|
if (!settings) { loadSettings(); }
|
||||||
return (key in settings) ? settings[key] : DEFAULTS[key];
|
return (key in settings) ? settings[key] : DEFAULTS[key];
|
||||||
|
|
@ -40,6 +39,10 @@ function changecolor() {
|
||||||
7: { value: 0xFFFF, name: "White" },
|
7: { value: 0xFFFF, name: "White" },
|
||||||
};
|
};
|
||||||
g.setColor(colors[cindex].value);
|
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) {
|
if (cindex == setting('beatsperbar')-1) {
|
||||||
cindex = 0;
|
cindex = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -50,43 +53,73 @@ function changecolor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateScreen() {
|
function updateScreen() {
|
||||||
g.reset().clearRect(0, 50, 250, 150);
|
g.reset().clearRect(0, 50, 250, 120);
|
||||||
changecolor();
|
changecolor();
|
||||||
try {
|
try {
|
||||||
Bangle.buzz(50, setting('buzzintens'));
|
Bangle.buzz(50, setting('buzzintens'));
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
}
|
}
|
||||||
g.setFont("Vector",40).setFontAlign(0,0);
|
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) {
|
//Write user instructuins to screen
|
||||||
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
function printInstructions() {
|
||||||
if (tindex < time_diffs.length) {
|
g.clear(1).setFont("4x6");
|
||||||
if (Date.now()-tStart < 5000) {
|
g.setColor(-1); //set color to white
|
||||||
time_diffs[tindex] = Date.now()-tStart;
|
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) {
|
||||||
} else {
|
g.drawString('Use BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 30, g.getWidth()/3*2+30);
|
||||||
tindex=0;
|
}
|
||||||
time_diffs[tindex] = Date.now()-tStart;
|
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);
|
||||||
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();
|
Bangle.on('touch', function(zone, e) {
|
||||||
clearInterval(time_diff);
|
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
||||||
bpm = (60 * 1000/(time_diff));
|
if ((process.env.HWVERSION==2 && e.x > 39 && e.x < 136) || process.env.HWVERSION==1){
|
||||||
updateScreen();
|
if (tindex < time_diffs.length) {
|
||||||
clearInterval(interval);
|
if (Date.now()-tStart < 5000) {
|
||||||
interval = setInterval(updateScreen, 60000 / bpm);
|
time_diffs[tindex] = Date.now()-tStart;
|
||||||
return bpm;
|
}
|
||||||
|
} 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(() => {
|
setWatch(() => {
|
||||||
bpm += 1;
|
bpm += 1;
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
|
|
@ -101,10 +134,10 @@ setWatch(() => {
|
||||||
}
|
}
|
||||||
}, BTN3, {repeat:true});
|
}, BTN3, {repeat:true});
|
||||||
|
|
||||||
|
}
|
||||||
interval = setInterval(updateScreen, 60000 / bpm);
|
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.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
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.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.04: Leave space at the bottom for Chrono widget, set back option at first option
|
||||||
0.05: Added 2 new fonts
|
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
|
* Designed specifically for Bangle 1 and Bangle 2
|
||||||
* A choice of 7 different custom fonts
|
* A choice of 7 different custom fonts
|
||||||
* Supports the Light and Dark themes
|
* 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.
|
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("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAfwAAAAAAAAA7gAAAAAAAAA/AAAAAAAAAB+AAAAAAAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAB8AAAAAAAAAf4AAAAAAAAB/wAAAAAAAAPBgAAAAAAAB4LAAAAAAAAPheAAAAAAAA+D8AAAAAAAHwPgAAAAAAA/I8AAAAAAAHwHgAAAAAAAeA8AAAAAAADwHwAAAAAAAfB+AAAAAAAH4PgAAAAAAB/D8AAAAAAAPwPgAAAAAAD8B8AAAAAAAfgPgAAAAAAH+A8AAAAAAA/gHgAAAAAADwG8AAAAAAAOAHgAAAAAAA4AYAAAAAAABgPgAAAAAAADB+AAAAAAAAHfgAAAAAAAAP8AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAD///AAAAAAAfxn/wAAAAAD/jafwAAAAAP/Kkp4AAAAA7///X4AAAAD2///+4AAAAP//A/94AAAA//AAD/wAAAD/4AAB/wAAAO/AAAA/gAAAc8AAAA/gAAB/wAAAB/AAAD/AAAAB3AAAO+AAAADuAAAf4AAAAHcAAA/wAAAAG4AABvAAAAAPwAADMAAAAAfgAAGYAAAAA3AAANwAAAAB+AAAdgAAAAD8AAAZgAAAAOwAAA7AAAAAdAAAB3AAAAA7AAAB/AAAADuAAAB/AAAAPcAAAD/gAAA8gAAAD/4AADzAAAADv8AAPGAAAAD7/AD84AAAADwP//lgAAAADwP/8OAAAAADwCPA4AAAAAD4AAPgAAAAAB+AD8AAAAAAAf/+AAAAAAAAH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAPwAAAAAAAAA7gAAAAAAAAD2AAAAAAAAAHcAAAAAAAAAd4AAAAAAAABz8AAAGAAAAHH/////gAAAcAf////wAAA2AAACAjgAABoAAAABCAAADAAEQAQWAAAH/////j8AAAH//////4AAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAPwAAAAGAAAAHgAAAA8AAAGfAAAAD4AAAf4AAAAPwAAA/gAAAA/gAADmAAAAD/AAAHYAAAAO+AAAMwAAAA5kAAAbgAAAHEIAAA/AAAAczQAAB+AAAB3tgAAD8AAAP/zgAAH4AAB/3eAAAP4AAH+P8AAAf4AAf4fYAAAf4AD7g8wAAA/4Af+B/gAABz8P/4BvAAAB///3gD+AAAB///8AHcAAAD/f/wAP4AAAD8z/AAZwAAAD4P4AA/gAAAB//AAB3AAAAAfgAAD+AAAAAAAAAH+AAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAB/AAAAwAAAAHmAAAB4AAAAMOAAAH8AAAAI8AAAP4AOAA/4AAAfgB+AA9wAAA/AD8ABzgAAB+AG4ABnAAAH8AMwADeAAAPwAZgAHcAAAfgAzgAG4AAA/AB3AAMwAAB+AHuAAZgAAD8APcAAzAAAH8AeYABuAAAP4A44AHcAAAf4BxwAOYAAA74HR4AYwAAB1/8z4B3gAAB4/z3+PPAAADweHn/+OAAADgEfIP4YAAADkPmAkJwAAAB5+OFQHAAAAA/wOAAcAAAAAAAHAPwAAAAAAAD/+AAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAPAAAAAAAAAB+AAAAAAAAAHsAAAAAAAAAfYAAAAAAAAB8wAAAAAAAAPvgAAAAAAAB+/AAAAAAAAP/mAAAAAAAB//MAAAAAAAH7/YAAAAAAA+f/gAAAAAAD147gAAAAAAffB+AAAAAAH54D8AAAAAA/HgDoAAAAAH8cAPYAAAAA/7///wAAAAD3X////CAAAGO/e/f/+AAAM9/pP//8AAAYDXee/fYAAA///////wAAB///////gAAA/gAAb//AAAAAAAA2AAAAAAAAABsAAAAAAAAAD4AAAAAAAAAHwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAB+AAAAAADwAD2AAAA///wAHeAAAH///gAP+AAAP//zAAeMAAAf//GAAYYAAA//+OAAwQAAB///cABwwAAD//+4AD9gAAH//9wAD3AAAPwD7gAHsAAAfgH/AAOYAAA/AHuAAZwAAB+AHcAB3gAAD8AP8ADnAAAH4Af4AP8AAAPwA94A94AAAfwA94P/wAAA/gB7//vAAAB/AD//+cAAADuAD3+3wAAAHcAD/NnAAAAP4AH2ZcAAAAPgAH8jwAAAAAAAH//AAAAAAAAD/4AAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/AAAAAAAAP9/gAAAAAAD/AfwAAAAAAfAADwAAAAAD4CABwAAAAAfEI5BwAAAAB8AP/hwAAAAPAAf/wwAAAA8A9wHxwAAADif/ADzgAAAOV/+AD3AAAAYP/4ADnAAABg+fwAHOAAAHLw/gAHcAAAMfBnAAOYAAA48DcAAMwAABjwG4AA5gAAHHAMwAB3AAAOcAZgADuAAAdwAzgAGYAAAfABzAAdwAAAcADnABzAAAAQADngPuAAAAAADH/88AAAAAAHH/5wAAAAAAHD/XAAAAAAAHh8cAAAAAAAHnZwAAAAAAAH+fAAAAAAAAD/8AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAH8AAAAAAAAAO4AAAAAAAAAdwAAAAAAAAA7gAAAABgAAB3AAAAAPgAADOAAAAD/AAAHcAAAAf+AAAO4AAAD8cAAAdwAAA/h4AAA7gAAH8/gAAB3AAB/n4AAADuAAP8/AAAAHcAB/H4AAAAO4A/0eAAAAAfwP/HwAAAAA/z/3eAAAAAB///34AAAAAD////AAAAAAH+/34AAAAAAP57+AAAAAAAf/3wAAAAAAA7/+AAAAAAAB//wAAAAAAAD/+AAAAAAAAH/wAAAAAAAAOeAAAAAAAAAf4AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/gAAAAAMAAf/wAAAAB/AB5j4AAAAH/gHBb4AAAAfHweD/wAAAB37x0f3wAAAHfx/f/9wAAAN/5///3gAAAfA5/8D7gAAB+A5vgDnAAADYA94AHOAAAGwA7wAHsAAAPgA/gAPcAAA/AB/AAc4AABuAD+AA9wAADcAP8AB/gAAH4Ab4ADjAAAPwB0wAHuAAAZgH5wAO8AAAzgd/gA84AAAz///gB5gAABn/u7gHHAAAB71438+OAAAB2/gz/7YAAAB98B2/zwAAAB/wB4h3AAAAA4AB7Y+AAAAAAAB+Z4AAAAAAAA8fAAAAAAAAAf4AAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAf/gAAAAAAAB//4AAAAAAAPjX4AAAAAAA8H/4AAAAAABwXq4AAAAAAHD/F4AAAAAAOP/9wABgAAA94B7wADAAAB3gB5gAOAAADcAB7AAeAAAO4AD2AA8AAAfgADmAD8AAA/AAHcAHwAAB+AAO4AfgAAD8AAfwB+AAAH4AA/gH8AAAPwAD2AfwAAAfgAH8B/gAAA/AAP4PuAAAB3AA5h84AAADvADn/ngAAAD/gPf8+AAAAHvx9/fgAAAAH//wN/AAAAAH3/AP4AAAAAH34g+AAAAAAD/hfwAAAAAAD//8AAAAAAAA//gAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAHwAAAAAAHgAfgAAAAAAPAAfAAAAAAAeAA2AAAAAAA4AB8AAAAAABQAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
|
||||||
|
|
||||||
|
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...
|
// initialize with default settings...
|
||||||
let s = {
|
let s = {
|
||||||
'grid': false,
|
'grid': false,
|
||||||
'date': false,
|
|
||||||
'font': "Lato"
|
'font': "Lato"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,14 +42,6 @@
|
||||||
s.grid = !s.grid
|
s.grid = !s.grid
|
||||||
save()
|
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 |