sw/qa/extras/ooxmlexport/data/tdf141231_arabicHebrewNumbering.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport16.cxx | 7 ++ writerfilter/source/dmapper/ConversionHelper.cxx | 5 + writerfilter/source/dmapper/ConversionHelper.hxx | 3 - writerfilter/source/dmapper/DomainMapper.cxx | 26 +--------- 5 files changed, 15 insertions(+), 26 deletions(-)
New commits: commit 4f7bc49bce261f1cf206d25f0299fd080a9f5d28 Author: Justin Luth <justin_l...@sil.org> AuthorDate: Tue Mar 30 09:51:05 2021 +0200 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Apr 1 17:58:33 2021 +0200 tdf#141341 writerfilter: use all NumberingTypes for pgNumFmt We have a nice conversion function to translate from OOXML to writer's numbering formats, so lets use that for the page/section's numbering format too. Change-Id: Ibf2aaae5d66c971b54440862b1156c00202663e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113350 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/sw/qa/extras/ooxmlexport/data/tdf141231_arabicHebrewNumbering.docx b/sw/qa/extras/ooxmlexport/data/tdf141231_arabicHebrewNumbering.docx new file mode 100755 index 000000000000..01bc2667a195 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf141231_arabicHebrewNumbering.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index afd0b94e5d0b..17928387f16c 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -73,6 +73,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf138892_noNumbering, "tdf138892_noNumbering.docx" CPPUNIT_ASSERT_MESSAGE("Para3: <blank line>", getProperty<OUString>(getParagraph(3), "NumberingStyleName").isEmpty()); } +DECLARE_OOXMLEXPORT_TEST(testTdf141231_arabicHebrewNumbering, "tdf141231_arabicHebrewNumbering.docx") +{ + // The page's numbering type: instead of Hebrew, this was default style::NumberingType::ARABIC (4). + auto nActual = getProperty<sal_Int16>(getStyles("PageStyles")->getByName("Standard"), "NumberingType"); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_HEBREW, nActual); +} + DECLARE_OOXMLEXPORT_TEST(testGutterLeft, "gutter-left.docx") { uno::Reference<beans::XPropertySet> xPageStyle; diff --git a/writerfilter/source/dmapper/ConversionHelper.cxx b/writerfilter/source/dmapper/ConversionHelper.cxx index 809e85c90372..852f58152b75 100644 --- a/writerfilter/source/dmapper/ConversionHelper.cxx +++ b/writerfilter/source/dmapper/ConversionHelper.cxx @@ -475,7 +475,8 @@ sal_Int16 convertTableJustification( sal_Int32 nIntValue ) return nOrient; } -sal_Int16 ConvertNumberingType(sal_Int32 nFmt) +// Return the suggested default if the given format has no known conversion +sal_Int16 ConvertNumberingType(const sal_Int32 nFmt, const sal_Int16 nDefault) { sal_Int16 nRet; switch(nFmt) @@ -594,7 +595,7 @@ sal_Int16 ConvertNumberingType(sal_Int32 nFmt) case NS_ooxml::LN_Value_ST_NumberFormat_decimalZero: nRet = style::NumberingType::ARABIC_ZERO; break; - default: nRet = style::NumberingType::ARABIC; + default: nRet = nDefault; } /* TODO: Lots of additional values are available - some are supported in the I18 framework NS_ooxml::LN_Value_ST_NumberFormat_hex = 91685; diff --git a/writerfilter/source/dmapper/ConversionHelper.hxx b/writerfilter/source/dmapper/ConversionHelper.hxx index ad0cd615fbec..72c0efe0d540 100644 --- a/writerfilter/source/dmapper/ConversionHelper.hxx +++ b/writerfilter/source/dmapper/ConversionHelper.hxx @@ -21,6 +21,7 @@ #include <sal/types.h> #include <rtl/ustring.hxx> #include <com/sun/star/util/DateTime.hpp> +#include <com/sun/star/style/NumberingType.hpp> #include <com/sun/star/table/BorderLine2.hpp> #include <com/sun/star/text/RubyAdjust.hpp> @@ -49,7 +50,7 @@ namespace writerfilter::dmapper::ConversionHelper{ SAL_DLLPUBLIC_EXPORT sal_uInt32 convertTwipToMM100Unsigned(sal_Int32 _t); sal_Int16 convertTableJustification( sal_Int32 nIntValue ); css::text::RubyAdjust convertRubyAlign( sal_Int32 nIntValue ); - sal_Int16 ConvertNumberingType(sal_Int32 nFmt); + sal_Int16 ConvertNumberingType(const sal_Int32 nFmt, const sal_Int16 nDefault = css::style::NumberingType::ARABIC); sal_Int16 ConvertCustomNumberFormat(std::u16string_view rFormat); css::util::DateTime ConvertDateStringToDateTime(const OUString& rDateTime); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index a70c5e81d5af..2561120adb2d 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1074,29 +1074,9 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) case NS_ooxml::LN_CT_PageNumber_fmt: if (pSectionContext) { - switch (nIntValue) - { - case NS_ooxml::LN_Value_ST_NumberFormat_decimal: - // 1, 2, ... - pSectionContext->SetPageNumberType(style::NumberingType::ARABIC); - break; - case NS_ooxml::LN_Value_ST_NumberFormat_upperLetter: - // A, B, ... - pSectionContext->SetPageNumberType(style::NumberingType::CHARS_UPPER_LETTER_N); - break; - case NS_ooxml::LN_Value_ST_NumberFormat_lowerLetter: - // a, b, ... - pSectionContext->SetPageNumberType(style::NumberingType::CHARS_LOWER_LETTER_N); - break; - case NS_ooxml::LN_Value_ST_NumberFormat_upperRoman: - // I, II, ... - pSectionContext->SetPageNumberType(style::NumberingType::ROMAN_UPPER); - break; - case NS_ooxml::LN_Value_ST_NumberFormat_lowerRoman: - // i, ii, ... - pSectionContext->SetPageNumberType(style::NumberingType::ROMAN_LOWER); - break; - } + sal_Int16 nNumberType = ConversionHelper::ConvertNumberingType(nIntValue, -1); + if (nNumberType != -1) + pSectionContext->SetPageNumberType(nNumberType); } break; case NS_ooxml::LN_CT_FtnEdn_type: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits