diff --git a/apps/seiko_5actus/ChangeLog b/apps/seiko_5actus/ChangeLog deleted file mode 100644 index 28f11c1c7..000000000 --- a/apps/seiko_5actus/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -0.01: Initial Release diff --git a/apps/seiko_5actus/README.md b/apps/seiko_5actus/README.md deleted file mode 100644 index 4f09bf3c6..000000000 --- a/apps/seiko_5actus/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Seiko 5actus - -![](screenshot.png) - -This is built on the knowledge of what I gained through designing the rolex watch face and improves on it by getting more done right at the start. - -This watch is modeled after one I personally own and love, I have spent quite a bit of time designing this in a pixel art editor to try and make it as clean as possible and am quite happy with how it came out. - -This watch face works in both the light and dark themes but I personally think it looks a lot cleaner in the dark them. - -This watch whilst technically designed in a way that would work with the BangleJs has been only listed to work with the BangleJs2, if someones wants to test it on a first gen and let me know if it works then i'll allow it to be installed on both devices but I assume with how the images have been designed it would look strange on a first gen watch. - -Special thanks to: -* rozek (for his updated widget draw code for utilization with background images) -* Gordon Williams (Bangle.js, watchapps for reference code and documentation) -* The community (for helping drive such a wonderful project) diff --git a/apps/seiko_5actus/app-icon.js b/apps/seiko_5actus/app-icon.js deleted file mode 100644 index 796f24122..000000000 --- a/apps/seiko_5actus/app-icon.js +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("mEwwkEBpMB+fziAjRCQQXBHyoXEgIRLgMwC5EAj8gC5MC+QXJn4XKBgJHJMhkfJAYXEh/xC5cDBofzJocvIxKiCHpBGNExMCIxi2KeRIJFgMiiYBCkQ1Jh67EAAMSCgICBiQjFn8xDYX/AgQANn4qEgf/JIcDkcxiUSiMRY4cv+ZaFj6bDgZGBkMRDIIXD/7CHn5TDFYIADFIcRSxgAvXQwAQgRyDACcje4wAESQ4RDmMQgSGBj8zAAnyTgauH/65Cj7EBkMicAPyBYIABCgcRkYWCmYvCewMhmUiiMyF4gUBDoXzn7/Dj4RBF4IXB+QrDj40DmJgBiEyBYMDL4qcEgUikYqDCgSGKAAUSn8hbh8BgICBl/yFggwEbhMC/4sHAAcTIhIsBGYLcJGAQOHgLAEGBM/Jg0vRgsQZAMQBAQUBif/AwLJDfoQ1DkDOBkIOCgQDBFAKCDaIRPGSwqGBgM/dwUDeQiZEEAowCgXxb5jGGgQ+GaAjaHeIbmISYToHRYTPKYQIODE4cfEA4AEPghtEgQJCI5Mv+AXHJAiIIBggXFj/xDBMCcAYXGga7LcYIXIUpY1GC4SiJVRAXCiAWJA")) diff --git a/apps/seiko_5actus/metadata.json b/apps/seiko_5actus/metadata.json deleted file mode 100644 index 306b2f188..000000000 --- a/apps/seiko_5actus/metadata.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "id": "seiko-5actus", - "name": "Seiko 5actus", - "shortName":"5actus", - "icon": "seiko-5actus.png", - "screenshots": [{"url":"screenshot.png"}], - "version":"0.01", - "description": "A watch designed after then Seiko 5actus from the 1970's", - "tags": "clock", - "type": "clock", - "supports":["BANGLEJS2"], - "readme": "README.md", - "allow_emulator": true, - "storage": [ - {"name":"seiko-5actus.js","url":"seiko-5actus.js"}, - {"name":"seiko-5actus.img","url":"app-icon.js","evaluate":true} - ] - } diff --git a/apps/seiko_5actus/screenshot.png b/apps/seiko_5actus/screenshot.png deleted file mode 100644 index fb8638999..000000000 Binary files a/apps/seiko_5actus/screenshot.png and /dev/null differ diff --git a/apps/seiko_5actus/seiko-5actus.js b/apps/seiko_5actus/seiko-5actus.js deleted file mode 100644 index 4405b1497..000000000 --- a/apps/seiko_5actus/seiko-5actus.js +++ /dev/null @@ -1,181 +0,0 @@ -var imgBg = { - width : 176, height : 176, bpp : 2, - transparent : 1, - buffer : require("heatshrink").decompress(atob("qoASv/8//1C6YASrorD6opjuorHBAIriQYwriV9FXFZldFjrSEFY6FjQcorPSYqtZFZaxaVoiDkZRArLv4rV/orT/5rGABtf/4rSq//+79UFaptIK5puHFZQUBFda5IABZuBCw4rKTAPVq4rUNw4rK/4rBroqRQAIrVQSd1N4QrQNZIAOFdbzBQ4IrOCQIIDWKQYFFZhqBHwaeBACBwBFazZQThQrJ/7CHABaSEFaTaWOIYrONJArTToorIdpDdRDQLJOCBDhRIxBoPABdXAwwrRVKQ+GZR7aZDYRHNM4IraOZyTQZbQrKaIwAKr7LOHRNdFaJzOr56RuppZACBgRAEtW1Wl1WqzWm1Nqy2qC5hyTrWq1IrFzWqyoXLv7mFQRlqqtp0tVy2V0uptNVA4JWK/72Fr4yFFY9VLINWyqJBFZtfFYwGGQZIrS////peF/6xM1KDDQQIrMKwJQFA4SEKQYLbGAoIrKv5PGGY4rGEYIAHyrZKQQoIDQhoARKwR6GBJIAXJpKECMIoAXUpaELBYQAICZR4CPYo3Kq4IBr7RITIzZFq7mOGwXXBYIjB//3/9drt/+5AGZ4RKHuoNEFZVdupQBuorBupjCJIyNIrqELr4mBr99vorEK476PBxAYC79//orCr4QBu5XIXAwiIcwxXCKYJlBFYSvIQRI7HTiLjBFYzZHAAzdBDA4AKDY6CMQgYQOABT8CEQjdJFTAAKuo8MADokkAH4A/AH4A/ABn1FldXFlfVTX4A/AH4A/AH4APr//ABVVrorcv4rL6tXFbgqL//1Qbv/1QAE1AED14re/wrK1Yr/Ff4rEcY3VFf4r/Ff4r/EaoAH/4rK14r/FZYALFb1/FZbTWAA9fFZYNBFjoA/AH4A/AH4A/vots+pu/AH4A/AH4A/ADdX6ousr4GFrohgABP/FbN/+o7O/6NZv5HOB4IrZ///LBlXB5wrO/qCNB5pzOOhgNBK7RICDhQNCX5P96td/91u4FBvpJLAoQPDrplEQRNdFYPVu93qvVO5JYJurZDSJV1FYP9FYP16oXBfJRKIbJpQB7vVv/3AwJvCbpTZVVIP9/9d6/9AALdTbJgAVEJDZMACoiCLAjZNAAqSKbpjZNSoo7PQg4zCIx9/FaBQBJ4rZRHqJQBFYzZRLCN/HooYRCQIRQYQ1dDCFVQR4A/ADFXCSK5RDJ40Iq6nPW6LcIq//fh39SrNf/6EN/47OFZp0NFbd/K5wPPI5obNM5F1FaYPNdYLcGfpA3IDQIrXABZ6FDSLcZTxAIBW4zcBFa4ZBFaLsNFZYZGFZBpIACCdBFZ7BFq7dSZJArOfQwAHHQYYBFaA+JABwhBIggrObirIJFZLuBbioXJFZI/JWJorBEJIJJS4KFRrqbKFZLvDupYSeZIrJbiwrBNwIrnTQYrReBIrNCpArKBRQAKIJQrLNhCvNJidXQSZYCPCiCTIQS6KEI4pVAAddFaF1FbAZHfioAVFYyUJWbRXHLrqxFFYhVeLI4rq6orCMAoAhFa4")) -}; - -/* Set hour hand image */ - -var imgHour = { - width : 176, height : 176, bpp : 2, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AEEP/4r/Ff4r/Ff4r/Ff4r/AEM///AFdH///wFU8DFYP8V1IABFf4r/Ff4r/AAcDFQP8Fc8AFYPwFdE///AFdCwBFVAr/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/gED/grpAH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ACQA=")) -}; - -/* Set minute hand image */ - -var imgMin = { - width : 176, height : 176, bpp : 2, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A0gf8Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/AAUwFdQA/AH4AZ")) -}; - -/* Set second hand image */ - -var imgSec = { - width : 176, height : 176, bpp : 2, - transparent : 1, - buffer : require("heatshrink").decompress(atob("qoA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AEdX+or/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/FZ01Ff6D/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/FfNVFf4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/AD91Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/AFgA==")) -}; - -/* Sets the font for the date at an appropriate size of 14 */ - -Graphics.prototype.setFontWorkSans = function(scale) { - // Actual height 12 (12 - 1) - this.setFontCustom(atob("AAAAAAADwAAAPAAAAAAAAAvAAC/0AH/gAL/QAD9AAAIAAAAACQAAL/9AC/r9APAA8A8ADwDwAfAH//wAH/8AAAAAADwAAAtAAAH//8Af//wAAAAAAAAAABwAUAfgHwDwA/APAP8A8DzwD/9PAD/Q8AAABQAAA0AHwDwA9AHwDw4PAPDw8A///gA/f8AAAAAAAAQAAAvAAAP8AALzwAD8PAAv//wB///AAAPAAAAUAAAAAAC/88AP/y8A8NDwDywPAPD18A8L/AAAGgAAAAAAC/8AA//9ALTx8A8ODwDw4PALz/8ALD/AAAAAAPAAAA8AAADwB/APC/8A9/gAD/AAAPgAAAAAAAAAAAAB8fwAf//wDw8PAPDw8A8PDwB///AC8vwAAAAAAAAAAD/DgAv/PQDwsPAPC08A8PDwB//8AB//QAAAAAAAAAAA8DwADwPAABAE"), 46, atob("BAYJBggICQgJCAkJBA=="), 14+(scale<<8)+(2<<16)); - return this; -}; - -/* Sets the font for the day at an appropriate size of 12 */ - -Graphics.prototype.setFontWorkSansSmall = function(scale) { - // Actual height 12 (11 - 0) - this.setFontCustom(atob("AAAAAAAAAAAAAAAAAABAP/zwGqjQAAAAP0AAEAAAP4AAGAAAAEoAAs/gL//QL88AAt/gL/+QK88AAYAAAUFAD+PAHPDgv//8fr70Hj7QCx+AAAAAC8AAL/AAPHBgL/PQB68AAPgAC9/APT7wEDjwAC/QAAAAAAuAC7/gL/DwPPywL9/gCwvAAD7wAABgAAAAP0AAEAAAACkAC//wP0C8sAAPYAAGPQA+D//0Af9ABQAADzAAB/AAv8AAB/AADyAABAAAACAAADgAADgAC//AAr5AADgAADQAAABAAAD9AAD0AAAAACwAACwAACwAACwAAAgAAABAAADwAADQAAAkAAv0Af9AL+AAvAAAAKgAD//ALgLgPADwPADwD//QA/9AAAAAAwAADwAAL//gL//gAAAAAgBQD4DwPAPwPA/wLnzwD/TwAUBQAAFADwPQLADwPDDwPvjwD+/AAQYAAAoAAD8AAv8AD08AP//gL//gAA8AAAAAL/PAPrDwPPDwPPDwPH/AAAoAAKgAC/+AHzrgPPDwPPDwH3/gBS+AKAAAPAAAPAbgPL/gP/QAPwAALAAAAAYAD+/ALvjwPLDwPLDwH//gBk+AAYAAD/PALTzwPDzwPDjwD//AAv8AAQBAA8DwA4DgAAAAAEBAAPD9AOD4AAAAABQAADwAAP4AANsAA8OAA4PABwHAAIUAAM8AAM8AAM8AAM8AAM8AAMoABgCAA4LAA8OAAdsAAP8AAHwAADgABgAADwAAPCzgPDzwLvBAD9AAAQAAABoAAv/wC0A8DD/OLPX3OMDjONHDHP/7Dfi5B4HQAP9AAACgAC/gB/8AP48AP48AB/8AAC/gAACgAAAAL//gP//wPDDwPDDwLv3gD+/AAAYAAGQAB/+AH0fQPADwPADwPADwDwPQBgNAAAAAL//gP//wPADwPADwHQDgD//AA/8AAAAAAAAAL//gP//wPDDwPDDwPDDwPADwAAAAAAAAL//gP//gPDAAPDAAPDAAPAAAAGQAB/+AD0fQPADwPCjwPDzwHz/QBy/gAAAAAAAAL//gL//gADAAADAAADAAL//gL//gAAAAAAAAL//gL//gAAAAAAeAAAvgAADwAADwL//gP//AAAAAAAAAL//gL//gAPAAA/0ADx/APAPwIABgAAAAL//gL//wAADwAADwAADwAACgAAAAL//gP6qQC/gAAH/QAAvwAv9AL9AAP//wGqqQAAAAL//gL6qQC+AAAP0AAB/AL//wL//gAAAAAGQAB/+AH0fQPADwPADwPADwD6vQB/9AAGQAAAAAL//gP//gPDwAPDwAH7gAD/AAAAAAAGQAB/+AH0fQPADwPAD9PAD/D6vbB/9PAGQAAAAAL//gP//gPDgAPD0ALr/AD/LwAUAgAUFAD+PALvDwPHDwPDjwLT7gDx/AAAAALAAAPAAAPAAAP//wPqqQPAAAPAAAAAAAP/+AGqvgAADwAADwAADwL//AL/4AAAAAKAAAL+AAAv9AAAvwAB/gAv8AL9AAKAAAKQAAL/QAAf/gAAPwAv/QL+AAL/gAAL/gAAvwC/+AP9AAEAAAEABgPgLwD9+AAfwAA/8AL0fgPADwOAAAL0AAB/AAAH/wA/qQL4AAPAAAFACgPAPwPA/wPHzwPvDwP4DwLQDwAAAAAAAAv///uqqvsAAPdAAAf4AAB/0AAC/wAAC4cAAKsAAPv///Kqqp"), 32, atob("BAMFCAgLCAMEBAcHAwYDBQgFBwcHBwcHBwcEBAcHBwcLCAgICQgHCQkEBwgHCgkJCAkICAcJCAwHBwgEBQQ="), 12+(scale<<8)+(2<<16)); - return this; -}; - -/* Set variables to get screen width, height and center points */ - -let W = g.getWidth(); -let H = g.getHeight(); -let cx = W/2; -let cy = H/2; -let Timeout; - -Bangle.loadWidgets(); - -/* Custom version of Bangle.drawWidgets (does not clear the widget areas) Thanks to rozek */ - -Bangle.drawWidgets = function () { - var w = g.getWidth(), h = g.getHeight(); - - var pos = { - tl:{x:0, y:0, r:0, c:0}, // if r==1, we're right->left - tr:{x:w-1, y:0, r:1, c:0}, - bl:{x:0, y:h-24, r:0, c:0}, - br:{x:w-1, y:h-24, r:1, c:0} - }; - - if (global.WIDGETS) { - for (var wd of WIDGETS) { - var p = pos[wd.area]; - if (!p) continue; - - wd.x = p.x - p.r*wd.width; - wd.y = p.y; - - p.x += wd.width*(1-2*p.r); - p.c++; - } - - g.reset(); // also loads the current theme - - try { - for (var wd of WIDGETS) { - g.setClipRect(wd.x,wd.y, wd.x+wd.width-1,23); - wd.draw(wd); - } - } catch (e) { print(e); } - - g.reset(); // clears the clipping rectangle! - } - }; - -/* Draws the clock hands and date */ - -function drawHands() { - let d = new Date(); - - let hour = d.getHours() % 12; - let min = d.getMinutes(); - let sec = d.getSeconds(); - - let twoPi = 2*Math.PI; - let Pi = Math.PI; - - let hourAngle = (hour+(min/60))/12 * twoPi - Pi; - let minAngle = (min/60) * twoPi - Pi; - let secAngle = (sec/60) * twoPi - Pi; - - g.setFontWorkSans(); - g.setColor(g.theme.bg); - g.setFontAlign(0,0,0); - g.drawString(d.getDate(),162,90); - g.setFontWorkSansSmall(); - let weekDay = d.toString().split(" "); - if (weekDay[0] == "Sat"){g.setColor(0,0,1);} - else if (weekDay[0] == "Sun"){g.setColor(1,0,0);} - else {g.setColor(g.theme.bg);} - g.drawString(weekDay[0].toUpperCase(), 137, 90); - - handLayers = [ - {x:cx, - y:cy, - image:imgHour, - rotate:hourAngle, - center:true - }, - {x:cx, - y:cy, - image:imgMin, - rotate:minAngle, - center:true - }, - {x:cx, - y:cy, - image:imgSec, - rotate:secAngle, - center:true - }]; - - g.setColor(g.theme.fg); - g.drawImages(handLayers); -} - -function drawBackground() { - g.clear(1); - g.setBgColor(g.theme.bg); - g.setColor(g.theme.fg); - bgLayer = [ - {x:cx, - y:cy, - image:imgBg, - center:true - }]; - g.drawImages(bgLayer); - g.reset(); -} - -/* Refresh the display every second */ - -function displayRefresh() { - g.clear(true); - drawBackground(); - drawHands(); - Bangle.drawWidgets(); - - let Pause = 1000 - (Date.now() % 1000); - Timeout = setTimeout(displayRefresh,Pause); -} - -Bangle.on('lcdPower', (on) => { - if (on) { - if (Timeout != null) { clearTimeout(Timeout); Timeout = undefined;} - displayRefresh(); - } -}); - -Bangle.setUI("clock"); -// load widgets after 'setUI' so they're aware there is a clock active -Bangle.loadWidgets(); -displayRefresh(); diff --git a/apps/seiko_5actus/seiko-5actus.png b/apps/seiko_5actus/seiko-5actus.png deleted file mode 100644 index 73f1b8164..000000000 Binary files a/apps/seiko_5actus/seiko-5actus.png and /dev/null differ