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