forked from FOSS/BangleApps
80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
var scale;
|
|
var screen;
|
|
var center;
|
|
var buf;
|
|
var img;
|
|
|
|
function format(value) {
|
|
return ("0" + value).substr(-2);
|
|
}
|
|
|
|
function renderEllipse(g) {
|
|
g.fillEllipse(center.x - 5 * scale, center.y - 70 * scale, center.x + 160 * scale, center.y + 90 * scale);
|
|
}
|
|
|
|
function renderText(g, date) {
|
|
const hour = date.getHours() - (this.is12Hour && date.getHours() > 12 ? 12 : 0);
|
|
const month = date.getMonth() + 1;
|
|
|
|
const monthName = require("date_utils").month(month, 1);
|
|
const dayName = require("date_utils").dow(date.getDay(), 1);
|
|
|
|
g.setFontAlign(1, 0).setFont("Vector", 90 * scale);
|
|
g.drawString(format(hour), center.x + 32 * scale, center.y - 31 * scale);
|
|
g.drawString(format(date.getMinutes()), center.x + 32 * scale, center.y + 46 * scale);
|
|
|
|
g.setFontAlign(1, 0).setFont("Vector", 16 * scale);
|
|
g.drawString(date.getFullYear(), center.x + 80 * scale, center.y - 42 * scale);
|
|
g.drawString(format(month), center.x + 80 * scale, center.y - 26 * scale);
|
|
g.drawString(format(date.getDate()), center.x + 80 * scale, center.y - 10 * scale);
|
|
g.drawString(monthName, center.x + 80 * scale, center.y + 44 * scale);
|
|
g.drawString(dayName, center.x + 80 * scale, center.y + 60 * scale);
|
|
}
|
|
|
|
const ClockFace = require("ClockFace");
|
|
const clock = new ClockFace({
|
|
init: function () {
|
|
const appRect = Bangle.appRect;
|
|
|
|
screen = {
|
|
width: appRect.w,
|
|
height: appRect.h
|
|
};
|
|
|
|
center = {
|
|
x: screen.width / 2,
|
|
y: screen.height / 2
|
|
};
|
|
|
|
buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, { msb: true });
|
|
|
|
scale = g.getWidth() / screen.width;
|
|
|
|
img = {
|
|
width: screen.width,
|
|
height: screen.height,
|
|
transparent: 0,
|
|
bpp: 1,
|
|
buffer: buf.buffer
|
|
};
|
|
|
|
// default to RED (see settings.js)
|
|
// don't use || to default because 0 is a valid color
|
|
this.color = this.color === undefined ? 63488 : this.color;
|
|
},
|
|
draw: function (date) {
|
|
// render outside text with ellipse
|
|
buf.clear();
|
|
renderText(buf.setColor(1), date);
|
|
renderEllipse(buf.setColor(0));
|
|
g.setColor(this.color).drawImage(img, 0, 24);
|
|
|
|
// render ellipse with inside text
|
|
buf.clear();
|
|
renderEllipse(buf.setColor(1));
|
|
renderText(buf.setColor(0), date);
|
|
g.setColor(this.color).drawImage(img, 0, 24);
|
|
},
|
|
settingsFile: "ffcniftyb.json"
|
|
});
|
|
clock.start(); |