diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2020-05-05 12:02:47 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2020-05-06 07:50:21 +0200 |
commit | 2c14bbd5820f854be3a4b1c0f49b9d9afa05b08c (patch) | |
tree | 0e276ca840f29cb118452b6386abffc8a8a611cd /oox | |
parent | d8a52f21ce23a37f7d11375017596eee576f25be (diff) |
tdf#79082 Export paragraph tab stops to ooxml
Change-Id: I7d25dc1ab3c960aafc07a3be69b54f5aceef23fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93462
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/drawingmltypes.cxx | 6 | ||||
-rw-r--r-- | oox/source/export/drawingml.cxx | 36 |
2 files changed, 42 insertions, 0 deletions
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx index a6c8b66efba2..432ce7dc416c 100644 --- a/oox/source/drawingml/drawingmltypes.cxx +++ b/oox/source/drawingml/drawingmltypes.cxx @@ -53,6 +53,12 @@ sal_Int32 GetCoordinate( const OUString& sValue ) return GetCoordinate( nRet ); } +/** converts 1/100mm to EMU */ +sal_Int32 GetPointFromCoordinate( sal_Int32 nValue ) +{ + return nValue * 360; +} + /** converts a ST_Percentage % string into 1/1000th of % */ sal_Int32 GetPercent( const OUString& sValue ) { diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 6655a21758cf..81bbcd76be07 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -2395,6 +2395,40 @@ void DrawingML::WriteParagraphNumbering(const Reference< XPropertySet >& rXPropS } } +void DrawingML::WriteParagraphTabStops(const Reference<XPropertySet>& rXPropSet) +{ + css::uno::Sequence<css::style::TabStop> aTabStops; + if (GetProperty(rXPropSet, "ParaTabStops")) + aTabStops = *o3tl::doAccess<css::uno::Sequence<css::style::TabStop>>(mAny); + + if (aTabStops.getLength() > 0) + mpFS->startElementNS(XML_a, XML_tabLst); + + for (const css::style::TabStop& rTabStop : std::as_const(aTabStops)) + { + OString sPosition = OString::number(GetPointFromCoordinate(rTabStop.Position)); + OString sAlignment; + switch (rTabStop.Alignment) + { + case css::style::TabAlign_DECIMAL: + sAlignment = "dec"; + break; + case css::style::TabAlign_RIGHT: + sAlignment = "r"; + break; + case css::style::TabAlign_CENTER: + sAlignment = "ctr"; + break; + case css::style::TabAlign_LEFT: + default: + sAlignment = "l"; + } + mpFS->singleElementNS(XML_a, XML_tab, XML_algn, sAlignment, XML_pos, sPosition); + } + if (aTabStops.getLength() > 0) + mpFS->endElementNS(XML_a, XML_tabLst); +} + bool DrawingML::IsGroupShape( const Reference< XShape >& rXShape ) { bool bRet = false; @@ -2597,6 +2631,8 @@ void DrawingML::WriteParagraphProperties( const Reference< XTextContent >& rPara WriteParagraphNumbering( rXPropSet, fFirstCharHeight, nLevel ); + WriteParagraphTabStops( rXPropSet ); + mpFS->endElementNS( XML_a, XML_pPr ); } |