]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmltag.cpp
[ 1563875 ] wxTreeCtrl::FindItem asserts when item not found
[wxWidgets.git] / src / html / htmltag.cpp
index ed4aaab49625f60ebfde36944b82d90361bf5825..bcf337bc3b7b1e32b43afd0e8f39ebd41d87e8cb 100644 (file)
 #include "wx/html/htmltag.h"
 
 #ifndef WXPRECOMP
+    #include "wx/colour.h"
 #endif
 
 #include "wx/html/htmlpars.h"
-#include "wx/colour.h"
 #include <stdio.h> // for vsscanf
 #include <stdarg.h>
 
@@ -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;
 }