From b5f8ab9ef35aa023a81c48a1217c11a4808bd005 Mon Sep 17 00:00:00 2001 From: Jamey Cribbs Date: Fri, 14 Jan 2022 11:52:41 -0500 Subject: [PATCH] added crowclk app --- apps.json | 17 ++++ apps/crowclk/README.md | 4 + apps/crowclk/crow_clock-icon.js | 1 + apps/crowclk/crow_clock.js | 153 +++++++++++++++++++++++++++++++ apps/crowclk/crow_clock.png | Bin 0 -> 4417 bytes apps/crowclk/screenshot_crow.png | Bin 0 -> 13226 bytes 6 files changed, 175 insertions(+) create mode 100644 apps/crowclk/README.md create mode 100644 apps/crowclk/crow_clock-icon.js create mode 100644 apps/crowclk/crow_clock.js create mode 100644 apps/crowclk/crow_clock.png create mode 100644 apps/crowclk/screenshot_crow.png diff --git a/apps.json b/apps.json index 14e12c164..86d1538f5 100644 --- a/apps.json +++ b/apps.json @@ -5676,5 +5676,22 @@ {"name":"acmaze.app.js","url":"app.js"}, {"name":"acmaze.img","url":"app-icon.js","evaluate":true} ] + }, + { + "id": "crowclk", + "name": "Crow Clock", + "version": "0.01", + "description": "MST3K Crow T. Robot clock", + "icon": "crow_clock.png", + "screenshots": [{"url":"screenshot_crow.png"}], + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "readme": "README.md", + "allow_emulator": true, + "storage": [ + {"name":"crowclk.app.js","url":"crow_clock.js"}, + {"name":"crowclk.img","url":"crow_clock-icon.js","evaluate":true} + ] } ] diff --git a/apps/crowclk/README.md b/apps/crowclk/README.md new file mode 100644 index 000000000..0e7865b99 --- /dev/null +++ b/apps/crowclk/README.md @@ -0,0 +1,4 @@ +# Bold Clock + +![](screenshot_bold.png) + diff --git a/apps/crowclk/crow_clock-icon.js b/apps/crowclk/crow_clock-icon.js new file mode 100644 index 000000000..0caf14a3c --- /dev/null +++ b/apps/crowclk/crow_clock-icon.js @@ -0,0 +1 @@ +var img = require("heatshrink").decompress(atob("mEwwkG/4AImcikUzBpIAHmURiIXBAYMjCx0hiU/AwfzA4wWIiYJHmMSCxUxgYLKERH/+UU8kvBY/zp1FBZEhp3uDA/yBQURFw8fl3tBoKJEmQWB9vk+MfFw3/n3SEwVCn/zkgGCkni/4wFFwP/mnjkQRB93UpoDBDoM96f/+JUEmKxB+nhl8ypvtolE73kofyj1PPYKSEWAXy8UimckFoXUiUzkUuC4IqBIwogB8gWBJAPd7pGCSAJECJAfxfAXzokSp3t7wvBAYPkkNNB4ZICRoIACokkFYIAE7viogPDkQCBMYkkonuolFqtVqgGCC4hgB+bEEmlNqEFolAAQfUoQPDLgPyVYku8sArx0BAQQGB6TTFOwYABnvVgFEqnkp1FokAhoXEIoPxeYn0CANEggXBoAGCoYQEibCDVAdFqgtBGIPlPII/EC46oBpqIB73tAYPURwioCVIQwFUQIACAoIuFC5AYBpwXD8idEC5fyd4tPC58093tCoIzBRooXCO43/n3u7wXBDQPiC58uI4vkBw0Ta4oABmq5BAAVFqQXITA0wgAAEgSdGj/yTI0lC4tUC44BBL41ACwcEO43xFoMTU47YC8ne8YNFRoTAG+jXMCgUxPAvzFwS/B9qFGIgXyMA00d4Xe6QLFRghgGGAfkFwxDEJAwkBqtVWY3/iQPEJA3zUwIhGUoQADiIXPkIeGGAkzmYXBkczDIZAHGAUyolE7vuqEA73tA4MjH44gCineaYYXBbQlBPo6SCrwQDFYIFD8qMEAA0hroqEAAXkqR8GRYshqotBAAdViQWLJQcVDIVVqJELGQ0ykUikYsJ")) diff --git a/apps/crowclk/crow_clock.js b/apps/crowclk/crow_clock.js new file mode 100644 index 000000000..c4fe73b31 --- /dev/null +++ b/apps/crowclk/crow_clock.js @@ -0,0 +1,153 @@ +var img = require("heatshrink").decompress(atob("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")) + +var hour_hand = { + width : 61, height : 8, bpp : 1, + transparent : 0, + buffer : E.toArrayBuffer(atob("/////////////////////////////////////////////////////////////////////////////////w==")) +}; +var minute_hand = { + width : 110, height : 4, bpp : 1, + transparent : 0, + buffer : E.toArrayBuffer(atob("/////////////////////////////////////////////////////////////////////////w==")) +}; + +//g.fillRect(0,24,239,239); // Apps area +let intervalRef = null; +const p180 = Math.PI/180; +const clock_center = {x:Math.floor((g.getWidth()-1)/2), y:24+Math.floor((g.getHeight()-25)/2)}; +// ={ x: 119, y: 131 } +const radius = Math.floor((g.getWidth()-24+1)/2); // =108 + +let tick0 = Graphics.createArrayBuffer(30,8,1,{msb:true}); +tick0.fillRect(0,0,tick0.getWidth()-1, tick0.getHeight()-1); +let tick5 = Graphics.createArrayBuffer(20,6,1,{msb:true}); +tick5.fillRect(0,0,tick5.getWidth()-1, tick5.getHeight()-1); +let tick1 = Graphics.createArrayBuffer(8,4,1,{msb:true}); +tick1.fillRect(0,0,tick1.getWidth()-1, tick1.getHeight()-1); + +// Adjust hand lengths to be within 'tick' points +minute_hand.width=radius-tick1.getWidth()-6; +hour_hand.width=radius-tick5.getWidth()-6; + +function big_wheel_x(angle){ + return clock_center.x + radius * Math.cos(angle*p180); +} +function big_wheel_y(angle){ + return clock_center.y + radius * Math.sin(angle*p180); +} +function rotate_around_x(center_x, angle, tick){ + return center_x + Math.cos(angle*p180) * tick.getWidth()/2; +} +function rotate_around_y(center_y, angle, tick){ + return center_y + Math.sin(angle*p180) * tick.getWidth()/2; +} +function hour_pos_x(angle){ + return clock_center.x + Math.cos(angle*p180) * hour_hand.width/2; +} +function hour_pos_y(angle){ + return clock_center.y + Math.sin(angle*p180) * hour_hand.width/2; +} +function minute_pos_x(angle){ + return clock_center.x + Math.cos(angle*p180) * minute_hand.width/2; +} +function minute_pos_y(angle){ + return clock_center.y + Math.sin(angle*p180) * minute_hand.width/2; +} +function minute_angle(date){ + //let minutes = date.getMinutes() + date.getSeconds()/60; + let minutes = date.getMinutes(); + return 6*minutes - 90; +} +function hour_angle(date){ + let hours= date.getHours() + date.getMinutes()/60; + return 30*hours - 90; +} + +function draw_clock(){ + //console.log("draw_clock"); + let date = new Date(); + g.reset(); + g.clearRect(0,24,239,239); // clear app area + + g.drawImage(img, 12, 24); + + // draw cross lines for testing + // g.setColor(1,0,0); + // g.drawLine(clock_center.x - radius, clock_center.y, clock_center.x + radius, clock_center.y); + // g.drawLine(clock_center.x, clock_center.y - radius, clock_center.x, clock_center.y + radius); + + g.setColor(g.theme.fg); + let ticks = [0, 90, 180, 270]; + ticks.forEach((item)=>{ + let agl = item+180; + g.drawImage(tick0.asImage(), rotate_around_x(big_wheel_x(item), agl, tick0), rotate_around_y(big_wheel_y(item), agl, tick0), {rotate:agl*p180}); + }); + ticks = [30, 60, 120, 150, 210, 240, 300, 330]; + ticks.forEach((item)=>{ + let agl = item+180; + g.drawImage(tick5.asImage(), rotate_around_x(big_wheel_x(item), agl, tick5), rotate_around_y(big_wheel_y(item), agl, tick5), {rotate:agl*p180}); + }); + + let hour_agl = hour_angle(date); + let minute_agl = minute_angle(date); + g.drawImage(hour_hand, hour_pos_x(hour_agl), hour_pos_y(hour_agl), {rotate:hour_agl*p180}); // + g.drawImage(minute_hand, minute_pos_x(minute_agl), minute_pos_y(minute_agl), {rotate:minute_agl*p180}); // + g.setColor(g.theme.fg); + g.fillCircle(clock_center.x, clock_center.y, 6); + g.setColor(g.theme.bg); + g.fillCircle(clock_center.x, clock_center.y, 3); + + // draw minute ticks. Takes long time to draw! + g.setColor(g.theme.fg); + for (var i=0; i<60; i++){ + let agl = i*6+180; + g.drawImage(tick1.asImage(), rotate_around_x(big_wheel_x(i*6), agl, tick1), rotate_around_y(big_wheel_y(i*6), agl, tick1), {rotate:agl*p180}); + } + + g.flip(); + //console.log(date); +} +function clearTimers(){ + //console.log("clearTimers"); + if(intervalRef) { + clearInterval(intervalRef); + intervalRef = null; + //console.log("interval is cleared"); + } +} +function startTimers(){ + //console.log("startTimers"); + if(intervalRef) clearTimers(); + intervalRef = setInterval(draw_clock, 60*1000); + //console.log("interval is set"); + draw_clock(); +} + +Bangle.on('lcdPower', (on) => { + if (on) { + //console.log("lcdPower: on"); + Bangle.drawWidgets(); + startTimers(); + } else { + //console.log("lcdPower: off"); + clearTimers(); + } +}); +Bangle.on('faceUp',function(up){ + //console.log("faceUp: " + up + " LCD: " + Bangle.isLCDOn()); + if (up && !Bangle.isLCDOn()) { + //console.log("faceUp and LCD off"); + clearTimers(); + Bangle.setLCDPower(true); + } +}); + +g.clear(); + + + +Bangle.loadWidgets(); +Bangle.drawWidgets(); +startTimers(); +// Show launcher when button pressed +Bangle.setUI("clock"); diff --git a/apps/crowclk/crow_clock.png b/apps/crowclk/crow_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..8d3f61786cb1b7e7ad63c5077888e0866f7b3523 GIT binary patch literal 4417 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 literal 0 HcmV?d00001