X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/71110b404c5cbef2175b2be645783e93d9a2b8c4..4ac219f63d40983d417cabc09b2ed29c0f87c376:/src/mac/dc.cpp?ds=sidebyside diff --git a/src/mac/dc.cpp b/src/mac/dc.cpp index 4a044f2887..c6f0d29f89 100644 --- a/src/mac/dc.cpp +++ b/src/mac/dc.cpp @@ -649,40 +649,15 @@ void wxDC::SetLogicalFunction( int function ) m_macPenInstalled = false ; } -void wxDC::DoFloodFill( wxCoord x, wxCoord y, const wxColour& col, - int style ) -{ - if (GetBrush().GetStyle() == wxTRANSPARENT) - { - wxLogDebug(wxT("In FloodFill, Current Brush is transparent, no filling done")); - return ; - } - int height = 0; - int width = 0; - this->GetSize(&width, &height); - //it would be nice to fail if we don't get a sensible size... - if (width < 1 || height < 1) - { - wxLogError(wxT("In FloodFill, dc.GetSize routine failed, method not supported by this DC")); - return ; - } +extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, + const wxColour & col, int style); - //this is much faster than doing the individual pixels - wxMemoryDC memdc; - wxBitmap bitmap(width, height); - memdc.SelectObject(bitmap); - memdc.Blit(0, 0, width, height, (wxDC*) this, 0, 0); - memdc.SelectObject(wxNullBitmap); - - wxImage image = bitmap.ConvertToImage() ; - image.DoFloodFill (x,y, GetBrush(), col, style, GetLogicalFunction()); - bitmap = wxBitmap(image); - memdc.SelectObject(bitmap); - this->Blit(0, 0, width, height, &memdc, 0, 0); - memdc.SelectObject(wxNullBitmap); +bool wxDC::DoFloodFill(wxCoord x, wxCoord y, + const wxColour& col, int style) +{ + return wxDoFloodFill(this, x, y, col, style); } - bool wxDC::DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const { wxCHECK_MSG( Ok(), false, wxT("wxDC::DoGetPixel Invalid DC") ); @@ -898,12 +873,11 @@ void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) if (m_pen.GetStyle() != wxTRANSPARENT) { - MacInstallPen() ; wxCoord xx1 = XLOG2DEVMAC(x); wxCoord yy1 = YLOG2DEVMAC(y); - - ::MoveTo(xx1,yy1); - ::LineTo(xx1+1, yy1+1); + RGBColor pencolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel()); + ::SetCPixel( xx1,yy1,&pencolor) ; + CalcBoundingBox(x, y); } } @@ -935,8 +909,8 @@ void wxDC::DoDrawLines(int n, wxPoint points[], } void wxDC::DoDrawPolygon(int n, wxPoint points[], - wxCoord xoffset, wxCoord yoffset, - int fillStyle ) + wxCoord xoffset, wxCoord yoffset, + int fillStyle ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; @@ -1227,7 +1201,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, if ( LockPixels(bmappixels) ) { wxMacPortSetter helper(this) ; - RGBColor tempColor ; if ( source->GetDepth() == 1 ) {