|
 |
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 |
|