X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3c7fc996a73e9f6a83067bc28a3c5581a3fee65..9a7b7798282622e445efc3318b6c85ff0bed9af8:/src/generic/regiong.cpp diff --git a/src/generic/regiong.cpp b/src/generic/regiong.cpp index 9c7bf1d034..845df56ce0 100644 --- a/src/generic/regiong.cpp +++ b/src/generic/regiong.cpp @@ -286,100 +286,72 @@ wxObjectRefData *wxRegionGeneric::CloneRefData(const wxObjectRefData *data) cons return new wxRegionRefData(*(wxRegionRefData *)data); } -bool wxRegionGeneric::operator== (const wxRegionGeneric& region) const +bool wxRegionGeneric::DoIsEqual(const wxRegion& region) const { - wxASSERT(m_refData && region.m_refData); return REGION::XEqualRegion(M_REGIONDATA,M_REGIONDATA_OF(region)); } -wxRect wxRegionGeneric::GetBox() const +bool wxRegionGeneric::DoGetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const { - wxASSERT(m_refData); - wxRect rect; - REGION::XClipBox(M_REGIONDATA,&rect); - return rect; -} + if ( !m_refData ) + return false; -void wxRegionGeneric::GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const -{ - wxASSERT(m_refData); wxRect rect; REGION::XClipBox(M_REGIONDATA,&rect); x = rect.x; y = rect.y; w = rect.width; h = rect.height; + return true; } // ---------------------------------------------------------------------------- // wxRegionGeneric operations // ---------------------------------------------------------------------------- -bool wxRegionGeneric::Union(const wxRect& rect) -/* XUnionRectWithRegion */ +bool wxRegionGeneric::DoUnionWithRect(const wxRect& rect) { - if (!rect.width || !rect.height) - return false; + if ( rect.IsEmpty() ) + { + // nothing to do + return true; + } AllocExclusive(); REGION region(rect); return REGION::XUnionRegion(®ion,M_REGIONDATA,M_REGIONDATA); } -bool wxRegionGeneric::Union(const wxRegionGeneric& region) +bool wxRegionGeneric::DoUnionWithRegion(const wxRegion& region) { AllocExclusive(); return REGION::XUnionRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA); } -bool wxRegionGeneric::Intersect(const wxRect& rect) -{ - if (!rect.width || !rect.height) - return false; - AllocExclusive(); - REGION region(rect); - - return REGION::XIntersectRegion(®ion,M_REGIONDATA,M_REGIONDATA); -} - -bool wxRegionGeneric::Intersect(const wxRegionGeneric& region) +bool wxRegionGeneric::DoIntersect(const wxRegion& region) { AllocExclusive(); return REGION::XIntersectRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA); } -bool wxRegionGeneric::Subtract(const wxRect& rect) +bool wxRegionGeneric::DoSubtract(const wxRegion& region) { - if (!rect.width || !rect.height) - return false; - AllocExclusive(); - REGION region(rect); - - return REGION::XSubtractRegion(®ion,M_REGIONDATA,M_REGIONDATA); -} + if ( region.IsEmpty() ) + { + // nothing to do + return true; + } -bool wxRegionGeneric::Subtract(const wxRegionGeneric& region) -{ return REGION::XSubtractRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA); } -bool wxRegionGeneric::Xor(const wxRect& rect) -{ - if (!rect.width || !rect.height) - return false; - AllocExclusive(); - REGION region(rect); - - return REGION::XXorRegion(®ion,M_REGIONDATA,M_REGIONDATA); -} - -bool wxRegionGeneric::Xor(const wxRegionGeneric& region) +bool wxRegionGeneric::DoXor(const wxRegion& region) { AllocExclusive(); return REGION::XXorRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA); } -bool wxRegionGeneric::Offset(wxCoord x, wxCoord y) +bool wxRegionGeneric::DoOffset(wxCoord x, wxCoord y) { AllocExclusive(); return REGION::XOffsetRegion(M_REGIONDATA, x, y); @@ -389,35 +361,21 @@ bool wxRegionGeneric::Offset(wxCoord x, wxCoord y) // wxRegionGeneric comparison // ---------------------------------------------------------------------------- -bool wxRegionGeneric::Empty() const +bool wxRegionGeneric::IsEmpty() const { wxASSERT(m_refData); return REGION::XEmptyRegion(M_REGIONDATA); } // Does the region contain the point (x,y)? -wxRegionContain wxRegionGeneric::Contains(long x, long y) const -{ - wxASSERT(m_refData); - return REGION::XPointInRegion(M_REGIONDATA,x,y)?wxInRegion:wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegionGeneric::Contains(const wxPoint& pt) const -{ - wxASSERT(m_refData); - return REGION::XPointInRegion(M_REGIONDATA,pt.x,pt.y)?wxInRegion:wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegionGeneric::Contains(long x, long y, long w, long h) const +wxRegionContain wxRegionGeneric::DoContainsPoint(wxCoord x, wxCoord y) const { wxASSERT(m_refData); - return REGION::XRectInRegion(M_REGIONDATA,x,y,w,h); + return REGION::XPointInRegion(M_REGIONDATA,x,y) ? wxInRegion : wxOutRegion; } // Does the region contain the rectangle rect? -wxRegionContain wxRegionGeneric::Contains(const wxRect& rect) const +wxRegionContain wxRegionGeneric::DoContainsRect(const wxRect& rect) const { wxASSERT(m_refData); return REGION::XRectInRegion(M_REGIONDATA,rect.x,rect.y,rect.width,rect.height);