summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoracio Fernandes <horacio.fernandes@gmail.com>2012-12-02 17:52:26 -0400
committerPetr Mladek <pmladek@suse.cz>2012-12-03 16:58:02 +0000
commitb49ea0c9d24aa48d62590cb3443c3ad4143d2e2f (patch)
tree072de4eb517caca867bad25790850d86d2cf5366
parentb9915592cb5aea0b52be4beed708a198486a1f3b (diff)
fdo#57215: Fixed wrong text rotation in SVG Export
Added text rotation to "non-positioned characters" in SVG Export. Change-Id: I831644329625fa74e5a2436096d26ec22d8b0319 Reviewed-on: https://gerrit.libreoffice.org/1227 Reviewed-by: Petr Mladek <pmladek@suse.cz> Tested-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r--filter/source/svg/svgwriter.cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index b9e556db95f2..2f269ba9fda9 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -1520,6 +1520,27 @@ void SVGTextWriter::startTextPosition( sal_Bool bExportX, sal_Bool bExportY )
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX, ::rtl::OUString::valueOf( maTextPos.X() ) );
if( bExportY )
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, ::rtl::OUString::valueOf( maTextPos.Y() ) );
+
+ // if text is rotated, set transform matrix at new tspan element
+ const Font& rFont = mpVDev->GetFont();
+ if( rFont.GetOrientation() )
+ {
+ Point aRot( maTextPos );
+ OUString aTransform( "translate(" );
+ aTransform += OUString::valueOf( aRot.X() ) + ",";
+ aTransform += OUString::valueOf( aRot.Y() ) + ")";
+
+ aTransform += " rotate(";
+ aTransform += OUString::valueOf( rFont.GetOrientation() * -0.1 );
+ aTransform += ")";
+
+ aTransform += " translate(";
+ aTransform += OUString::valueOf( -aRot.X() ) + ",";
+ aTransform += OUString::valueOf( -aRot.Y() ) + ")";
+
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform );
+ }
+
mpTextPositionElem = new SvXMLElementExport( mrExport, XML_NAMESPACE_NONE, aXMLElemTspan, mbIWS, mbIWS );
}