Update lcars.app.js with final 0.30 version with more colors and random color functionality
Update lcars.app.js with final 0.30 version with more colors and random color functionalitymaster
parent
d9ec4f354c
commit
482b30dfdd
|
|
@ -25,12 +25,27 @@ for (const key in saved_settings) {
|
||||||
|
|
||||||
|
|
||||||
//Colors to use
|
//Colors to use
|
||||||
var color_options = ['Green','Orange','Cyan','Purple','Red','Blue','Yellow','White','Purple','Pink','Light Green','Dark Green', 'Brown', 'Turquoise', 'Magenta', 'Gold', 'Silver', 'Violet', 'Teal', 'Maroon', 'Lavender'];
|
var color_options = [
|
||||||
var bg_code = ['#00ff00','#FF9900','#0094FF','#FF00DC','#ff0000','#0000ff','#ffef00','#FFFFFF','#FF00FF','#6C00FF','#99FF00','#556B2F', '#8B4513', '#40E0D0', '#FF00FF', '#FFD700', '#C0C0C0', '#EE82EE', '#008080', '#800000', '#E6E6FA'];
|
'Green', 'Orange', 'Cyan', 'Purple', 'Red', 'Blue', 'Yellow', 'White',
|
||||||
|
'Purple', 'Pink', 'Light Green', 'Brown', 'Turquoise', 'Magenta', 'Lime',
|
||||||
|
'Gold', 'Sky Blue', 'Rose', 'Lavender', 'Amber', 'Indigo', 'Teal',
|
||||||
|
'Crimson', 'Maroon', 'Firebrick', 'Dark Red', 'Aqua', 'Emerald', 'Royal Blue',
|
||||||
|
'Sunset Orange', 'Turquoise Blue', 'Hot Pink', 'Goldenrod', 'Deep Sky Blue'
|
||||||
|
];
|
||||||
|
|
||||||
let color1 = settings.themeColor3BG;
|
var bg_code = [
|
||||||
let color2 = settings.themeColor1BG;
|
'#00ff00', '#FF9900', '#0094FF', '#FF00DC', '#ff0000', '#0000ff', '#ffef00', '#FFFFFF',
|
||||||
let color3 = settings.themeColor2BG;
|
'#FF00FF', '#6C00FF', '#99FF00', '#8B4513', '#40E0D0', '#FF00FF', '#00FF00', '#FFD700',
|
||||||
|
'#87CEEB', '#FF007F', '#E6E6FA', '#FFBF00', '#4B0082', '#008080', '#DC143C', '#800000',
|
||||||
|
'#B22222', '#8B0000', '#00FFFF', '#008000', '#4169E1', '#FF4500', '#40E0D0', '#FF69B4',
|
||||||
|
'#DAA520', '#00BFFF'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let color1;
|
||||||
|
let color2;
|
||||||
|
let color3;
|
||||||
let cWhite = "#FFFFFF";
|
let cWhite = "#FFFFFF";
|
||||||
let cBlack = "#000000";
|
let cBlack = "#000000";
|
||||||
let cGrey = "#424242";
|
let cGrey = "#424242";
|
||||||
|
|
@ -61,10 +76,105 @@ let convert24to16 = function(input)
|
||||||
return "0x"+RGB565.toString(16);
|
return "0x"+RGB565.toString(16);
|
||||||
};
|
};
|
||||||
|
|
||||||
let color1C = convert24to16(color1);//Converting colors to the correct format.
|
//Converting colors to the correct format.
|
||||||
let color2C = convert24to16(color2);
|
/*let color1C;
|
||||||
let color3C = convert24to16(color3);
|
let color2C;
|
||||||
|
let color3C;
|
||||||
|
|
||||||
|
let randomColors = function () {
|
||||||
|
console.log("called");
|
||||||
|
|
||||||
|
if (settings.randomColors) {
|
||||||
|
do {
|
||||||
|
color1 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
||||||
|
color2 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
||||||
|
color3 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
||||||
|
} while (color1 === color2 || color2 === color3 || color1 === color3);
|
||||||
|
|
||||||
|
console.log("random called");
|
||||||
|
} else {
|
||||||
|
color1 = settings.themeColor3BG;
|
||||||
|
color2 = settings.themeColor1BG;
|
||||||
|
color3 = settings.themeColor2BG;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Converting colors to the correct format.
|
||||||
|
color1C = convert24to16(color1);
|
||||||
|
color2C = convert24to16(color2);
|
||||||
|
color3C = convert24to16(color3);
|
||||||
|
};*/
|
||||||
|
|
||||||
|
let randomColors = function () {
|
||||||
|
console.log("called");
|
||||||
|
|
||||||
|
if (settings.randomColors) {
|
||||||
|
do {
|
||||||
|
color1 = getRandomColor();
|
||||||
|
color2 = getRandomColor();
|
||||||
|
color3 = getRandomColor();
|
||||||
|
} while (!areColorsDistinct(color1, color2, color3));
|
||||||
|
|
||||||
|
console.log("random called");
|
||||||
|
} else {
|
||||||
|
color1 = settings.themeColor3BG;
|
||||||
|
color2 = settings.themeColor1BG;
|
||||||
|
color3 = settings.themeColor2BG;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Converting colors to the correct format.
|
||||||
|
color1C = convert24to16(color1);
|
||||||
|
color2C = convert24to16(color2);
|
||||||
|
color3C = convert24to16(color3);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to get a random color from the bg_code array.
|
||||||
|
let getRandomColor = function () {
|
||||||
|
return bg_code[Math.floor(Math.random() * bg_code.length)];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to check if three colors are distinct enough.
|
||||||
|
let areColorsDistinct = function (color1, color2, color3) {
|
||||||
|
return (
|
||||||
|
color1 !== color2 &&
|
||||||
|
color2 !== color3 &&
|
||||||
|
color1 !== color3 &&
|
||||||
|
hasSufficientContrast(color1, color2) &&
|
||||||
|
hasSufficientContrast(color2, color3) &&
|
||||||
|
hasSufficientContrast(color1, color3)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to calculate contrast between two colors.
|
||||||
|
let hasSufficientContrast = function (color1, color2) {
|
||||||
|
const contrastThreshold = 0.10; // Adjust this threshold based on your preference.
|
||||||
|
|
||||||
|
// Calculate the luminance values (for simplicity, assuming sRGB color space).
|
||||||
|
const luminance1 = getLuminance(color1);
|
||||||
|
const luminance2 = getLuminance(color2);
|
||||||
|
|
||||||
|
// Calculate the contrast ratio.
|
||||||
|
const contrastRatio = (Math.max(luminance1, luminance2) + 0.05) / (Math.min(luminance1, luminance2) + 0.05);
|
||||||
|
|
||||||
|
// Check if the contrast ratio meets the threshold.
|
||||||
|
return contrastRatio >= contrastThreshold;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to calculate luminance from a hex color.
|
||||||
|
let getLuminance = function (hexColor) {
|
||||||
|
const rgb = hexToRgb(hexColor);
|
||||||
|
return 0.2126 * rgb.r + 0.7152 * rgb.g + 0.0722 * rgb.b;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to convert hex color to RGB.
|
||||||
|
let hexToRgb = function (hex) {
|
||||||
|
const bigint = parseInt(hex.slice(1), 16);
|
||||||
|
const r = (bigint >> 16) & 255;
|
||||||
|
const g = (bigint >> 8) & 255;
|
||||||
|
const b = bigint & 255;
|
||||||
|
return { r, g, b };
|
||||||
|
};
|
||||||
|
|
||||||
|
randomColors();//Apply random colors if applied
|
||||||
/*
|
/*
|
||||||
* Requirements and globals
|
* Requirements and globals
|
||||||
*/
|
*/
|
||||||
|
|
@ -190,14 +300,6 @@ let queueDraw = function() {
|
||||||
}, timeout - (Date.now() % timeout));
|
}, timeout - (Date.now() % timeout));
|
||||||
};
|
};
|
||||||
|
|
||||||
function randomColors() {
|
|
||||||
if(settings.randomColors == true){
|
|
||||||
let color1 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
|
||||||
let color2 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
|
||||||
let color3 = bg_code[Math.floor(Math.random() * bg_code.length)];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function plots a data row in LCARS style.
|
* This function plots a data row in LCARS style.
|
||||||
* Note: It can be called async and therefore, the text alignment and
|
* Note: It can be called async and therefore, the text alignment and
|
||||||
|
|
@ -235,7 +337,7 @@ let drawData = function(key, y, c){
|
||||||
|
|
||||||
|
|
||||||
let _drawData = function(key, y, c){
|
let _drawData = function(key, y, c){
|
||||||
key = key.toUpperCase()
|
key = key.toUpperCase();
|
||||||
let text = key;
|
let text = key;
|
||||||
let value = "ERR";
|
let value = "ERR";
|
||||||
let should_print= true;
|
let should_print= true;
|
||||||
|
|
@ -282,7 +384,7 @@ let _drawData = function(key, y, c){
|
||||||
value = Math.round(data.altitude);
|
value = Math.round(data.altitude);
|
||||||
printRow(text, value, y, c);
|
printRow(text, value, y, c);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
} else if(key == "CORET"){
|
} else if(key == "CORET"){
|
||||||
value = locale.temp(parseInt(E.getTemperature()));
|
value = locale.temp(parseInt(E.getTemperature()));
|
||||||
|
|
@ -385,7 +487,7 @@ let drawPosition0 = function(){
|
||||||
drawHorizontalBgLine(color2, batStart, batX2, 171, 5);
|
drawHorizontalBgLine(color2, batStart, batX2, 171, 5);
|
||||||
drawHorizontalBgLine(cGrey, batX2, 172, 171, 5);
|
drawHorizontalBgLine(cGrey, batX2, 172, 171, 5);
|
||||||
for(let i=0; i+batStart<=172; i+=parseInt(batWidth/4)){
|
for(let i=0; i+batStart<=172; i+=parseInt(batWidth/4)){
|
||||||
drawHorizontalBgLine(cBlack, batStart+i, batStart+i+3, 168, 8)
|
drawHorizontalBgLine(cBlack, batStart+i, batStart+i+3, 168, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw Infos
|
// Draw Infos
|
||||||
|
|
@ -614,7 +716,7 @@ let getWeather = function(){
|
||||||
let speedFactor = settings.speed == "kph" ? 1.0 : 1.0 / 1.60934;
|
let speedFactor = settings.speed == "kph" ? 1.0 : 1.0 / 1.60934;
|
||||||
weather.wind = Math.round(wind[1] * speedFactor);
|
weather.wind = Math.round(wind[1] * speedFactor);
|
||||||
|
|
||||||
return weather
|
return weather;
|
||||||
|
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
// Return default
|
// Return default
|
||||||
|
|
@ -660,7 +762,7 @@ let getAlarmMinutes = function(){
|
||||||
let increaseAlarm = function(){
|
let increaseAlarm = function(){
|
||||||
try{
|
try{
|
||||||
let minutes = isAlarmEnabled() ? getAlarmMinutes() : 0;
|
let minutes = isAlarmEnabled() ? getAlarmMinutes() : 0;
|
||||||
let alarm = require('sched')
|
let alarm = require('sched');
|
||||||
alarm.setAlarm(TIMER_IDX, {
|
alarm.setAlarm(TIMER_IDX, {
|
||||||
timer : (minutes+5)*60*1000,
|
timer : (minutes+5)*60*1000,
|
||||||
});
|
});
|
||||||
|
|
@ -673,7 +775,7 @@ let decreaseAlarm = function(){
|
||||||
let minutes = getAlarmMinutes();
|
let minutes = getAlarmMinutes();
|
||||||
minutes -= 5;
|
minutes -= 5;
|
||||||
|
|
||||||
let alarm = require('sched')
|
let alarm = require('sched');
|
||||||
alarm.setAlarm(TIMER_IDX, undefined);
|
alarm.setAlarm(TIMER_IDX, undefined);
|
||||||
|
|
||||||
if(minutes > 0){
|
if(minutes > 0){
|
||||||
|
|
@ -784,8 +886,6 @@ Bangle.setUI({mode:"clock",remove:function() {
|
||||||
widget_utils.cleanup();
|
widget_utils.cleanup();
|
||||||
}});
|
}});
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
|
|
||||||
randomColors();//Apply random colors if applied
|
|
||||||
// Clear the screen once, at startup and draw clock
|
// Clear the screen once, at startup and draw clock
|
||||||
g.setTheme({bg:"#000",fg:"#fff",dark:true}).clear();
|
g.setTheme({bg:"#000",fg:"#fff",dark:true}).clear();
|
||||||
draw();
|
draw();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue