diff options
author | Andre Fischer <af@apache.org> | 2012-07-05 14:49:29 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-04-14 23:57:43 +0100 |
commit | a5aeb9e0a0e8766ddaefb147f24ca858f0fff75b (patch) | |
tree | cbbcd76a8c7111c137272a12300d313f9318d27f /vcl/source/gdi/region.cxx | |
parent | bd956534b696faec24d2dbf2ca064585099d0704 (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/source/gdi/region.cxx')
-rw-r--r-- | vcl/source/gdi/region.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
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 |