+#include "wx/defs.h"
+#include "wx/object.h"
+#include "wx/gdiobj.h"
+#include "wx/gdicmn.h" // for wxGDIObjListBase
+
+// NOTE: these values cannot be combined together!
+enum wxBrushStyle
+{
+ wxBRUSHSTYLE_INVALID = -1,
+
+ wxBRUSHSTYLE_SOLID = wxSOLID,
+ wxBRUSHSTYLE_TRANSPARENT = wxTRANSPARENT,
+ wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE = wxSTIPPLE_MASK_OPAQUE,
+ wxBRUSHSTYLE_STIPPLE_MASK = wxSTIPPLE_MASK,
+ wxBRUSHSTYLE_STIPPLE = wxSTIPPLE,
+ wxBRUSHSTYLE_BDIAGONAL_HATCH = wxHATCHSTYLE_BDIAGONAL,
+ wxBRUSHSTYLE_CROSSDIAG_HATCH = wxHATCHSTYLE_CROSSDIAG,
+ wxBRUSHSTYLE_FDIAGONAL_HATCH = wxHATCHSTYLE_FDIAGONAL,
+ wxBRUSHSTYLE_CROSS_HATCH = wxHATCHSTYLE_CROSS,
+ wxBRUSHSTYLE_HORIZONTAL_HATCH = wxHATCHSTYLE_HORIZONTAL,
+ wxBRUSHSTYLE_VERTICAL_HATCH = wxHATCHSTYLE_VERTICAL,
+ wxBRUSHSTYLE_FIRST_HATCH = wxHATCHSTYLE_FIRST,
+ wxBRUSHSTYLE_LAST_HATCH = wxHATCHSTYLE_LAST
+};
+
+
+// wxBrushBase
+class WXDLLIMPEXP_CORE wxBrushBase: public wxGDIObject
+{
+public:
+ virtual ~wxBrushBase() { }
+
+ virtual void SetColour(const wxColour& col) = 0;
+ virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) = 0;
+ virtual void SetStyle(wxBrushStyle style) = 0;
+ virtual void SetStipple(const wxBitmap& stipple) = 0;
+
+ virtual wxColour GetColour() const = 0;
+ virtual wxBrushStyle GetStyle() const = 0;
+ virtual wxBitmap *GetStipple() const = 0;
+
+ virtual bool IsHatch() const
+ { return (GetStyle()>=wxBRUSHSTYLE_FIRST_HATCH) && (GetStyle()<=wxBRUSHSTYLE_LAST_HATCH); }
+
+ // Convenient helpers for testing whether the brush is a transparent one:
+ // unlike GetStyle() == wxBRUSHSTYLE_TRANSPARENT, they work correctly even
+ // if the brush is invalid (they both return false in this case).
+ bool IsTransparent() const
+ {
+ return IsOk() && GetStyle() == wxBRUSHSTYLE_TRANSPARENT;
+ }
+
+ bool IsNonTransparent() const
+ {
+ return IsOk() && GetStyle() != wxBRUSHSTYLE_TRANSPARENT;
+ }
+};
+
+#if defined(__WXMSW__)