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;
         }
 

Reply via email to