-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBrush;
-class WXDLLEXPORT wxColour;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxFont;
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxPalette;
-class WXDLLEXPORT wxPen;
-class WXDLLEXPORT wxRegion;
-class WXDLLEXPORT wxString;
+class WXDLLIMPEXP_CORE wxBitmap;
+class WXDLLIMPEXP_CORE wxBrush;
+class WXDLLIMPEXP_CORE wxColour;
+class WXDLLIMPEXP_CORE wxCursor;
+class WXDLLIMPEXP_CORE wxFont;
+class WXDLLIMPEXP_CORE wxIcon;
+class WXDLLIMPEXP_CORE wxPalette;
+class WXDLLIMPEXP_CORE wxPen;
+class WXDLLIMPEXP_CORE wxRegion;
+class WXDLLIMPEXP_BASE wxString;
- // FIXME are these really useful? If they're, we should have += &c as well
- wxSize operator+(const wxSize& sz) { return wxSize(x + sz.x, y + sz.y); }
- wxSize operator-(const wxSize& sz) { return wxSize(x - sz.x, y - sz.y); }
+ wxSize operator+(const wxSize& sz) const { return wxSize(x + sz.x, y + sz.y); }
+ wxSize operator-(const wxSize& sz) const { return wxSize(x - sz.x, y - sz.y); }
+ wxSize operator/(int i) const { return wxSize(x / i, y / i); }
+ wxSize operator*(int i) const { return wxSize(x * i, y * i); }
+
+ wxSize& operator+=(const wxSize& sz) { x += sz.x; y += sz.y; return *this; }
+ wxSize& operator-=(const wxSize& sz) { x -= sz.x; y -= sz.y; return *this; }
+ wxSize& operator/=(const int i) { x /= i; y /= i; return *this; }
+ wxSize& operator*=(const int i) { x *= i; y *= i; return *this; }
+
+ void IncTo(const wxSize& sz)
+ { if ( sz.x > x ) x = sz.x; if ( sz.y > y ) y = sz.y; }
+ void DecTo(const wxSize& sz)
+ { if ( sz.x < x ) x = sz.x; if ( sz.y < y ) y = sz.y; }
+ bool IsEmpty() const { return (width <= 0) || (height <= 0); }
+
+ wxPoint GetTopLeft() const { return GetPosition(); }
+ wxPoint GetLeftTop() const { return GetTopLeft(); }
+ void SetTopLeft(const wxPoint &p) { SetPosition(p); }
+ void SetLeftTop(const wxPoint &p) { SetTopLeft(p); }
+
+ wxPoint GetBottomRight() const { return wxPoint(GetRight(), GetBottom()); }
+ wxPoint GetRightBottom() const { return GetBottomRight(); }
+ void SetBottomRight(const wxPoint &p) { SetRight(p.x); SetBottom(p.y); }
+ void SetRightBottom(const wxPoint &p) { SetBottomRight(p); }
+
+
+ // these are like Union() but don't ignore empty rectangles
+ wxRect operator+(const wxRect& rect) const;
+ wxRect& operator+=(const wxRect& rect)
+ {
+ *this = *this + rect;
+ return *this;
+ }
+
+
+ // centre this rectangle in the given (usually, but not necessarily,
+ // larger) one
+ wxRect CentreIn(const wxRect& r, int dir = wxBOTH) const
+ {
+ return wxRect(dir & wxHORIZONTAL ? r.x + (r.width - width)/2 : x,
+ dir & wxVERTICAL ? r.y + (r.height - height)/2 : y,
+ width, height);
+ }
+
+ wxRect CenterIn(const wxRect& r, int dir = wxBOTH) const
+ {
+ return CentreIn(r, dir);
+ }
+
-WXDLLEXPORT_DATA(extern wxFont*) wxNORMAL_FONT;
-WXDLLEXPORT_DATA(extern wxFont*) wxSMALL_FONT;
-WXDLLEXPORT_DATA(extern wxFont*) wxITALIC_FONT;
-WXDLLEXPORT_DATA(extern wxFont*) wxSWISS_FONT;
-
-WXDLLEXPORT_DATA(extern wxPen*) wxRED_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxCYAN_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxGREEN_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxWHITE_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxTRANSPARENT_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_DASHED_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxGREY_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxMEDIUM_GREY_PEN;
-WXDLLEXPORT_DATA(extern wxPen*) wxLIGHT_GREY_PEN;
-
-WXDLLEXPORT_DATA(extern wxBrush*) wxBLUE_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxGREEN_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxWHITE_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxBLACK_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxGREY_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxMEDIUM_GREY_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxLIGHT_GREY_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxTRANSPARENT_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxCYAN_BRUSH;
-WXDLLEXPORT_DATA(extern wxBrush*) wxRED_BRUSH;
-
-WXDLLEXPORT_DATA(extern wxColour*) wxBLACK;
-WXDLLEXPORT_DATA(extern wxColour*) wxWHITE;
-WXDLLEXPORT_DATA(extern wxColour*) wxRED;
-WXDLLEXPORT_DATA(extern wxColour*) wxBLUE;
-WXDLLEXPORT_DATA(extern wxColour*) wxGREEN;
-WXDLLEXPORT_DATA(extern wxColour*) wxCYAN;
-WXDLLEXPORT_DATA(extern wxColour*) wxLIGHT_GREY;
+extern WXDLLEXPORT_DATA(wxFont*) wxNORMAL_FONT;
+extern WXDLLEXPORT_DATA(wxFont*) wxSMALL_FONT;
+extern WXDLLEXPORT_DATA(wxFont*) wxITALIC_FONT;
+extern WXDLLEXPORT_DATA(wxFont*) wxSWISS_FONT;
+
+extern WXDLLEXPORT_DATA(wxPen*) wxRED_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxCYAN_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxGREEN_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxBLACK_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxWHITE_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxTRANSPARENT_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxBLACK_DASHED_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxGREY_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxMEDIUM_GREY_PEN;
+extern WXDLLEXPORT_DATA(wxPen*) wxLIGHT_GREY_PEN;
+
+extern WXDLLEXPORT_DATA(wxBrush*) wxBLUE_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxGREEN_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxWHITE_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxBLACK_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxGREY_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxMEDIUM_GREY_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxLIGHT_GREY_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxTRANSPARENT_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxCYAN_BRUSH;
+extern WXDLLEXPORT_DATA(wxBrush*) wxRED_BRUSH;
+
+extern WXDLLEXPORT_DATA(wxColour*) wxBLACK;
+extern WXDLLEXPORT_DATA(wxColour*) wxWHITE;
+extern WXDLLEXPORT_DATA(wxColour*) wxRED;
+extern WXDLLEXPORT_DATA(wxColour*) wxBLUE;
+extern WXDLLEXPORT_DATA(wxColour*) wxGREEN;
+extern WXDLLEXPORT_DATA(wxColour*) wxCYAN;
+extern WXDLLEXPORT_DATA(wxColour*) wxLIGHT_GREY;
-WXDLLEXPORT_DATA(extern wxBitmap) wxNullBitmap;
-WXDLLEXPORT_DATA(extern wxIcon) wxNullIcon;
-WXDLLEXPORT_DATA(extern wxCursor) wxNullCursor;
-WXDLLEXPORT_DATA(extern wxPen) wxNullPen;
-WXDLLEXPORT_DATA(extern wxBrush) wxNullBrush;
-WXDLLEXPORT_DATA(extern wxPalette) wxNullPalette;
-WXDLLEXPORT_DATA(extern wxFont) wxNullFont;
-WXDLLEXPORT_DATA(extern wxColour) wxNullColour;
+extern WXDLLEXPORT_DATA(wxBitmap) wxNullBitmap;
+extern WXDLLEXPORT_DATA(wxIcon) wxNullIcon;
+extern WXDLLEXPORT_DATA(wxCursor) wxNullCursor;
+extern WXDLLEXPORT_DATA(wxPen) wxNullPen;
+extern WXDLLEXPORT_DATA(wxBrush) wxNullBrush;
+extern WXDLLEXPORT_DATA(wxPalette) wxNullPalette;
+extern WXDLLEXPORT_DATA(wxFont) wxNullFont;
+extern WXDLLEXPORT_DATA(wxColour) wxNullColour;