summaryrefslogtreecommitdiff
path: root/filter/source/svg/svgwriter.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'filter/source/svg/svgwriter.cxx')
-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 );
}