- const char *st = m_Params, *p = par;
- const char *st2, *p2;
- bool comma;
- char comma_char;
-
- if (*st == 0) return "";
- if (*p == 0) return "";
- for (st2 = st, p2 = p; ; st2++) {
- if (*p2 == 0) { // found
- wxString fnd = "";
- st2++; // '=' character
- comma = FALSE;
- comma_char = '\0';
- if (!with_commas && (*(st2) == '"')) {
- st2++;
- comma = TRUE;
- comma_char = '"';
- }
- else if (!with_commas && (*(st2) == '\'')) {
- st2++;
- comma = TRUE;
- comma_char = '\'';
- }
- while (*st2 != 0) {
- if (comma && *st2 == comma_char) comma = FALSE;
- else if ((*st2 == ' ') && (!comma)) break;
- fnd += (*(st2++));
- }
- if (!with_commas && (*(st2-1) == comma_char)) fnd.RemoveLast();
- return fnd;
- }
- if (*st2 == 0) return "";
- if (*p2 != *st2) p2 = p;
- if (*p2 == *st2) p2++;
- if (*st2 == ' ') p2 = p;
- else if (*st2 == '=') {
- p2 = p;
- while (*st2 != ' ') {
- if (*st2 == '"') {
- st2++;
- while (*st2 != '"') st2++;
- }
- else if (*st2 == '\'') {
- st2++;
- while (*st2 != '\'') st2++;
- }
- st2++;
- }
- }
+ wxCHECK_MSG( clr, false, _T("invalid colour argument") );
+
+ wxString str = GetParam(par);
+
+ // handle colours defined in HTML 4.0 first:
+ if (str.length() > 1 && str[0] != _T('#'))
+ {
+ #define HTML_COLOUR(name, r, g, b) \
+ if (str.IsSameAs(wxT(name), false)) \
+ { clr->Set(r, g, b); return true; }
+ HTML_COLOUR("black", 0x00,0x00,0x00)
+ HTML_COLOUR("silver", 0xC0,0xC0,0xC0)
+ HTML_COLOUR("gray", 0x80,0x80,0x80)
+ HTML_COLOUR("white", 0xFF,0xFF,0xFF)
+ HTML_COLOUR("maroon", 0x80,0x00,0x00)
+ HTML_COLOUR("red", 0xFF,0x00,0x00)
+ HTML_COLOUR("purple", 0x80,0x00,0x80)
+ HTML_COLOUR("fuchsia", 0xFF,0x00,0xFF)
+ HTML_COLOUR("green", 0x00,0x80,0x00)
+ HTML_COLOUR("lime", 0x00,0xFF,0x00)
+ HTML_COLOUR("olive", 0x80,0x80,0x00)
+ HTML_COLOUR("yellow", 0xFF,0xFF,0x00)
+ HTML_COLOUR("navy", 0x00,0x00,0x80)
+ HTML_COLOUR("blue", 0x00,0x00,0xFF)
+ HTML_COLOUR("teal", 0x00,0x80,0x80)
+ HTML_COLOUR("aqua", 0x00,0xFF,0xFF)
+ #undef HTML_COLOUR