diff options
author | Gary Houston <ghouston@arglist.com> | 2014-12-20 15:41:15 +1100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-01-21 13:22:11 +0000 |
commit | 921cea89da8adbe714ea8f71169dd6afc42354c4 (patch) | |
tree | 07e998c29ff9a5ed258637bd653721c5bc193762 /oox | |
parent | 1ca9c116ec663b870e79a91b6476cd5b16a34a62 (diff) |
fdo#87488 Wrong text rotation inside a preset shape from docx
Preset shape text rotation values are read in a few places and stored in
moRotation. With these changes, moRotation is always read unchanged, but
multiplied by -1 when it's used.
Change-Id: I633d665c21daa69e15fa828a43300f10d2bf2054
Reviewed-on: https://gerrit.libreoffice.org/13561
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/shape.cxx | 5 | ||||
-rw-r--r-- | oox/source/drawingml/textbodypropertiescontext.cxx | 11 | ||||
-rw-r--r-- | oox/source/drawingml/transform2dcontext.cxx | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 7fdfefd94dc3..59350e2df90a 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1014,7 +1014,10 @@ Reference< XShape > Shape::createAndInsert( if( getTextBody() ) { sal_Int32 nTextRotateAngle = static_cast< sal_Int32 >( getTextBody()->getTextProperties().moRotation.get( 0 ) ); - mpCustomShapePropertiesPtr->setTextRotateAngle( nTextRotateAngle / 60000 ); + /* OOX measures text rotation clockwise in 1/60000th degrees, + relative to the containing shape. setTextRotateAngle wants + degrees anticlockwise. */ + mpCustomShapePropertiesPtr->setTextRotateAngle( -1 * nTextRotateAngle / 60000 ); } SAL_INFO("oox.cscode", "==cscode== shape name: '" << msName << "'"); diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx index 89167b666eb4..cc274377c466 100644 --- a/oox/source/drawingml/textbodypropertiescontext.cxx +++ b/oox/source/drawingml/textbodypropertiescontext.cxx @@ -84,13 +84,16 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper& rPa // ST_TextVerticalType if( rAttribs.hasAttribute( XML_vert ) ) { mrTextBodyProp.moVert = rAttribs.getToken( XML_vert ); - bool bRtl = rAttribs.getBool( XML_rtl, false ); sal_Int32 tVert = mrTextBodyProp.moVert.get( XML_horz ); - if( tVert == XML_vert || tVert == XML_eaVert || tVert == XML_vert270 || tVert == XML_mongolianVert ) - mrTextBodyProp.moRotation = -5400000*(tVert==XML_vert270?3:1); - else + if (tVert == XML_vert || tVert == XML_eaVert || tVert == XML_mongolianVert) + mrTextBodyProp.moRotation = 5400000; + else if (tVert == XML_vert270) + mrTextBodyProp.moRotation = 5400000 * 3; + else { + bool bRtl = rAttribs.getBool( XML_rtl, false ); mrTextBodyProp.maPropertyMap.setProperty( PROP_TextWritingMode, ( bRtl ? WritingMode_RL_TB : WritingMode_LR_TB )); + } } // ST_TextAnchoringType diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx index a6a39eb60b0a..10bd727ac902 100644 --- a/oox/source/drawingml/transform2dcontext.cxx +++ b/oox/source/drawingml/transform2dcontext.cxx @@ -48,7 +48,7 @@ Transform2DContext::Transform2DContext( ContextHandler2Helper& rParent, const At else { if( rAttribs.hasAttribute( XML_rot ) ) - mrShape.getTextBody()->getTextProperties().moRotation = -rAttribs.getInteger( XML_rot ).get(); + mrShape.getTextBody()->getTextProperties().moRotation = rAttribs.getInteger( XML_rot ).get(); } } |