diff --git a/apps.json b/apps.json index 0321ad954..96d8a9e9d 100644 --- a/apps.json +++ b/apps.json @@ -48,6 +48,18 @@ {"name":"*wclock","url":"clock-word-icon.js","evaluate":true} ] }, + { "id": "aclock", + "name": "Analog Clock", + "icon": "clock-analog.png", + "description": "An Analog Clock", + "tags": "clock", + "type":"clock", + "storage": [ + {"name":"+aclock","url":"clock-analog.json"}, + {"name":"-aclock","url":"clock-analog.js"}, + {"name":"*aclock","url":"clock-analog-icon.js","evaluate":true} + ] + }, { "id": "trex", "name": "T-Rex", "icon": "trex.png", diff --git a/apps/clock-analog-icon.js b/apps/clock-analog-icon.js new file mode 100644 index 000000000..c58536d24 --- /dev/null +++ b/apps/clock-analog-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwghC/AE8IxAAEwAWVDB4WIDBwWJAAIWPmf//8zDBpFDwYVBAAc4JJYWJDAoXKn4SC+EPAgXzC5JGCx4qDC4n//BIIEIRCEC4v/GBBdHC4xhCIw5dDC5BhCJAgXCRQoXGJAQXEUhAXHJAyNGC5KRCC7p2FC5B4CC5kggQXOBwvyBQMvSA4XL+EIwCoIC8ZHCgYXNO44LBBIiPPCAIwFC5DXGAAMwGAjvPGA4XIwYXHGALBDnAXFhCQHGAaOFwAXGPA4bFC4xIMIxIXDJBJGEC4xICSJCNEIwowEMJBdCFwwXEMJBdCC5BICDA4WDIw4wEAAMzCoMzBAgWIDAwAGCxRJEAAxFJDBgWNDBAWPAH4AYA==")) diff --git a/apps/clock-analog.js b/apps/clock-analog.js new file mode 100644 index 000000000..8e6650508 --- /dev/null +++ b/apps/clock-analog.js @@ -0,0 +1,69 @@ +g.clear(); + +var minuteDate = new Date(); +var secondDate = new Date(); + +function line(angle, r1,r2) { + var a = angle*Math.PI/180; + g.drawLine( + 120+Math.sin(a)*r1, + 120-Math.cos(a)*r1, + 120+Math.sin(a)*r2, + 120-Math.cos(a)*r2); +} +function hand(angle, r1,r2) { + var a = angle*Math.PI/180; + var r3 = 3; + var p = Math.PI/2; + g.fillPoly([ + 120+Math.sin(a)*r1, + 120-Math.cos(a)*r1, + 120+Math.sin(a+p)*r3, + 120-Math.cos(a+p)*r3, + 120+Math.sin(a)*r2, + 120-Math.cos(a)*r2, + 120+Math.sin(a-p)*r3, + 120-Math.cos(a-p)*r3]); +} + +function drawAll() { + g.clear(); + g.setColor(0,0,0.3); + for (var i=0;i<60;i++) + line(360*i/60, 92, 95); + secondDate = minuteDate = new Date(); + onSecond(); + onMinute(); +} + +function onSecond() { + g.setColor(0,0,0.3); + line(360*secondDate.getSeconds()/60, 92, 95); + g.setColor(1,0,0); + secondDate = new Date(); + line(360*secondDate.getSeconds()/60, 92, 95); + g.setColor(1,1,1); + +} + +function onMinute() { + g.setColor(0,0,0); + hand(360*minuteDate.getHours()/12, -10, 50); + hand(360*minuteDate.getMinutes()/60, -10, 85); + oldMinute = new Date(); + g.setColor(1,1,1); + hand(360*minuteDate.getHours()/12, -10, 50); + hand(360*minuteDate.getMinutes()/60, -10, 85); +} + +setInterval(onSecond,1000); +setInterval(onMinute,60*1000); +drawAll(); + +Bangle.on('lcdPower',function(on) { + if (on) { + g.clear(); + drawAll(); + drawWidgets(); + } +}); diff --git a/apps/clock-analog.json b/apps/clock-analog.json new file mode 100644 index 000000000..049d47406 --- /dev/null +++ b/apps/clock-analog.json @@ -0,0 +1,6 @@ +{ + "name":"Analog Clock","type":"clock", + "icon":"*aclock", + "src":"-aclock", + "sortorder":-10 +} diff --git a/apps/clock-analog.png b/apps/clock-analog.png new file mode 100644 index 000000000..88665ca3f Binary files /dev/null and b/apps/clock-analog.png differ diff --git a/apps/clock-morphing.js b/apps/clock-morphing.js index 63656b70f..8c25e1f8a 100644 --- a/apps/clock-morphing.js +++ b/apps/clock-morphing.js @@ -1,4 +1,3 @@ -// Enable 'Set Current Time' in Settings -> Communications before sending (function(){ // make our own scope so this is GC'd when intervals are cleared // Offscreen buffer var buf = Graphics.createArrayBuffer(240,86,1,{msb:true});