sw/source/filter/ww8/docxattributeoutput.cxx | 194 +++++++++++---------------- 1 file changed, 81 insertions(+), 113 deletions(-)
New commits: commit 90b7c88c154d85d1637cdd3c6d0d0150bb8158fd Author: Patrick Jaap <patrick.j...@tu-dresden.de> AuthorDate: Thu Feb 14 10:08:58 2019 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Mon Apr 8 13:47:11 2019 +0200 Converters for OOXML orients and relations Change-Id: I8e3ade11881d88e937b1a55598813b2265cafd95 Reviewed-on: https://gerrit.libreoffice.org/69522 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> (cherry picked from commit bbe8bc3c8610d5d218afaa779e86d822a7a76345) Reviewed-on: https://gerrit.libreoffice.org/70307 diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 78a41c64aa6e..dfb12d1cc25e 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -491,6 +491,79 @@ void DocxAttributeOutput::StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pText m_bIsFirstParagraph = false; } +static OString convertToOOXMLVertOrient(sal_Int16 nOrient) +{ + switch( nOrient ) + { + case text::VertOrientation::NONE: + return OString(); + case text::VertOrientation::CENTER: + case text::VertOrientation::LINE_CENTER: + return OString( "center" ); + case text::VertOrientation::BOTTOM: + return OString( "bottom" ); + case text::VertOrientation::LINE_BOTTOM: + return OString( "outside" ); + case text::VertOrientation::TOP: + return OString( "top" ); + case text::VertOrientation::LINE_TOP: + default: + return OString( "inside" ); + } +} + +static OString convertToOOXMLHoriOrient(sal_Int16 nOrient) +{ + switch( nOrient ) + { + case text::VertOrientation::NONE: + return OString(); + case text::VertOrientation::CENTER: + case text::VertOrientation::LINE_CENTER: + return OString( "center" ); + case text::VertOrientation::BOTTOM: + return OString( "bottom" ); + case text::VertOrientation::LINE_BOTTOM: + return OString( "outside" ); + case text::VertOrientation::TOP: + return OString( "top" ); + case text::VertOrientation::LINE_TOP: + default: + return OString( "inside" ); + } +} + +static OString convertToOOXMLVertOrientRel(sal_Int16 nOrientRel) +{ + switch (nOrientRel) + { + case text::RelOrientation::PAGE_PRINT_AREA: + return OString("margin"); + case text::RelOrientation::PAGE_FRAME: + return OString("page"); + case text::RelOrientation::FRAME: + case text::RelOrientation::TEXT_LINE: + default: + return OString("text"); + } +} + +static OString convertToOOXMLHoriOrientRel(sal_Int16 nOrientRel) +{ + switch (nOrientRel) + { + case text::RelOrientation::PAGE_PRINT_AREA: + return OString("margin"); + case text::RelOrientation::PAGE_FRAME: + return OString("page"); + case text::RelOrientation::CHAR: + case text::RelOrientation::PAGE_RIGHT: + case text::RelOrientation::FRAME: + default: + return OString("text"); + } +} + static void lcl_deleteAndResetTheLists( rtl::Reference<sax_fastparser::FastAttributeList>& pSdtPrTokenChildren, rtl::Reference<sax_fastparser::FastAttributeList>& pSdtPrDataBindingAttrs, OUString& rSdtPrAlias) { if( pSdtPrTokenChildren.is() ) @@ -514,38 +587,8 @@ void DocxAttributeOutput::PopulateFrameProperties(const SwFrameFormat* pFrameFor attrList->add( FSNS( XML_w, XML_x), OString::number(aPos.X)); attrList->add( FSNS( XML_w, XML_y), OString::number(aPos.Y)); - const char* relativeFromH; - const char* relativeFromV; - switch (pFrameFormat->GetVertOrient().GetRelationOrient()) - { - case text::RelOrientation::PAGE_PRINT_AREA: - relativeFromV = "margin"; - break; - case text::RelOrientation::PAGE_FRAME: - relativeFromV = "page"; - break; - case text::RelOrientation::FRAME: - case text::RelOrientation::TEXT_LINE: - default: - relativeFromV = "text"; - break; - } - - switch (pFrameFormat->GetHoriOrient().GetRelationOrient()) - { - case text::RelOrientation::PAGE_PRINT_AREA: - relativeFromH = "margin"; - break; - case text::RelOrientation::PAGE_FRAME: - relativeFromH = "page"; - break; - case text::RelOrientation::CHAR: - case text::RelOrientation::PAGE_RIGHT: - case text::RelOrientation::FRAME: - default: - relativeFromH = "text"; - break; - } + OString relativeFromH = convertToOOXMLHoriOrientRel( pFrameFormat->GetHoriOrient().GetRelationOrient() ); + OString relativeFromV = convertToOOXMLVertOrientRel( pFrameFormat->GetVertOrient().GetRelationOrient() ); switch (pFrameFormat->GetSurround().GetValue()) { @@ -563,8 +606,8 @@ void DocxAttributeOutput::PopulateFrameProperties(const SwFrameFormat* pFrameFor attrList->add( FSNS( XML_w, XML_wrap), "auto"); break; } - attrList->add( FSNS( XML_w, XML_vAnchor), relativeFromV); - attrList->add( FSNS( XML_w, XML_hAnchor), relativeFromH); + attrList->add( FSNS( XML_w, XML_vAnchor), relativeFromV ); + attrList->add( FSNS( XML_w, XML_hAnchor), relativeFromH ); attrList->add( FSNS( XML_w, XML_hRule), "exact"); sax_fastparser::XFastAttributeListRef xAttrList(attrList); @@ -8305,49 +8348,8 @@ void DocxAttributeOutput::FormatSurround( const SwFormatSurround& rSurround ) void DocxAttributeOutput::FormatVertOrientation( const SwFormatVertOrient& rFlyVert ) { - OString sAlign; - switch( rFlyVert.GetVertOrient() ) - { - case text::VertOrientation::NONE: - break; - case text::VertOrientation::CENTER: - case text::VertOrientation::LINE_CENTER: - sAlign = OString( "center" ); - break; - case text::VertOrientation::BOTTOM: - sAlign = OString( "bottom" ); - break; - case text::VertOrientation::LINE_BOTTOM: - sAlign = OString( "outside" ); - break; - case text::VertOrientation::TOP: - sAlign = OString( "top" ); - break; - case text::VertOrientation::LINE_TOP: - default: - sAlign = OString( "inside" ); - break; - } - OString sVAnchor( "page" ); - switch ( rFlyVert.GetRelationOrient( ) ) - { - case text::RelOrientation::CHAR: - case text::RelOrientation::PRINT_AREA: - case text::RelOrientation::TEXT_LINE: - case text::RelOrientation::FRAME: - sVAnchor = OString( "text" ); - break; - case text::RelOrientation::PAGE_LEFT: - case text::RelOrientation::PAGE_RIGHT: - case text::RelOrientation::FRAME_LEFT: - case text::RelOrientation::FRAME_RIGHT: - case text::RelOrientation::PAGE_PRINT_AREA: - sVAnchor = OString( "margin" ); - break; - case text::RelOrientation::PAGE_FRAME: - default: - break; - } + OString sAlign = convertToOOXMLVertOrient( rFlyVert.GetVertOrient() ); + OString sVAnchor = convertToOOXMLVertOrientRel( rFlyVert.GetRelationOrient() ); if (m_rExport.SdrExporter().getTextFrameSyntax()) { @@ -8372,42 +8374,8 @@ void DocxAttributeOutput::FormatVertOrientation( const SwFormatVertOrient& rFlyV void DocxAttributeOutput::FormatHorizOrientation( const SwFormatHoriOrient& rFlyHori ) { - OString sAlign; - switch( rFlyHori.GetHoriOrient() ) - { - case text::HoriOrientation::NONE: - break; - case text::HoriOrientation::LEFT: - sAlign = OString( rFlyHori.IsPosToggle( ) ? "inside" : "left" ); - break; - case text::HoriOrientation::RIGHT: - sAlign = OString( rFlyHori.IsPosToggle( ) ? "outside" : "right" ); - break; - case text::HoriOrientation::CENTER: - case text::HoriOrientation::FULL: // FULL only for tables - default: - sAlign = OString( "center" ); - break; - } - OString sHAnchor( "page" ); - switch ( rFlyHori.GetRelationOrient( ) ) - { - case text::RelOrientation::CHAR: - case text::RelOrientation::PRINT_AREA: - case text::RelOrientation::FRAME: - sHAnchor = OString( "text" ); - break; - case text::RelOrientation::PAGE_LEFT: - case text::RelOrientation::PAGE_RIGHT: - case text::RelOrientation::FRAME_LEFT: - case text::RelOrientation::FRAME_RIGHT: - case text::RelOrientation::PAGE_PRINT_AREA: - sHAnchor = OString( "margin" ); - break; - case text::RelOrientation::PAGE_FRAME: - default: - break; - } + OString sAlign = convertToOOXMLHoriOrient( rFlyHori.GetHoriOrient() ); + OString sHAnchor = convertToOOXMLHoriOrientRel( rFlyHori.GetRelationOrient() ); if (m_rExport.SdrExporter().getTextFrameSyntax()) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits