summaryrefslogtreecommitdiff
path: root/oox/source/drawingml/textbodypropertiescontext.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source/drawingml/textbodypropertiescontext.cxx')
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx46
1 files changed, 39 insertions, 7 deletions
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx
index 9d221a18ffbe..47ef04797c93 100644
--- a/oox/source/drawingml/textbodypropertiescontext.cxx
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -75,10 +75,6 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper cons
mrTextBodyProp.moInsets[i] = GetCoordinate( sValue );
}
- mrTextBodyProp.mbAnchorCtr = rAttribs.getBool( XML_anchorCtr, false );
- if( mrTextBodyProp.mbAnchorCtr )
- mrTextBodyProp.maPropertyMap.setProperty( PROP_TextHorizontalAdjust, TextHorizontalAdjust_CENTER );
-
// bool bCompatLineSpacing = rAttribs.getBool( XML_compatLnSpc, false );
// bool bForceAA = rAttribs.getBool( XML_forceAA, false );
bool bFromWordArt = rAttribs.getBool(XML_fromWordArt, false);
@@ -148,10 +144,46 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper cons
}
// ST_TextAnchoringType
- if( rAttribs.hasAttribute( XML_anchor ) )
+ mrTextBodyProp.mbAnchorCtr = rAttribs.getBool(XML_anchorCtr, false );
+ if (rAttribs.hasAttribute(XML_anchor))
+ mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken(XML_anchor, XML_t));
+ // else meVA is initialized to TextVerticalAdjust_TOP
+
+ sal_Int32 tVert = mrTextBodyProp.moVert.value_or(XML_horz);
+ if (tVert == XML_eaVert || tVert == XML_mongolianVert)
+ {
+ if (mrTextBodyProp.mbAnchorCtr)
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextVerticalAdjust,
+ TextVerticalAdjust_CENTER);
+ else
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextVerticalAdjust,
+ TextVerticalAdjust_TOP);
+
+ if (mrTextBodyProp.meVA == TextVerticalAdjust_CENTER)
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust,
+ TextHorizontalAdjust_CENTER);
+ else if (mrTextBodyProp.meVA == TextVerticalAdjust_TOP)
+ {
+ mrTextBodyProp.maPropertyMap.setProperty(
+ PROP_TextHorizontalAdjust,
+ tVert == XML_eaVert ? TextHorizontalAdjust_RIGHT : TextHorizontalAdjust_LEFT);
+ }
+ else // meVA == TextVerticalAdjust_BOTTOM
+ {
+ mrTextBodyProp.maPropertyMap.setProperty(
+ PROP_TextHorizontalAdjust,
+ tVert == XML_eaVert ? TextHorizontalAdjust_LEFT : TextHorizontalAdjust_RIGHT);
+ }
+ }
+ else
{
- mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
- mrTextBodyProp.maPropertyMap.setProperty( PROP_TextVerticalAdjust, mrTextBodyProp.meVA);
+ if (mrTextBodyProp.mbAnchorCtr)
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust,
+ TextHorizontalAdjust_CENTER);
+ else // BLOCK is nearer to rendering in MS Office than LEFT, see tdf#137023
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust,
+ TextHorizontalAdjust_BLOCK);
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_TextVerticalAdjust, mrTextBodyProp.meVA);
}
// Push defaults