X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/81e4cb8bdfe9f52259ecc24f18563316c6f61906..76015a6bb79156d8af1b5e8b4b8e46b4e192d18f:/src/common/rgncmn.cpp?ds=sidebyside diff --git a/src/common/rgncmn.cpp b/src/common/rgncmn.cpp index 8b6530c78d..f70b680303 100644 --- a/src/common/rgncmn.cpp +++ b/src/common/rgncmn.cpp @@ -33,7 +33,7 @@ // ============================================================================ // ---------------------------------------------------------------------------- -// region comparision +// region comparison // ---------------------------------------------------------------------------- bool wxRegionBase::IsEqual(const wxRegion& region) const @@ -60,12 +60,12 @@ bool wxRegionBase::IsEqual(const wxRegion& region) const wxBitmap wxRegionBase::ConvertToBitmap() const { wxRect box = GetBox(); - wxBitmap bmp(box.GetRight(), box.GetBottom()); + wxBitmap bmp(box.GetRight() + 1, box.GetBottom() + 1); wxMemoryDC dc; dc.SelectObject(bmp); dc.SetBackground(*wxBLACK_BRUSH); dc.Clear(); - dc.SetClippingRegion(*wx_static_cast(const wxRegion *, this)); + dc.SetDeviceClippingRegion(*static_cast(this)); dc.SetBackground(*wxWHITE_BRUSH); dc.Clear(); dc.SelectObject(wxNullBitmap); @@ -131,7 +131,7 @@ bool wxRegionBase::Union(const wxBitmap& bmp) if (bmp.GetMask()) { wxImage image = bmp.ConvertToImage(); - wxASSERT_MSG( image.HasMask(), _T("wxBitmap::ConvertToImage doesn't preserve mask?") ); + wxASSERT_MSG( image.HasMask(), wxT("wxBitmap::ConvertToImage doesn't preserve mask?") ); return DoRegionUnion(*this, image, image.GetMaskRed(), image.GetMaskGreen(), @@ -157,3 +157,36 @@ bool wxRegionBase::Union(const wxBitmap& bmp, } #endif // wxUSE_IMAGE + +#ifdef wxHAS_REGION_COMBINE +// ============================================================================ +// wxRegionWithCombine +// ============================================================================ + +// implement some wxRegionBase pure virtuals in terms of Combine() +bool wxRegionWithCombine::DoUnionWithRect(const wxRect& rect) +{ + return Combine(rect, wxRGN_OR); +} + +bool wxRegionWithCombine::DoUnionWithRegion(const wxRegion& region) +{ + return DoCombine(region, wxRGN_OR); +} + +bool wxRegionWithCombine::DoIntersect(const wxRegion& region) +{ + return DoCombine(region, wxRGN_AND); +} + +bool wxRegionWithCombine::DoSubtract(const wxRegion& region) +{ + return DoCombine(region, wxRGN_DIFF); +} + +bool wxRegionWithCombine::DoXor(const wxRegion& region) +{ + return DoCombine(region, wxRGN_XOR); +} + +#endif // wxHAS_REGION_COMBINE