1
0
Fork 0

support V1 and V2

recognize the device we are running on, load related background image and set fitting values
master
Vingelar 2021-10-07 10:05:18 +02:00 committed by GitHub
parent 9b8a01c23d
commit 1f032c1c87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 146 additions and 38 deletions

View File

@ -26,22 +26,73 @@ var MX = 10, MY = 40 + TIME_Y_OFFSET;
var SX = 10, SY = 80 + TIME_Y_OFFSET; var SX = 10, SY = 80 + TIME_Y_OFFSET;
var BT_X = 30, BT_Y = 10; var BT_X = 30, BT_Y = 10;
var DX = 160, DY = 148; var DX = 160, DY = 148;
var screen_size_x = 176;
var screen_size_y = 176;
*/ */
const V2_X_STEP = 26;
const V2_Y_STEP = 34;
const V2_TIME_Y_OFFSET = 30;
const V2_HX = 35;
const V2_HY = 0 + V2_TIME_Y_OFFSET;
const V2_MX = 10;
const V2_MY = 40 + V2_TIME_Y_OFFSET;
const V2_SX = 10;
const V2_SY = 80 + V2_TIME_Y_OFFSET;
const V2_BT_X = 30;
const V2_BT_Y = 10;
const V2_DX = 160;
const V2_DY = 148;
const V2_BAT_POS_X = 150;
const V2_BAT_POS_Y = 16;
const V2_BAT_SIZE_X = 2;
const V2_BAT_SIZE_Y = 4;
const V2_SCREEN_SIZE_X = 176;
const V2_SCREEN_SIZE_Y = 176;
const V2_BACKGROUND_IMAGE = "Background176_center.png";
/* Bangle 1: 240 x 240 */ /* Bangle 1: 240 x 240 */
var x_step = 35; const V1_X_STEP = 35;
var y_step = 46; const V1_Y_STEP = 46;
var TIME_Y_OFFSET = 41; const V1_TIME_Y_OFFSET = 41;
var HX = 48, HY = 0 + TIME_Y_OFFSET; const V1_HX = 48;
var MX = 14, MY = 55 + TIME_Y_OFFSET; const V1_HY = 0 + V1_TIME_Y_OFFSET;
var SX = 14, SY = 110 + TIME_Y_OFFSET; const V1_MX = 14;
var BT_X = 41, BT_Y = 14; const V1_MY = 55 + V1_TIME_Y_OFFSET;
const V1_SX = 14;
const V1_SY = 110 + V1_TIME_Y_OFFSET;
const V1_BT_X = 41;
const V1_BT_Y = 14;
//var BT_X = 20, BT_Y = 14; //var BT_X = 20, BT_Y = 14;
var DX = 160, DY = 205; const V1_DX = 160;
const V1_DY = 205;
var BAT_POS_X = 175, BAT_POS_Y = 21; const V1_BAT_POS_X = 175;
var BAT_SIZE_X = 3, BAT_SIZE_Y = 5; const V1_BAT_POS_Y = 21;
const V1_BAT_SIZE_X = 3;
const V1_BAT_SIZE_Y = 5;
const V1_SCREEN_SIZE_X = 240;
const V1_SCREEN_SIZE_Y = 240;
const V1_BACKGROUND_IMAGE = "Background240_center.png";
/* runtime settings */
var x_step = 0;
var y_step = 0;
var time_y_offset = 0;
var hx = 0, hy = 0;
var mx = 0, my = 0;
var sx = 0, sy = 0;
var bt_x = 0, bt_y = 0;
var dx = 0, dy = 0;
var bat_pos_x, bat_pos_y, bat_size_x, bat_size_y;
var backgroundImage = "";
var screen_size_x = 0;
var screen_size_y = 0;
/* global variables */ /* global variables */
@ -49,14 +100,10 @@ var BAT_SIZE_X = 3, BAT_SIZE_Y = 5;
//var screen_size_x = 176; //var screen_size_x = 176;
//var screen_size_y = 176; //var screen_size_y = 176;
var screen_size_x = 240;
var screen_size_y = 240;
var showDateTime = 2; /* show noting, time or date */ var showDateTime = 2; /* show noting, time or date */
var cg = Graphics.createArrayBuffer( var cg;
screen_size_x,screen_size_y, 1, {msb:true}); var cgimg;
var cgimg = {width:screen_size_x, height:screen_size_y, bpp:1,
transparent:0, buffer:cg.buffer};
/* local functions */ /* local functions */
@ -103,9 +150,9 @@ function drawBinary(gfx, hour, minute, second) {
if(hour > 12) { if(hour > 12) {
hour -= 12; /* we use for bit for hours so we only display 12 hours*/ hour -= 12; /* we use for bit for hours so we only display 12 hours*/
} }
drawSquare(gfx, HX, HY, hour, 4); /* set hour */ drawSquare(gfx, hx, hy, hour, 4); /* set hour */
drawSquare(gfx, MX, MY, minute, 6); /* set minute */ drawSquare(gfx, mx, my, minute, 6); /* set minute */
drawSquare(gfx, SX, SY, second, 6); /* set second */ drawSquare(gfx, sx, sy, second, 6); /* set second */
} }
/** /**
@ -145,7 +192,7 @@ function drawDate(gfx, d) {
gfx.setFontAlign(0,-1); // align right bottom gfx.setFontAlign(0,-1); // align right bottom
gfx.setFont("5x9Numeric7Seg",2); /* draw the current time font */ gfx.setFont("5x9Numeric7Seg",2); /* draw the current time font */
gfx.drawString(dateString, gfx.getWidth() / 2, DY, false /*clear background*/); gfx.drawString(dateString, gfx.getWidth() / 2, dy, false /*clear background*/);
// gfx.setFont("6x8",2); // gfx.setFont("6x8",2);
// var date = locale.date(d, false); // var date = locale.date(d, false);
@ -187,7 +234,7 @@ function updateVTime() {
* @param level: current battery level * @param level: current battery level
*/ */
function drawBattery(gfx, level) { function drawBattery(gfx, level) {
var pos_x = BAT_POS_X + 5 * (BAT_SIZE_X + 2); var pos_x = bat_pos_x + 5 * (bat_size_x + 2);
var stepLevel = Math.round((level + 10) / 20); var stepLevel = Math.round((level + 10) / 20);
/* /*
if(stepLevel < 2) { if(stepLevel < 2) {
@ -198,11 +245,10 @@ function drawBattery(gfx, level) {
gfx.setColor(4); gfx.setColor(4);
} }
*/ */
console.log("stepLevel: " + stepLevel);
for(i = 0; i < stepLevel; i++) { for(i = 0; i < stepLevel; i++) {
pos_x -= BAT_SIZE_X + 2; pos_x -= bat_size_x + 2;
gfx.fillRect(pos_x, BAT_POS_Y, gfx.fillRect(pos_x, bat_pos_y,
pos_x + BAT_SIZE_X, BAT_POS_Y + BAT_SIZE_Y); pos_x + bat_size_x, bat_pos_y + bat_size_y);
} }
} }
@ -215,11 +261,66 @@ function drawBattery(gfx, level) {
* @param level: current battery level * @param level: current battery level
*/ */
function drawBT(status) { function drawBT(status) {
}
function setRuntimeValues(resolution) {
if(240 == resolution) {
x_step = V1_X_STEP;
y_step = V1_Y_STEP;
time_y_offset = V1_TIME_Y_OFFSET;
hx = V1_HX;
hy = V1_HY;
mx = V1_MX;
my = V1_MY;
sx = V1_SX;
sy = V1_SY;
bt_x = V1_BT_X;
bt_y = V1_BT_Y;
dx = V1_DX;
dy = V1_DY;
screen_size_x = V1_SCREEN_SIZE_X;
screen_size_y = V1_SCREEN_SIZE_Y;
backgroundImage = V1_BACKGROUND_IMAGE;
// TODO: set battery stuff
} else {
x_step = V2_X_STEP;
y_step = V2_Y_STEP;
time_y_offset = V2_TIME_Y_OFFSET;
hx = V2_HX;
hy = V2_HY;
mx = V2_MX;
my = V2_MY;
sx = V2_SX;
sy = V2_SY;
bt_x = V2_BT_X;
bt_y = V2_BT_Y;
dx = V2_DX;
dy = V2_DY;
screen_size_x = V2_SCREEN_SIZE_X;
screen_size_y = V2_SCREEN_SIZE_Y;
backgroundImage = V2_BACKGROUND_IMAGE;
// TODO: set battery stuff
}
cg = Graphics.createArrayBuffer(
screen_size_x,screen_size_y, 1, {msb:true});
cgimg = {width:screen_size_x, height:screen_size_y, bpp:1,
transparent:0, buffer:cg.buffer};
} }
var hour = 0, minute = 1, second = 50; var hour = 0, minute = 1, second = 50;
var batVLevel = 0; var batVLevel = 0;
function draw() {
function draw() {
if (!Bangle.isLCDOn()) {return;} // no drawing, also no new update scheduled
var d = new Date(); var d = new Date();
var h = d.getHours(), m = d.getMinutes(), s = d.getSeconds(); var h = d.getHours(), m = d.getMinutes(), s = d.getSeconds();
// gfx2(hour, minute, second); // gfx2(hour, minute, second);
@ -237,7 +338,6 @@ function draw() {
default: default:
/* do nothing */ /* do nothing */
} }
console.log("BatLevel: " + batVLevel);
drawBattery(cg, batVLevel /*E.getBattery()*/); drawBattery(cg, batVLevel /*E.getBattery()*/);
drawBT(1); drawBT(1);
@ -248,17 +348,25 @@ function draw() {
updateVTime(); updateVTime();
g.clear(); g.clear();
g.drawImages([{image:cgimg}, g.drawImages([{image:cgimg},
// {image:require("Storage").read("Background176_center.png")}, {image:require("Storage").read(backgroundImage)},
{image:require("Storage").read("Background240_center.png")}, { x:bt_x, y:bt_y, rotate: 0, image:require("Storage").read("bt-icon.png")},
{ x:BT_X, y:BT_Y, rotate: 0, image:require("Storage").read("bt-icon.png")},
]); ]);
const millis = d.getMilliseconds();
setTimeout(draw, 1000-millis);
} }
g.clear(); // Show launcher when button pressed
setInterval(draw, 1000); Bangle.setUI("clock");
var x_size = g.getWidth(); setRuntimeValues(g.getWidth());
console.log("Startup: X-W = " + x_size); Bangle.on("lcdPower", function(on) {
console.log("BatLevel: " + E.getBattery()); if (on) {
draw();
}
});
g.reset().clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
//setInterval(draw, 1000);
//var x_size = g.getWidth();
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"}); setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
draw();