-IMPLEMENT_CLASS(wxColourDatabase, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxResourceCache, wxList)
+#ifdef __WXMAC__
+#include "wx/mac/private.h"
+#include "wx/mac/uma.h"
+#endif
+
+#if wxUSE_EXTENDED_RTTI
+
+// wxPoint
+
+template<> void wxStringReadValue(const wxString &s , wxPoint &data )
+{
+ wxSscanf(s, wxT("%d,%d"), &data.x , &data.y ) ;
+}
+
+template<> void wxStringWriteValue(wxString &s , const wxPoint &data )
+{
+ s = wxString::Format(wxT("%d,%d"), data.x , data.y ) ;
+}
+
+wxCUSTOM_TYPE_INFO(wxPoint, wxToStringConverter<wxPoint> , wxFromStringConverter<wxPoint>)
+
+template<> void wxStringReadValue(const wxString &s , wxSize &data )
+{
+ wxSscanf(s, wxT("%d,%d"), &data.x , &data.y ) ;
+}
+
+template<> void wxStringWriteValue(wxString &s , const wxSize &data )
+{
+ s = wxString::Format(wxT("%d,%d"), data.x , data.y ) ;
+}
+
+wxCUSTOM_TYPE_INFO(wxSize, wxToStringConverter<wxSize> , wxFromStringConverter<wxSize>)
+
+#endif
{wxT("WHEAT"), 216, 216, 191},
{wxT("WHITE"), 255, 255, 255},
{wxT("YELLOW"), 255, 255, 0},
{wxT("WHEAT"), 216, 216, 191},
{wxT("WHITE"), 255, 255, 255},
{wxT("YELLOW"), 255, 255, 0},
- {wxT("YELLOW GREEN"), 153, 204, 50},
- {wxT("MEDIUM GOLDENROD"), 234, 234, 173},
- {wxT("MEDIUM FOREST GREEN"), 107, 142, 35},
- {wxT("LIGHT MAGENTA"), 255, 0, 255},
- {wxT("MEDIUM GREY"), 100, 100, 100},
+ {wxT("YELLOW GREEN"), 153, 204, 50}
-/*
- * Changed by Ian Brown, July 1994.
- *
- * When running under X, the Colour Database starts off empty. The X server
- * is queried for the colour first time after which it is entered into the
- * database. This allows our client to use the server colour database which
- * is hopefully gamma corrected for the display being used.
- */
-
-wxColour *wxColourDatabase::FindColour(const wxString& colour)
-{
- // VZ: make the comparaison case insensitive and also match both grey and
- // gray
- wxString colName = colour;
+// ----------------------------------------------------------------------------
+// wxColourDatabase operations
+// ----------------------------------------------------------------------------
+
+void wxColourDatabase::AddColour(const wxString& name, const wxColour& colour)
+{
+ Initialize();
+
+ // canonicalize the colour names before using them as keys: they should be
+ // in upper case
+ wxString colName = name;
+// ----------------------------------------------------------------------------
+// deprecated wxColourDatabase methods
+// ----------------------------------------------------------------------------
+
+wxColour *wxColourDatabase::FindColour(const wxString& name)
+{
+ // This function is deprecated, use Find() instead.
+ // Formerly this function sometimes would return a deletable pointer and
+ // sometimes a non-deletable one (when returning a colour from the database).
+ // Trying to delete the latter anyway results in problems, so probably
+ // nobody ever freed the pointers. Currently it always returns a new
+ // instance, which means there will be memory leaks.
+ wxLogDebug(wxT("wxColourDataBase::FindColour():")
+ wxT(" Please use wxColourDataBase::Find() instead"));
+
+ // using a static variable here is not the most elegant solution but unless
+ // we want to make wxStringToColourHashMap public (i.e. move it to the
+ // header) so that we could have a member function returning
+ // wxStringToColourHashMap::iterator, there is really no good way to do it
+ // otherwise
+ //
+ // and knowing that this function is going to disappear in the next release
+ // anyhow I don't want to waste time on this
+
+ static wxColour s_col;
+
+ s_col = Find(name);
+ if ( !s_col.Ok() )
+ return NULL;
- /*
- // Basic OS/2 has a fairly limited number of fonts and these are as good
- // as I can do to get something that looks halfway "wx" normal
- */
- wxNORMAL_FONT = new wxFont (sizeFont, wxMODERN, wxNORMAL, wxNORMAL); /* System VIO */
- wxSMALL_FONT = new wxFont (sizeFont - 4, wxMODERN, wxNORMAL, wxNORMAL); /* System VIO */
- wxITALIC_FONT = new wxFont (sizeFont, wxROMAN, wxITALIC, wxNORMAL);
- wxSWISS_FONT = new wxFont (sizeFont, wxSWISS, wxNORMAL, wxNORMAL); /* Helv */
+ /*
+ // Basic OS/2 has a fairly limited number of fonts and these are as good
+ // as I can do to get something that looks halfway "wx" normal
+ */
+ wxNORMAL_FONT = new wxFont (sizeFont, wxMODERN, wxNORMAL, wxBOLD);
+ wxSMALL_FONT = new wxFont (sizeFont - 4, wxSWISS, wxNORMAL, wxNORMAL); /* Helv */
+ wxITALIC_FONT = new wxFont (sizeFont, wxROMAN, wxITALIC, wxNORMAL);
+ wxSWISS_FONT = new wxFont (sizeFont, wxSWISS, wxNORMAL, wxNORMAL); /* Helv */
+#elif defined(__WXMAC__)
+ wxSWISS_FONT = new wxFont (sizeFont, wxSWISS, wxNORMAL, wxNORMAL); /* Helv */
+ wxITALIC_FONT = new wxFont (sizeFont, wxROMAN, wxITALIC, wxNORMAL);
+#if __WXMAC_CLASSIC__
+ GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ;
+ wxSMALL_FONT = new wxFont (fontSize, wxSWISS, wxNORMAL, wxNORMAL , false , wxMacMakeStringFromPascal( fontName ) );
+#else
+ wxSMALL_FONT = new wxFont () ;
+ wxSMALL_FONT->MacCreateThemeFont( kThemeSmallSystemFont );
+#endif
- wxRED_PEN = new wxPen (wxT("RED"), 1, wxSOLID);
- wxCYAN_PEN = new wxPen (wxT("CYAN"), 1, wxSOLID);
- wxGREEN_PEN = new wxPen (wxT("GREEN"), 1, wxSOLID);
- wxBLACK_PEN = new wxPen (wxT("BLACK"), 1, wxSOLID);
- wxWHITE_PEN = new wxPen (wxT("WHITE"), 1, wxSOLID);
- wxTRANSPARENT_PEN = new wxPen (wxT("BLACK"), 1, wxTRANSPARENT);
- wxBLACK_DASHED_PEN = new wxPen (wxT("BLACK"), 1, wxSHORT_DASH);
- wxGREY_PEN = new wxPen (wxT("GREY"), 1, wxSOLID);
- wxMEDIUM_GREY_PEN = new wxPen (wxT("MEDIUM GREY"), 1, wxSOLID);
- wxLIGHT_GREY_PEN = new wxPen (wxT("LIGHT GREY"), 1, wxSOLID);
-
- wxBLUE_BRUSH = new wxBrush (wxT("BLUE"), wxSOLID);
- wxGREEN_BRUSH = new wxBrush (wxT("GREEN"), wxSOLID);
- wxWHITE_BRUSH = new wxBrush (wxT("WHITE"), wxSOLID);
- wxBLACK_BRUSH = new wxBrush (wxT("BLACK"), wxSOLID);
- wxTRANSPARENT_BRUSH = new wxBrush (wxT("BLACK"), wxTRANSPARENT);
- wxCYAN_BRUSH = new wxBrush (wxT("CYAN"), wxSOLID);
- wxRED_BRUSH = new wxBrush (wxT("RED"), wxSOLID);
- wxGREY_BRUSH = new wxBrush (wxT("GREY"), wxSOLID);
- wxMEDIUM_GREY_BRUSH = new wxBrush (wxT("MEDIUM GREY"), wxSOLID);
- wxLIGHT_GREY_BRUSH = new wxBrush (wxT("LIGHT GREY"), wxSOLID);
-
- wxBLACK = new wxColour (wxT("BLACK"));
- wxWHITE = new wxColour (wxT("WHITE"));
- wxRED = new wxColour (wxT("RED"));
- wxBLUE = new wxColour (wxT("BLUE"));
- wxGREEN = new wxColour (wxT("GREEN"));
- wxCYAN = new wxColour (wxT("CYAN"));
- wxLIGHT_GREY = new wxColour (wxT("LIGHT GREY"));
-
- wxSTANDARD_CURSOR = new wxCursor (wxCURSOR_ARROW);
- wxHOURGLASS_CURSOR = new wxCursor (wxCURSOR_WAIT);
- wxCROSS_CURSOR = new wxCursor (wxCURSOR_CROSS);
+ wxRED_PEN = new wxPen (wxT("RED"), 1, wxSOLID);
+ wxCYAN_PEN = new wxPen (wxT("CYAN"), 1, wxSOLID);
+ wxGREEN_PEN = new wxPen (wxT("GREEN"), 1, wxSOLID);
+ wxBLACK_PEN = new wxPen (wxT("BLACK"), 1, wxSOLID);
+ wxWHITE_PEN = new wxPen (wxT("WHITE"), 1, wxSOLID);
+ wxTRANSPARENT_PEN = new wxPen (wxT("BLACK"), 1, wxTRANSPARENT);
+ wxBLACK_DASHED_PEN = new wxPen (wxT("BLACK"), 1, wxSHORT_DASH);
+ wxGREY_PEN = new wxPen (wxT("GREY"), 1, wxSOLID);
+ wxMEDIUM_GREY_PEN = new wxPen (wxT("MEDIUM GREY"), 1, wxSOLID);
+ wxLIGHT_GREY_PEN = new wxPen (wxT("LIGHT GREY"), 1, wxSOLID);
+
+ wxBLUE_BRUSH = new wxBrush (wxT("BLUE"), wxSOLID);
+ wxGREEN_BRUSH = new wxBrush (wxT("GREEN"), wxSOLID);
+ wxWHITE_BRUSH = new wxBrush (wxT("WHITE"), wxSOLID);
+ wxBLACK_BRUSH = new wxBrush (wxT("BLACK"), wxSOLID);
+ wxTRANSPARENT_BRUSH = new wxBrush (wxT("BLACK"), wxTRANSPARENT);
+ wxCYAN_BRUSH = new wxBrush (wxT("CYAN"), wxSOLID);
+ wxRED_BRUSH = new wxBrush (wxT("RED"), wxSOLID);
+ wxGREY_BRUSH = new wxBrush (wxT("GREY"), wxSOLID);
+ wxMEDIUM_GREY_BRUSH = new wxBrush (wxT("MEDIUM GREY"), wxSOLID);
+ wxLIGHT_GREY_BRUSH = new wxBrush (wxT("LIGHT GREY"), wxSOLID);
+
+ wxBLACK = new wxColour (wxT("BLACK"));
+ wxWHITE = new wxColour (wxT("WHITE"));
+ wxRED = new wxColour (wxT("RED"));
+ wxBLUE = new wxColour (wxT("BLUE"));
+ wxGREEN = new wxColour (wxT("GREEN"));
+ wxCYAN = new wxColour (wxT("CYAN"));
+ wxLIGHT_GREY = new wxColour (wxT("LIGHT GREY"));
+
+ wxSTANDARD_CURSOR = new wxCursor (wxCURSOR_ARROW);
+ wxHOURGLASS_CURSOR = new wxCursor (wxCURSOR_WAIT);
+ wxCROSS_CURSOR = new wxCursor (wxCURSOR_CROSS);
- wxDELETE(wxNORMAL_FONT);
- wxDELETE(wxSMALL_FONT);
- wxDELETE(wxITALIC_FONT);
- wxDELETE(wxSWISS_FONT);
-
- wxDELETE(wxRED_PEN);
- wxDELETE(wxCYAN_PEN);
- wxDELETE(wxGREEN_PEN);
- wxDELETE(wxBLACK_PEN);
- wxDELETE(wxWHITE_PEN);
- wxDELETE(wxTRANSPARENT_PEN);
- wxDELETE(wxBLACK_DASHED_PEN);
- wxDELETE(wxGREY_PEN);
- wxDELETE(wxMEDIUM_GREY_PEN);
- wxDELETE(wxLIGHT_GREY_PEN);
-
- wxDELETE(wxBLUE_BRUSH);
- wxDELETE(wxGREEN_BRUSH);
- wxDELETE(wxWHITE_BRUSH);
- wxDELETE(wxBLACK_BRUSH);
- wxDELETE(wxTRANSPARENT_BRUSH);
- wxDELETE(wxCYAN_BRUSH);
- wxDELETE(wxRED_BRUSH);
- wxDELETE(wxGREY_BRUSH);
- wxDELETE(wxMEDIUM_GREY_BRUSH);
- wxDELETE(wxLIGHT_GREY_BRUSH);
-
- wxDELETE(wxBLACK);
- wxDELETE(wxWHITE);
- wxDELETE(wxRED);
- wxDELETE(wxBLUE);
- wxDELETE(wxGREEN);
- wxDELETE(wxCYAN);
- wxDELETE(wxLIGHT_GREY);
-
- wxDELETE(wxSTANDARD_CURSOR);
- wxDELETE(wxHOURGLASS_CURSOR);
- wxDELETE(wxCROSS_CURSOR);
+ wxDELETE(wxNORMAL_FONT);
+ wxDELETE(wxSMALL_FONT);
+ wxDELETE(wxITALIC_FONT);
+ wxDELETE(wxSWISS_FONT);
+
+ wxDELETE(wxRED_PEN);
+ wxDELETE(wxCYAN_PEN);
+ wxDELETE(wxGREEN_PEN);
+ wxDELETE(wxBLACK_PEN);
+ wxDELETE(wxWHITE_PEN);
+ wxDELETE(wxTRANSPARENT_PEN);
+ wxDELETE(wxBLACK_DASHED_PEN);
+ wxDELETE(wxGREY_PEN);
+ wxDELETE(wxMEDIUM_GREY_PEN);
+ wxDELETE(wxLIGHT_GREY_PEN);
+
+ wxDELETE(wxBLUE_BRUSH);
+ wxDELETE(wxGREEN_BRUSH);
+ wxDELETE(wxWHITE_BRUSH);
+ wxDELETE(wxBLACK_BRUSH);
+ wxDELETE(wxTRANSPARENT_BRUSH);
+ wxDELETE(wxCYAN_BRUSH);
+ wxDELETE(wxRED_BRUSH);
+ wxDELETE(wxGREY_BRUSH);
+ wxDELETE(wxMEDIUM_GREY_BRUSH);
+ wxDELETE(wxLIGHT_GREY_BRUSH);
+
+ wxDELETE(wxBLACK);
+ wxDELETE(wxWHITE);
+ wxDELETE(wxRED);
+ wxDELETE(wxBLUE);
+ wxDELETE(wxGREEN);
+ wxDELETE(wxCYAN);
+ wxDELETE(wxLIGHT_GREY);
+
+ wxDELETE(wxSTANDARD_CURSOR);
+ wxDELETE(wxHOURGLASS_CURSOR);
+ wxDELETE(wxCROSS_CURSOR);