X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..0bd3b8eca1d6ef2749797f34216493fce0edd8d6:/src/mac/carbon/region.cpp?ds=inline diff --git a/src/mac/carbon/region.cpp b/src/mac/carbon/region.cpp index fcf4055a2b..aefaa80693 100644 --- a/src/mac/carbon/region.cpp +++ b/src/mac/carbon/region.cpp @@ -5,7 +5,7 @@ // Created: Fri Oct 24 10:46:34 MET 1997 // RCS-ID: $Id$ // Copyright: (c) 1997 Stefan Csomor -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -85,6 +85,31 @@ wxRegion::wxRegion(const wxRect& rect) SetRectRgn( (RgnHandle) M_REGION , rect.x , rect.y , rect.x+rect.width , rect.y+rect.height ) ; } +wxRegion::wxRegion(size_t n, const wxPoint *points, int WXUNUSED(fillStyle)) +{ + m_refData = new wxRegionRefData; + + OpenRgn(); + + wxCoord x1, x2 , y1 , y2 ; + x2 = x1 = points[0].x ; + y2 = y1 = points[0].y ; + ::MoveTo(x1,y1); + for (size_t i = 1; i < n; i++) + { + x2 = points[i].x ; + y2 = points[i].y ; + ::LineTo(x2, y2); + } + // close the polyline if necessary + if ( x1 != x2 || y1 != y2 ) + { + ::LineTo(x1,y1 ) ; + } + ClosePoly(); + CloseRgn( M_REGION ) ; +} + /*! * Destroy the region. */ @@ -103,6 +128,22 @@ void wxRegion::Clear() UnRef(); } +// Move the region +bool wxRegion::Offset(wxCoord x, wxCoord y) +{ + wxCHECK_MSG( M_REGION, false, _T("invalid wxRegion") ); + + if ( !x && !y ) + { + // nothing to do + return true; + } + + OffsetRgn( M_REGION , x , y ) ; + return true ; +} + + //! Combine rectangle (x, y, w, h) with this. bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) {