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