From 7aa6e7584464abde91be91d61d66dc6ecd7082d1 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 21 Apr 2016 08:36:20 +0200 Subject: Related: tdf#65642 RTF filter: import \pgnlcrm This as a side effect also implements support for DOCX . Reviewed-on: https://gerrit.libreoffice.org/24273 Reviewed-by: Miklos Vajna Tested-by: Jenkins (cherry picked from commit 91b18cee97b110fe60391faa945a6fd166f1d8aa) Change-Id: Ifb524b25236a8bc774690266a4fa205154204109 --- sw/qa/extras/rtfexport/data/pgnlcrm.rtf | 23 +++++++++++++++++++++++ sw/qa/extras/rtfexport/rtfexport.cxx | 6 ++++++ writerfilter/source/dmapper/DomainMapper.cxx | 4 ++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 7 ++++++- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/rtfexport/data/pgnlcrm.rtf diff --git a/sw/qa/extras/rtfexport/data/pgnlcrm.rtf b/sw/qa/extras/rtfexport/data/pgnlcrm.rtf new file mode 100644 index 000000000000..4ef9b61c80e5 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/pgnlcrm.rtf @@ -0,0 +1,23 @@ +{\rtf1 +\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 +{\field\fldedit +{\*\fldinst +{ PAGE \\* MERGEFORMAT } +} +{\fldrslt +{1} +} +} +\sect +\sectd\pgnrestart\pgnlcrm +{\field\fldedit +{\*\fldinst +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid525329 PAGE \\* MERGEFORMAT } +} +{\fldrslt +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid9597790 i} +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13321744 +\par } +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index cda0b35d660e..ed9fa08eb7a3 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -935,6 +935,12 @@ DECLARE_RTFEXPORT_TEST(testPgndec, "pgndec.rtf") CPPUNIT_ASSERT_EQUAL(style::NumberingType::ARABIC, getProperty(getStyles("PageStyles")->getByName("Converted1"), "NumberingType")); } +DECLARE_RTFEXPORT_TEST(testPgnlcrm, "pgnlcrm.rtf") +{ + // The second page's numbering type: this was style::NumberingType::ARABIC. + CPPUNIT_ASSERT_EQUAL(style::NumberingType::ROMAN_LOWER, getProperty(getStyles("PageStyles")->getByName("Converted1"), "NumberingType")); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 7669dfa4cc16..b8546824f94b 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -979,6 +979,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) // A, B, ... pSectionContext->SetPageNumberType(style::NumberingType::CHARS_UPPER_LETTER_N); break; + case NS_ooxml::LN_Value_ST_NumberFormat_lowerRoman: + // i, ii, ... + pSectionContext->SetPageNumberType(style::NumberingType::ROMAN_LOWER); + break; } } break; diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index e5e8f160e971..d02739e82023 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -3245,7 +3245,6 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) } break; case RTF_PGNUCRM: - case RTF_PGNLCRM: case RTF_PGNLCLTR: case RTF_PGNBIDIA: case RTF_PGNBIDIB: @@ -3562,6 +3561,12 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) lcl_putNestedAttribute(m_aStates.top().aSectionSprms, NS_ooxml::LN_EG_SectPrContents_pgNumType, NS_ooxml::LN_CT_PageNumber_fmt, pIntValue); } break; + case RTF_PGNLCRM: + { + auto pIntValue = std::make_shared(NS_ooxml::LN_Value_ST_NumberFormat_lowerRoman); + lcl_putNestedAttribute(m_aStates.top().aSectionSprms, NS_ooxml::LN_EG_SectPrContents_pgNumType, NS_ooxml::LN_CT_PageNumber_fmt, pIntValue); + } + break; default: { SAL_INFO("writerfilter", "TODO handle flag '" << lcl_RtfToString(nKeyword) << "'"); -- cgit v1.2.3