diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-04-14 08:08:04 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2016-05-02 17:47:12 +0200 |
commit | afd2095bd2acd201ff125959b41550f39303cee5 (patch) | |
tree | dd99efcd7f4853354d239c497a0752010e288ce2 | |
parent | 7aa6e7584464abde91be91d61d66dc6ecd7082d1 (diff) |
Related: tdf#65642 RTF filter: import \pgnucrm
This as a side effect also implements support for DOCX <w:pgNumType
w:fmt="upperRoman" .../>.
Reviewed-on: https://gerrit.libreoffice.org/24073
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
(cherry picked from commit 235dcc11e7e5291188e134f37a03849d741c4f6e)
Change-Id: Ibf3bedca03c6c2a2b96eecb36ff6c4cf6e2281b4
-rw-r--r-- | sw/qa/extras/rtfexport/data/pgnucrm.rtf | 23 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 6 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 7 |
4 files changed, 39 insertions, 1 deletions
diff --git a/sw/qa/extras/rtfexport/data/pgnucrm.rtf b/sw/qa/extras/rtfexport/data/pgnucrm.rtf new file mode 100644 index 000000000000..ce0bbf2b94d8 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/pgnucrm.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\pgnucrm +{\field\fldedit +{\*\fldinst +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid525329 PAGE \\* MERGEFORMAT } +} +{\fldrslt +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid9597790 A} +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13321744 +\par } +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index ed9fa08eb7a3..d845e0927f1d 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -941,6 +941,12 @@ DECLARE_RTFEXPORT_TEST(testPgnlcrm, "pgnlcrm.rtf") CPPUNIT_ASSERT_EQUAL(style::NumberingType::ROMAN_LOWER, getProperty<sal_Int16>(getStyles("PageStyles")->getByName("Converted1"), "NumberingType")); } +DECLARE_RTFEXPORT_TEST(testPgnucrm, "pgnucrm.rtf") +{ + // The second page's numbering type: this was style::NumberingType::ARABIC. + CPPUNIT_ASSERT_EQUAL(style::NumberingType::ROMAN_UPPER, getProperty<sal_Int16>(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 b8546824f94b..a6f9c45d4050 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -983,6 +983,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) // i, ii, ... pSectionContext->SetPageNumberType(style::NumberingType::ROMAN_LOWER); break; + case NS_ooxml::LN_Value_ST_NumberFormat_upperRoman: + // I, II, ... + pSectionContext->SetPageNumberType(style::NumberingType::ROMAN_UPPER); + break; } } break; diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index d02739e82023..5cdc8e9690dc 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -3244,7 +3244,6 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) m_aStates.top().aSectionSprms.set(NS_ooxml::LN_EG_SectPrContents_formProt, pValue); } break; - case RTF_PGNUCRM: case RTF_PGNLCLTR: case RTF_PGNBIDIA: case RTF_PGNBIDIB: @@ -3567,6 +3566,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_PGNUCRM: + { + auto pIntValue = std::make_shared<RTFValue>(NS_ooxml::LN_Value_ST_NumberFormat_upperRoman); + 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) << "'"); |