diff options
Diffstat (limited to 'svgio/source/svgreader/svgimagenode.cxx')
-rw-r--r-- | svgio/source/svgreader/svgimagenode.cxx | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/svgio/source/svgreader/svgimagenode.cxx b/svgio/source/svgreader/svgimagenode.cxx index ed7b81cef61a..19c8c9404541 100644 --- a/svgio/source/svgreader/svgimagenode.cxx +++ b/svgio/source/svgreader/svgimagenode.cxx @@ -310,45 +310,37 @@ namespace svgio::svgreader if(aNewTarget.empty()) return; - if(aTarget.equal(aViewBox)) - { - // just add to rTarget - rTarget.append(aNewTarget); - } - else - { - // create mapping - const SvgAspectRatio& rRatio = maSvgAspectRatio; + // create mapping + const SvgAspectRatio& rRatio = maSvgAspectRatio; - // even when ratio is not set, use the defaults - // let mapping be created from SvgAspectRatio - const basegfx::B2DHomMatrix aEmbeddingTransform(rRatio.createMapping(aTarget, aViewBox)); + // even when ratio is not set, use the defaults + // let mapping be created from SvgAspectRatio + const basegfx::B2DHomMatrix aEmbeddingTransform(rRatio.createMapping(aTarget, aViewBox)); - if(!aEmbeddingTransform.isIdentity()) - { - const drawinglayer::primitive2d::Primitive2DReference xRef( - new drawinglayer::primitive2d::TransformPrimitive2D( - aEmbeddingTransform, - std::move(aNewTarget))); - - aNewTarget = drawinglayer::primitive2d::Primitive2DContainer { xRef }; - } + if(!aEmbeddingTransform.isIdentity()) + { + const drawinglayer::primitive2d::Primitive2DReference xRef( + new drawinglayer::primitive2d::TransformPrimitive2D( + aEmbeddingTransform, + std::move(aNewTarget))); - if(!rRatio.isMeetOrSlice()) - { - // need to embed in MaskPrimitive2D to ensure clipping - const drawinglayer::primitive2d::Primitive2DReference xMask( - new drawinglayer::primitive2d::MaskPrimitive2D( - basegfx::B2DPolyPolygon( - basegfx::utils::createPolygonFromRect(aTarget)), - std::move(aNewTarget))); - - aNewTarget = drawinglayer::primitive2d::Primitive2DContainer { xMask }; - } + aNewTarget = drawinglayer::primitive2d::Primitive2DContainer { xRef }; + } - // embed and add to rTarget, take local extra-transform into account - pStyle->add_postProcess(rTarget, std::move(aNewTarget), getTransform()); + if(!rRatio.isMeetOrSlice()) + { + // need to embed in MaskPrimitive2D to ensure clipping + const drawinglayer::primitive2d::Primitive2DReference xMask( + new drawinglayer::primitive2d::MaskPrimitive2D( + basegfx::B2DPolyPolygon( + basegfx::utils::createPolygonFromRect(aTarget)), + std::move(aNewTarget))); + + aNewTarget = drawinglayer::primitive2d::Primitive2DContainer { xMask }; } + + // embed and add to rTarget, take local extra-transform into account + pStyle->add_postProcess(rTarget, std::move(aNewTarget), getTransform()); } } // end of namespace svgio::svgreader |