X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..e26c0634d0040057f09d902842c2b77aa9f0cbfc:/src/gtk/region.cpp diff --git a/src/gtk/region.cpp b/src/gtk/region.cpp index 2c4be00d6d..b89afd3b4c 100644 --- a/src/gtk/region.cpp +++ b/src/gtk/region.cpp @@ -87,6 +87,7 @@ wxRegionRefData::wxRegionRefData(const wxRegionRefData& refData) m_region = regCopy; #endif +#if OLDCODE wxNode *node = refData.m_rects.First(); while (node) { @@ -94,6 +95,7 @@ wxRegionRefData::wxRegionRefData(const wxRegionRefData& refData) m_rects.Append( (wxObject*) new wxRect(*r) ); node = node->Next(); } +#endif } wxRegionRefData::~wxRegionRefData() @@ -117,8 +119,6 @@ wxRegionRefData::~wxRegionRefData() #define M_REGIONDATA ((wxRegionRefData *)m_refData) -IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject); - wxRegion::wxRegion() { } @@ -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; } @@ -566,8 +591,6 @@ wxList *wxRegion::GetRectList() const #if OLDCODE -IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject); - wxRegionIterator::wxRegionIterator() { Reset(); @@ -701,8 +724,6 @@ void wxRIRefData::CreateRects( const wxRegion& region ) } } -IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject); - wxRegionIterator::wxRegionIterator() { m_refData = new wxRIRefData(); @@ -769,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; }