sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 3 +++ sw/source/filter/ww8/docxattributeoutput.cxx | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-)
New commits: commit 377ec698afc98a9a098b456f4ae3c694498df6a2 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Dec 20 15:24:30 2013 +0100 CppunitTest_sw_ooxmlexport: register wps, wp and a namespaces This are all required to be able to assert the drawingML equivalent of VML XPath expressions. Change-Id: I79460d6ae7448120f8b9c27acdba52d33ff52a5a diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index bd099be..fce4547 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -135,6 +135,9 @@ xmlNodeSetPtr Test::getXPathNode(xmlDocPtr pXmlDoc, const OString& rXPath) xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("v"), BAD_CAST("urn:schemas-microsoft-com:vml")); xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("mc"), BAD_CAST("http://schemas.openxmlformats.org/markup-compatibility/2006")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("wps"), BAD_CAST("http://schemas.microsoft.com/office/word/2010/wordprocessingShape")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("wp"), BAD_CAST("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("a"), BAD_CAST("http://schemas.openxmlformats.org/drawingml/2006/main")); xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(rXPath.getStr()), pXmlXpathCtx); return pXmlXpathObj->nodesetval; } commit b810e510f15b95ea64c52ae1eec2212280aef678 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Dec 20 15:02:51 2013 +0100 sw: drawingml export of text frame btLr text direction CppunitTest_sw_ooxmlexport's testFdo69636 is a reproducer for this problem. Change-Id: Ibfd2f9388c22436d5677380a22184a2970b8e7be diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index f16d047..c8aa7a0 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -311,8 +311,11 @@ public: }; // Undo the text direction mangling done by the frame btLr handler in writerfilter::dmapper::DomainMapper::lcl_startCharacterGroup() -bool lcl_checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList) +bool lcl_checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList = 0, sax_fastparser::FastAttributeList* pBodyPrAttrList = 0) { + // The intended usage is to pass either a valid VML or DML attribute list. + assert(pTextboxAttrList || pBodyPrAttrList); + if (!pStartNode->IsTxtNode()) return false; @@ -345,7 +348,10 @@ bool lcl_checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* p const SvxCharRotateItem& rCharRotate = static_cast<const SvxCharRotateItem&>(*pItem); if (rCharRotate.GetValue() == 900) { - pTextboxAttrList->add(XML_style, "mso-layout-flow-alt:bottom-to-top"); + if (pTextboxAttrList) + pTextboxAttrList->add(XML_style, "mso-layout-flow-alt:bottom-to-top"); + else + pBodyPrAttrList->add(XML_vert, "vert270"); return true; } } @@ -471,7 +477,11 @@ void DocxAttributeOutput::WriteDMLTextFrame(sw::Frame* pParentFrame) m_rExport.mpParentFrame = NULL; m_pSerializer->startElementNS( XML_wps, XML_txbx, FSEND ); m_pSerializer->startElementNS( XML_w, XML_txbxContent, FSEND ); + + m_bFrameBtLr = lcl_checkFrameBtlr(m_rExport.pDoc->GetNodes()[nStt], 0, m_pBodyPrAttrList); m_rExport.WriteText( ); + m_bFrameBtLr = false; + m_pSerializer->endElementNS( XML_w, XML_txbxContent ); m_pSerializer->endElementNS( XML_wps, XML_txbx ); XFastAttributeListRef xBodyPrAttrList(m_pBodyPrAttrList); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits