Converted literal colors to indices that can be used everywhere.

Also modified lcd.setColor function so it accepts either RGB or index color as new color. That way, literal colors work as before.
This commit is contained in:
jfrickmann
2021-08-22 19:39:50 +02:00
committed by Raphael Coeffic
parent 8fb260d2b2
commit d0e4b767d3
5 changed files with 96 additions and 20 deletions
+18
View File
@@ -43,6 +43,24 @@ enum LcdColorIndex
COLOR_THEME_DISABLED_INDEX,
CUSTOM_COLOR_INDEX,
// Literal colors
COLOR_BLACK_INDEX,
COLOR_WHITE_INDEX,
COLOR_LIGHTWHITE_INDEX,
COLOR_YELLOW_INDEX,
COLOR_BLUE_INDEX,
COLOR_DARKBLUE_INDEX,
COLOR_GREY_INDEX,
COLOR_DARKGREY_INDEX,
COLOR_LIGHTGREY_INDEX,
COLOR_RED_INDEX,
COLOR_DARKRED_INDEX,
COLOR_GREEN_INDEX,
COLOR_LIGHTBROWN_INDEX,
COLOR_DARKBROWN_INDEX,
COLOR_BRIGHTGREEN_INDEX,
COLOR_ORANGE_INDEX,
// this one MUST be last
LCD_COLOR_COUNT,
};
@@ -54,6 +54,24 @@ class Theme480: public OpenTxTheme
lcdColorTable[COLOR_THEME_ACTIVE_INDEX] = RGB(255, 222, 0);
lcdColorTable[COLOR_THEME_WARNING_INDEX] = RGB(224, 0, 0);
lcdColorTable[COLOR_THEME_DISABLED_INDEX] = RGB(140, 140, 140);
// Literal colors
lcdColorTable[COLOR_BLACK_INDEX] = BLACK;
lcdColorTable[COLOR_WHITE_INDEX] = WHITE;
lcdColorTable[COLOR_LIGHTWHITE_INDEX] = LIGHTWHITE;
lcdColorTable[COLOR_YELLOW_INDEX] = YELLOW;
lcdColorTable[COLOR_BLUE_INDEX] = BLUE;
lcdColorTable[COLOR_DARKBLUE_INDEX] = DARKBLUE;
lcdColorTable[COLOR_GREY_INDEX] = GREY;
lcdColorTable[COLOR_DARKGREY_INDEX] = DARKGREY;
lcdColorTable[COLOR_LIGHTGREY_INDEX] = LIGHTGREY;
lcdColorTable[COLOR_RED_INDEX] = RED;
lcdColorTable[COLOR_DARKRED_INDEX] = DARKRED;
lcdColorTable[COLOR_GREEN_INDEX] = GREEN;
lcdColorTable[COLOR_LIGHTBROWN_INDEX] = LIGHTBROWN;
lcdColorTable[COLOR_DARKBROWN_INDEX] = DARKBROWN;
lcdColorTable[COLOR_BRIGHTGREEN_INDEX] = BRIGHTGREEN;
lcdColorTable[COLOR_ORANGE_INDEX] = ORANGE;
}
void loadMenuIcon(uint8_t index, const uint8_t * lbm) const
+18
View File
@@ -53,6 +53,24 @@ class FlyskyTheme: public OpenTxTheme
lcdColorTable[COLOR_THEME_ACTIVE_INDEX] = RGB(255, 222, 0);
lcdColorTable[COLOR_THEME_WARNING_INDEX] = RGB(224, 0, 0);
lcdColorTable[COLOR_THEME_DISABLED_INDEX] = RGB(140, 140, 140);
// Literal colors
lcdColorTable[COLOR_BLACK_INDEX] = BLACK;
lcdColorTable[COLOR_WHITE_INDEX] = WHITE;
lcdColorTable[COLOR_LIGHTWHITE_INDEX] = LIGHTWHITE;
lcdColorTable[COLOR_YELLOW_INDEX] = YELLOW;
lcdColorTable[COLOR_BLUE_INDEX] = BLUE;
lcdColorTable[COLOR_DARKBLUE_INDEX] = DARKBLUE;
lcdColorTable[COLOR_GREY_INDEX] = GREY;
lcdColorTable[COLOR_DARKGREY_INDEX] = DARKGREY;
lcdColorTable[COLOR_LIGHTGREY_INDEX] = LIGHTGREY;
lcdColorTable[COLOR_RED_INDEX] = RED;
lcdColorTable[COLOR_DARKRED_INDEX] = DARKRED;
lcdColorTable[COLOR_GREEN_INDEX] = GREEN;
lcdColorTable[COLOR_LIGHTBROWN_INDEX] = LIGHTBROWN;
lcdColorTable[COLOR_DARKBROWN_INDEX] = DARKBROWN;
lcdColorTable[COLOR_BRIGHTGREEN_INDEX] = BRIGHTGREEN;
lcdColorTable[COLOR_ORANGE_INDEX] = ORANGE;
}
void loadMenuIcon(uint8_t index, const char * filename, uint32_t color=COLOR_THEME_SECONDARY1) const
+26 -11
View File
@@ -769,16 +769,23 @@ Set a color for specific area
* `COLOR_THEME_DISABLED`
* `CUSTOM_COLOR`
@param color (number) color in 5/6/5 rgb format. The following prefined colors are available
* `WHITE`
* `GREY`
* `LIGHTGREY`
* `DARKGREY`
* `BLACK`
* `YELLOW`
* `BLUE`
* `RED`
* `DARKRED`
@param color (number) color in 5/6/5 rgb format (see lcd.RGB function). The following prefined colors are also available:
* `BLACK`
* `WHITE`
* `LIGHTWHITE`
* `YELLOW`
* `BLUE`
* `DARKBLUE`
* `GREY`
* `DARKGREY`
* `LIGHTGREY`
* `RED`
* `DARKRED`
* `GREEN`
* `LIGHTBROWN`
* `DARKBROWN`
* `BRIGHTGREEN`
* `ORANGE`
@notice Only available on Colorlcd radios
@@ -789,7 +796,15 @@ static int luaLcdSetColor(lua_State *L)
unsigned int index = COLOR_VAL(luaL_checkunsigned(L, 1));
unsigned int color = luaL_checkunsigned(L, 2);
if (index < LCD_COLOR_COUNT)
// Boundary check - also, do not change literal colors
if (index >= COLOR_BLACK_INDEX)
return 0;
// RGB value or color flag?
unsigned int idx = COLOR_VAL(color);
if (idx > DEFAULT_COLOR_INDEX && idx < LCD_COLOR_COUNT)
lcdColorTable[index] = lcdColorTable[idx];
else
lcdColorTable[index] = color;
return 0;
+16 -9
View File
@@ -1950,15 +1950,22 @@ const luaR_value_entry opentxConstants[] = {
{ "WARNING_COLOR", COLOR2FLAGS(COLOR_THEME_WARNING_INDEX) },
// Literal colors
{ "WHITE", (double)WHITE },
{ "GREY", (double)GREY },
{ "DARKGREY", (double)DARKGREY },
{ "BLACK", (double)BLACK },
{ "YELLOW", (double)YELLOW },
{ "BLUE", (double)BLUE },
{ "LIGHTGREY", (double)LIGHTGREY },
{ "RED", (double)RED },
{ "DARKRED", (double)DARKRED },
{ "BLACK", COLOR2FLAGS(COLOR_BLACK_INDEX) },
{ "WHITE", COLOR2FLAGS(COLOR_WHITE_INDEX) },
{ "LIGHTWHITE", COLOR2FLAGS(COLOR_LIGHTWHITE_INDEX) },
{ "YELLOW", COLOR2FLAGS(COLOR_YELLOW_INDEX) },
{ "BLUE", COLOR2FLAGS(COLOR_BLUE_INDEX) },
{ "DARKBLUE", COLOR2FLAGS(COLOR_DARKBLUE_INDEX) },
{ "GREY", COLOR2FLAGS(COLOR_GREY_INDEX) },
{ "DARKGREY", COLOR2FLAGS(COLOR_DARKGREY_INDEX) },
{ "LIGHTGREY", COLOR2FLAGS(COLOR_LIGHTGREY_INDEX) },
{ "RED", COLOR2FLAGS(COLOR_RED_INDEX) },
{ "DARKRED", COLOR2FLAGS(COLOR_DARKRED_INDEX) },
{ "GREEN", COLOR2FLAGS(COLOR_GREEN_INDEX) },
{ "LIGHTBROWN", COLOR2FLAGS(COLOR_LIGHTBROWN_INDEX) },
{ "DARKBROWN", COLOR2FLAGS(COLOR_DARKBROWN_INDEX) },
{ "BRIGHTGREEN", COLOR2FLAGS(COLOR_BRIGHTGREEN_INDEX) },
{ "ORANGE", COLOR2FLAGS(COLOR_ORANGE_INDEX) },
#else
{ "FIXEDWIDTH", FIXEDWIDTH },
#endif