From 86766dfdade18c755eb0542ae1a05bbe5e4e3053 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 23 Aug 2006 19:07:15 +0000 Subject: [PATCH] fixed HTML colours parsing after patch #1473731 ('wxColourBase and wxString <-> wxColour implementation') broke it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40777 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/html/htmltag.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/html/htmltag.cpp b/src/html/htmltag.cpp index 6686cb9cba..bcf337bc3b 100644 --- a/src/html/htmltag.cpp +++ b/src/html/htmltag.cpp @@ -411,18 +411,16 @@ int wxHtmlTag::ScanParam(const wxString& par, bool wxHtmlTag::GetParamAsColour(const wxString& par, wxColour *clr) const { - wxASSERT(clr); - wxString str = GetParam(par); + wxCHECK_MSG( clr, false, _T("invalid colour argument") ); - if (clr->Set(str)) - return true; + wxString str = GetParam(par); - if (!str.empty()) + // handle colours defined in HTML 4.0 first: + if (str.length() > 1 && str[0] != _T('#')) { - // Handle colours defined in HTML 4.0: - #define HTML_COLOUR(name,r,g,b) \ + #define HTML_COLOUR(name, r, g, b) \ if (str.IsSameAs(wxT(name), false)) \ - { *clr = wxColour(r,g,b); return true; } + { 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) @@ -442,6 +440,13 @@ bool wxHtmlTag::GetParamAsColour(const wxString& par, wxColour *clr) const #undef HTML_COLOUR } + // then try to parse #rrggbb representations or set from other well + // known names (note that this doesn't strictly conform to HTML spec, + // but it doesn't do real harm -- but it *must* be done after the standard + // colors are handled above): + if (clr->Set(str)) + return true; + return false; } -- 2.45.2