Merge pull request #933 from peerdavid/master
[LCARS Clock] Added lcars icon to watch face.pull/938/head^2
|
@ -4295,7 +4295,7 @@
|
||||||
"name": "LCARS Clock",
|
"name": "LCARS Clock",
|
||||||
"shortName":"LCARS",
|
"shortName":"LCARS",
|
||||||
"icon": "lcars.png",
|
"icon": "lcars.png",
|
||||||
"version":"0.03",
|
"version":"0.04",
|
||||||
"supports": ["BANGLEJS2"],
|
"supports": ["BANGLEJS2"],
|
||||||
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
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.
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
|
@ -3,12 +3,12 @@
|
||||||
*/
|
*/
|
||||||
const locale = require('locale');
|
const locale = require('locale');
|
||||||
var alarm = -1;
|
var alarm = -1;
|
||||||
var hrmStr = "-"
|
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("AEcEiFBASFADpETps06YCcEYXnz15ASBBJzVp0wCdEYU8+fPASHAIJCAdQf6DpoUIkGCATCDWIBCDDzANJAGaDC6BB9QYWAQf804CD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/QbhA9Qf6D2oMEiFAQfoyB6ZBKQeYyBzVgQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6Dnz1586D+AGaDNAGaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qc8Bg8euPv337ASHwDQNz588+YCC5AlCjR6CARCDN+/fvoCV6AbBj158+eAQV4EwUTPQQCIQZcB859SQdkPQCyDpvaAWQbmYIBUDQC6DQAC8eQC6DQAC8XQf6D/AASAYQdCAYQf6DHAESDeAESD/Qf6D/Qf6DK+2LtmXQfu8FEiDb8BB9QYRA9QYZB+Qf6D/AAccuPHIPwA/AH4A/AH4AHyVJkhB+zVp0yD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DlwCD/02QQf8kyVIkGChACeFAMo0WKAQOIC56/CQYQCi0kAgMv33794CUQYYChQYU9+/fvoCTviD/Qf6D/Qf6D/Qf6DLjSD/94="))
|
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="))
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconPlanet = {
|
var iconPlanet = {
|
||||||
|
@ -23,12 +23,6 @@ var iconGps = {
|
||||||
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
|
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconHrm = {
|
|
||||||
width : 50, height : 50, bpp : 3,
|
|
||||||
transparent : 1,
|
|
||||||
buffer : require("heatshrink").decompress(atob("kmSpIC/AX4CT+PHjlxARfBkmGjFhAR2REZwCC7AjPAQIjQ48dw0//4ANsOB49/CJv8JQNjEh32JQN3BY/5AwpKLkhKQ8+eBIhKK/jZBJR/+vPnJR/JkmTJR3xJQN5JRPypMkz5uByfJk5KI/zXCFQMev/nC4JKIkhrBn4pB/+Sp5KJfwnnOIqVHSQS5CFgaVIDQPHj4FBOIJNCSo/9EAI/CFIJNCSo/njiSC/KYDcBH6IgQAFcBHx44RGcBYAHcBIAHJRAAJJRAAJJSrdEARfYsOGjACOngjP48EyQdHx04BAtkyTnCAQYsCDoILGAQ2OnfvCJ2TIgNwCJuSpHj335CJnxNYvBChU48ZKC3378gRJp6SGiQ4JkaSBJQP7EwIOEyA"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var iconCompass = {
|
var iconCompass = {
|
||||||
width : 50, height : 50, bpp : 3,
|
width : 50, height : 50, bpp : 3,
|
||||||
transparent : 2,
|
transparent : 2,
|
||||||
|
@ -72,50 +66,51 @@ function draw(queue){
|
||||||
g.drawImage(backgroundImage, 0, 24);
|
g.drawImage(backgroundImage, 0, 24);
|
||||||
|
|
||||||
// Draw raster
|
// Draw raster
|
||||||
for(var x=0; x<6; x++){
|
// g.drawLine(112, 100, 112, 165);
|
||||||
g.drawLine(115+x*10, 100, 115+x*10, 160);
|
for(var x=1; x<7; x++){
|
||||||
|
g.drawLine(110+x*10, 100, 110+x*10, 160);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var y=0; y<6; y++){
|
for(var y=0; y<6; y++){
|
||||||
g.drawLine(110, 105+y*10, 170, 105+y*10);
|
g.drawLine(113, 105+y*10, 180, 105+y*10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
var iconImg =
|
var iconImg =
|
||||||
alarm >= 0 ? iconAlarm :
|
alarm >= 0 ? iconAlarm :
|
||||||
Bangle.isGPSOn() ? iconGps :
|
Bangle.isGPSOn() ? iconGps :
|
||||||
Bangle.isHRMOn() ? iconHrm :
|
|
||||||
Bangle.isCompassOn() ? iconCompass :
|
Bangle.isCompassOn() ? iconCompass :
|
||||||
iconPlanet;
|
iconPlanet;
|
||||||
g.drawImage(iconImg, 115, 105);
|
g.drawImage(iconImg, 120, 107);
|
||||||
|
|
||||||
|
// Alarm within symbol
|
||||||
|
g.setFontAntonioMedium();
|
||||||
|
if(alarm > 0){
|
||||||
|
g.setFontAlign(0,0,0);
|
||||||
|
g.drawString(alarm, 120+25, 107+25);
|
||||||
|
g.setFontAlign(-1,-1,0);
|
||||||
|
}
|
||||||
|
|
||||||
// Write time
|
// Write time
|
||||||
var currentDate = new Date();
|
var currentDate = new Date();
|
||||||
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, 57, 57);
|
g.drawString(timeStr, 55, 57);
|
||||||
|
|
||||||
// Write date
|
// Write date
|
||||||
g.setFontAlign(1,-1, 0);
|
g.setFontAlign(-1,-1, 0);
|
||||||
g.setFontAntonioMedium();
|
g.setFontAntonioMedium();
|
||||||
|
|
||||||
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, 133, 37);
|
g.drawString(day, 100, 37);
|
||||||
g.drawString(dayName, 133, 57);
|
g.drawString(dayName, 100, 57);
|
||||||
|
|
||||||
// Alarm within symbol
|
// Temperature
|
||||||
if(alarm > 0){
|
|
||||||
g.setFontAlign(0,0,0);
|
|
||||||
g.drawString(alarm, 115+25, 105+25);
|
|
||||||
g.setFontAlign(-1,-1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// HRM
|
|
||||||
g.setFontAlign(-1,-1,0);
|
g.setFontAlign(-1,-1,0);
|
||||||
g.drawString("HRM:", 20, 104);
|
g.drawString("HRM:", 20, 104);
|
||||||
g.drawString(hrmStr, 60, 104);
|
g.drawString(hrmValue, 60, 104);
|
||||||
|
|
||||||
// Draw steps
|
// Draw steps
|
||||||
var steps = getSteps();
|
var steps = getSteps();
|
||||||
|
@ -128,7 +123,6 @@ function draw(queue){
|
||||||
g.drawString("BAT:", 20, 144);
|
g.drawString("BAT:", 20, 144);
|
||||||
g.drawString(charging + bat+ "%", 60, 144);
|
g.drawString(charging + bat+ "%", 60, 144);
|
||||||
|
|
||||||
|
|
||||||
// Queue draw in one minute
|
// Queue draw in one minute
|
||||||
if(queue){
|
if(queue){
|
||||||
queueDraw();
|
queueDraw();
|
||||||
|
@ -153,6 +147,13 @@ function stepsWidget() {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HRM
|
||||||
|
*/
|
||||||
|
Bangle.on('HRM',function(hrm) {
|
||||||
|
hrmValue = hrm.bpm;
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle alarm
|
* Handle alarm
|
||||||
*/
|
*/
|
||||||
|
@ -214,14 +215,6 @@ Bangle.on('swipe',function(dir) {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Measure heart rate
|
|
||||||
*/
|
|
||||||
Bangle.on('HRM', function(hrm) {
|
|
||||||
hrmStr = hrm.bpm;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stop updates when LCD is off, restart when on
|
* Stop updates when LCD is off, restart when on
|
||||||
*/
|
*/
|
||||||
|
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 26 KiB |