+
+void wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y,
+ const wxColour& col, int style)
+{
+ if (dc->GetBrush().GetStyle() == wxTRANSPARENT)
+ return;
+
+ int height = 0;
+ int width = 0;
+ dc->GetSize(&width, &height);
+
+ //it would be nice to fail if we don't get a sensible size...
+ wxCHECK_RET(width >= 1 && height >= 1, wxT("In FloodFill, dc.GetSize routine failed, method not supported by this DC"));
+
+ //this is much faster than doing the individual pixels
+ wxMemoryDC memdc;
+ wxBitmap bitmap(width, height);
+ memdc.SelectObject(bitmap);
+ memdc.Blit(0, 0, width, height, dc, 0, 0);
+ memdc.SelectObject(wxNullBitmap);
+
+ wxImage image = bitmap.ConvertToImage();
+ wxImageFloodFill(&image, x,y, dc->GetBrush(), col, style,
+ dc->GetLogicalFunction());
+ bitmap = wxBitmap(image);
+ memdc.SelectObject(bitmap);
+ dc->Blit(0, 0, width, height, &memdc, 0, 0);
+ memdc.SelectObject(wxNullBitmap);
+}
+