From bf906e1469d33c78cc9be476c83390bbdfc740cf Mon Sep 17 00:00:00 2001 From: MaBecker Date: Wed, 13 Nov 2019 11:50:05 +0100 Subject: [PATCH] add a mixed clock app --- apps.json | 12 ++++++ apps/clock-mixed-icon.js | 1 + apps/clock-mixed.js | 86 +++++++++++++++++++++++++++++++++++++++ apps/clock-mixed.json | 6 +++ apps/clock-mixed.png | Bin 0 -> 707 bytes 5 files changed, 105 insertions(+) create mode 100644 apps/clock-mixed-icon.js create mode 100644 apps/clock-mixed.js create mode 100644 apps/clock-mixed.json create mode 100755 apps/clock-mixed.png diff --git a/apps.json b/apps.json index fe846bfba..ffaa51c51 100644 --- a/apps.json +++ b/apps.json @@ -396,5 +396,17 @@ {"name":"-scolor","url":"show-color.js"}, {"name":"*scolor","url":"show-color-icon.js","evaluate":true} ] + }, + { "id": "mclock", + "name": "A mix of analog and digital Clock", + "icon": "clock-mixed.png", + "description": "Mixed AD Clock", + "tags": "mclock", + "type":"clock", + "storage": [ + {"name":"+mclock","url":"clock-mixed.json"}, + {"name":"-mclock","url":"clock-mixed.js"}, + {"name":"*mclock","url":"clock-mixed-icon.js","evaluate":true} + ] } ] diff --git a/apps/clock-mixed-icon.js b/apps/clock-mixed-icon.js new file mode 100644 index 000000000..3ca3b0612 --- /dev/null +++ b/apps/clock-mixed-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4ATiwAGFdYzlFp4xeFyYwZD49kxGs2fX6+z1mIsgxcDQtAxArCAA+zxFAGDAYFxAsJAAuIGCxcF1omHgEABI+sGCouERRIvJSgKTEFzovLGAJgRCIiMIF5ySGF57qMF5nXsgvORoggLF5yRPLyAvO6+IF6LsKF6JgEF5lkD5gvPYIiOaF6CQMBYesD5oAP1gvPXxpfDAQIAFYCILDJ5wvP64veACCPeAB6PQd4p9EQQ4MLd6GIF7uIF5YwDsgiNAY4vHsguLYBJfXXxiQKL66ONF4lAL7dAF5pgIF6y9DFxYvEi2sF6+sDwgvLGAryEACLsEFxrCGGCmzXh5gJSQYAPRgovQGA1kMR7qEFyQwHi2IGJWzxCLEFygwIMYOI1gzC2esxBbGFywxKABotXGCwuaGKQtdGZorjAH4A/AF4=")) diff --git a/apps/clock-mixed.js b/apps/clock-mixed.js new file mode 100644 index 000000000..b2197c8e6 --- /dev/null +++ b/apps/clock-mixed.js @@ -0,0 +1,86 @@ +/* jshint esversion: 6 */ +(function() { + + const Radius = { "center": 8, "hour": 78, "min": 95, "dots": 102 }; + const Center = { "x": 120, "y": 132 }; + + function rotatePoint(x, y, d) { + rad = -1 * d / 180 * Math.PI; + var sin = Math.sin(rad); + var cos = Math.cos(rad); + xn = ((Center.x + x * cos - y * sin) + 0.5) | 0; + yn = ((Center.y + x * sin - y * cos) + 0.5) | 0; + p = [xn, yn]; + return p; + } + + function drawMixedClock() { + + var date = new Date(); + var dateArray = date.toString().split(" "); + var point = []; + var minute = date.getMinutes(); + var hour = date.getHours(); + var radius; + + // draw date + g.setColor(0x7be0); + g.setFont("6x8", 2); + g.setFontAlign(-1, 0); + g.drawString(dateArray[0] + ' ', 4, 35, true); + g.drawString(' ' + dateArray[2], 4, 225, true); + g.setFontAlign(1, 0); + g.drawString(dateArray[1], 237, 35, true); + g.drawString(dateArray[3], 237, 225, true); + + // draw hour and minute dots + g.setColor(0xFD20); // orange + for (i = 0; i < 60; i++) { + radius = (i % 5) ? 2 : 4; + point = rotatePoint(0, Radius.dots, i * 6); + g.fillCircle(point[0], point[1], radius); + } + + // erase last minutes hand + g.setColor(0); + point = rotatePoint(0, Radius.min, (minute - 1) * 6); + g.drawLine(Center.x, Center.y, point[0], point[1]); + + // erase last two hour hands + g.setColor(0); + p = rotatePoint(0, Radius.hour, hour % 12 * 30 + (minute - 2) / 2 | 0); + g.drawLine(Center.x, Center.y, p[0], p[1]); + point = rotatePoint(0, Radius.hour, hour % 12 * 30 + (minute - 1) / 2 | 0); + g.drawLine(Center.x, Center.y, point[0], point[1]); + + // draw digital time + g.setFont("6x8", 3); + g.setColor(0x7be0); + g.setFontAlign(0, 0); + g.drawString(dateArray[4].substr(0, 5), 120, 180, true); + + // draw new minute hand + point = rotatePoint(0, Radius.min, minute * 6); + g.setColor(0xFFFF); + g.drawLine(Center.x, Center.y, point[0], point[1]); + // draw new hour hand + point = rotatePoint(0, Radius.hour, hour % 12 * 30 + date.getMinutes() / 2 | 0); + g.setColor(0xFFFF); + g.drawLine(Center.x, Center.y, point[0], point[1]); + + // draw center + g.setColor(0xFD20); + g.fillCircle(Center.x, Center.y, Radius.center); + } + Bangle.on('lcdPower', function(on) { + if (on) { + drawMixedClock(); + drawWidgets(); + } + }); + + g.clear(); + setInterval(drawMixedClock, 5E3); + drawMixedClock(); + +})(); diff --git a/apps/clock-mixed.json b/apps/clock-mixed.json new file mode 100644 index 000000000..196246e23 --- /dev/null +++ b/apps/clock-mixed.json @@ -0,0 +1,6 @@ +{ + "name":"Mixed Clock","type":"clock", + "icon":"*mclock", + "src":"-mclock", + "sortorder":-10 +} diff --git a/apps/clock-mixed.png b/apps/clock-mixed.png new file mode 100755 index 0000000000000000000000000000000000000000..f02ad5e9ee3a0bf215beed0d8cf9d8765015b314 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sa{_!qT!A#h<|7Pi4ua5HFbQJp zXIKqmL!}Nu)d0C0Pcy7Jz_11^0@Skh5J>T=0}N|{f(PHddk0d?KpYl@w4E=7yS=i zxccJNmV1x&cAi=$dl2LS>5?G7UISE7D(w3b_%UOgE( z!JUDDakr<7V~EG`yP-FyH5u@PGO{{49xq+BhH24`GiUz)zdd0UuRzrOz0Y4P%*~r^ z^3wOc^2PfW$F^^ch$ue%@mKy?_tOv8wJo#`nl<}Y!u3NA#!tV+Ut7og%jMagZw4Ro zD+SXcBV3mLpK;O3d1mj=M~eJ2945&Bcv5j~qy6^p{*u`W)<5Ssp1<(p+x6)W>;C`p z3VJ8nDW3M<$&K?(MdQ}6C(HPLH`@wLU`&6ZR(N8+k=Fwa1-{)A<4;`gJjwBfM{>>c z8cx2{A}0pFom;hAf1Q+6R8U%>z2_FMi@*vFMwf@2O~Ji+KCTI=sgF3C8s!3+ex-06 z+9M_U_34bQ6GPO39UE5ho#gzj{==f>4kuHJVwiB!2^Pf@jV!N(Sa-QJv#~!|Z+c+C z$0%h{#`U7Y;n#AH_zS$7dNNADCQfRTuuEo+=SNS!1CN9YDl1R>cR1RFJz@0Zc*HnS zebxyM&iX|mESHpDAK~wE@J`d4(r9#9Gv%fJEz{OB%YrfsR@$(yU1ZI@a!N;`)YYRF zPKIG8Y9&<@W!gPU>QC*}eH|kldpAJCXZALo+aczz+i!}5FaDl;y|`zksYFC@^4_=K b?F9c{ecS$I?dMmTpw#H;>gTe~DWM4f>^e@f literal 0 HcmV?d00001