summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorAndre Fischer <af@apache.org>2012-07-05 14:49:29 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-04-14 23:57:43 +0100
commita5aeb9e0a0e8766ddaefb147f24ca858f0fff75b (patch)
treecbbcd76a8c7111c137272a12300d313f9318d27f /vcl
parentbd956534b696faec24d2dbf2ca064585099d0704 (diff)
Resolves: #i120096# Detect empty polygon in Region constructor...
and set impl object accordingly. Reported by: Du Jing Fixed by: Andre Fischer (cherry picked from commit dbd0cea6052c5198fc960883830c3daebb989a4c) Change-Id: I210ec0e696e673309aad64a1e157e207bea10a66
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/vcl/region.hxx1
-rw-r--r--vcl/source/gdi/region.cxx12
2 files changed, 12 insertions, 1 deletions
diff --git a/vcl/inc/vcl/region.hxx b/vcl/inc/vcl/region.hxx
index 9a5ed6884c58..02eebc7ec50e 100644
--- a/vcl/inc/vcl/region.hxx
+++ b/vcl/inc/vcl/region.hxx
@@ -57,6 +57,7 @@ private:
SAL_DLLPRIVATE void ImplCopyData();
SAL_DLLPRIVATE void ImplCreateRectRegion( const Rectangle& rRect );
SAL_DLLPRIVATE void ImplCreatePolyPolyRegion( const PolyPolygon& rPolyPoly );
+ SAL_DLLPRIVATE void ImplCreatePolyPolyRegion( const basegfx::B2DPolyPolygon& rPolyPoly );
SAL_DLLPRIVATE void ImplPolyPolyRegionToBandRegionFunc();
SAL_DLLPRIVATE inline void ImplPolyPolyRegionToBandRegion();
SAL_DLLPRIVATE const ImplRegion* ImplGetImplRegion() const { return mpImplRegion; }
diff --git a/vcl/source/gdi/region.cxx b/vcl/source/gdi/region.cxx
index b46972a7383a..e359f59a1678 100644
--- a/vcl/source/gdi/region.cxx
+++ b/vcl/source/gdi/region.cxx
@@ -1100,7 +1100,7 @@ Region::Region( const basegfx::B2DPolyPolygon& rPolyPoly )
DBG_CTOR( Region, ImplDbgTestRegion );
DBG_CHKOBJ( &rPolyPoly, PolyPolygon, NULL );
- mpImplRegion = new ImplRegion( rPolyPoly );
+ ImplCreatePolyPolyRegion( rPolyPoly );
}
// -----------------------------------------------------------------------
@@ -1190,6 +1190,16 @@ void Region::ImplCreatePolyPolyRegion( const PolyPolygon& rPolyPoly )
// -----------------------------------------------------------------------
+void Region::ImplCreatePolyPolyRegion( const basegfx::B2DPolyPolygon& rPolyPoly )
+{
+ if (rPolyPoly.count()==0 || rPolyPoly.getB2DRange().isEmpty())
+ mpImplRegion = (ImplRegion*)(&aImplEmptyRegion);
+ else
+ mpImplRegion = new ImplRegion( rPolyPoly );
+}
+
+// -----------------------------------------------------------------------
+
void Region::ImplPolyPolyRegionToBandRegionFunc()
{
// ensure to subdivide when bezier segemnts are used, it's going to