sw/source/filter/html/htmlatr.cxx | 2 - sw/source/filter/html/htmlfly.hxx | 14 +++---- sw/source/filter/html/htmlflyt.cxx | 59 +++++++++++++++++++++++++++++--- sw/source/filter/html/htmlflywriter.cxx | 15 +++----- 4 files changed, 67 insertions(+), 23 deletions(-)
New commits: commit 18f4516ae3cf0d0bdc8985eb0d1b804f65278252 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Mon Jun 19 14:22:15 2023 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Mon Jun 19 15:59:12 2023 +0200 Restructure a bit Change-Id: I27f494e8df25163fa3044311ce7c8cfc942980e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153259 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx index 62460cc2be90..167da9d7115f 100644 --- a/sw/source/filter/html/htmlatr.cxx +++ b/sw/source/filter/html/htmlatr.cxx @@ -2930,7 +2930,7 @@ static SwHTMLWriter& OutHTML_SwFlyCnt( SwHTMLWriter& rWrt, const SfxPoolItem& rH const SdrObject *pSdrObj = nullptr; SwHTMLFrameType eType = rWrt.GuessFrameType( rFormat, pSdrObj ); - AllHtmlFlags nMode = aHTMLOutFrameAsCharTable[eType][rWrt.m_nExportMode]; + AllHtmlFlags nMode = getHTMLOutFrameAsCharTable(eType, rWrt.m_nExportMode); rWrt.OutFrameFormat( nMode, rFormat, pSdrObj ); return rWrt; } diff --git a/sw/source/filter/html/htmlfly.hxx b/sw/source/filter/html/htmlfly.hxx index 958fbbf39d76..666f7730ecf9 100644 --- a/sw/source/filter/html/htmlfly.hxx +++ b/sw/source/filter/html/htmlfly.hxx @@ -79,19 +79,17 @@ namespace o3tl { template<> struct typed_flags<HtmlContainerFlags> : is_typed_flags<HtmlContainerFlags, 0x03> {}; } -const sal_uInt16 MAX_FRMTYPES = HTML_FRMTYPE_END; -const sal_uInt16 MAX_BROWSERS = 3; - struct AllHtmlFlags { HtmlOut nOut; HtmlPosition nPosition; HtmlContainerFlags nContainer; }; -extern AllHtmlFlags const aHTMLOutFramePageFlyTable[MAX_FRMTYPES][MAX_BROWSERS]; -extern AllHtmlFlags const aHTMLOutFrameParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS]; -extern AllHtmlFlags const aHTMLOutFrameParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS]; -extern AllHtmlFlags const aHTMLOutFrameParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS]; -extern AllHtmlFlags const aHTMLOutFrameAsCharTable[MAX_FRMTYPES][MAX_BROWSERS]; + +AllHtmlFlags getHTMLOutFramePageFlyTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode); +AllHtmlFlags getHTMLOutFrameParaFrameTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode); +AllHtmlFlags getHTMLOutFrameParaPrtAreaTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode); +AllHtmlFlags getHTMLOutFrameParaOtherTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode); +AllHtmlFlags getHTMLOutFrameAsCharTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode); class SwHTMLPosFlyFrame { diff --git a/sw/source/filter/html/htmlflyt.cxx b/sw/source/filter/html/htmlflyt.cxx index ab0c5d2f7ed0..9653c0bb062e 100644 --- a/sw/source/filter/html/htmlflyt.cxx +++ b/sw/source/filter/html/htmlflyt.cxx @@ -18,8 +18,12 @@ */ #include "htmlfly.hxx" +#include <svtools/htmlcfg.hxx> -AllHtmlFlags const aHTMLOutFramePageFlyTable[MAX_FRMTYPES][MAX_BROWSERS] = +constexpr sal_uInt16 MAX_FRMTYPES = HTML_FRMTYPE_END; +constexpr sal_uInt16 MAX_BROWSERS = HTML_CFG_MAX + 1; + +constexpr AllHtmlFlags aHTMLOutFramePageFlyTable[][MAX_BROWSERS] = { { // text frame with table @@ -102,7 +106,16 @@ AllHtmlFlags const aHTMLOutFramePageFlyTable[MAX_FRMTYPES][MAX_BROWSERS] = } }; -AllHtmlFlags const aHTMLOutFrameParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS] = +AllHtmlFlags getHTMLOutFramePageFlyTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode) +{ + static_assert(std::size(aHTMLOutFramePageFlyTable) == MAX_FRMTYPES); + assert(eFrameType < HTML_FRMTYPE_END); + assert(nExportMode <= HTML_CFG_MAX); + + return aHTMLOutFramePageFlyTable[eFrameType][nExportMode]; +} + +constexpr AllHtmlFlags aHTMLOutFrameParaFrameTable[][MAX_BROWSERS] = { { // text frame with table @@ -186,7 +199,16 @@ AllHtmlFlags const aHTMLOutFrameParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS] = } }; -AllHtmlFlags const aHTMLOutFrameParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS] = +AllHtmlFlags getHTMLOutFrameParaFrameTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode) +{ + static_assert(std::size(aHTMLOutFrameParaFrameTable) == MAX_FRMTYPES); + assert(eFrameType < HTML_FRMTYPE_END); + assert(nExportMode <= HTML_CFG_MAX); + + return aHTMLOutFrameParaFrameTable[eFrameType][nExportMode]; +} + +constexpr AllHtmlFlags aHTMLOutFrameParaPrtAreaTable[][MAX_BROWSERS] = { { // text frame with table @@ -269,7 +291,16 @@ AllHtmlFlags const aHTMLOutFrameParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS] = } }; -AllHtmlFlags const aHTMLOutFrameParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS] = +AllHtmlFlags getHTMLOutFrameParaPrtAreaTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode) +{ + static_assert(std::size(aHTMLOutFrameParaPrtAreaTable) == MAX_FRMTYPES); + assert(eFrameType < HTML_FRMTYPE_END); + assert(nExportMode <= HTML_CFG_MAX); + + return aHTMLOutFrameParaPrtAreaTable[eFrameType][nExportMode]; +} + +constexpr AllHtmlFlags aHTMLOutFrameParaOtherTable[][MAX_BROWSERS] = { { // text frame with table @@ -352,7 +383,16 @@ AllHtmlFlags const aHTMLOutFrameParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS] = } }; -AllHtmlFlags const aHTMLOutFrameAsCharTable[MAX_FRMTYPES][MAX_BROWSERS] = +AllHtmlFlags getHTMLOutFrameParaOtherTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode) +{ + static_assert(std::size(aHTMLOutFrameParaOtherTable) == MAX_FRMTYPES); + assert(eFrameType < HTML_FRMTYPE_END); + assert(nExportMode <= HTML_CFG_MAX); + + return aHTMLOutFrameParaOtherTable[eFrameType][nExportMode]; +} + +constexpr AllHtmlFlags aHTMLOutFrameAsCharTable[][MAX_BROWSERS] = { { // text frame with table @@ -435,4 +475,13 @@ AllHtmlFlags const aHTMLOutFrameAsCharTable[MAX_FRMTYPES][MAX_BROWSERS] = } }; +AllHtmlFlags getHTMLOutFrameAsCharTable(SwHTMLFrameType eFrameType, sal_uInt16 nExportMode) +{ + static_assert(std::size(aHTMLOutFrameAsCharTable) == MAX_FRMTYPES); + assert(eFrameType < HTML_FRMTYPE_END); + assert(nExportMode <= HTML_CFG_MAX); + + return aHTMLOutFrameAsCharTable[eFrameType][nExportMode]; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx index 1fb4d1a65ef2..4dcd5129ca2e 100644 --- a/sw/source/filter/html/htmlflywriter.cxx +++ b/sw/source/filter/html/htmlflywriter.cxx @@ -287,9 +287,6 @@ SwHTMLFrameType SwHTMLWriter::GuessFrameType( const SwFrameFormat& rFrameFormat, void SwHTMLWriter::CollectFlyFrames() { - OSL_ENSURE( HTML_CFG_MAX+1 == MAX_BROWSERS, - "number of browser configurations has changed" ); - SwPosFlyFrames aFlyPos( m_pDoc->GetAllFlyFormats(m_bWriteAll ? nullptr : m_pCurrentPam.get(), true)); @@ -308,7 +305,7 @@ void SwHTMLWriter::CollectFlyFrames() { case RndStdIds::FLY_AT_PAGE: case RndStdIds::FLY_AT_FLY: - nMode = aHTMLOutFramePageFlyTable[eType][m_nExportMode]; + nMode = getHTMLOutFramePageFlyTable(eType, m_nExportMode); break; case RndStdIds::FLY_AT_PARA: @@ -325,22 +322,22 @@ void SwHTMLWriter::CollectFlyFrames() pACNd->GetAttr(RES_MARGIN_RIGHT); if (rTextLeftMargin.GetTextLeft() || rRightMargin.GetRight()) { - nMode = aHTMLOutFrameParaFrameTable[eType][m_nExportMode]; + nMode = getHTMLOutFrameParaFrameTable(eType, m_nExportMode); break; } } - nMode = aHTMLOutFrameParaPrtAreaTable[eType][m_nExportMode]; + nMode = getHTMLOutFrameParaPrtAreaTable(eType, m_nExportMode); break; case RndStdIds::FLY_AT_CHAR: if( text::RelOrientation::FRAME == eHoriRel || text::RelOrientation::PRINT_AREA == eHoriRel ) - nMode = aHTMLOutFrameParaPrtAreaTable[eType][m_nExportMode]; + nMode = getHTMLOutFrameParaPrtAreaTable(eType, m_nExportMode); else - nMode = aHTMLOutFrameParaOtherTable[eType][m_nExportMode]; + nMode = getHTMLOutFrameParaOtherTable(eType, m_nExportMode); break; default: - nMode = aHTMLOutFrameParaPrtAreaTable[eType][m_nExportMode]; + nMode = getHTMLOutFrameParaPrtAreaTable(eType, m_nExportMode); break; }