merged 2.4 branch into the trunk
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18040 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -191,25 +191,20 @@ bool wxRegion::Union( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
|
||||
if ( !width || !height )
|
||||
return TRUE;
|
||||
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
if (!m_refData)
|
||||
if ( !m_refData )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
#ifdef __WXGTK20__
|
||||
M_REGIONDATA->m_region = gdk_region_rectangle( &rect );
|
||||
#else
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect(wxGdkRegion(), &rect);
|
||||
#endif
|
||||
InitRect(x, y, width, height);
|
||||
}
|
||||
else
|
||||
{
|
||||
AllocExclusive();
|
||||
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
|
||||
#else
|
||||
@@ -274,16 +269,11 @@ bool wxRegion::Intersect( const wxRegion& region )
|
||||
|
||||
if (!m_refData)
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
// intersecting with invalid region doesn't make sense
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// leave here
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
AllocExclusive();
|
||||
}
|
||||
AllocExclusive();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
gdk_region_intersect( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
@@ -315,14 +305,12 @@ bool wxRegion::Subtract( const wxRegion& region )
|
||||
|
||||
if (!m_refData)
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
else
|
||||
{
|
||||
AllocExclusive();
|
||||
// subtracting from an invalid region doesn't make sense
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
AllocExclusive();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
#else
|
||||
@@ -353,14 +341,11 @@ bool wxRegion::Xor( const wxRegion& region )
|
||||
|
||||
if (!m_refData)
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
else
|
||||
{
|
||||
AllocExclusive();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
AllocExclusive();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
#else
|
||||
@@ -372,6 +357,18 @@ bool wxRegion::Xor( const wxRegion& region )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Offset( wxCoord x, wxCoord y )
|
||||
{
|
||||
if (!m_refData)
|
||||
return FALSE;
|
||||
|
||||
AllocExclusive();
|
||||
|
||||
gdk_region_offset( M_REGIONDATA->m_region, x, y );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxRegion tests
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -403,18 +400,6 @@ wxRect wxRegion::GetBox() const
|
||||
return wxRect( x, y, w, h );
|
||||
}
|
||||
|
||||
bool wxRegion::Offset( wxCoord x, wxCoord y )
|
||||
{
|
||||
if (!m_refData)
|
||||
return FALSE;
|
||||
|
||||
AllocExclusive();
|
||||
|
||||
gdk_region_offset( M_REGIONDATA->m_region, x, y );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Empty() const
|
||||
{
|
||||
if (!m_refData)
|
||||
@@ -495,7 +480,7 @@ struct _XRegion {
|
||||
_XBox *rects, extents;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif // GTK+ 1.x
|
||||
|
||||
class wxRIRefData: public wxObjectRefData
|
||||
{
|
||||
@@ -592,42 +577,48 @@ bool wxRegionIterator::HaveRects() const
|
||||
return m_current < ((wxRIRefData*)m_refData)->m_numRects;
|
||||
}
|
||||
|
||||
wxRegionIterator::operator bool () const
|
||||
wxRegionIterator& wxRegionIterator::operator ++ ()
|
||||
{
|
||||
return HaveRects();
|
||||
if (HaveRects())
|
||||
++m_current;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void wxRegionIterator::operator ++ ()
|
||||
wxRegionIterator wxRegionIterator::operator ++ (int)
|
||||
{
|
||||
if (HaveRects()) ++m_current;
|
||||
}
|
||||
wxRegionIterator tmp = *this;
|
||||
if (HaveRects())
|
||||
++m_current;
|
||||
|
||||
void wxRegionIterator::operator ++ (int)
|
||||
{
|
||||
if (HaveRects()) ++m_current;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
wxCoord wxRegionIterator::GetX() const
|
||||
{
|
||||
if( !HaveRects() ) return 0;
|
||||
wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") );
|
||||
|
||||
return ((wxRIRefData*)m_refData)->m_rects[m_current].x;
|
||||
}
|
||||
|
||||
wxCoord wxRegionIterator::GetY() const
|
||||
{
|
||||
if( !HaveRects() ) return 0;
|
||||
wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") );
|
||||
|
||||
return ((wxRIRefData*)m_refData)->m_rects[m_current].y;
|
||||
}
|
||||
|
||||
wxCoord wxRegionIterator::GetW() const
|
||||
{
|
||||
if( !HaveRects() ) return -1;
|
||||
wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") );
|
||||
|
||||
return ((wxRIRefData*)m_refData)->m_rects[m_current].width;
|
||||
}
|
||||
|
||||
wxCoord wxRegionIterator::GetH() const
|
||||
{
|
||||
if( !HaveRects() ) return -1;
|
||||
wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") );
|
||||
|
||||
return ((wxRIRefData*)m_refData)->m_rects[m_current].height;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user