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
|
||||
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 bg_code = ['#00ff00','#FF9900','#0094FF','#FF00DC','#ff0000','#0000ff','#ffef00','#FFFFFF','#FF00FF','#6C00FF','#99FF00','#556B2F', '#8B4513', '#40E0D0', '#FF00FF', '#FFD700', '#C0C0C0', '#EE82EE', '#008080', '#800000', '#E6E6FA'];
|
||||
var color_options = [
|
||||
'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;
|
||||
let color2 = settings.themeColor1BG;
|
||||
let color3 = settings.themeColor2BG;
|
||||
var bg_code = [
|
||||
'#00ff00', '#FF9900', '#0094FF', '#FF00DC', '#ff0000', '#0000ff', '#ffef00', '#FFFFFF',
|
||||
'#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 cBlack = "#000000";
|
||||
let cGrey = "#424242";
|
||||
|
|
@ -61,10 +76,105 @@ let convert24to16 = function(input)
|
|||
return "0x"+RGB565.toString(16);
|
||||
};
|
||||
|
||||
let color1C = convert24to16(color1);//Converting colors to the correct format.
|
||||
let color2C = convert24to16(color2);
|
||||
let color3C = convert24to16(color3);
|
||||
//Converting colors to the correct format.
|
||||
/*let color1C;
|
||||
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
|
||||
*/
|
||||
|
|
@ -190,14 +300,6 @@ let queueDraw = function() {
|
|||
}, 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.
|
||||
* 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){
|
||||
key = key.toUpperCase()
|
||||
key = key.toUpperCase();
|
||||
let text = key;
|
||||
let value = "ERR";
|
||||
let should_print= true;
|
||||
|
|
@ -282,7 +384,7 @@ let _drawData = function(key, y, c){
|
|||
value = Math.round(data.altitude);
|
||||
printRow(text, value, y, c);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
} else if(key == "CORET"){
|
||||
value = locale.temp(parseInt(E.getTemperature()));
|
||||
|
|
@ -385,7 +487,7 @@ let drawPosition0 = function(){
|
|||
drawHorizontalBgLine(color2, batStart, batX2, 171, 5);
|
||||
drawHorizontalBgLine(cGrey, batX2, 172, 171, 5);
|
||||
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
|
||||
|
|
@ -614,7 +716,7 @@ let getWeather = function(){
|
|||
let speedFactor = settings.speed == "kph" ? 1.0 : 1.0 / 1.60934;
|
||||
weather.wind = Math.round(wind[1] * speedFactor);
|
||||
|
||||
return weather
|
||||
return weather;
|
||||
|
||||
} catch(ex) {
|
||||
// Return default
|
||||
|
|
@ -660,7 +762,7 @@ let getAlarmMinutes = function(){
|
|||
let increaseAlarm = function(){
|
||||
try{
|
||||
let minutes = isAlarmEnabled() ? getAlarmMinutes() : 0;
|
||||
let alarm = require('sched')
|
||||
let alarm = require('sched');
|
||||
alarm.setAlarm(TIMER_IDX, {
|
||||
timer : (minutes+5)*60*1000,
|
||||
});
|
||||
|
|
@ -673,7 +775,7 @@ let decreaseAlarm = function(){
|
|||
let minutes = getAlarmMinutes();
|
||||
minutes -= 5;
|
||||
|
||||
let alarm = require('sched')
|
||||
let alarm = require('sched');
|
||||
alarm.setAlarm(TIMER_IDX, undefined);
|
||||
|
||||
if(minutes > 0){
|
||||
|
|
@ -784,8 +886,6 @@ Bangle.setUI({mode:"clock",remove:function() {
|
|||
widget_utils.cleanup();
|
||||
}});
|
||||
Bangle.loadWidgets();
|
||||
|
||||
randomColors();//Apply random colors if applied
|
||||
// Clear the screen once, at startup and draw clock
|
||||
g.setTheme({bg:"#000",fg:"#fff",dark:true}).clear();
|
||||
draw();
|
||||
|
|
|
|||
Loading…
Reference in New Issue