1
0
Fork 0
forked from len0rd/rockbox

Fix FS#11526 - %Vf(<hex>) was acceptable on grey remotes with colour main

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27768 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2010-08-10 14:15:03 +00:00
parent a547fc1b35
commit 489962dc4e
4 changed files with 29 additions and 13 deletions

View file

@ -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 */