Nifty Clock B - Some code refactoring

pull/863/head
Filipe Fradique 2021-10-26 01:27:05 +01:00
parent 496cdbfa79
commit c895040055
6 changed files with 63 additions and 86 deletions

View File

@ -4009,6 +4009,23 @@
{"name":"ffcniftya.img","url":"app-icon.js","evaluate":true}
]
},
{
"id": "ffcniftyb",
"name": "Nifty-B Clock",
"version": "0.02",
"description": "A nifty clock (series B) with time, date and color configuration",
"icon": "app.png",
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS","BANGLEJS2"],
"allow_emulator": true,
"storage": [
{"name":"ffcniftyb.app.js","url":"app.js"},
{"name":"ffcniftyb.img","url":"app-icon.js","evaluate":true},
{"name":"ffcniftyb.settings.js","url":"settings.js"}
],
"data": [{"name":"ffcniftyb.json"}]
},
{
"id": "stopwatch",
"name": "Stopwatch Touch",

View File

@ -1 +1,2 @@
0.01: New Clock Nifty B
0.02: Added configuration

View File

@ -1 +1 @@
require("heatshrink").decompress(atob("mEwwkEIf4A5gX/+AGEn//mIWLgP/C4gGCAAMgC5UvC4sDC4YICkIhBgMQiEBE4Uxn4XDj//iEAn/yA4ICBgUikEikYXBBAIXEn/xJYURAYMygERkQHBiYLBKYIXF+AVDC4czgUSmIXBCQgED+ZeBR4YXBLYICDC5CPGC4IAIC40zmaPDC4MSLQQXK+ayCR4QXCiRoEC44ECh4bCC4MTiTDBC6ZHOC5B3NLYcvC4kBgL5BAAUikT+BfIIrB/8ykf/eYQXBkUTI4cBW4YQCgQGDmAXDkJfEC46GBAoJKCR4geCAAMRAAZRDAoIODO4UBPRIAJR5QXWgKNCTApNDC5Mv/6/DAwR3GAAyHCC4anJIo3/+bvEa4Uia4oXHkEvC4cvIgUf+YXKHYIvEAgcPC5QSGC5UBSwYXJLYQXFkUhgABBC5Ef/4mBl4XEmETmIXKgaXBmYCBC4cTkMxiQXJS4IACL4p3MgESCwJHFR5oxCiB3FkERC5cSToQXFmUyiAZFR48Bn7zCAQMjkfykQkBN4n/XgKPBAAQgCUQIfBUwYXHFgIGCdI4XDmYADmIIEkAWJAH4A4A=="))
require("heatshrink").decompress(atob("mEwwkB/4A/AH4ARgMRBA3xBBIJCAYIFDAAYHGCAYJBDYQABj4PD+AXFCwgXGCAg9ECwwJBJQooGCxAXCIYQpBAgg9IC5yPCCw4XKBYIsFPwUBXQQXHAYREIF5ZEC+MfWQYXODQYTGC5ZDEOw0QMAIXMPggvSC44vRL5b8EAYIACC5i0FCwaOBC5C0DA4ZLCC5hfC/4DBIwwXKCInwgAWEKIwXJAA4XXCxYXCEwR2EgJeLR5LbCGRYXIAgzvKh7zGZg4XGIYisBA4JJCC6B5DAoYXWF6xfRC4fwAgMBC6cBU5I6CC5AECCo0QJwQXJaZJHMEYR1JC5QKBXo8QC4oCBAZAwHgKXBTQwSDBIKmGgJ3DEYheEA4ZfJKgkPdJQXHDAQWBC44eIC4QAMDA4A=="))

View File

@ -1,7 +1,8 @@
// setTimeout(load,100);Bangle.factoryReset();
console.log('mem', process.memory().usage);
const locale = require("locale");
const is12Hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"];
const storage = require('Storage');
const is12Hour = (storage.readJSON("setting.json", 1) || {})["12hour"];
const color = (storage.readJSON("ffcniftyb.json", 1) || {})["color"] || 63488 /* red */;
/* Clock *********************************************/
@ -17,39 +18,10 @@ const center = {
y: screen.height / 2,
};
const color = g.toColor(255, 0, 0);
console.log('color', color);
function d02(value) {
return ('0' + value).substr(-2);
}
// const c = E.compiledC(`
// // void xor(int, int, int)
// void xor(int len, int *dst, int *src){
// len = len>>2;
// while (len--) {
// *dst ^= *src;
// dst++;
// src++;
// }
// }
// `);
// function combineLayers(l1, l2) {
// // const l1ptr = E.getAddressOf(l1.buffer, true);
// // const l2ptr = E.getAddressOf(l2.buffer, true);
// // if (l1ptr && l2ptr) {
// // c.xor(l1.buffer.length, l1ptr, l2ptr);
// // }
// if (l1 && l1.buffer && l2 && l2.buffer) {
// for (let i = 0; i < l1.buffer.length; i++) {
// l1.buffer[i] ^= l2.buffer[i];
// }
// }
// return l1;
// }
function renderEllipse(g) {
g.fillEllipse(center.x - 5 * scale, center.y - 70 * scale, center.x + 160 * scale, center.y + 90 * scale);
}
@ -78,15 +50,13 @@ function renderText(g) {
g.drawString(day2, center.x + 80 * scale, center.y + 60 * scale);
}
function draw() {
const s = new Date().getTime();
console.log('mem.b', process.memory().usage);
let buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
const buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
msb: true
});
let img = {
function draw() {
const img = {
width: screen.width,
height: screen.height,
transparent: 0,
@ -108,12 +78,6 @@ function draw() {
renderEllipse(buf.setColor(1));
renderText(buf.setColor(0));
g.setColor(color).drawImage(img, 0, 24);
buf = undefined;
img = undefined;
console.log('mem.e', process.memory().usage);
console.log('draw', new Date().getTime() - s);
}
@ -140,7 +104,6 @@ function startTick(run) {
g.clear();
startTick(draw);
// Stop updates when LCD is off, restart when on
Bangle.on('lcdPower', (on) => {
if (on) {
startTick(draw);
@ -149,10 +112,7 @@ Bangle.on('lcdPower', (on) => {
}
});
// Load widgets
Bangle.loadWidgets();
Bangle.drawWidgets();
// Show launcher when middle button pressed
Bangle.setUI("clock");
console.log('mem', process.memory().usage);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -2,12 +2,18 @@
const storage = require('Storage');
const SETTINGS_FILE = "ffcniftyb.json";
function load(settings) {
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
for (const key in saved) {
settings[key] = saved[key];
const colors = {
65535: 'White',
63488: 'Red',
65504: 'Yellow',
2047: 'Cyan',
2016: 'Green',
31: 'Blue',
0: 'Black',
}
return settings;
function load(settings) {
return Object.assign(settings, storage.readJSON(SETTINGS_FILE, 1) || {});
}
function save(settings) {
@ -15,36 +21,29 @@
}
const settings = load({
color: 65535,
color: 63488 /* red */,
});
function showColors() {
const saveColor = (color) => () => {
settings.color = color;
save(settings);
showSettings();
back();
};
function showMenu(items, opt) {
items[''] = opt || {};
items['< Back'] = back;
E.showMenu(items);
}
E.showMenu({
'': { 'title': 'Colors' },
'< Back': showSettings,
'White': saveColor(65535),
'Red': saveColor(63488),
'Yellow': saveColor(65504),
'Cyan': saveColor(2047),
'Green': saveColor(2016),
'Blue': saveColor(31),
'Black': saveColor(0),
})
showMenu(
Object.keys(colors).reduce((menu, color) => {
menu[colors[color]] = saveColor(color);
return menu;
}, {}),
{
title: 'Color',
selected: Object.keys(colors).indexOf(settings.color)
}
function showSettings() {
E.showMenu({
'': { 'title': 'Nifty B Clock' },
'< Back': back,
'Color': showColors,
})
}
showColors();
})
);
});