+void wxBrush::SetColour( unsigned char r, unsigned char g, unsigned char b )
+{
+ Unshare();
+ M_BRUSHDATA->m_colour.Set( r, g, b );
+}
+
+void wxBrush::SetStyle( int style )
+{
+ Unshare();
+ M_BRUSHDATA->m_style = style;
+}
+
+void wxBrush::SetStipple( const wxBitmap& stipple )
+{
+ Unshare();
+ M_BRUSHDATA->m_stipple = stipple;
+ if (M_BRUSHDATA->m_stipple.GetMask())
+ {
+ M_BRUSHDATA->m_style = wxSTIPPLE_MASK_OPAQUE;
+ }
+ else
+ {
+ M_BRUSHDATA->m_style = wxSTIPPLE;
+ }
+}
+
+void wxBrush::Unshare()
+{
+ if (!m_refData)
+ {
+ m_refData = new wxBrushRefData();
+ }
+ else
+ {
+ wxBrushRefData* ref = new wxBrushRefData( *(wxBrushRefData*)m_refData );
+ UnRef();
+ m_refData = ref;
+ }
+}