summaryrefslogtreecommitdiff
path: root/apps/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/misc.c')
-rw-r--r--apps/misc.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/apps/misc.c b/apps/misc.c
index 9fbdd433ef..31f0ac4193 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -930,20 +930,31 @@ int hex_to_rgb(const char* hex, int* color)
930/* '0'-'3' are ASCII 0x30 to 0x33 */ 930/* '0'-'3' are ASCII 0x30 to 0x33 */
931#define is0123(x) (((x) & 0xfc) == 0x30) 931#define is0123(x) (((x) & 0xfc) == 0x30)
932 932
933bool parse_color(char *text, int *value) 933bool parse_color(enum screen_type screen, char *text, int *value)
934{ 934{
935 (void)text; (void)value; /* silence warnings on mono bitmap */ 935 (void)text; (void)value; /* silence warnings on mono bitmap */
936 int depth = screens[screen].depth;
937
936#ifdef HAVE_LCD_COLOR 938#ifdef HAVE_LCD_COLOR
937 if (hex_to_rgb(text, value) < 0) 939 if (depth > 2)
938 return false; 940 {
941 if (hex_to_rgb(text, value) < 0)
942 return false;
943 else
944 return true;
945 }
939#endif 946#endif
940 947
941#if LCD_DEPTH == 2 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 2) 948#if LCD_DEPTH == 2 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 2)
942 if (text[1] != '\0' || !is0123(*text)) 949 if (depth == 2)
943 return false; 950 {
944 *value = *text - '0'; 951 if (text[1] != '\0' || !is0123(*text))
952 return false;
953 *value = *text - '0';
954 return true;
955 }
945#endif 956#endif
946 return true; 957 return false;
947} 958}
948 959
949/* only used in USB HID and set_time screen */ 960/* only used in USB HID and set_time screen */