]> git.saurik.com Git - wxWidgets.git/commitdiff
region from polygon added
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 27 Jul 2004 11:28:20 +0000 (11:28 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 27 Jul 2004 11:28:20 +0000 (11:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/mac/carbon/region.h
src/mac/carbon/region.cpp

index 24c060337f53a0b1c71d2ce3cbe55030ae52fd08..923a0014ad02b7315760d6affa8b687f83dea63f 100644 (file)
@@ -44,6 +44,7 @@ public:
     wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight);
     wxRegion(const wxRect& rect);
     wxRegion( WXHRGN hRegion );
+    wxRegion(size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE );
     wxRegion();
     wxRegion(const wxBitmap& bmp)
     {
index a3cf8cef7b84f3eb0ed2287cf5517d9f3694fb08..a03e1515ba6d0c3a49838fab07689b8de09d15b8 100644 (file)
@@ -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 (int 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.
  */