- switch (M_BRUSHDATA->m_style)
- {
-/****
- // Don't reset cbrush, wxTRANSPARENT is handled by wxBrush::SelectBrush()
- // this could save (many) time if frequently switching from
- // wxSOLID to wxTRANSPARENT, because Create... is not always called!!
- //
- // NB August 95: now create and select a Null brush instead.
- // This could be optimized as above.
- case wxTRANSPARENT:
- M_BRUSHDATA->m_hBrush = NULL; // Must always select a suitable background brush
- // - could choose white always for a quick solution
- break;
-***/
- case wxBDIAGONAL_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_BDIAGONAL,ms_colour) ;
- break ;
- case wxCROSSDIAG_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_DIAGCROSS,ms_colour) ;
- break ;
- case wxFDIAGONAL_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_FDIAGONAL,ms_colour) ;
- break ;
- case wxCROSS_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_CROSS,ms_colour) ;
- break ;
- case wxHORIZONTAL_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_HORIZONTAL,ms_colour) ;
- break ;
- case wxVERTICAL_HATCH:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_VERTICAL,ms_colour) ;
- break ;
- case wxSTIPPLE:
- if (M_BRUSHDATA->m_stipple.Ok())
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreatePatternBrush((HBITMAP) M_BRUSHDATA->m_stipple.GetHBITMAP()) ;
- else
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateSolidBrush(ms_colour) ;
- break ;
- case wxSOLID:
- default:
- M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateSolidBrush(ms_colour) ;
- break;
- }
-#ifdef WXDEBUG_CREATE
- if (M_BRUSHDATA->m_hBrush==NULL) wxError("Cannot create brush","Internal error") ;
-#endif
- return TRUE;
- }
- else
- return FALSE;
+bool wxBrush::operator==(const wxBrush& brush) const
+{
+ const wxBrushRefData *brushData = (wxBrushRefData *)brush.m_refData;
+
+ // an invalid brush is considered to be only equal to another invalid brush
+ return m_refData ? (brushData && *M_BRUSHDATA == *brushData) : !brushData;