mirror of https://github.com/espruino/BangleApps
Toucher: support for b2, Pastel: added 2 new custom fonts
parent
6c221f19fe
commit
f197380547
|
@ -1478,9 +1478,9 @@
|
|||
"name": "Touch Launcher",
|
||||
"shortName":"Toucher",
|
||||
"icon": "app.png",
|
||||
"version":"0.06",
|
||||
"version":"0.07",
|
||||
"description": "Touch enable left to right launcher.",
|
||||
"tags": "tool,system,launcher",
|
||||
"tags": "tool,system,launcher,b2",
|
||||
"type":"launch",
|
||||
"data": [
|
||||
{"name":"toucher.json"}
|
||||
|
@ -3517,7 +3517,7 @@
|
|||
"name": "Pastel Clock",
|
||||
"shortName": "Pastel",
|
||||
"icon": "pastel.png",
|
||||
"version":"0.04",
|
||||
"version":"0.05",
|
||||
"description": "A Configurable clock with custom fonts and background",
|
||||
"tags": "clock,b2",
|
||||
"type":"clock",
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
0.02: Display 12 hour clock as 12:xx not 00:xx when just into PM
|
||||
0.03: Make it work with Gadgetbridge, Notifications fullscreen on a Bangle 2
|
||||
0.04: Leave space at the bottom for Chrono widget, set back option at first option
|
||||
0.05: Added 2 new fonts
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Pastel Clock - a configurable clock with custom fonts and background
|
||||
|
||||
* Designed specifically for Bangle 1 and Bangle 2
|
||||
* A choice of 5 different custom fonts
|
||||
* A choice of 7 different custom fonts
|
||||
* Supports the Light and Dark themes
|
||||
* Has a settings menu, change font, enable/disable the grid and the date display
|
||||
|
||||
|
@ -15,3 +15,6 @@ I came up with the name Pastel due to the shade of the grid background.
|
|||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
|
|
@ -47,6 +47,16 @@ var scale = 1; // size multiplier for this font
|
|||
g.setFontCustom(font, 46, widths, 58+(scale<<8)+(1<<16));
|
||||
};
|
||||
|
||||
Graphics.prototype.setFontMonoton = function(scale) {
|
||||
// Actual height 44 (43 - 0)
|
||||
g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAD+AAAAAAf8AAAAAD/ggAAAAf8HwAAAD/g/4AAAf8H/AAAD/g/4OAAf8H/B/AD/g/4P+Af8H/B/wAfg/4P+AAMH/B/wAAA/4H+AAAD/A/4AAAB4H/AAAAAA/4AAAAAH/AAAAAAP4AAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAH//gAAAAf//8AAAA/AAPgAAA8f/x8AAB4//+PAAB5+APxwABzwfwecAAzj//jnAA7n+P85gA7ngAPO4AbnH/xzsAdnP/+c3AN3PAHndgGzOAA5m4DbuAAO7MD9mAADN2Bs3AAB2bA2bAAAbNgbNgAANmwNmwAAGzYGzYAADZsDdmAADN2B+7AABuzAbMwABmbgNneAD3NgHZ3+/3MwBuc//nO4A7nB8HGYAM58AfOcAHeP/+OcABzx/8ecAAc+AA+cAAHH//8cAAB4//48AAAPg+B8AAAD+AP4AAAAP//wAAAAA/+AAAAAAAAAAAAAAAAAAABsAAAAAAA2AAAAAAAbAAAAAAANgAAAAAAGwAAAAAADf////8ABv////+AA3/////AAbAAAAAAAN/////wAG/////4ADYAAAAAABv////+AA3/////AAb/////gANgAAAAAAG/////4ADf////8AAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAADcAAAA2wBs2AADbYA2bAADtsAbZgADm2AftwAHjbAN24AHNtgGzYAPO2wDZsAPebYBs2AOeNsA2bAec22AbNge87bANmwc55tgG7c8542wD9355zbYA2Z5zztsAbODzjm2ANz/nnjbADc/nnhtgBnCPHA2wA74fPAbYAOf+OANsADj8eAG2AA8A+ADbAAP/8AAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgG6AAAAuwDdsAAG3YBs2AADZuA27AABu3A/ZgAA7dgbtwAAduwN2w2zG3YGzYbZjZsDZsNsxs2Bs2G2Y2bA2bDbMbNgbNhtmNmwNmw2zGzYG7MbdnbsD939m/d2A2Z/7PM3AbuBtwO7AOz73eeZgDc/9n+dwB3H2Y8cwAZ4HnA84AGf/5/84ADz/OP44AAeALwB4AAH/+//4AAA/+H/wAAADwAfAAAAAAAAAAAAAAAAAAAAAAAZsAAAAAB82AAAAAD+bAAAAAHzNgAAAAPjmwAAAAfHzYAAAB+P5sAAAD8fM2AAAHw+ObAAAPj8fNgAAfH4/mwAA+Ph8zYAAcfH4ZsAAA+Px82AAB8fD+bAAD4+HzNgABh8PhmwAAH4/AzYAAPx+AZsAAPD4AM2AAGHwP+bfgAfgH/NvwA/AABmwAA8AAAzYAAYAA/5t+AAAAf82/AAAAAGbAAAAAADNgAAAAAAAAAAAAAAAAAAAAAAAGAAE///ADAAGf//gBwADP//wCcABmAAADmAAz//8C7gAZ//+DMwAMwAAA3YAGf//hZsADP//xu3ABn//4zdgAzDNsNuwAZhu2GzYAMw2bDZsAGYbNhs2ADMNmw2bABmGzYbNgAzDZsdmwAZhs2M3YAMw3d+zcAGYZm+ZsADMOzgd2ABmDM883AAzB3P87AAZgZx47gAMwOcB5gAGYDn/5gADMA4/zwAAAAPADwAAAAD8fgAAAAAf/gAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAD////AAAHwAADwAAHH//8eAAHP///ngAHfgAB8wAHeH/8PcADcf//x3ADsf//+ZgBu8AADu4B2c//8zMA3d///M2AbNwAB2bgduxs2bswP2Z2/O3YGzYzbDZsDZsbths2Bs2Nmw2bA2bGzYbNgbNjZsNmwNmxs2GzYH7c2bHbsDtmbtzdmA2bM3fs3AbMHZnO7AM3BuYOZgHZAzP+dgBmAMx+cwA7gHeAcwAMgB3584AHAAc/84ABgAHHx4AAAAB4D4AAAAAf/wAAAAAD/gAAAAAAAAAAAAAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAPAGbAAAB/gDNgAAP+ABmwAD/wYAzYAf+D8AZsD/wf8AM2f8D/gAGT/gf8HgAf8D/g/wB/g/8H/AA8H/g/4MAA/8H/B+AH/g/4P+AH4H/B/wADA/4P+AAAH/B/wAAA/4P+AAAAfB/wAAAAAP+AAAAAB/wAAAAAD+AAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAGAAwAAAA/8H/gAAB//v/8AAB4B/APgADz+PP54ABn/x//OABng8eDzAB3HHOcdwA3P9z/nYA7P/d/5mAbOBmYO7ANmebvzNwP3fs392YGzc3ZmbsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNjNmNmwNmxmzGzYGzYzZjZsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNzNmNmwP2Zm7s3YDbv7M+7MBszt3OZuA3MGZwd2ANn/uf8zAGY+zn47gDvAc4A7gA78/Pj5gAOf/z/zwADj8cPjwAA+A/gHgAAH/9//gAAA/4P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAD/4AAAAAHw/AAAAAHADwADAAHP8cABgAHf/nAA4AHeB5gDuAHcfOYAzADc/7uBdwBs8ezBmYBu4DdgbsA2Z924s3AbN+bM3bgfsxt2duwNm4zbG3YGzYZtjZsDZsM2xs2Bs2GbY2bA2bDNsbNgbNhv2NmwP242zO3YHbszbm7sBs3AAHZuA2Z///M2Abuf//O7AGzh/8ObgDc8AA+dgB3P//+dwAdx//8cwAGeAAA8wADn///44AA8///54AAPgAAB4AAB+AAPwAAAP///gAAAA//+AAAAAAAAAAAAAAAAAAAAAAAAAAAADbBmwAAABtgzYAAAA2wZsAAAAbYM2AAAANsGbAAAAG2DNgAAADbBmwAAABtgzYAAAA2wZsAAAAAAAAAAAAAAAAAAA="), 46, atob("DRYpFR0eHiImHygmDQ=="), 49+(scale<<8)+(1<<16));
|
||||
}
|
||||
|
||||
Graphics.prototype.setFontSpecialElite = function(scale) {
|
||||
// Actual height 40 (39 - 0)
|
||||
g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAYAAAAAAAfwAAAAAAP/AAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAAv8AAAAAAN6AAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAfAAAAAAAPwAAAAAAP8AAAAAAH+AAAAAAH+AAAAAAD+AAAAAAD/AAAAAAD/AAAAAAB/AAAAAAB/AAAAAAB/AAAAAAB/gAAAAAB/gAAAAAB/gAAAAAA/gAAAAAB/wAAAAAA/4AAAAAA/wAAAAAA/4AAAAAA/4AAAAAAf8AAAAAAP8AAAAAAD8AAAAAAA8AAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAP///gAAAH/9/+AAAD/gAf4AAB/AAB+AAA/AAAHwAAPAAAA+AADgAAAPgAAwAAAD4AAcAAAAfAAHAAAAHwABwAAAB8AA4AAAAfAAOAAAAHwABwAAAB8AAcAAAA/AAHgAAAPgAB+AAAH4AAPgAAD8AAD+AAD+AAA/4Af/AAAB////AAAAP///wAAAAP//gAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAOAAAAHAADgAAAD4AB4AAAA+AAeAAAAPgAHgAAAD4AB4AAAAeAAeAAAAHgAHgAAAB4AB4AAAAcAAeAAAAPAAH4AAP/wAB/////+AAf/////gAH/////4AB///+/+AAAAQAAPgAAAAAAB4AAAAAAAeAAAAAAAHgAAAAAAD4AAAAAAA+AAAAAAAPgAAAAAADwAAAAAAA+AAAAAAAPgAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAcAAAB+AAfwAAA/wAf/AAA/8Af/wAAf/AP/8AAGPwP//AADh8D48AAA4OB8OAAAOAAfDgAAHAAPg4AABwADwPAAAcAB8DwAAHAAeAeAABwAHAHgAAcADwB8AAHAB4APgAB4A+AB4AAPAfAAeAAD4fgADgAAf/4AA4AAD/8AAeAAAf+AAfAAAB8AAPwAAAAAAD4AAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAAf8AAB/wAH/wAAf8AB/8AAH+AAffgAB4AcDx4AAcAPAAfAAHAPwAHwABwHwAA8AAcB+AAPAAHA/gADwABw/4AA8AAcf+AAPAAHP/gAHwABz74AB8AAf8fAA/AAH8DwAPgAD/A8AHwAA/gHwP8AAPwA//+AADwAH//AAAAAA//gAAAAAD/wAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAP8AAAAAAD/AAAAAAD/wAAAAAD/8AAAAAB/PAAAAAA/jwAAAAAfg8AAAAAPwPAAAAAH4DwAAAAD4A8HAAAD8APBwAAB+ADw8AAA+AA8PAAA/AAPDgAAPgADw8AAHwAB8/AAD+B///wAA/////8AAP/////AAB+f///wAAAAAHx8AAAAAB8PAAAAAAPDwAAAAADw8AAAAAA4PAAAAAAODwAAAAADgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAB/gAAH//wf8AAB//+H/gAAf//h/4AAHJ/wf/AABwD4D/4AAeA+AAeAAHgPAAHgAB4DwAB4AAeA4AAeAAHgOAAHgAA4DgAB4AAOA8AAeAADgPAAHgAB4D4ADwAAeAeAB4AAHAHwAeAABgAfAPgAAYAD8fgAAAAA//wAAAAAH/4AAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAA//wAAAAB///AAAAB////AAAB/7//wAAA/AfB+AAAfAPAPwAAPgHgB+AAHwBwAPgAB4A8AB8AAeAPAAfAAPADwAHwADgA8AB8AA8APAAfAAPADwAHwADwA8AB8AA8AHgA+AAP8B4APgAD/wfAH4AA/8D4D8AAH/A///AAB/wH//gAAH8A//wAAA8AH/4AAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAB/4AAAAAA/8AAAAAAP+AAAAAAD+AAAAAAAeAAAAAAAHAAAAAAADwAAAAAAB8AAAAAAAfAAAAAAAHwAAA/8AD+AAB//AA/gAB//wAP4AB//gAB+AB//AAAfwB//AAAH8A/wAAAA/A/wAAAAHw/wAAAAB8/wAAAAAffwAAAAAP/wAAAAAD/4AAAAAA/4AAAAAAP8AAAAAAD4AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAP/wAAAH8H/+AAAH/z//wAAD////+AAB///h/gAA/B/gH4AAPAP4A/AAHwB8AHwAB4APAB8AAeADgAfAAHgA4ADwABwAOAA8AAcADgAPAAHAA4ADwAB4AeAA8AAfAHwAPAADwB8AHgAA+A/gD4AAPgP4B+AAB+P/h/gAAP////wAAB/8f/4AAAP8D/8AAAAAAf8AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAA/4APAAAA//gH4AAAP/8D/gAAP4Pg/8AADwB8P/AAB4AfD/4AAeAD4d+AAHAA+AfwADwAHgH8AA4AA8A/AAOAAPAPgADgADwD4AA8AA4B+AAPAAeAfAAB4AHgHgAAeADwD4AAHwA8A8AAA+AfA/AAAHp/h/gAAA3//+gAAAB//+gAAAAd//gAAAACf/wAAAAAH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAABwB/AAAAB/A/8AAAA/wf/gAAAP+H/4AAAH/h/+AAAB/8f/gAAAP+H/4AAAD/h/+AAAAfwf/gAAAH8C/wAAAAAA3oAAAAAABwAAAAAAAAAAAAAAAAAAAA=="), 46, atob("ERwfHB0cHxsdHB4dEQ=="), 50+(scale<<8)+(1<<16));
|
||||
}
|
||||
|
||||
const SETTINGS_FILE = "pastel.json";
|
||||
let settings = undefined;
|
||||
|
||||
|
@ -113,6 +123,10 @@ function draw() {
|
|||
g.setFontCabinSketch();
|
||||
else if (settings.font == "Orbitron")
|
||||
g.setFontOrbitron();
|
||||
else if (settings.font == "Monoton")
|
||||
g.setFontMonoton();
|
||||
else if (settings.font == "Elite")
|
||||
g.setFontSpecialElite();
|
||||
else
|
||||
g.setFontLato();
|
||||
|
||||
|
|
|
@ -22,14 +22,14 @@
|
|||
storage.write(SETTINGS_FILE, settings)
|
||||
}
|
||||
|
||||
var font_options = ["Lato","Architect","GochiHand","CabinSketch","Orbitron"];
|
||||
var font_options = ["Lato","Architect","GochiHand","CabinSketch","Orbitron","Monoton","Elite"];
|
||||
|
||||
E.showMenu({
|
||||
'': { 'title': 'Pastel Clock' },
|
||||
'< Back': back,
|
||||
'Font': {
|
||||
value: 0 | font_options.indexOf(s.font),
|
||||
min: 0, max: 4,
|
||||
min: 0, max: 6,
|
||||
format: v => font_options[v],
|
||||
onchange: v => {
|
||||
s.font = font_options[v];
|
||||
|
|
|
@ -3,4 +3,5 @@
|
|||
0.03: Close launcher when lcd turn off
|
||||
0.04: Complete rewrite to add animation and loop ( issue #210 )
|
||||
0.05: Improve perf
|
||||
0.06: Complete rewrite in 80x80, better perf, add settings
|
||||
0.06: Complete rewrite in 80x80, better perf, add settings
|
||||
0.07: Added suppport for Bangle 2, added README file
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
# Toucher - A touch based launcher, swipe left, switch right, tap to launch
|
||||
|
||||
* Designed specifically for Bangle 1 and Bangle 2
|
||||
|
||||
## Installation
|
||||
- Use the App loader to install toucher
|
||||
- Then delete the existing launcher
|
||||
- When you restart the new launcher will be loaded
|
||||
- To return to the default launcher, delete toucher and install the default launcher.
|
||||
|
||||
## Bangle 1
|
||||
In the settings menu 'Low Res' refers to setting the Bangle 1 screen into 80x80 mode.
|
||||
This significantly improves the animation performance.
|
||||
|
||||
## Bangle 2
|
||||
The Hires/Lowres settings is ignored.
|
||||
Touch the top third of the screen to launch the selected app.
|
||||
Press button 1 to launch the selected app.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
|
@ -7,8 +7,11 @@ let settings = Storage.readJSON(filename,1) || {
|
|||
debug: false
|
||||
};
|
||||
|
||||
if(!settings.highres) Bangle.setLCDMode("80x80");
|
||||
else Bangle.setLCDMode();
|
||||
// this means that setFont('6x8',1) is actually setFont('6x8',3)
|
||||
if (process.env.HWVERSION == 1) {
|
||||
if(!settings.highres) Bangle.setLCDMode("80x80");
|
||||
else Bangle.setLCDMode();
|
||||
}
|
||||
|
||||
g.clear();
|
||||
g.flip();
|
||||
|
@ -23,7 +26,7 @@ const ORIGINAL_ICON_SIZE = 48;
|
|||
const STATE = {
|
||||
settings_open: false,
|
||||
index: 0,
|
||||
target: 240,
|
||||
target: g.getWidth(),
|
||||
offset: 0
|
||||
};
|
||||
|
||||
|
@ -63,7 +66,7 @@ const APPS = getApps();
|
|||
|
||||
function noIcon(x, y, scale){
|
||||
if(scale < 0.2) return;
|
||||
g.setColor(scale, scale, scale);
|
||||
g.setColor(g.theme.fg);
|
||||
g.setFontAlign(0,0);
|
||||
g.setFont('6x8',settings.highres ? 6:3);
|
||||
g.drawString('x_x', x+1.5, y);
|
||||
|
@ -81,23 +84,24 @@ function render(){
|
|||
g.clear();
|
||||
const visibleApps = APPS.filter(app => app.x >= STATE.offset-HALF && app.x <= STATE.offset+WIDTH-HALF );
|
||||
|
||||
let cycle = 0;
|
||||
let lastCycle = visibleApps.length;
|
||||
|
||||
visibleApps.forEach(app => {
|
||||
|
||||
const x = app.x+HALF-STATE.offset;
|
||||
const y = HALF - (HALF*0.3);
|
||||
cycle++;
|
||||
const x = app.x + HALF - STATE.offset;
|
||||
const y = HALF;
|
||||
|
||||
let dist = HALF - x;
|
||||
if(dist < 0) dist *= -1;
|
||||
|
||||
const scale = 1 - (dist / HALF);
|
||||
|
||||
if(!scale) return;
|
||||
|
||||
if(app.special){
|
||||
const font = settings.highres ? '6x8' : '4x6';
|
||||
const fontSize = settings.highres ? 2 : 1;
|
||||
g.setFont(font, fontSize);
|
||||
g.setColor(scale,scale,scale);
|
||||
const fontSize = (process.env.HWVERSION == 2) ? 4 : (settings.highres ? 6 : 2);
|
||||
g.setFont('6x8', fontSize);
|
||||
g.setColor(g.theme.fg);
|
||||
g.setFontAlign(0,0);
|
||||
g.drawString(app.name, HALF, HALF);
|
||||
return;
|
||||
|
@ -111,26 +115,69 @@ function render(){
|
|||
if(icon){
|
||||
icons[app.name] = icon;
|
||||
try {
|
||||
const rescale = settings.highres ? scale*ORIGINAL_ICON_SIZE : (scale*(ORIGINAL_ICON_SIZE/2));
|
||||
const imageScale = settings.highres ? scale*2 : scale;
|
||||
let rescale;
|
||||
let imageScale;
|
||||
|
||||
if (process.env.HWVERSION == 1) {
|
||||
// on a bangle 1 !highres means 80x80
|
||||
rescale = settings.highres ? scale*ORIGINAL_ICON_SIZE : (scale*(ORIGINAL_ICON_SIZE/2));
|
||||
imageScale = settings.highres ? scale*2 : scale;
|
||||
} else {
|
||||
// !highres mode is meaningless on a bangle 2 at present
|
||||
rescale = 1.25*scale*ORIGINAL_ICON_SIZE;
|
||||
imageScale = 2.5*scale;
|
||||
}
|
||||
|
||||
g.drawImage(icon, x-rescale, y-rescale, { scale: imageScale });
|
||||
} catch(e){
|
||||
} catch(e) {
|
||||
noIcon(x, y, scale);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
noIcon(x, y, scale);
|
||||
}
|
||||
|
||||
//draw text
|
||||
g.setColor(scale,scale,scale);
|
||||
if(scale > 0.1){
|
||||
const font = settings.highres ? '6x8': '4x6';
|
||||
const fontSize = settings.highres ? 2 : 1;
|
||||
g.setFont(font, fontSize);
|
||||
g.setFontAlign(0,0);
|
||||
g.drawString(app.name, HALF, HEIGHT/4*3);
|
||||
}
|
||||
g.setColor(g.theme.fg);
|
||||
|
||||
if (cycle == 2 && scale > 0.1) {
|
||||
const fontSize = (process.env.HWVERSION == 2) ? 2 : 1;
|
||||
if (process.env.HWVERSION == 1) {
|
||||
fontSize = (settings.highres) ? 3 : 1;
|
||||
}
|
||||
|
||||
if (app.name.length <= 12) {
|
||||
g.setFont("6x8", fontSize);
|
||||
g.setFontAlign(0,1);
|
||||
g.drawString(app.name, HALF, HEIGHT);
|
||||
} else {
|
||||
// some app names are too long for one line
|
||||
var name = app.name;
|
||||
var first = name.substring(0, name.indexOf(" "));
|
||||
var last = name.substring(name.indexOf(" ") + 1, name.length);
|
||||
|
||||
// all this to handle long names like
|
||||
// Simple 7 Segment Clock
|
||||
if (last.length > 12 && process.env.HWVERSION == 1) {
|
||||
g.setFont((settings.highres ? "6x8" : "4x6"),(settings.highres ? 2 : 1) );
|
||||
} else {
|
||||
g.setFont("6x8", fontSize);
|
||||
}
|
||||
|
||||
g.setFontAlign(0,-1);
|
||||
g.drawString(first, HALF, 0);
|
||||
|
||||
if (last.length > 12 && process.env.HWVERSION == 1) {
|
||||
g.setFont((settings.highres ? "6x8" : "4x6"),(settings.highres ? 2 : 1) );
|
||||
} else {
|
||||
g.setFont("6x8", fontSize);
|
||||
}
|
||||
|
||||
g.setFontAlign(0,1);
|
||||
g.drawString(last, HALF, HEIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if(settings.highres){
|
||||
const type = app.type ? app.type : 'App';
|
||||
const version = app.version ? app.version : '0.00';
|
||||
|
@ -138,18 +185,21 @@ function render(){
|
|||
g.setFontAlign(0,1);
|
||||
g.setFont('6x8', 1.5);
|
||||
g.setColor(scale,scale,scale);
|
||||
g.drawString(info, HALF, 215, { scale: scale });
|
||||
g.drawString(info, HALF, HEIGHT/8*7, { scale: scale });
|
||||
}
|
||||
*/
|
||||
|
||||
});
|
||||
|
||||
const duration = Math.floor(Date.now()-start);
|
||||
if(settings.debug){
|
||||
g.setFontAlign(0,1);
|
||||
g.setColor(0, 1, 0);
|
||||
const fontSize = settings.highres ? 2 : 1;
|
||||
g.setFont('4x6',fontSize);
|
||||
g.drawString('Render: '+duration+'ms', HALF, HEIGHT);
|
||||
g.setColor(g.theme.fgH);
|
||||
const fontSize = (process.env.HWVERSION == 2) ? 2 : (settings.highres ? 2 : 1);
|
||||
g.setFont(((process.env.HWVERSION == 2) ? '6x8' : (settings.highres ? '6x8' :'4x6')), fontSize);
|
||||
// steal the bottom line, and print the duration
|
||||
g.clearRect(0, HEIGHT - (process.env.HWVERSION == 1 && !settings.highres ? 8 : 24), WIDTH, HEIGHT);
|
||||
g.drawString('Render: '+duration+' ms', HALF, HEIGHT);
|
||||
}
|
||||
g.flip();
|
||||
if(STATE.offset == STATE.target) return;
|
||||
|
@ -202,7 +252,7 @@ function run(){
|
|||
E.showMessage("App Source\nNot found");
|
||||
setTimeout(render, 2000);
|
||||
} else {
|
||||
Bangle.setLCDMode();
|
||||
if (process.env.HWVERSION == 1) Bangle.setLCDMode();
|
||||
g.clear();
|
||||
g.flip();
|
||||
E.showMessage("Loading...");
|
||||
|
@ -211,10 +261,11 @@ function run(){
|
|||
|
||||
}
|
||||
|
||||
// Screen event
|
||||
Bangle.on('touch', function(button){
|
||||
if(STATE.settings_open) return;
|
||||
switch(button){
|
||||
if (process.env.HWVERSION == 1) {
|
||||
// Screen event
|
||||
Bangle.on('touch', function(button){
|
||||
if(STATE.settings_open) return;
|
||||
switch(button){
|
||||
case 1:
|
||||
prev();
|
||||
break;
|
||||
|
@ -224,8 +275,17 @@ Bangle.on('touch', function(button){
|
|||
case 3:
|
||||
run();
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (process.env.HWVERSION == 2) {
|
||||
// tap at top 1/3 of screen to launch app
|
||||
Bangle.on('touch', function(button, xy) {
|
||||
if (xy.y < HEIGHT / 3)
|
||||
run();
|
||||
});
|
||||
}
|
||||
|
||||
Bangle.on('swipe', dir => {
|
||||
if(STATE.settings_open) return;
|
||||
|
@ -238,9 +298,12 @@ Bangle.on('lcdPower', on => {
|
|||
if(!on) return load();
|
||||
});
|
||||
|
||||
if (process.env.HWVERSION == 1) {
|
||||
setWatch(prev, BTN1, { repeat: true });
|
||||
setWatch(next, BTN3, { repeat: true });
|
||||
setWatch(run, BTN2, { repeat:true });
|
||||
} else {
|
||||
setWatch(run, BTN1, { repeat:true });
|
||||
}
|
||||
|
||||
setWatch(prev, BTN1, { repeat: true });
|
||||
setWatch(next, BTN3, { repeat: true });
|
||||
setWatch(run, BTN2, { repeat:true });
|
||||
|
||||
jumpTo(1);
|
||||
jumpTo(1);
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Loading…
Reference in New Issue