diff options
author | Samuel Mehrbrodt <s.mehrbrodt@gmail.com> | 2013-12-07 12:14:40 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-12-08 10:22:14 +0000 |
commit | fb978b8123a47123d184daf390ce17eaacbc05d9 (patch) | |
tree | 39c3d3e4f66c2a8964bd6dd6a0b35bfad69c5d7c /filter | |
parent | 6fd352dc3ad32078188537aa8849758735391f46 (diff) |
fdo#39206 Add support for image transformation in SVG Import
Change-Id: I268599b0c13bbacf5db526fed79453a5443145a5
Reviewed-on: https://gerrit.libreoffice.org/6968
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/svg/svgreader.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
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; i<nNumAttrs; ++i ) { sAttributeValue = xAttributes->item(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 |