]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/region.cpp
oops, fixed typo breaking iconv constness detection in the previous commit
[wxWidgets.git] / src / gtk / region.cpp
index 5c11a0acf3e45e1b8ae50869f9b7207b021147e7..b89afd3b4ce9e686fecf7c75de49c929a9ed82e6 100644 (file)
@@ -186,6 +186,30 @@ wxRegion::wxRegion( const wxRect& rect )
 #endif
 }
 
+wxRegion::wxRegion( size_t n, const wxPoint *points, int fillStyle )
+{
+    GdkPoint *gdkpoints = new GdkPoint[n];
+    for ( size_t i = 0 ; i < n ; i++ )
+    {
+        gdkpoints[i].x = points[i].x;
+        gdkpoints[i].y = points[i].y;
+    }
+
+    m_refData = new wxRegionRefData();
+
+    GdkRegion* reg = gdk_region_polygon
+                     (
+                        gdkpoints,
+                        n,
+                        fillStyle == wxWINDING_RULE ? GDK_WINDING_RULE
+                                                    : GDK_EVEN_ODD_RULE
+                     );
+
+    M_REGIONDATA->m_region = reg;
+
+    delete [] gdkpoints;
+}
+
 wxRegion::~wxRegion()
 {
 }
@@ -351,6 +375,7 @@ bool wxRegion::Intersect( const wxRegion& region )
     }
 
     // we need to update the rect list as well
+#if OLDCODE
     wxList& list = *GetRectList();
     wxNode *node = list.First();
     while (node)
@@ -372,7 +397,7 @@ bool wxRegion::Intersect( const wxRegion& region )
 
         node = node->Next();
     }
-
+#endif
     return TRUE;
 }
 
@@ -765,10 +790,8 @@ wxCoord wxRegionIterator::GetH() const
 wxRect wxRegionIterator::GetRect() const
 {
     wxRect r;
-    wxNode *node = m_region.GetRectList()->Nth( m_current );
-
-    if (node)
-        r = *((wxRect*)node->Data());
+    if( HaveRects() )
+        r = ((wxRIRefData*)m_refData)->m_rects[m_current];
 
     return r;
 }