diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-06-15 10:10:38 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-06-15 12:39:16 +0200 |
commit | 472d7ce57bdf1473538dda23c9328d44cdf816c8 (patch) | |
tree | 73316ec704fc700927d838307ac33ffdc22a3936 /svgio/source/svgreader/svgimagenode.cxx | |
parent | 3f6bb9565d4edce563dbd938c655ae853926d362 (diff) |
tdf#155833: apply transform to image even if target is equal to viewbox
Change-Id: Ie820528384d096c6a332e2abd0095f68c7f64a0f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153103
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
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 |