]> git.saurik.com Git - wxWidgets.git/commitdiff
Added and documented wxColourDatabase::AddColour.
authorMattia Barbon <mbarbon@cpan.org>
Sat, 12 Jul 2003 20:11:51 +0000 (20:11 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sat, 12 Jul 2003 20:11:51 +0000 (20:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/colour.tex
include/wx/gdicmn.h
src/common/gdicmn.cpp

index c5fee6e53e32bf7cd1c1ff6560c5b18fa5eb78f3..40437b1cf53de16b37118c1771d0c8fb65310508 100644 (file)
@@ -246,8 +246,7 @@ is only one instance of this class: {\bf wxTheColourDatabase}.
 
 \wxheading{Derived from}
 
-\helpref{wxList}{wxlist}\\
-\helpref{wxObject}{wxobject}
+None
 
 \wxheading{Include files}
 
@@ -282,6 +281,13 @@ YELLOW GREEN.
 
 Constructs the colour database.
 
+\membersection{wxColourDatabase::AddColour}\label{wxcolourdatabaseaddcolour}
+
+\func{void}{AddColour}{\param{const wxString\& }{colourName}, \param{wxColour* }{colour}}
+
+Adds a colour to the database. If a colour with the same name already exists,
+it is replaced.
+
 \membersection{wxColourDatabase::FindColour}\label{wxcolourdatabasefindcolour}
 
 \func{wxColour*}{FindColour}{\param{const wxString\& }{colourName}}
index ae96ef17944b4ca9dfb3cd4af22f52e065b9ad65..f9d4497c95438a528206d5e4ee0fc61e7adccc81 100644 (file)
@@ -431,6 +431,7 @@ public:
     wxColour *FindColour(const wxString& colour) ;
     wxColour *FindColourNoAdd(const wxString& colour) const;
     wxString FindName(const wxColour& colour) const;
+    void AddColour(const wxString& name, wxColour* colour);
     void Initialize();
 #ifdef __WXPM__
     // PM keeps its own type of colour table
index 3aacfbf638645e9d0537ed4611cc311e6045c15e..2c01bccc067aa6b0791df6ccf32ea1aa11591225 100644 (file)
@@ -196,10 +196,7 @@ wxColourDatabase::wxColourDatabase ()
 
 wxColourDatabase::~wxColourDatabase ()
 {
-    typedef wxStringToColourHashMap::iterator iterator;
-
-    for( iterator it = m_map->begin(), en = m_map->end(); it != en; ++it )
-        delete it->second;
+    WX_CLEAR_HASH_MAP(wxStringToColourHashMap, *m_map);
 
     delete m_map;
     m_map = NULL;
@@ -289,6 +286,7 @@ void wxColourDatabase::Initialize ()
         {wxT("WHITE"), 255, 255, 255},
         {wxT("YELLOW"), 255, 255, 0},
         {wxT("YELLOW GREEN"), 153, 204, 50},
+        {wxT("YELLOW GREEN"), 153, 204, 50}
     };
 
     size_t      n;
@@ -296,7 +294,7 @@ void wxColourDatabase::Initialize ()
     for ( n = 0; n < WXSIZEOF(wxColourTable); n++ )
     {
         const wxColourDesc& cc = wxColourTable[n];
-        (*m_map)[cc.name] =  new wxColour(cc.r,cc.g,cc.b);
+        AddColour(cc.name, new wxColour(cc.r,cc.g,cc.b));
     }
 #ifdef __WXPM__
     m_palTable = new long[n];
@@ -328,6 +326,26 @@ wxColour *wxColourDatabase::FindColourNoAdd(const wxString& colour) const
     return ((wxColourDatabase*)this)->FindColour(colour, false);
 }
 
+void wxColourDatabase::AddColour (const wxString& name, wxColour* colour)
+{
+    wxString colName = name;
+    colName.MakeUpper();
+    wxString colName2 = colName;
+    if ( !colName2.Replace(_T("GRAY"), _T("GREY")) )
+        colName2.clear();
+
+    wxStringToColourHashMap::iterator it = m_map->find(colName);
+    if ( it == m_map->end() )
+        it = m_map->find(colName2);
+    if ( it != m_map->end() )
+    {
+        delete it->second;
+        it->second = colour;
+    }
+
+    (*m_map)[name] = colour;
+}
+
 wxColour *wxColourDatabase::FindColour(const wxString& colour, bool add)
 {
     // VZ: make the comparaison case insensitive and also match both grey and
@@ -377,7 +395,7 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour, bool add)
       delete col;
       return (wxColour *) NULL;
   }
-  (*m_map)[colour] = col;
+  AddColour(colour, col);
   return col;
 #endif
 
@@ -405,7 +423,7 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour, bool add)
 #endif
 
     wxColour *col = new wxColour(r, g, b);
-    (*m_map)[colour] = col;
+    AddColour(colour, col);
 
     return col;
 #endif // __X__