diff options
Diffstat (limited to 'apps/misc.c')
| -rw-r--r-- | apps/misc.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/apps/misc.c b/apps/misc.c index 9fbdd43..31f0ac4 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -930,20 +930,31 @@ int hex_to_rgb(const char* hex, int* color) /* '0'-'3' are ASCII 0x30 to 0x33 */ #define is0123(x) (((x) & 0xfc) == 0x30) -bool parse_color(char *text, int *value) +bool parse_color(enum screen_type screen, char *text, int *value) { (void)text; (void)value; /* silence warnings on mono bitmap */ + int depth = screens[screen].depth; + #ifdef HAVE_LCD_COLOR - if (hex_to_rgb(text, value) < 0) - return false; + if (depth > 2) + { + if (hex_to_rgb(text, value) < 0) + return false; + else + return true; + } #endif #if LCD_DEPTH == 2 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 2) - if (text[1] != '\0' || !is0123(*text)) - return false; - *value = *text - '0'; + if (depth == 2) + { + if (text[1] != '\0' || !is0123(*text)) + return false; + *value = *text - '0'; + return true; + } #endif - return true; + return false; } /* only used in USB HID and set_time screen */ |