Blame SOURCES/0090-fdo-39206-Add-support-for-image-transformation-in-SV.patch

f0633d
From 050e42346bd2d7ce8ab454df400b48f52c2aeecf Mon Sep 17 00:00:00 2001
f0633d
From: Samuel Mehrbrodt <s.mehrbrodt@gmail.com>
f0633d
Date: Sat, 7 Dec 2013 12:14:40 +0100
f0633d
Subject: [PATCH 090/109] fdo#39206 Add support for image transformation in SVG
f0633d
 Import
f0633d
f0633d
Change-Id: I268599b0c13bbacf5db526fed79453a5443145a5
f0633d
Reviewed-on: https://gerrit.libreoffice.org/6968
f0633d
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
f0633d
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
f0633d
(cherry picked from commit fb978b8123a47123d184daf390ce17eaacbc05d9)
f0633d
---
f0633d
 filter/source/svg/svgreader.cxx | 17 ++++++++++++++++-
f0633d
 1 file changed, 16 insertions(+), 1 deletion(-)
f0633d
f0633d
diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx
f0633d
index e74f669..e3f1af3 100644
f0633d
--- a/filter/source/svg/svgreader.cxx
f0633d
+++ b/filter/source/svg/svgreader.cxx
f0633d
@@ -1421,7 +1421,7 @@ struct ShapeWritingVisitor
f0633d
                 // collect attributes
f0633d
                 const sal_Int32 nNumAttrs( xAttributes->getLength() );
f0633d
                 OUString sAttributeValue;
f0633d
-                double x=0.0,y=0.0,width=0.0,height=0.0;
f0633d
+                double x=0.0, y=0.0, width=0.0, height=0.0;
f0633d
                 for( sal_Int32 i=0; i
f0633d
                 {
f0633d
                     sAttributeValue = xAttributes->item(i)->getNodeValue();
f0633d
@@ -1446,6 +1446,20 @@ struct ShapeWritingVisitor
f0633d
                             break;
f0633d
                     }
f0633d
                 }
f0633d
+                // extract basic transformations out of CTM
f0633d
+                basegfx::B2DTuple aScale, aTranslate;
f0633d
+                double fRotate, fShearX;
f0633d
+                if (maCurrState.maCTM.decompose(aScale, aTranslate, fRotate, fShearX))
f0633d
+                {
f0633d
+                    // apply transform
f0633d
+                    x *= aScale.getX();
f0633d
+                    width *= aScale.getX();
f0633d
+                    y *= aScale.getY();
f0633d
+                    height *= aScale.getY();
f0633d
+                    x += aTranslate.getX();
f0633d
+                    y += aTranslate.getY();
f0633d
+                    //TODO: Rotate
f0633d
+                }
f0633d
 
f0633d
                 OUString sValue = xElem->hasAttribute("href") ? xElem->getAttribute("href") : "";
f0633d
                 OString aValueUtf8( sValue.getStr(), sValue.getLength(), RTL_TEXTENCODING_UTF8 );
f0633d
@@ -1508,6 +1522,7 @@ struct ShapeWritingVisitor
f0633d
                     y *= aScale.getY();
f0633d
                     x += aTranslate.getX();
f0633d
                     y += aTranslate.getY();
f0633d
+                    //TODO: Rotate
f0633d
                 }
f0633d
                 else {
f0633d
                     // some heuristic attempts to have text output
f0633d
-- 
f0633d
1.8.4.2
f0633d