svgio/source/svgreader/svgfecompositenode.cxx |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

New commits:
commit 485ae0bc7e1a1d615dd1d4133d3e42d655dec029
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Mar 15 11:15:08 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Mar 15 14:54:45 2024 +0100

    tdf#48062: use mergeToSinglePolyPolygon instead of createPolygonFromRect
    
    Otherwise, in files like
    https://bug-attachments.documentfoundation.org/attachment.cgi?id=193126
    where no rectangles are used the mask is displayed
    as a rectangle
    
    Change-Id: I8cafb22bd6055db729d0d56b4756119d7989abb2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164863
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/svgio/source/svgreader/svgfecompositenode.cxx 
b/svgio/source/svgreader/svgfecompositenode.cxx
index 1e20a0ef00f2..88ba5c62df68 100644
--- a/svgio/source/svgreader/svgfecompositenode.cxx
+++ b/svgio/source/svgreader/svgfecompositenode.cxx
@@ -22,6 +22,7 @@
 #include <basegfx/polygon/b2dpolypolygoncutter.hxx>
 #include <basegfx/polygon/b2dpolypolygon.hxx>
 #include <drawinglayer/primitive2d/maskprimitive2d.hxx>
+#include <drawinglayer/processor2d/contourextractor2d.hxx>
 
 namespace svgio::svgreader
 {
@@ -102,20 +103,22 @@ void 
SvgFeCompositeNode::apply(drawinglayer::primitive2d::Primitive2DContainer&
         = pParent->findGraphicSource(maIn2))
     {
         rTarget.append(*pSource2);
-        const basegfx::B2DRange aRange2(
-            
pSource2->getB2DRange(drawinglayer::geometry::ViewInformation2D()));
-
-        aPolyPolygon2 = 
basegfx::B2DPolyPolygon(basegfx::utils::createPolygonFromRect(aRange2));
+        drawinglayer::processor2d::ContourExtractor2D aExtractor(
+            drawinglayer::geometry::ViewInformation2D(), true);
+        aExtractor.process(*pSource2);
+        const basegfx::B2DPolyPolygonVector& 
rResult(aExtractor.getExtractedContour());
+        aPolyPolygon2 = basegfx::utils::mergeToSinglePolyPolygon(rResult);
     }
 
     if (const drawinglayer::primitive2d::Primitive2DContainer* pSource
         = pParent->findGraphicSource(maIn))
     {
         rTarget.append(*pSource);
-        const basegfx::B2DRange aRange(
-            pSource->getB2DRange(drawinglayer::geometry::ViewInformation2D()));
-
-        aPolyPolygon = 
basegfx::B2DPolyPolygon(basegfx::utils::createPolygonFromRect(aRange));
+        drawinglayer::processor2d::ContourExtractor2D aExtractor(
+            drawinglayer::geometry::ViewInformation2D(), true);
+        aExtractor.process(*pSource);
+        const basegfx::B2DPolyPolygonVector& 
rResult(aExtractor.getExtractedContour());
+        aPolyPolygon = basegfx::utils::mergeToSinglePolyPolygon(rResult);
     }
 
     basegfx::B2DPolyPolygon aResult;

Reply via email to