[Libreoffice-commits] core.git: sw/inc sw/qa sw/source

Miklos Vajna (via logerrit) logerrit at kemper.freedesktop.org
Fri May 21 19:11:01 UTC 2021


 sw/inc/calc.hxx                                         |    3 
 sw/inc/swtable.hxx                                      |    2 
 sw/qa/core/doc/doc.cxx                                  |    4 
 sw/qa/extras/odfexport/odfexport.cxx                    |   10 +-
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx              |    4 
 sw/qa/extras/ooxmlexport/ooxmlexport14.cxx              |    8 -
 sw/qa/extras/rtfexport/rtfexport.cxx                    |    4 
 sw/qa/extras/rtfexport/rtfexport3.cxx                   |    2 
 sw/qa/extras/tiledrendering/tiledrendering.cxx          |    2 
 sw/qa/extras/uiwriter/uiwriter.cxx                      |    8 -
 sw/qa/extras/ww8export/ww8export3.cxx                   |    2 
 sw/source/core/SwNumberTree/SwNodeNum.cxx               |    2 
 sw/source/core/access/accportions.cxx                   |    2 
 sw/source/core/crsr/crsrsh.cxx                          |    4 
 sw/source/core/crsr/swcrsr.cxx                          |    4 
 sw/source/core/crsr/trvltbl.cxx                         |    2 
 sw/source/core/doc/DocumentContentOperationsManager.cxx |    2 
 sw/source/core/doc/DocumentFieldsManager.cxx            |    2 
 sw/source/core/doc/DocumentLayoutManager.cxx            |    2 
 sw/source/core/doc/DocumentStylePoolManager.cxx         |    8 -
 sw/source/core/doc/doc.cxx                              |    4 
 sw/source/core/doc/docdesc.cxx                          |    4 
 sw/source/core/doc/docdraw.cxx                          |    6 -
 sw/source/core/doc/docfmt.cxx                           |    2 
 sw/source/core/doc/docftn.cxx                           |   10 +-
 sw/source/core/doc/doclay.cxx                           |    2 
 sw/source/core/doc/docnum.cxx                           |    6 -
 sw/source/core/doc/docsort.cxx                          |    2 
 sw/source/core/doc/doctxm.cxx                           |    4 
 sw/source/core/doc/fmtcol.cxx                           |    2 
 sw/source/core/doc/htmltbl.cxx                          |   66 ++++++++--------
 sw/source/core/doc/notxtfrm.cxx                         |    2 
 sw/source/core/doc/number.cxx                           |    6 -
 sw/source/core/doc/tblcpy.cxx                           |    8 -
 sw/source/core/doc/tblrwcl.cxx                          |   24 ++---
 sw/source/core/doc/textboxhelper.cxx                    |   20 ++--
 sw/source/core/docnode/ndtbl.cxx                        |   12 +-
 sw/source/core/docnode/ndtbl1.cxx                       |    4 
 sw/source/core/docnode/section.cxx                      |    2 
 sw/source/core/edit/autofmt.cxx                         |   20 ++--
 sw/source/core/edit/edattr.cxx                          |    8 -
 sw/source/core/edit/edfld.cxx                           |    2 
 sw/source/core/edit/editsh.cxx                          |    2 
 sw/source/core/edit/ednumber.cxx                        |    2 
 sw/source/core/fields/dbfld.cxx                         |    2 
 sw/source/core/fields/expfld.cxx                        |    8 -
 sw/source/core/frmedt/fetab.cxx                         |    8 -
 sw/source/core/frmedt/tblsel.cxx                        |    2 
 sw/source/core/graphic/grfatr.cxx                       |    2 
 sw/source/core/inc/tblrwcl.hxx                          |    2 
 sw/source/core/inc/wrong.hxx                            |    2 
 sw/source/core/layout/atrfrm.cxx                        |   10 +-
 sw/source/core/layout/dbg_lay.cxx                       |    2 
 sw/source/core/layout/wsfrm.cxx                         |    4 
 sw/source/core/table/swnewtable.cxx                     |    6 -
 sw/source/core/table/swtable.cxx                        |   12 +-
 sw/source/core/text/EnhancedPDFExportHelper.cxx         |    4 
 sw/source/core/text/frmcrsr.cxx                         |    2 
 sw/source/core/text/inftxt.cxx                          |    4 
 sw/source/core/text/itradj.cxx                          |    4 
 sw/source/core/text/itratr.cxx                          |    4 
 sw/source/core/text/itrcrsr.cxx                         |    4 
 sw/source/core/text/itrform2.cxx                        |   24 ++---
 sw/source/core/text/porfld.cxx                          |   12 +-
 sw/source/core/text/porfly.cxx                          |    6 -
 sw/source/core/text/porlin.cxx                          |    4 
 sw/source/core/text/pormulti.cxx                        |   10 +-
 sw/source/core/text/porrst.cxx                          |    4 
 sw/source/core/text/portxt.cxx                          |    2 
 sw/source/core/text/txtdrop.cxx                         |   12 +-
 sw/source/core/text/txtfly.cxx                          |    2 
 sw/source/core/text/txtfrm.cxx                          |    8 -
 sw/source/core/text/txtftn.cxx                          |    2 
 sw/source/core/text/txttab.cxx                          |    8 -
 sw/source/core/text/wrong.cxx                           |    8 -
 sw/source/core/tox/ToxTextGenerator.cxx                 |    2 
 sw/source/core/tox/tox.cxx                              |    8 -
 sw/source/core/tox/txmsrt.cxx                           |    4 
 sw/source/core/txtnode/atrftn.cxx                       |    4 
 sw/source/core/txtnode/fntcache.cxx                     |   32 +++----
 sw/source/core/txtnode/fntcap.cxx                       |    2 
 sw/source/core/txtnode/ndtxt.cxx                        |   12 +-
 sw/source/core/txtnode/swfont.cxx                       |    2 
 sw/source/core/txtnode/thints.cxx                       |    6 -
 sw/source/core/txtnode/txtatr2.cxx                      |    2 
 sw/source/core/undo/undobj1.cxx                         |    2 
 sw/source/core/undo/undraw.cxx                          |    2 
 sw/source/core/undo/unnum.cxx                           |    2 
 sw/source/core/undo/untbl.cxx                           |    2 
 sw/source/core/unocore/unocoll.cxx                      |    2 
 sw/source/core/unocore/unoframe.cxx                     |    8 -
 sw/source/core/unocore/unoidx.cxx                       |    8 -
 sw/source/core/unocore/unoobj.cxx                       |    4 
 sw/source/core/unocore/unosett.cxx                      |    6 -
 sw/source/core/unocore/unotbl.cxx                       |   12 +-
 sw/source/core/view/pagepreviewlayout.cxx               |    4 
 sw/source/filter/basflt/fltini.cxx                      |    4 
 sw/source/filter/html/css1atr.cxx                       |    4 
 sw/source/filter/html/htmlatr.cxx                       |    4 
 sw/source/filter/html/htmldrawreader.cxx                |    6 -
 sw/source/filter/html/htmlflywriter.cxx                 |    8 -
 sw/source/filter/html/htmlform.cxx                      |    8 -
 sw/source/filter/html/htmlftn.cxx                       |    2 
 sw/source/filter/html/htmlgrin.cxx                      |    2 
 sw/source/filter/html/htmlnum.cxx                       |    2 
 sw/source/filter/html/htmlnumreader.cxx                 |    8 -
 sw/source/filter/html/htmlplug.cxx                      |    2 
 sw/source/filter/html/htmlsect.cxx                      |    6 -
 sw/source/filter/html/htmltab.cxx                       |   48 +++++------
 sw/source/filter/html/htmltabw.cxx                      |    4 
 sw/source/filter/html/svxcss1.cxx                       |   60 +++++++-------
 sw/source/filter/html/swhtml.cxx                        |   26 +++---
 sw/source/filter/html/wrthtml.cxx                       |    2 
 sw/source/filter/writer/wrtswtbl.cxx                    |    8 -
 sw/source/filter/ww8/docxattributeoutput.cxx            |    2 
 sw/source/filter/ww8/writerhelper.cxx                   |    4 
 sw/source/filter/ww8/wrtw8num.cxx                       |    2 
 sw/source/filter/ww8/wrtw8sty.cxx                       |    2 
 sw/source/filter/ww8/wrtww8.cxx                         |   18 ++--
 sw/source/filter/ww8/wrtww8gr.cxx                       |    8 -
 sw/source/filter/ww8/ww8atr.cxx                         |   24 ++---
 sw/source/filter/ww8/ww8graf.cxx                        |    8 -
 sw/source/filter/ww8/ww8graf2.cxx                       |    2 
 sw/source/filter/ww8/ww8par.cxx                         |   12 +-
 sw/source/filter/ww8/ww8par2.cxx                        |   10 +-
 sw/source/filter/ww8/ww8par3.cxx                        |   12 +-
 sw/source/filter/ww8/ww8par5.cxx                        |   12 +-
 sw/source/filter/ww8/ww8par6.cxx                        |   14 +--
 sw/source/filter/ww8/ww8scan.cxx                        |   14 +--
 sw/source/filter/xml/xmlimpit.cxx                       |   28 +++---
 sw/source/filter/xml/xmliteme.cxx                       |    4 
 sw/source/filter/xml/xmlitemm.cxx                       |    9 +-
 sw/source/filter/xml/xmlithlp.cxx                       |    3 
 sw/source/filter/xml/xmlmeta.cxx                        |    2 
 sw/source/filter/xml/xmltble.cxx                        |    2 
 sw/source/filter/xml/xmltbli.cxx                        |    2 
 sw/source/ui/chrdlg/break.cxx                           |    2 
 sw/source/ui/chrdlg/drpcps.cxx                          |    4 
 sw/source/ui/chrdlg/numpara.cxx                         |    2 
 sw/source/ui/config/optload.cxx                         |    4 
 sw/source/ui/config/optpage.cxx                         |    8 -
 sw/source/ui/dbui/dbinsdlg.cxx                          |    2 
 sw/source/ui/dbui/mmaddressblockpage.cxx                |    4 
 sw/source/ui/envelp/envfmt.cxx                          |    6 -
 sw/source/ui/fldui/flddb.cxx                            |    2 
 sw/source/ui/fldui/fldvar.cxx                           |    2 
 sw/source/ui/frmdlg/column.cxx                          |   12 +-
 sw/source/ui/frmdlg/cption.cxx                          |    2 
 sw/source/ui/frmdlg/frmpage.cxx                         |    2 
 sw/source/ui/frmdlg/wrap.cxx                            |    8 -
 sw/source/ui/misc/linenum.cxx                           |    6 -
 sw/source/ui/misc/outline.cxx                           |    6 -
 sw/source/ui/table/colwd.cxx                            |    6 -
 sw/source/ui/table/tabledlg.cxx                         |    2 
 sw/source/uibase/app/appenv.cxx                         |    8 -
 sw/source/uibase/app/applab.cxx                         |    4 
 sw/source/uibase/app/appopt.cxx                         |    8 -
 sw/source/uibase/app/docsh2.cxx                         |    2 
 sw/source/uibase/app/swmodul1.cxx                       |    2 
 sw/source/uibase/config/modcfg.cxx                      |    8 -
 sw/source/uibase/config/usrpref.cxx                     |    2 
 sw/source/uibase/config/viewopt.cxx                     |    2 
 sw/source/uibase/dbui/mailmergehelper.cxx               |   12 +-
 sw/source/uibase/dochdl/gloshdl.cxx                     |    4 
 sw/source/uibase/docvw/srcedtw.cxx                      |    4 
 sw/source/uibase/fldui/fldmgr.cxx                       |   12 +-
 sw/source/uibase/frmdlg/colex.cxx                       |    8 -
 sw/source/uibase/frmdlg/colmgr.cxx                      |    6 -
 sw/source/uibase/lingu/hhcwrp.cxx                       |    6 -
 sw/source/uibase/misc/glosdoc.cxx                       |   10 +-
 sw/source/uibase/ribbar/inputwin.cxx                    |   10 +-
 sw/source/uibase/ribbar/workctrl.cxx                    |    6 -
 sw/source/uibase/shells/basesh.cxx                      |    2 
 sw/source/uibase/shells/textfld.cxx                     |    2 
 sw/source/uibase/shells/textsh1.cxx                     |    2 
 sw/source/uibase/uiview/pview.cxx                       |    2 
 sw/source/uibase/uiview/view.cxx                        |    2 
 sw/source/uibase/uiview/viewmdi.cxx                     |    2 
 sw/source/uibase/uiview/viewsrch.cxx                    |    2 
 sw/source/uibase/uiview/viewstat.cxx                    |    2 
 sw/source/uibase/uiview/viewtab.cxx                     |   44 +++++-----
 sw/source/uibase/uno/unoatxt.cxx                        |    2 
 sw/source/uibase/uno/unomod.cxx                         |    2 
 sw/source/uibase/utlui/bookctrl.cxx                     |    2 
 sw/source/uibase/utlui/gloslst.cxx                      |    2 
 sw/source/uibase/wrtsh/wrtsh1.cxx                       |   12 +-
 186 files changed, 641 insertions(+), 638 deletions(-)

New commits:
commit 2634bc59092b24217d984a5845365d703bdb08d2
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Fri May 21 17:44:32 2021 +0200
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri May 21 21:09:57 2021 +0200

    sw: replace most static_cast<sal_uInt16>() calls with o3tl::narrowing()
    
    o3tl::narrowing() is a better way to handle this, as that way the
    integer conversion is still implicit, which allows detecting integer
    truncation at runtime (with suitable compiler flags).
    
    Change-Id: I499abda3be6943e8c111c56df390e72939586221
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115948
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
    Tested-by: Jenkins

diff --git a/sw/inc/calc.hxx b/sw/inc/calc.hxx
index 7590680d72c5..4121cc7f0e72 100644
--- a/sw/inc/calc.hxx
+++ b/sw/inc/calc.hxx
@@ -27,6 +27,7 @@
 #include <rtl/ustrbuf.hxx>
 #include <tools/solar.h>
 #include <tools/long.hxx>
+#include <o3tl/safeint.hxx>
 #include "swdllapi.h"
 
 class CharClass;
@@ -167,7 +168,7 @@ public:
         ii %= nTableSize;
 
         if( pPos )
-            *pPos = static_cast<sal_uInt16>(ii);
+            *pPos = o3tl::narrowing<sal_uInt16>(ii);
 
         for( T* pEntry = m_aData[ii].get(); pEntry; pEntry = static_cast<T*>(pEntry->pNext.get()) )
         {
diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx
index 6696c94d6cfc..6b27c9ea21e4 100644
--- a/sw/inc/swtable.hxx
+++ b/sw/inc/swtable.hxx
@@ -192,7 +192,7 @@ public:
     /// Set the new table style name for this table.
     void SetTableStyleName(const OUString& rName) { maTableStyleName = rName; }
 
-    sal_uInt16 GetRowsToRepeat() const { return std::min( static_cast<sal_uInt16>(GetTabLines().size()), m_nRowsToRepeat ); }
+    sal_uInt16 GetRowsToRepeat() const { return std::min( o3tl::narrowing<sal_uInt16>(GetTabLines().size()), m_nRowsToRepeat ); }
     void SetRowsToRepeat( sal_uInt16 nNumOfRows ) { m_nRowsToRepeat = nNumOfRows; }
 
     bool IsHeadline( const SwTableLine& rLine ) const;
diff --git a/sw/qa/core/doc/doc.cxx b/sw/qa/core/doc/doc.cxx
index 68d5992b05be..00b8df8a3c41 100644
--- a/sw/qa/core/doc/doc.cxx
+++ b/sw/qa/core/doc/doc.cxx
@@ -66,8 +66,8 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testTextboxTextRotateAngle)
     SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "textbox-textrotateangle.odt");
     SwFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFrameFormats.size());
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(RES_DRAWFRMFMT), rFrameFormats[0]->Which());
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(RES_FLYFRMFMT), rFrameFormats[1]->Which());
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_DRAWFRMFMT), rFrameFormats[0]->Which());
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_FLYFRMFMT), rFrameFormats[1]->Which());
     SvxFrameDirection eActual = rFrameFormats[1]->GetAttrSet().GetItem(RES_FRAMEDIR)->GetValue();
 
     // Without the accompanying fix in place, this test would have failed with:
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index d5efe8a29677..13ace3b1a1fa 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -2951,7 +2951,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.odt")
     // - Expected: 64
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -2965,7 +2965,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero3Numbering, "arabic-zero3-numbering.odt")
     // - Expected: 65
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO3.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -2979,7 +2979,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero4Numbering, "arabic-zero4-numbering.odt")
     // - Expected: 66
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO4.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -2993,7 +2993,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero5Numbering, "arabic-zero5-numbering.odt")
     // - Expected: 67
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO5.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -3007,7 +3007,7 @@ DECLARE_ODFEXPORT_TEST(testRovasNumbering, "rovas-numbering.odt")
     // - Expected: 68
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not SZEKELY_ROVAS.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::SZEKELY_ROVAS),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::SZEKELY_ROVAS),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index 5f3fc94cd8e4..40bcaaa5875b 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -339,8 +339,8 @@ DECLARE_OOXMLEXPORT_TEST(testBtlrShape, "btlr-textbox.docx")
     SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
     const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFormats.size());
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(RES_DRAWFRMFMT), rFormats[0]->Which());
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(RES_FLYFRMFMT), rFormats[1]->Which());
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_DRAWFRMFMT), rFormats[0]->Which());
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_FLYFRMFMT), rFormats[1]->Which());
     // Without the accompanying fix in place, this test would have failed with 'Expected: 5, Actual:
     // 4', i.e. the textbox inherited its writing direction instead of having an explicit btlr
     // value.
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index 24f51850e4ff..293f82ed9c87 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -363,7 +363,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.docx")
     // - Expected: 64
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -376,7 +376,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero3Numbering, "arabic-zero3-numbering.docx")
     // - Expected: 65
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO3.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -389,7 +389,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero4Numbering, "arabic-zero4-numbering.docx")
     // - Expected: 66
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO4.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
@@ -402,7 +402,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZero5Numbering, "arabic-zero5-numbering.docx")
     // - Expected: 67
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO5.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 049c78bd7f6b..75c4382324e5 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -1135,8 +1135,8 @@ DECLARE_RTFEXPORT_TEST(testCustomDocProps, "custom-doc-props.rtf")
     // Test roundtrip of date in general, and year/month/day in particular.
     util::DateTime aDate = getProperty<util::DateTime>(xUserDefinedProperties, "d");
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(2016), aDate.Year);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), aDate.Month);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(30), aDate.Day);
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(1), aDate.Month);
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(30), aDate.Day);
 
     // Test real number.
     CPPUNIT_ASSERT_EQUAL(3.14, getProperty<double>(xUserDefinedProperties, "pi"));
diff --git a/sw/qa/extras/rtfexport/rtfexport3.cxx b/sw/qa/extras/rtfexport/rtfexport3.cxx
index 4468a97650b5..efbb7c806477 100644
--- a/sw/qa/extras/rtfexport/rtfexport3.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport3.cxx
@@ -187,7 +187,7 @@ DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.rtf")
     // - Expected: 64
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index aab2a4cc71e8..854fe65c95ca 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -1488,7 +1488,7 @@ void SwTiledRenderingTest::testTrackChanges()
     // Reject the change by id, while the cursor does not cover the tracked change.
     uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence(
     {
-        {"RejectTrackedChange", uno::makeAny(static_cast<sal_uInt16>(pRedline->GetId()))}
+        {"RejectTrackedChange", uno::makeAny(o3tl::narrowing<sal_uInt16>(pRedline->GetId()))}
     }));
     comphelper::dispatchCommand(".uno:RejectTrackedChange", aPropertyValues);
     Scheduler::ProcessEventsToIdle();
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 8ef3de9d6a60..c47e5402304e 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -2404,7 +2404,7 @@ void SwUiWriterTest::testDeleteTableRedlines()
     IDocumentRedlineAccess& rIDRA = pDoc->getIDocumentRedlineAccess();
     SwExtraRedlineTable& rExtras = rIDRA.GetExtraRedlineTable();
     rExtras.DeleteAllTableRedlines(*pDoc, rTable, false, RedlineType::Any);
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(0), rExtras.GetSize());
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(0), rExtras.GetSize());
 }
 
 void SwUiWriterTest::testXFlatParagraph()
@@ -5966,7 +5966,7 @@ void SwUiWriterTest::testRedlineParam()
     pWrtShell->StartOfSection();
     uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence(
     {
-        {"NextTrackedChange", uno::makeAny(static_cast<sal_uInt16>(rTable[0]->GetId()))}
+        {"NextTrackedChange", uno::makeAny(o3tl::narrowing<sal_uInt16>(rTable[0]->GetId()))}
     }));
     dispatchCommand(mxComponent, ".uno:NextTrackedChange", aPropertyValues);
     Scheduler::ProcessEventsToIdle();
@@ -5979,7 +5979,7 @@ void SwUiWriterTest::testRedlineParam()
     pWrtShell->StartOfSection();
     aPropertyValues = comphelper::InitPropertySequence(
     {
-        {"NextTrackedChange", uno::makeAny(static_cast<sal_uInt16>(rTable[1]->GetId()))}
+        {"NextTrackedChange", uno::makeAny(o3tl::narrowing<sal_uInt16>(rTable[1]->GetId()))}
     });
     dispatchCommand(mxComponent, ".uno:NextTrackedChange", aPropertyValues);
     Scheduler::ProcessEventsToIdle();
@@ -5990,7 +5990,7 @@ void SwUiWriterTest::testRedlineParam()
     pWrtShell->StartOfSection();
     aPropertyValues = comphelper::InitPropertySequence(
     {
-        {"RejectTrackedChange", uno::makeAny(static_cast<sal_uInt16>(rTable[1]->GetId()))}
+        {"RejectTrackedChange", uno::makeAny(o3tl::narrowing<sal_uInt16>(rTable[1]->GetId()))}
     });
     dispatchCommand(mxComponent, ".uno:RejectTrackedChange", aPropertyValues);
     Scheduler::ProcessEventsToIdle();
diff --git a/sw/qa/extras/ww8export/ww8export3.cxx b/sw/qa/extras/ww8export/ww8export3.cxx
index 4d982dbdb982..691a562ec434 100644
--- a/sw/qa/extras/ww8export/ww8export3.cxx
+++ b/sw/qa/extras/ww8export/ww8export3.cxx
@@ -139,7 +139,7 @@ DECLARE_WW8EXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.doc")
     // - Expected: 64
     // - Actual  : 4
     // i.e. numbering type was ARABIC, not ARABIC_ZERO.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+    CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
                          aMap["NumberingType"].get<sal_uInt16>());
 }
 
diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx
index 6bf92d3eb73a..af92fe21ddc8 100644
--- a/sw/source/core/SwNumberTree/SwNodeNum.cxx
+++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx
@@ -273,7 +273,7 @@ SwNumberTree::tSwNumTreeNumber SwNodeNum::GetStartValue() const
 
             if (nLevel >= 0 && nLevel < MAXLEVEL)
             {
-                const SwNumFormat * pFormat = pRule->GetNumFormat( static_cast<sal_uInt16>(nLevel));
+                const SwNumFormat * pFormat = pRule->GetNumFormat( o3tl::narrowing<sal_uInt16>(nLevel));
 
                 if (pFormat)
                     aResult = pFormat->GetStart();
diff --git a/sw/source/core/access/accportions.cxx b/sw/source/core/access/accportions.cxx
index 9310a290a184..b1da888d5af7 100644
--- a/sw/source/core/access/accportions.cxx
+++ b/sw/source/core/access/accportions.cxx
@@ -615,7 +615,7 @@ TextFrameIndex SwAccessiblePortionData::FillSpecialPos(
         // (if necessary)
         size_t nRefLine = FindBreak( m_aLineBreaks, nRefPos );
         size_t nMyLine  = FindBreak( m_aLineBreaks, nPos );
-        sal_uInt16 nLineOffset = static_cast<sal_uInt16>( nMyLine - nRefLine );
+        sal_uInt16 nLineOffset = o3tl::narrowing<sal_uInt16>( nMyLine - nRefLine );
         if( nLineOffset != 0 )
             nRefPos = m_aLineBreaks[ nMyLine ];
 
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index a7d4d2474613..6f5516d69c1f 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -523,7 +523,7 @@ bool SwCursorShell::UpDown( bool bUp, sal_uInt16 nCnt )
             if( !bTableMode )
                 eUpdateMode = static_cast<CursorFlag>(eUpdateMode
                             | SwCursorShell::UPDOWN | SwCursorShell::CHKRANGE);
-            UpdateCursor( static_cast<sal_uInt16>(eUpdateMode) );
+            UpdateCursor( o3tl::narrowing<sal_uInt16>(eUpdateMode) );
         }
     }
     return bRet;
@@ -2435,7 +2435,7 @@ void SwCursorShell::ShellGetFocus()
     m_bHasFocus = true;
     if( !m_bBasicHideCursor && VisArea().Width() )
     {
-        UpdateCursor( static_cast<sal_uInt16>( SwCursorShell::CHKRANGE ) );
+        UpdateCursor( o3tl::narrowing<sal_uInt16>( SwCursorShell::CHKRANGE ) );
         ShowCursors( m_bSVCursorVis );
     }
 }
diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index 847a019cf1b9..5ae9e5c78e76 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -1891,7 +1891,7 @@ bool SwCursor::LeftRight( bool bLeft, sal_uInt16 nCnt, sal_uInt16 nMode,
                 {
                     pTableBox = & pTableBox->FindEndOfRowSpan(
                         pOldTabSttNode->GetTable(),
-                        static_cast<sal_uInt16>(pTableBox->getRowSpan() + m_nRowSpanOffset));
+                        o3tl::narrowing<sal_uInt16>(pTableBox->getRowSpan() + m_nRowSpanOffset));
                     SwNodeIndex& rPtIdx = GetPoint()->nNode;
                     SwNodeIndex aNewIdx( *pTableBox->GetSttNd() );
                     rPtIdx = aNewIdx;
@@ -2212,7 +2212,7 @@ bool SwCursor::GoPrevNextCell( bool bNext, sal_uInt16 nCnt )
             if ( pTableBox && pTableBox->getRowSpan() > 1 )
             {
                 pTableBox = & pTableBox->FindEndOfRowSpan( pTableNd->GetTable(),
-                    static_cast<sal_uInt16>(pTableBox->getRowSpan() + m_nRowSpanOffset));
+                    o3tl::narrowing<sal_uInt16>(pTableBox->getRowSpan() + m_nRowSpanOffset));
                 SwNodeIndex aNewIdx( *pTableBox->GetSttNd() );
                 rPtIdx = aNewIdx;
                 pTableBoxStartNode = rPtIdx.GetNode().FindTableBoxStartNode();
diff --git a/sw/source/core/crsr/trvltbl.cxx b/sw/source/core/crsr/trvltbl.cxx
index 5f26c9f23788..8bffbe3505fb 100644
--- a/sw/source/core/crsr/trvltbl.cxx
+++ b/sw/source/core/crsr/trvltbl.cxx
@@ -61,7 +61,7 @@ bool SwCursorShell::GoNextCell( bool bAppendLine )
                     pTableNd = IsCursorInTable();
                 assert (pTableNd);
                 pTableBox = & pTableBox->FindEndOfRowSpan( pTableNd->GetTable(),
-                                                           static_cast<sal_uInt16>(pTableBox->getRowSpan() + pCursor->GetCursorRowSpanOffset() ) );
+                                                           o3tl::narrowing<sal_uInt16>(pTableBox->getRowSpan() + pCursor->GetCursorRowSpanOffset() ) );
                 pTableBoxStartNode = pTableBox->GetSttNd();
             }
         }
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 88fd7872a41b..254d0fc00085 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -1348,7 +1348,7 @@ namespace //local functions originally from docfmt.cxx
                 if (nLevel >= MAXLEVEL)
                     nLevel = MAXLEVEL - 1;
 
-                SwNumFormat aNumFormat = pNumRule->Get(static_cast<sal_uInt16>(nLevel));
+                SwNumFormat aNumFormat = pNumRule->Get(o3tl::narrowing<sal_uInt16>(nLevel));
                 SwCharFormat * pCharFormat =
                     rDoc.FindCharFormatByName(aNumFormat.GetCharFormatName());
 
diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx
index b187e709e9b0..aa52a22be144 100644
--- a/sw/source/core/doc/DocumentFieldsManager.cxx
+++ b/sw/source/core/doc/DocumentFieldsManager.cxx
@@ -929,7 +929,7 @@ void DocumentFieldsManager::UpdateExpFieldsImpl(
     // Hash table for all string replacements is filled on-the-fly.
     // Try to fabricate an uneven number.
     const SwFieldTypes::size_type nHashSize {(( mpFieldTypes->size() / 7 ) + 1 ) * 7};
-    const sal_uInt16 nStrFormatCnt = static_cast<sal_uInt16>(nHashSize);
+    const sal_uInt16 nStrFormatCnt = o3tl::narrowing<sal_uInt16>(nHashSize);
     OSL_ENSURE( nStrFormatCnt == nHashSize, "Downcasting to sal_uInt16 lost information!" );
     SwHashTable<HashStr> aHashStrTable(nStrFormatCnt);
 
diff --git a/sw/source/core/doc/DocumentLayoutManager.cxx b/sw/source/core/doc/DocumentLayoutManager.cxx
index d4a92a09a69c..1266e3ea719f 100644
--- a/sw/source/core/doc/DocumentLayoutManager.cxx
+++ b/sw/source/core/doc/DocumentLayoutManager.cxx
@@ -135,7 +135,7 @@ SwFrameFormat *DocumentLayoutManager::MakeLayoutFormat( RndStdIds eRequest, cons
                 m_rDoc.GetNodes().MakeTextSection
                 ( aTmpIdx,
                   bHeader ? SwHeaderStartNode : SwFooterStartNode,
-                  m_rDoc.getIDocumentStylePoolAccess().GetTextCollFromPool(static_cast<sal_uInt16>( bHeader
+                  m_rDoc.getIDocumentStylePoolAccess().GetTextCollFromPool(o3tl::narrowing<sal_uInt16>( bHeader
                                      ? ( eRequest == RndStdIds::HEADERL
                                          ? RES_POOLCOLL_HEADERL
                                          : eRequest == RndStdIds::HEADERR
diff --git a/sw/source/core/doc/DocumentStylePoolManager.cxx b/sw/source/core/doc/DocumentStylePoolManager.cxx
index 5df33094c073..ff0657aaff48 100644
--- a/sw/source/core/doc/DocumentStylePoolManager.cxx
+++ b/sw/source/core/doc/DocumentStylePoolManager.cxx
@@ -1753,8 +1753,8 @@ SwPageDesc* DocumentStylePoolManager::GetPageDescFromPool( sal_uInt16 nId, bool
     }
     SvxULSpaceItem aUL( RES_UL_SPACE );
     {
-        aUL.SetUpper( static_cast<sal_uInt16>(aLR.GetLeft()) );
-        aUL.SetLower( static_cast<sal_uInt16>(aLR.GetLeft()) );
+        aUL.SetUpper( o3tl::narrowing<sal_uInt16>(aLR.GetLeft()) );
+        aUL.SetLower( o3tl::narrowing<sal_uInt16>(aLR.GetLeft()) );
     }
 
     SwAttrSet aSet( m_rDoc.GetAttrPool(), aPgFrameFormatSetRange );
@@ -1824,8 +1824,8 @@ SwPageDesc* DocumentStylePoolManager::GetPageDescFromPool( sal_uInt16 nId, bool
         {
             lcl_PutStdPageSizeIntoItemSet( m_rDoc, aSet );
             aLR.SetRight(o3tl::convert(1, o3tl::Length::cm, o3tl::Length::twip));
-            aUL.SetUpper( static_cast<sal_uInt16>(aLR.GetRight()) );
-            aUL.SetLower( static_cast<sal_uInt16>(aLR.GetRight()) );
+            aUL.SetUpper( o3tl::narrowing<sal_uInt16>(aLR.GetRight()) );
+            aUL.SetLower( o3tl::narrowing<sal_uInt16>(aLR.GetRight()) );
             aSet.Put( aLR );
             aSet.Put( aUL );
 
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 9b3b3bb70991..8fb7040348e2 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -503,7 +503,7 @@ sal_uInt16 PostItField_::GetPageNo(
         sal_uInt16 nPgNo = pFrame->GetPhyPageNum();
         if( rRangeEnum.hasValue( nPgNo, &rPossiblePages ))
         {
-            rLineNo = static_cast<sal_uInt16>(pFrame->GetLineCount( nPos ) +
+            rLineNo = o3tl::narrowing<sal_uInt16>(pFrame->GetLineCount( nPos ) +
                       pFrame->GetAllLines() - pFrame->GetThisLines());
             rVirtPgNo = pFrame->GetVirtPageNum();
             return nPgNo;
@@ -1271,7 +1271,7 @@ void SwDoc::Summary(SwDoc& rExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, bool bImp
             {
                 SwTextFormatColl* pMyColl = pNd->GetTextColl();
 
-                const sal_uInt16 nHeadLine = static_cast<sal_uInt16>(
+                const sal_uInt16 nHeadLine = o3tl::narrowing<sal_uInt16>(
                             !pMyColl->IsAssignedToListLevelOfOutlineStyle()
                             ? RES_POOLCOLL_HEADLINE2
                             : RES_POOLCOLL_HEADLINE1 );
diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx
index b417ab0add9a..6b63e7a300c3 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -107,8 +107,8 @@ static void lcl_DefaultPageFormat( sal_uInt16 nPoolFormatId,
     SvxLRSpaceItem aLR( RES_LR_SPACE );
     SvxULSpaceItem aUL( RES_UL_SPACE );
 
-    aUL.SetUpper( static_cast<sal_uInt16>(nMinTop) );
-    aUL.SetLower( static_cast<sal_uInt16>(nMinBottom) );
+    aUL.SetUpper( o3tl::narrowing<sal_uInt16>(nMinTop) );
+    aUL.SetLower( o3tl::narrowing<sal_uInt16>(nMinBottom) );
     aLR.SetRight( nMinRight );
     aLR.SetLeft( nMinLeft );
 
diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx
index c450f4213dc3..edc3a145c11c 100644
--- a/sw/source/core/doc/docdraw.cxx
+++ b/sw/source/core/doc/docdraw.cxx
@@ -199,7 +199,7 @@ SwDrawContact* SwDoc::GroupSelection( SdrView& rDrawView )
 
         std::unique_ptr<SwUndoDrawGroup> pUndo;
         if (GetIDocumentUndoRedo().DoesUndo())
-            pUndo.reset(new SwUndoDrawGroup( static_cast<sal_uInt16>(rMrkList.GetMarkCount()), *this));
+            pUndo.reset(new SwUndoDrawGroup( o3tl::narrowing<sal_uInt16>(rMrkList.GetMarkCount()), *this));
 
         // #i53320#
         bool bGroupMembersNotPositioned( false );
@@ -335,7 +335,7 @@ void SwDoc::UnGroupSelection( SdrView& rDrawView )
                         pFormatsAndObjs[i].emplace_back( pFormat, pSubObj );
 
                         if( bUndo )
-                            pUndo->AddObj( static_cast<sal_uInt16>(i2), pFormat );
+                            pUndo->AddObj( o3tl::narrowing<sal_uInt16>(i2), pFormat );
                     }
                 }
             }
@@ -419,7 +419,7 @@ bool SwDoc::DeleteSelection( SwDrawView& rDrawView )
             {
                 std::unique_ptr<SwUndoDrawDelete> pUndo;
                 if (GetIDocumentUndoRedo().DoesUndo())
-                    pUndo.reset(new SwUndoDrawDelete( static_cast<sal_uInt16>(rMrkList.GetMarkCount()), *this ));
+                    pUndo.reset(new SwUndoDrawDelete( o3tl::narrowing<sal_uInt16>(rMrkList.GetMarkCount()), *this ));
 
                 // Destroy ContactObjects, save formats.
                 for( size_t i = 0; i < rMrkList.GetMarkCount(); ++i )
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 8b1b4b2a9bc0..bd0fb7dff196 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1675,7 +1675,7 @@ void SwDoc::MoveLeftMargin(const SwPaM& rPam, bool bRight, bool bModulus,
                     const int nListLevel = pTNd->GetActualListLevel();
                     if ( nListLevel >= 0 )
                     {
-                        const SwNumFormat& rFormat = pRule->Get(static_cast<sal_uInt16>(nListLevel));
+                        const SwNumFormat& rFormat = pRule->Get(o3tl::narrowing<sal_uInt16>(nListLevel));
                         if ( rFormat.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
                         {
                             aLS.SetTextLeft( rFormat.GetIndentAt() );
diff --git a/sw/source/core/doc/docftn.cxx b/sw/source/core/doc/docftn.cxx
index 286f0b4ad47f..7f2b30ddc615 100644
--- a/sw/source/core/doc/docftn.cxx
+++ b/sw/source/core/doc/docftn.cxx
@@ -106,7 +106,7 @@ SwPageDesc* SwEndNoteInfo::GetPageDesc(SwDoc& rDoc) const
 {
     if(!m_pPageDesc)
     {
-        m_pPageDesc = rDoc.getIDocumentStylePoolAccess().GetPageDescFromPool( static_cast<sal_uInt16>(
+        m_pPageDesc = rDoc.getIDocumentStylePoolAccess().GetPageDescFromPool( o3tl::narrowing<sal_uInt16>(
             m_bEndNote ? RES_POOLPAGE_ENDNOTE : RES_POOLPAGE_FOOTNOTE ) );
         m_aDepends.StartListening(m_pPageDesc);
     }
@@ -139,7 +139,7 @@ void SwEndNoteInfo::SetFootnoteTextColl(SwTextFormatColl& rFormat)
 
 SwCharFormat* SwEndNoteInfo::GetCharFormat(SwDoc& rDoc) const
 {
-    auto pCharFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( static_cast<sal_uInt16>(
+    auto pCharFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( o3tl::narrowing<sal_uInt16>(
         m_bEndNote ? RES_POOLCHR_ENDNOTE : RES_POOLCHR_FOOTNOTE ) );
     if (m_pCharFormat != pCharFormatFromDoc)
     {
@@ -172,7 +172,7 @@ namespace
 void SwEndNoteInfo::SetCharFormat(SwCharFormat* pFormat)
 {
     lcl_ResetPoolIdForDocAndSync(
-            static_cast<sal_uInt16>(m_bEndNote
+            o3tl::narrowing<sal_uInt16>(m_bEndNote
                     ? RES_POOLCHR_ENDNOTE
                     : RES_POOLCHR_FOOTNOTE),
             pFormat,
@@ -181,7 +181,7 @@ void SwEndNoteInfo::SetCharFormat(SwCharFormat* pFormat)
 
 SwCharFormat* SwEndNoteInfo::GetAnchorCharFormat(SwDoc& rDoc) const
 {
-    auto pAnchorFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( static_cast<sal_uInt16>(
+    auto pAnchorFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( o3tl::narrowing<sal_uInt16>(
         m_bEndNote ? RES_POOLCHR_ENDNOTE_ANCHOR : RES_POOLCHR_FOOTNOTE_ANCHOR ) );
     if(m_pAnchorFormat != pAnchorFormatFromDoc)
     {
@@ -195,7 +195,7 @@ SwCharFormat* SwEndNoteInfo::GetAnchorCharFormat(SwDoc& rDoc) const
 void SwEndNoteInfo::SetAnchorCharFormat(SwCharFormat* pFormat)
 {
     lcl_ResetPoolIdForDocAndSync(
-            static_cast<sal_uInt16>(m_bEndNote
+            o3tl::narrowing<sal_uInt16>(m_bEndNote
                     ? RES_POOLCHR_ENDNOTE_ANCHOR
                     : RES_POOLCHR_FOOTNOTE_ANCHOR),
             pFormat,
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index 2da94ef4699c..43b4408ec080 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -311,7 +311,7 @@ SwFlyFrameFormat* SwDoc::MakeFlySection( RndStdIds eAnchorType,
         if( !pFrameFormat )
             pFrameFormat = getIDocumentStylePoolAccess().GetFrameFormatFromPool( RES_POOLFRM_FRAME );
 
-        sal_uInt16 nCollId = static_cast<sal_uInt16>(
+        sal_uInt16 nCollId = o3tl::narrowing<sal_uInt16>(
             GetDocumentSettingManager().get(DocumentSettingId::HTML_MODE) ? RES_POOLCOLL_TEXT : RES_POOLCOLL_FRAME );
 
         /* If there is no adjust item in the paragraph style for the content node of the new fly section
diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx
index 5e287e84f19d..2420532c5bee 100644
--- a/sw/source/core/doc/docnum.cxx
+++ b/sw/source/core/doc/docnum.cxx
@@ -246,7 +246,7 @@ bool SwDoc::OutlineUpDown(const SwPaM& rPam, short nOffset,
             n++;
 
             SwTextFormatColl *aTmpColl =
-                getIDocumentStylePoolAccess().GetTextCollFromPool(static_cast<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n));
+                getIDocumentStylePoolAccess().GetTextCollFromPool(o3tl::narrowing<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n));
 
             if( aTmpColl->IsAssignedToListLevelOfOutlineStyle() &&
                 aTmpColl->GetAssignedOutlineStyleLevel() == n )
@@ -275,7 +275,7 @@ bool SwDoc::OutlineUpDown(const SwPaM& rPam, short nOffset,
             n--;
 
             SwTextFormatColl *aTmpColl =
-                getIDocumentStylePoolAccess().GetTextCollFromPool(static_cast<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n));
+                getIDocumentStylePoolAccess().GetTextCollFromPool(o3tl::narrowing<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n));
 
             if( aTmpColl->IsAssignedToListLevelOfOutlineStyle() &&
                 aTmpColl->GetAssignedOutlineStyleLevel() == n )
@@ -2556,7 +2556,7 @@ OUString SwDoc::GetUniqueNumRuleName( const OUString* pChkStr, bool bAutoNum ) c
             if( sNm.startsWith( aName ) )
             {
                 // Determine Number and set the Flag
-                nNum = static_cast<sal_uInt16>(sNm.copy( nNmLen ).toInt32());
+                nNum = o3tl::narrowing<sal_uInt16>(sNm.copy( nNmLen ).toInt32());
                 if( nNum-- && nNum < mpNumRuleTable->size() )
                     pSetFlags[ nNum / 8 ] |= (0x01 << ( nNum & 0x07 ));
             }
diff --git a/sw/source/core/doc/docsort.cxx b/sw/source/core/doc/docsort.cxx
index 25a664d17bf8..3c2f8c1f019c 100644
--- a/sw/source/core/doc/docsort.cxx
+++ b/sw/source/core/doc/docsort.cxx
@@ -555,7 +555,7 @@ bool SwDoc::SortTable(const SwSelBoxes& rBoxes, const SwSortOptions& rOpt)
     std::multiset<SwSortBoxElement> aSortList;
 
     // When sorting, do not include the first row if the HeaderLine is repeated
-    for( sal_uInt16 i = static_cast<sal_uInt16>(nStart); i < nCount; ++i)
+    for( sal_uInt16 i = o3tl::narrowing<sal_uInt16>(nStart); i < nCount; ++i)
     {
         aSortList.insert(SwSortBoxElement(i));
     }
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index d8e7d30e80e1..2c3ed6902f13 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -1520,7 +1520,7 @@ void SwTOXBaseSection::UpdateContent( SwTOXElement eMyType,
                 std::unique_ptr<SwTOXPara> pNew( MakeSwTOXSortTabBase<SwTOXPara>(
                         pLayout, *pCNd, eMyType,
                             ( USHRT_MAX != nSetLevel )
-                            ? static_cast<sal_uInt16>(nSetLevel)
+                            ? o3tl::narrowing<sal_uInt16>(nSetLevel)
                             : FORM_ALPHA_DELIMITER ) );
                 InsertSorted( std::move(pNew) );
             }
@@ -1570,7 +1570,7 @@ void SwTOXBaseSection::UpdateTable(const SwTextNode* pOwnChapterNode,
                             if( pOutlNd->GetTextColl()->IsAssignedToListLevelOfOutlineStyle())
                             {
                                 const int nTmp = pOutlNd->GetTextColl()->GetAttrOutlineLevel();
-                                pNew->SetLevel(static_cast<sal_uInt16>(nTmp));
+                                pNew->SetLevel(o3tl::narrowing<sal_uInt16>(nTmp));
                             }
                         }
                     }
diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx
index 6a91ac469294..a0dcda5cff88 100644
--- a/sw/source/core/doc/fmtcol.cxx
+++ b/sw/source/core/doc/fmtcol.cxx
@@ -588,7 +588,7 @@ void SwTextFormatColl::SetAttrOutlineLevel( int nLevel)
 {
     OSL_ENSURE( 0 <= nLevel && nLevel <= MAXLEVEL ,"SwTextFormatColl: Level Out Of Range" );
     SetFormatAttr( SfxUInt16Item( RES_PARATR_OUTLINELEVEL,
-                            static_cast<sal_uInt16>(nLevel) ) );
+                            o3tl::narrowing<sal_uInt16>(nLevel) ) );
 }
 
 int SwTextFormatColl::GetAttrOutlineLevel() const
diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx
index 67dc9b9c56b5..41a10d34c10b 100644
--- a/sw/source/core/doc/htmltbl.cxx
+++ b/sw/source/core/doc/htmltbl.cxx
@@ -314,7 +314,7 @@ sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByVisArea( const SwDoc& rDoc )
     SwViewShell const *pVSh = rDoc.getIDocumentLayoutAccess().GetCurrentViewShell();
     if( pVSh )
     {
-        return static_cast<sal_uInt16>(pVSh->GetBrowseWidth());
+        return o3tl::narrowing<sal_uInt16>(pVSh->GetBrowseWidth());
     }
 
     return 0;
@@ -328,7 +328,7 @@ sal_uInt16 SwHTMLTableLayout::GetBrowseWidth( const SwDoc& rDoc )
     {
         const SwFrame *pPageFrame = pRootFrame->GetLower();
         if( pPageFrame )
-            return static_cast<sal_uInt16>(pPageFrame->getFramePrintArea().Width());
+            return o3tl::narrowing<sal_uInt16>(pPageFrame->getFramePrintArea().Width());
     }
 
     // #i91658#
@@ -367,7 +367,7 @@ sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByTabFrame(
     rTabFrame.CalcFlyOffsets( nUpperDummy, nLeftOffset, nRightOffset );
     nWidth -= (nLeftOffset + nRightOffset);
 
-    return static_cast<sal_uInt16>(std::min(nWidth, SwTwips(SAL_MAX_UINT16)));
+    return o3tl::narrowing<sal_uInt16>(std::min(nWidth, SwTwips(SAL_MAX_UINT16)));
 }
 
 sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByTable( const SwDoc& rDoc ) const
@@ -985,7 +985,7 @@ void SwHTMLTableLayout::AutoLayoutPass1()
                 {
                     // the next column gets the rest
                     sal_uInt16 nColWidth =
-                        static_cast<sal_uInt16>((pColumn->GetMax() * nRelLeft) / nFixMax);
+                        o3tl::narrowing<sal_uInt16>((pColumn->GetMax() * nRelLeft) / nFixMax);
                     pColumn->SetWidthOption( nColWidth );
                 }
             }
@@ -1112,8 +1112,8 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
     {
         sal_uLong nAbsLeftFillL = nAbsLeftFill, nAbsRightFillL = nAbsRightFill;
 
-        m_nRelLeftFill = static_cast<sal_uInt16>((nAbsLeftFillL * nRelAvail) / nAbsAvail);
-        m_nRelRightFill = static_cast<sal_uInt16>((nAbsRightFillL * nRelAvail) / nAbsAvail);
+        m_nRelLeftFill = o3tl::narrowing<sal_uInt16>((nAbsLeftFillL * nRelAvail) / nAbsAvail);
+        m_nRelRightFill = o3tl::narrowing<sal_uInt16>((nAbsRightFillL * nRelAvail) / nAbsAvail);
 
         nAbsAvail -= (nAbsLeftFill + nAbsRightFill);
         if( nRelAvail )
@@ -1145,7 +1145,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
 
             // Let's play such games now anyway. We had a graphic in a 1% wide
             // table and it didn't fit in of course.
-            nAbsTabWidth = static_cast<sal_uInt16>( (static_cast<sal_uLong>(nAbsAvail) * m_nWidthOption) / 100 );
+            nAbsTabWidth = o3tl::narrowing<sal_uInt16>( (static_cast<sal_uLong>(nAbsAvail) * m_nWidthOption) / 100 );
             if( IsTopTable() &&
                 ( /*MayBeInFlyFrame() ||*/ static_cast<sal_uLong>(nAbsTabWidth) > m_nMin ) )
             {
@@ -1214,17 +1214,17 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                 if( nColMin <= USHRT_MAX )
                 {
                     pColumn->SetAbsColWidth(
-                        static_cast<sal_uInt16>((nColMin * nAbsTabWidth) / m_nMin) );
+                        o3tl::narrowing<sal_uInt16>((nColMin * nAbsTabWidth) / m_nMin) );
                     pColumn->SetRelColWidth(
-                        static_cast<sal_uInt16>((nColMin * m_nRelTabWidth) / m_nMin) );
+                        o3tl::narrowing<sal_uInt16>((nColMin * m_nRelTabWidth) / m_nMin) );
                 }
                 else
                 {
                     double nColMinD = nColMin;
                     pColumn->SetAbsColWidth(
-                        static_cast<sal_uInt16>((nColMinD * nAbsTabWidth) / m_nMin) );
+                        o3tl::narrowing<sal_uInt16>((nColMinD * nAbsTabWidth) / m_nMin) );
                     pColumn->SetRelColWidth(
-                        static_cast<sal_uInt16>((nColMinD * m_nRelTabWidth) / m_nMin) );
+                        o3tl::narrowing<sal_uInt16>((nColMinD * m_nRelTabWidth) / m_nMin) );
                 }
 
                 nAbs = nAbs + pColumn->GetAbsColWidth();
@@ -1251,17 +1251,17 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                 if( nColMin <= USHRT_MAX )
                 {
                     pColumn->SetAbsColWidth(
-                        static_cast<sal_uInt16>((((nColMin-nRealColMin) * nDistAbs) / nDistMin) + nRealColMin) );
+                        o3tl::narrowing<sal_uInt16>((((nColMin-nRealColMin) * nDistAbs) / nDistMin) + nRealColMin) );
                     pColumn->SetRelColWidth(
-                        static_cast<sal_uInt16>((((nColMin-nRealColMin) * nDistRel) / nDistMin) + nRealColMin) );
+                        o3tl::narrowing<sal_uInt16>((((nColMin-nRealColMin) * nDistRel) / nDistMin) + nRealColMin) );
                 }
                 else
                 {
                     double nColMinD = nColMin;
                     pColumn->SetAbsColWidth(
-                        static_cast<sal_uInt16>((((nColMinD-nRealColMin) * nDistAbs) / nDistMin) + nRealColMin) );
+                        o3tl::narrowing<sal_uInt16>((((nColMinD-nRealColMin) * nDistAbs) / nDistMin) + nRealColMin) );
                     pColumn->SetRelColWidth(
-                        static_cast<sal_uInt16>((((nColMinD-nRealColMin) * nDistRel) / nDistMin) + nRealColMin) );
+                        o3tl::narrowing<sal_uInt16>((((nColMinD-nRealColMin) * nDistRel) / nDistMin) + nRealColMin) );
                 }
 
                 nAbs = nAbs + pColumn->GetAbsColWidth();
@@ -1284,7 +1284,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
 
         // No fixed width, use the maximum.
         if( !nAbsTabWidth )
-            nAbsTabWidth = static_cast<sal_uInt16>(m_nMax);
+            nAbsTabWidth = o3tl::narrowing<sal_uInt16>(m_nMax);
 
         // A top table may also get wider then the available space.
         if( nAbsTabWidth > nAbsAvail )
@@ -1301,7 +1301,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
         {
             if (nAbsAvail == 0)
                 throw o3tl::divide_by_zero();
-            m_nRelTabWidth = static_cast<sal_uInt16>((nAbsTabWidthL * nRelAvail) / nAbsAvail);
+            m_nRelTabWidth = o3tl::narrowing<sal_uInt16>((nAbsTabWidthL * nRelAvail) / nAbsAvail);
         }
         else
             m_nRelTabWidth = nAbsTabWidth;
@@ -1339,7 +1339,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                     // The column keeps its width.
                     nFixedCols++;
                     sal_uLong nColMax = pColumn->GetMax();
-                    pColumn->SetAbsColWidth( static_cast<sal_uInt16>(nColMax) );
+                    pColumn->SetAbsColWidth( o3tl::narrowing<sal_uInt16>(nColMax) );
 
                     sal_uLong nRelColWidth =
                         (nColMax * m_nRelTabWidth) / nAbsTabWidth;
@@ -1349,10 +1349,10 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                         nRelColWidth++;
                     else if( nChkWidth > nColMax )
                         nRelColWidth--;
-                    pColumn->SetRelColWidth( static_cast<sal_uInt16>(nRelColWidth) );
+                    pColumn->SetRelColWidth( o3tl::narrowing<sal_uInt16>(nRelColWidth) );
 
-                    nAbs = nAbs + static_cast<sal_uInt16>(nColMax);
-                    nRel = nRel + static_cast<sal_uInt16>(nRelColWidth);
+                    nAbs = nAbs + o3tl::narrowing<sal_uInt16>(nColMax);
+                    nRel = nRel + o3tl::narrowing<sal_uInt16>(nRelColWidth);
                 }
             }
 
@@ -1381,9 +1381,9 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                     {
                         sal_uLong nColMax = pColumn->GetMax();
                         pColumn->SetAbsColWidth(
-                            static_cast<sal_uInt16>((nColMax * nDistAbsTabWidth) / nDistMax) );
+                            o3tl::narrowing<sal_uInt16>((nColMax * nDistAbsTabWidth) / nDistMax) );
                         pColumn->SetRelColWidth(
-                            static_cast<sal_uInt16>((nColMax * nDistRelTabWidth) / nDistMax) );
+                            o3tl::narrowing<sal_uInt16>((nColMax * nDistRelTabWidth) / nDistMax) );
                     }
                     nAbs = nAbs + pColumn->GetAbsColWidth();
                     nRel = nRel + pColumn->GetRelColWidth();
@@ -1400,9 +1400,9 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
             {
                 sal_uLong nColMax = GetColumn( i )->GetMax();
                 GetColumn( i )->SetAbsColWidth(
-                    static_cast<sal_uInt16>((nColMax * nAbsTabWidth) / m_nMax) );
+                    o3tl::narrowing<sal_uInt16>((nColMax * nAbsTabWidth) / m_nMax) );
                 GetColumn( i )->SetRelColWidth(
-                    static_cast<sal_uInt16>((nColMax * m_nRelTabWidth) / m_nMax) );
+                    o3tl::narrowing<sal_uInt16>((nColMax * m_nRelTabWidth) / m_nMax) );
             }
         }
     }
@@ -1413,7 +1413,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
         if( !nAbsTabWidth )
             nAbsTabWidth = nAbsAvail;
         if( nAbsTabWidth < m_nMin )
-            nAbsTabWidth = static_cast<sal_uInt16>(m_nMin);
+            nAbsTabWidth = o3tl::narrowing<sal_uInt16>(m_nMin);
 
         if( nAbsTabWidth > nAbsAvail )
         {
@@ -1427,7 +1427,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
         {
             if (nAbsAvail == 0)
                 throw o3tl::divide_by_zero();
-            m_nRelTabWidth = static_cast<sal_uInt16>((nAbsTabWidthL * nRelAvail) / nAbsAvail);
+            m_nRelTabWidth = o3tl::narrowing<sal_uInt16>((nAbsTabWidthL * nRelAvail) / nAbsAvail);
         }
         else
             m_nRelTabWidth = nAbsTabWidth;
@@ -1442,10 +1442,10 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
                                     ? (nAbsColWidth * m_nRelTabWidth) / nAbsTabWidth
                                     : nAbsColWidth;
 
-            GetColumn( i )->SetAbsColWidth( static_cast<sal_uInt16>(nAbsColWidth) );
-            GetColumn( i )->SetRelColWidth( static_cast<sal_uInt16>(nRelColWidth) );
-            nAbs = nAbs + static_cast<sal_uInt16>(nAbsColWidth);
-            nRel = nRel + static_cast<sal_uInt16>(nRelColWidth);
+            GetColumn( i )->SetAbsColWidth( o3tl::narrowing<sal_uInt16>(nAbsColWidth) );
+            GetColumn( i )->SetRelColWidth( o3tl::narrowing<sal_uInt16>(nRelColWidth) );
+            nAbs = nAbs + o3tl::narrowing<sal_uInt16>(nAbsColWidth);
+            nRel = nRel + o3tl::narrowing<sal_uInt16>(nRelColWidth);
         }
         GetColumn( m_nCols-1 )->SetAbsColWidth( nAbsTabWidth - nAbs );
         GetColumn( m_nCols-1 )->SetRelColWidth( m_nRelTabWidth - nRel );
@@ -1462,8 +1462,8 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv
 
     // Calculate the width of additional cells we use for
     // aligning inner tables.
-    sal_uInt16 nAbsDist = static_cast<sal_uInt16>(nAbsAvail-nAbsTabWidth);
-    sal_uInt16 nRelDist = static_cast<sal_uInt16>(nRelAvail-m_nRelTabWidth);
+    sal_uInt16 nAbsDist = o3tl::narrowing<sal_uInt16>(nAbsAvail-nAbsTabWidth);
+    sal_uInt16 nRelDist = o3tl::narrowing<sal_uInt16>(nRelAvail-m_nRelTabWidth);
     sal_uInt16 nParentInhAbsLeftSpace = 0, nParentInhAbsRightSpace = 0;
 
     // Calculate the size and position of the additional cells.
diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx
index 76fe94181f0f..e4f2e071afba 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -131,7 +131,7 @@ static void lcl_PaintReplacement( const SwRect &rRect, const OUString &rText,
         else if ( !rURL.GetURL().isEmpty() )
             bVisited = rSh.GetDoc()->IsVisitedURL( rURL.GetURL() );
 
-        SwFormat *pFormat = rSh.GetDoc()->getIDocumentStylePoolAccess().GetFormatFromPool( static_cast<sal_uInt16>
+        SwFormat *pFormat = rSh.GetDoc()->getIDocumentStylePoolAccess().GetFormatFromPool( o3tl::narrowing<sal_uInt16>
             (bVisited ? RES_POOLCHR_INET_VISIT : RES_POOLCHR_INET_NORMAL ) );
         aCol = pFormat->GetColor().GetValue();
         eUnderline = pFormat->GetUnderline().GetLineStyle();
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index ecd1b119b95e..eb84b1b63a68 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -659,7 +659,7 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
 
     if (nLevel < MAXLEVEL)
     {
-        const SwNumFormat& rMyNFormat = Get( static_cast<sal_uInt16>(nLevel) );
+        const SwNumFormat& rMyNFormat = Get( o3tl::narrowing<sal_uInt16>(nLevel) );
 
         {
             css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
@@ -789,7 +789,7 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
                 if (nListLevel >= MAXLEVEL)
                     nListLevel = MAXLEVEL - 1;
 
-                SwNumFormat aFormat( Get( static_cast<sal_uInt16>(nListLevel) ) );
+                SwNumFormat aFormat( Get( o3tl::narrowing<sal_uInt16>(nListLevel) ) );
                 bMakeNumStringForPhantom = aFormat.IsEnumeration() &&
                                            SVX_NUM_NUMBER_NONE != aFormat.GetNumberingType();
 
@@ -834,7 +834,7 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
 
             if ( bInclSuperiorNumLabels && pWorkingNodeNum->GetLevelInListTree() > 0 )
             {
-                sal_uInt8 n = Get( static_cast<sal_uInt16>(pWorkingNodeNum->GetLevelInListTree()) ).GetIncludeUpperLevels();
+                sal_uInt8 n = Get( o3tl::narrowing<sal_uInt16>(pWorkingNodeNum->GetLevelInListTree()) ).GetIncludeUpperLevels();
                 pWorkingNodeNum = dynamic_cast<SwNodeNum*>(pWorkingNodeNum->GetParent());
                 // skip parents, whose list label is already contained in the actual list label.
                 while ( pWorkingNodeNum && n > 1 )
diff --git a/sw/source/core/doc/tblcpy.cxx b/sw/source/core/doc/tblcpy.cxx
index 6bc270801873..337c7bcef619 100644
--- a/sw/source/core/doc/tblcpy.cxx
+++ b/sw/source/core/doc/tblcpy.cxx
@@ -225,7 +225,7 @@ namespace
         }
         if( bNoSelection && mnStartCol < USHRT_MAX )
         {
-            sal_uInt16 nIdx = std::min(mnStartCol, static_cast<sal_uInt16>(maLines[0].size()));
+            sal_uInt16 nIdx = std::min(mnStartCol, o3tl::narrowing<sal_uInt16>(maLines[0].size()));
             mnStartCol = std::accumulate(maLines[0].begin(), maLines[0].begin() + nIdx, sal_uInt16(0),
                 [](sal_uInt16 sum, const BoxSpanInfo& rInfo) { return sum + rInfo.mnColSpan; });
         }
@@ -298,7 +298,7 @@ namespace
             aInfo.mbSelected = true;
             if( mnStartCol == USHRT_MAX )
             {
-                mnStartCol = static_cast<sal_uInt16>(maLines[nLine].size());
+                mnStartCol = o3tl::narrowing<sal_uInt16>(maLines[nLine].size());
                 if( pSelBoxes->size() < 2 )
                 {
                     pSelBoxes = nullptr;
@@ -352,7 +352,7 @@ namespace
         const sal_uInt16 nLineCount = rLines.size();
         if( nLineCount < mnAddLine )
             mnAddLine = nLineCount;
-        sal_uInt16 nLine = static_cast<sal_uInt16>(maLines.size());
+        sal_uInt16 nLine = o3tl::narrowing<sal_uInt16>(maLines.size());
         maLines.resize( nLine + mnAddLine );
         while( mnAddLine )
         {
@@ -591,7 +591,7 @@ static void lcl_CpyBox( const SwTable& rCpyTable, const SwTableBox* pCpyBox,
             : RES_POOLCOLL_TABLE_HDLN == nPoolId ) )
     {
         SwTextFormatColl* pColl = pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(
-            static_cast<sal_uInt16>(
+            o3tl::narrowing<sal_uInt16>(
                                 RES_POOLCOLL_TABLE == nPoolId
                                     ? RES_POOLCOLL_TABLE_HDLN
                                     : RES_POOLCOLL_TABLE ) );
diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx
index 818782a5ff1b..18eab679a289 100644
--- a/sw/source/core/doc/tblrwcl.cxx
+++ b/sw/source/core/doc/tblrwcl.cxx
@@ -672,7 +672,7 @@ void DeleteBox_( SwTable& rTable, SwTableBox* pBox, SwUndo* pUndo,
 
                 // JP 02.04.97: 1st part for Bug 36271
                 // First the left/right edges
-                if( nDelPos + 1 < static_cast<sal_uInt16>(rTableBoxes.size()) )
+                if( nDelPos + 1 < o3tl::narrowing<sal_uInt16>(rTableBoxes.size()) )
                 {
                     SwTableBox* pNxtBox = rTableBoxes[ nDelPos + 1 ];
                     const SvxBoxItem& rNxtBoxItem = pNxtBox->GetFrameFormat()->GetBox();
@@ -698,7 +698,7 @@ void DeleteBox_( SwTable& rTable, SwTableBox* pBox, SwUndo* pUndo,
                     SwTableBox* pPrvBox = rTableBoxes[ nDelPos - 1 ];
                     const SvxBoxItem& rPrvBoxItem = pPrvBox->GetFrameFormat()->GetBox();
 
-                    SwTableBox* pNxtBox = nDelPos + 1 < static_cast<sal_uInt16>(rTableBoxes.size())
+                    SwTableBox* pNxtBox = nDelPos + 1 < o3tl::narrowing<sal_uInt16>(rTableBoxes.size())
                                             ? rTableBoxes[ nDelPos + 1 ] : nullptr;
 
                     if( pPrvBox->GetSttNd() && !rPrvBoxItem.GetRight() &&
@@ -854,7 +854,7 @@ lcl_FndNxtPrvDelBox( const SwTableLines& rTableLns,
                 --*pCurPos;
             pAllDelBoxes->erase( pAllDelBoxes->begin() + nFndPos );
         }
-    } while( bNxt ? ( nLinePos + 1 < static_cast<sal_uInt16>(rTableLns.size()) ) : nLinePos != 0 );
+    } while( bNxt ? ( nLinePos + 1 < o3tl::narrowing<sal_uInt16>(rTableLns.size()) ) : nLinePos != 0 );
     return pFndBox;
 }
 
@@ -897,7 +897,7 @@ lcl_SaveUpperLowerBorder( SwTable& rTable, const SwTableBox& rBox,
         pPrvBox = ::lcl_FndNxtPrvDelBox( *pTableLns, nBoxStt, nBoxWidth,
                             nLnPos, false, pAllDelBoxes, pCurPos );
 
-    if( nLnPos + 1 < static_cast<sal_uInt16>(pTableLns->size()) )     // Successor?
+    if( nLnPos + 1 < o3tl::narrowing<sal_uInt16>(pTableLns->size()) )     // Successor?
         pNxtBox = ::lcl_FndNxtPrvDelBox( *pTableLns, nBoxStt, nBoxWidth,
                             nLnPos, true, pAllDelBoxes, pCurPos );
 
@@ -1371,7 +1371,7 @@ static void lcl_Merge_MoveBox(FndBox_ & rFndBox, InsULPara *const pULPara)
         {
             // if there are Boxes behind it, move them
             nPos = pFndTableBox->GetUpper()->GetBoxPos( pFndTableBox );
-            if( nPos +1 < static_cast<sal_uInt16>(pBoxes->size()) )
+            if( nPos +1 < o3tl::narrowing<sal_uInt16>(pBoxes->size()) )
             {
                 nInsPos = pULPara->pInsLine->GetTabBoxes().size();
                 lcl_CpyBoxes( nPos+1, pBoxes->size(),
@@ -1444,7 +1444,7 @@ static void lcl_Merge_MoveLine(FndLine_& rFndLine, InsULPara *const pULPara)
             }
             else
                 // If there are Lines after it, move them
-                if( (nPos = pLines->GetPos( pFndLn )) + 1 < static_cast<sal_uInt16>(pLines->size()) )
+                if( (nPos = pLines->GetPos( pFndLn )) + 1 < o3tl::narrowing<sal_uInt16>(pLines->size()) )
                 {
                     nInsPos = pULPara->pInsBox->GetTabLines().size();
                     lcl_CpyLines( nPos+1, pLines->size(), *pLines,
@@ -1479,7 +1479,7 @@ static void lcl_Merge_MoveLine(FndLine_& rFndLine, InsULPara *const pULPara)
             }
             else
                 // If there are Lines after it, move them
-                if( (nPos = pLines->GetPos( pFndLn )) + 1 < static_cast<sal_uInt16>(pLines->size()) )
+                if( (nPos = pLines->GetPos( pFndLn )) + 1 < o3tl::narrowing<sal_uInt16>(pLines->size()) )
                     lcl_CpyLines( nPos+1, pLines->size(), *pLines,
                                         pLMBox );
             lcl_CalcWidth( pLMBox );        // calculate the Box's width
@@ -1678,7 +1678,7 @@ static sal_uInt16 lcl_GetBoxOffset( const FndBox_& rBox )
         {
             if (pBox==pCmp)
                 break;
-            nRet = nRet + static_cast<sal_uInt16>(pCmp->GetFrameFormat()->GetFrameSize().GetWidth());
+            nRet = nRet + o3tl::narrowing<sal_uInt16>(pCmp->GetFrameFormat()->GetFrameSize().GetWidth());
         }
         pBox = pBox->GetUpper()->GetUpper();
     } while( pBox );
@@ -1690,7 +1690,7 @@ static sal_uInt16 lcl_GetLineWidth( const FndLine_& rLine )
     sal_uInt16 nRet = 0;
     for( auto n = rLine.GetBoxes().size(); n; )
     {
-        nRet = nRet + static_cast<sal_uInt16>(rLine.GetBoxes()[--n]->GetBox()
+        nRet = nRet + o3tl::narrowing<sal_uInt16>(rLine.GetBoxes()[--n]->GetBox()
                             ->GetFrameFormat()->GetFrameSize().GetWidth());
     }
     return nRet;
@@ -2202,7 +2202,7 @@ SwTableBox* SwTableLine::FindNextBox( const SwTable& rTable,
     {
         nFndPos = GetBoxPos( pSrchBox );
         if( USHRT_MAX != nFndPos &&
-            nFndPos + 1 != static_cast<sal_uInt16>(GetTabBoxes().size()) )
+            nFndPos + 1 != o3tl::narrowing<sal_uInt16>(GetTabBoxes().size()) )
         {
             pBox = GetTabBoxes()[ nFndPos + 1 ];
             while( !pBox->GetTabLines().empty() )
@@ -2216,7 +2216,7 @@ SwTableBox* SwTableLine::FindNextBox( const SwTable& rTable,
         nFndPos = GetUpper()->GetTabLines().GetPos( pLine );
         OSL_ENSURE( USHRT_MAX != nFndPos, "Line is not in the Table" );
         // Is there another Line?
-        if( nFndPos+1 >= static_cast<sal_uInt16>(GetUpper()->GetTabLines().size()) )
+        if( nFndPos+1 >= o3tl::narrowing<sal_uInt16>(GetUpper()->GetTabLines().size()) )
             return GetUpper()->GetUpper()->FindNextBox( rTable, GetUpper(), bOvrTableLns );
         pLine = GetUpper()->GetTabLines()[nFndPos+1];
     }
@@ -2224,7 +2224,7 @@ SwTableBox* SwTableLine::FindNextBox( const SwTable& rTable,
     {
         // Search for the next Line in the Table
         nFndPos = rTable.GetTabLines().GetPos( pLine );
-        if( nFndPos + 1 >= static_cast<sal_uInt16>(rTable.GetTabLines().size()) )
+        if( nFndPos + 1 >= o3tl::narrowing<sal_uInt16>(rTable.GetTabLines().size()) )
             return nullptr;           // there are no more Boxes
 
         pLine = rTable.GetTabLines()[ nFndPos+1 ];
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index 9ad8d8c33d57..cba67e1bf74d 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -575,7 +575,7 @@ void SwTextBoxHelper::getProperty(SwFrameFormat const* pShape, sal_uInt16 nWID,
             break;
         default:
             SAL_WARN("sw.core", "SwTextBoxHelper::getProperty: unhandled member-id: "
-                                    << static_cast<sal_uInt16>(nMemberID));
+                                    << o3tl::narrowing<sal_uInt16>(nMemberID));
             break;
     }
 }
@@ -633,7 +633,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -650,7 +650,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -674,7 +674,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -714,7 +714,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                 break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -743,7 +743,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -768,7 +768,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
@@ -787,15 +787,15 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
                     break;
                 default:
                     SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled member-id: "
-                                            << static_cast<sal_uInt16>(nMemberID)
+                                            << o3tl::narrowing<sal_uInt16>(nMemberID)
                                             << " (which-id: " << nWID << ")");
                     break;
             }
             break;
         default:
             SAL_WARN("sw.core", "SwTextBoxHelper::syncProperty: unhandled which-id: "
-                                    << nWID << " (member-id: " << static_cast<sal_uInt16>(nMemberID)
-                                    << ")");
+                                    << nWID << " (member-id: "
+                                    << o3tl::narrowing<sal_uInt16>(nMemberID) << ")");
             break;
     }
 
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 389923d6f415..d11f09ecf69a 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -362,7 +362,7 @@ const SwTable* SwDoc::InsertTable( const SwInsertTableOptions& rInsTableOpts,
     if( GetIDocumentUndoRedo().DoesUndo() )
     {
         GetIDocumentUndoRedo().AppendUndo(
-            std::make_unique<SwUndoInsTable>( rPos, nCols, nRows, static_cast<sal_uInt16>(eAdjust),
+            std::make_unique<SwUndoInsTable>( rPos, nCols, nRows, o3tl::narrowing<sal_uInt16>(eAdjust),
                                       rInsTableOpts, pTAFormat, pColArr,
                                       aTableName));
     }
@@ -651,7 +651,7 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTableOpts,
     {
         GetIDocumentUndoRedo().StartUndo( SwUndoId::TEXTTOTABLE, nullptr );
         pUndo = new SwUndoTextToTable( aOriginal, rInsTableOpts, cCh,
-                    static_cast<sal_uInt16>(eAdjust), pTAFormat );
+                    o3tl::narrowing<sal_uInt16>(eAdjust), pTAFormat );
         GetIDocumentUndoRedo().AppendUndo( std::unique_ptr<SwUndo>(pUndo) );
 
         // Do not add splitting the TextNode to the Undo history
@@ -1041,13 +1041,13 @@ SwTableNode* SwNodes::TextToTable( const SwNodeRange& rRange, sal_Unicode cCh,
                     {
                         // sw_redlinehide: no idea if this makes any sense...
                         TextFrameIndex const nPos(aFInfo.GetFrame()->MapModelToView(pTextNd, nChPos));
-                        aPosArr.push_back( static_cast<sal_uInt16>(
+                        aPosArr.push_back( o3tl::narrowing<sal_uInt16>(
                             aFInfo.GetCharPos(nPos+TextFrameIndex(1), false)) );
                     }
                 }
 
                 aPosArr.push_back(
-                                static_cast<sal_uInt16>(aFInfo.GetFrame()->IsVertical() ?
+                                o3tl::narrowing<sal_uInt16>(aFInfo.GetFrame()->IsVertical() ?
                                 aFInfo.GetFrame()->getFramePrintArea().Bottom() :
                                 aFInfo.GetFrame()->getFramePrintArea().Right()) );
 
@@ -2921,7 +2921,7 @@ void SwCollectTableLineBoxes::AddBox( const SwTableBox& rBox )
     m_aPositionArr.push_back(m_nWidth);
     SwTableBox* p = const_cast<SwTableBox*>(&rBox);
     m_Boxes.push_back(p);
-    m_nWidth = m_nWidth + static_cast<sal_uInt16>(rBox.GetFrameFormat()->GetFrameSize().GetWidth());
+    m_nWidth = m_nWidth + o3tl::narrowing<sal_uInt16>(rBox.GetFrameFormat()->GetFrameSize().GetWidth());
 }
 
 const SwTableBox* SwCollectTableLineBoxes::GetBoxOfPos( const SwTableBox& rBox )
@@ -2944,7 +2944,7 @@ const SwTableBox* SwCollectTableLineBoxes::GetBoxOfPos( const SwTableBox& rBox )
         if( n >= m_aPositionArr.size() )
             --n;
 
-        m_nWidth = m_nWidth + static_cast<sal_uInt16>(rBox.GetFrameFormat()->GetFrameSize().GetWidth());
+        m_nWidth = m_nWidth + o3tl::narrowing<sal_uInt16>(rBox.GetFrameFormat()->GetFrameSize().GetWidth());
         pRet = m_Boxes[ n ];
     }
     return pRet;
diff --git a/sw/source/core/docnode/ndtbl1.cxx b/sw/source/core/docnode/ndtbl1.cxx
index 9a4f80ee995a..3df6b3272cee 100644
--- a/sw/source/core/docnode/ndtbl1.cxx
+++ b/sw/source/core/docnode/ndtbl1.cxx
@@ -1303,7 +1303,7 @@ sal_uInt16 SwDoc::GetBoxAlign( const SwCursor& rCursor )
             const SwFormatVertOrient &rOri =
                             aBoxes[i]->GetFrameFormat()->GetVertOrient();
             if( USHRT_MAX == nAlign )
-                nAlign = static_cast<sal_uInt16>(rOri.GetVertOrient());
+                nAlign = o3tl::narrowing<sal_uInt16>(rOri.GetVertOrient());
             else if( rOri.GetVertOrient() != nAlign )
             {
                 nAlign = USHRT_MAX;
@@ -1339,7 +1339,7 @@ static sal_uInt16 lcl_CalcCellFit( const SwLayoutFrame *pCell )
     // To compensate for the accuracy of calculation later on in SwTable::SetTabCols
     // we keep adding up a little.
     nRet += COLFUZZY;
-    return static_cast<sal_uInt16>(std::max( SwTwips(MINLAY), nRet ));
+    return o3tl::narrowing<sal_uInt16>(std::max( SwTwips(MINLAY), nRet ));
 }
 
 /* The Line is within the Selection but not outlined by the TabCols.
diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx
index c65afd1e5749..9d300621da0e 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -947,7 +947,7 @@ void SwSectionFormat::UpdateParent()
 
     if(bIsHidden == pSection->IsHiddenFlag())
     {
-        SwMsgPoolItem aMsgItem(static_cast<sal_uInt16>(bIsHidden
+        SwMsgPoolItem aMsgItem(o3tl::narrowing<sal_uInt16>(bIsHidden
                 ? RES_SECTION_HIDDEN
                 : RES_SECTION_NOT_HIDDEN));
         CallSwClientNotify(sw::LegacyModifyHint(&aMsgItem, &aMsgItem));
diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx
index 637f507734a4..b9b4d8480a7a 100644
--- a/sw/source/core/edit/autofmt.cxx
+++ b/sw/source/core/edit/autofmt.cxx
@@ -639,7 +639,7 @@ bool SwAutoFormat::DoTable()
 
         case '+':
         case '|':
-            aPosArr.push_back( static_cast<sal_uInt16>(aInfo.GetCharPos(n)) );
+            aPosArr.push_back( o3tl::narrowing<sal_uInt16>(aInfo.GetCharPos(n)) );
             break;
 
         default:
@@ -665,7 +665,7 @@ bool SwAutoFormat::DoTable()
             {
                 eHori = text::HoriOrientation::NONE;
                 // then - as last - we need to add the current frame width into the array
-                aPosArr.push_back( static_cast<sal_uInt16>(m_pCurTextFrame->getFrameArea().Width()) );
+                aPosArr.push_back( o3tl::narrowing<sal_uInt16>(m_pCurTextFrame->getFrameArea().Width()) );
             }
             else
                 eHori = text::HoriOrientation::LEFT;
@@ -908,7 +908,7 @@ CHECK_ROMAN_1:
                         if( nMod5 == ((3 * nVal) + n10 ) ||
                             nMod5 == ((4 * nVal) + n10 ) ||
                             nLast == n10 )
-                            nStart = static_cast<sal_uInt16>(nStart + (n10 * 8));
+                            nStart = o3tl::narrowing<sal_uInt16>(nStart + (n10 * 8));
                         else if( nMod5 == 0 ||
                                  nMod5 == (1 * nVal) ||
                                  nMod5 == (2 * nVal) )
@@ -927,7 +927,7 @@ CHECK_ROMAN_5:
                             int nMod = nStart % nVal;
                             int n10 = nVal / 5;
                             if( n10 == nMod )
-                                nStart = static_cast<sal_uInt16>(nStart + (3 * n10));
+                                nStart = o3tl::narrowing<sal_uInt16>(nStart + (3 * n10));
                             else if( 0 == nMod )
                                 nStart = nStart + nVal;
                             else
@@ -1590,7 +1590,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel )
         else
         {
             bChgBullet = true;
-            SetColl( static_cast<sal_uInt16>(RES_POOLCOLL_BULLET_LEVEL1 + ( std::min( nLvl, cnNumBullColls ) * 4 )) );
+            SetColl( o3tl::narrowing<sal_uInt16>(RES_POOLCOLL_BULLET_LEVEL1 + ( std::min( nLvl, cnNumBullColls ) * 4 )) );
         }
     }
     else
@@ -1627,7 +1627,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel )
                 {
                     SwNumFormat aFormat( aRule.Get( nLvl ) );
                     aFormat.SetPrefix( aPrefix.getToken( 0, u'\x0001', nPrefixIdx ));
-                    aFormat.SetStart( static_cast<sal_uInt16>(aPrefix.getToken( 0, u'\x0001', nPrefixIdx ).toInt32()));
+                    aFormat.SetStart( o3tl::narrowing<sal_uInt16>(aPrefix.getToken( 0, u'\x0001', nPrefixIdx ).toInt32()));
                     aFormat.SetSuffix( aPostfix.getToken( 0, u'\x0001' ));
                     aFormat.SetIncludeUpperLevels( 0 );
 
@@ -1652,7 +1652,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel )
 
                         if( !n )
                             aFormat.SetPrefix( aPrefix.getToken( 0, u'\x0001', nPrefixIdx )); // token 0, read only on first loop
-                        aFormat.SetStart( static_cast<sal_uInt16>(aPrefix.getToken( 0, u'\x0001', nPrefixIdx ).toInt32() ));
+                        aFormat.SetStart( o3tl::narrowing<sal_uInt16>(aPrefix.getToken( 0, u'\x0001', nPrefixIdx ).toInt32() ));
                         aFormat.SetSuffix( aPostfix.getToken( 0, u'\x0001', nPostfixIdx ));
                         aFormat.SetIncludeUpperLevels( MAXLEVEL );
                         if( n < aNumTypes.getLength() )
@@ -1687,7 +1687,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel )
             }
         }
         else if( !m_aFlags.bAFormatByInput )
-            SetColl( static_cast<sal_uInt16>(RES_POOLCOLL_NUM_LEVEL1 + ( std::min( nLvl, cnNumBullColls ) * 4 ) ));
+            SetColl( o3tl::narrowing<sal_uInt16>(RES_POOLCOLL_NUM_LEVEL1 + ( std::min( nLvl, cnNumBullColls ) * 4 ) ));
         else
             bChgEnum = false;
     }
@@ -1811,7 +1811,7 @@ void SwAutoFormat::BuildNegIndent( SwTwips nSpaces )
             || (!nTextPos && IsBlanksInString(*m_pCurTextFrame))
             || IsSentenceAtEnd(*m_pCurTextFrame);
 
-    SetColl( static_cast<sal_uInt16>( nTextPos
+    SetColl( o3tl::narrowing<sal_uInt16>( nTextPos
                 ? RES_POOLCOLL_CONFRONTATION
                 : RES_POOLCOLL_TEXT_NEGIDENT ) );
 
@@ -1889,7 +1889,7 @@ void SwAutoFormat::BuildHeadLine( sal_uInt16 nLvl )
         m_pDoc->GetDocumentRedlineManager().SetAutoFormatRedlineComment( &sText );
     }
 
-    SetColl( static_cast<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + nLvl ), true );
+    SetColl( o3tl::narrowing<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + nLvl ), true );
     if( m_aFlags.bAFormatByInput )
     {
         SwTextFormatColl& rNxtColl = m_pCurTextFrame->GetTextNodeForParaProps()->GetTextColl()->GetNextTextFormatColl();
diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx
index dc8769f2a61a..4df2c7db6e47 100644
--- a/sw/source/core/edit/edattr.cxx
+++ b/sw/source/core/edit/edattr.cxx
@@ -93,7 +93,7 @@ bool SwEditShell::GetPaMAttr( SwPaM* pPaM, SfxItemSet& rSet,
                         nListLevel = MAXLEVEL - 1;
 
                     const OUString & aCharFormatName =
-                        pNumRule->Get(static_cast<sal_uInt16>(nListLevel)).GetCharFormatName();
+                        pNumRule->Get(o3tl::narrowing<sal_uInt16>(nListLevel)).GetCharFormatName();
                     SwCharFormat * pCharFormat =
                         GetDoc()->FindCharFormatByName(aCharFormatName);
 
@@ -504,7 +504,7 @@ bool SwEditShell::IsMoveLeftMargin( bool bRight, bool bModulus ) const
     bool bRet = true;
 
     const SvxTabStopItem& rTabItem = GetDoc()->GetDefault( RES_PARATR_TABSTOP );
-    sal_uInt16 nDefDist = static_cast<sal_uInt16>(rTabItem.Count() ? rTabItem[0].GetTabPos() : 1134);
+    sal_uInt16 nDefDist = o3tl::narrowing<sal_uInt16>(rTabItem.Count() ? rTabItem[0].GetTabPos() : 1134);
     if( !nDefDist )
         return false;
 
@@ -533,7 +533,7 @@ bool SwEditShell::IsMoveLeftMargin( bool bRight, bool bModulus ) const
                     SwFrame* pFrame = pCNd->getLayoutFrame( GetLayout() );
                     if ( pFrame )
                     {
-                        const sal_uInt16 nFrameWidth = static_cast<sal_uInt16>( pFrame->IsVertical() ?
+                        const sal_uInt16 nFrameWidth = o3tl::narrowing<sal_uInt16>( pFrame->IsVertical() ?
                                                  pFrame->getFrameArea().Height() :
                                                  pFrame->getFrameArea().Width() );
                         bRet = nFrameWidth > ( nNext + MM50 );
@@ -614,7 +614,7 @@ static bool lcl_IsNoEndTextAttrAtPos(SwRootFrame const& rLayout,
                 if (nListLevel >= MAXLEVEL)
                     nListLevel = MAXLEVEL - 1;
 
-                const SwNumFormat &rNumFormat = pNumRule->Get( static_cast<sal_uInt16>(nListLevel) );
+                const SwNumFormat &rNumFormat = pNumRule->Get( o3tl::narrowing<sal_uInt16>(nListLevel) );
                 if( SVX_NUM_BITMAP != rNumFormat.GetNumberingType() )
                 {
                     if ( SVX_NUM_CHAR_SPECIAL == rNumFormat.GetNumberingType() )
diff --git a/sw/source/core/edit/edfld.cxx b/sw/source/core/edit/edfld.cxx
index 837f37b94e20..b6bb9055f23d 100644
--- a/sw/source/core/edit/edfld.cxx
+++ b/sw/source/core/edit/edfld.cxx
@@ -46,7 +46,7 @@ size_t SwEditShell::GetFieldTypeCount(SwFieldIds nResId ) const
 
     if(nResId == SwFieldIds::Unknown)
     {
-        return static_cast<sal_uInt16>(pFieldTypes->size());
+        return o3tl::narrowing<sal_uInt16>(pFieldTypes->size());
     }
 
     // all types with the same ResId
diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx
index 9be63fb05251..eea6cd397b86 100644
--- a/sw/source/core/edit/editsh.cxx
+++ b/sw/source/core/edit/editsh.cxx
@@ -812,7 +812,7 @@ void SwEditShell::SetNumberingRestart()
                                     nListLevel = MAXLEVEL - 1;
 
                                 bIsNodeNum = pTextNd->GetNum()->GetNumber() ==
-                                    pNumRule->Get( static_cast<sal_uInt16>(nListLevel) ).GetStart();
+                                    pNumRule->Get( o3tl::narrowing<sal_uInt16>(nListLevel) ).GetStart();
                             }
                             if (bIsNodeNum)
                             {
diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx
index af7ec8178e41..cd4458c276dd 100644
--- a/sw/source/core/edit/ednumber.cxx
+++ b/sw/source/core/edit/ednumber.cxx
@@ -900,7 +900,7 @@ sal_uInt16 SwEditShell::GetNodeNumStart( SwPaM* pPaM ) const
     // return USHRT_MAX, if no list restart value is found.
     if ( pTextNd && pTextNd->HasAttrListRestartValue() )
     {
-        return static_cast<sal_uInt16>(pTextNd->GetAttrListRestartValue());
+        return o3tl::narrowing<sal_uInt16>(pTextNd->GetAttrListRestartValue());
     }
     return USHRT_MAX;
 }
diff --git a/sw/source/core/fields/dbfld.cxx b/sw/source/core/fields/dbfld.cxx
index b93c30d8f8f4..cb849d8f6230 100644
--- a/sw/source/core/fields/dbfld.cxx
+++ b/sw/source/core/fields/dbfld.cxx
@@ -665,7 +665,7 @@ void SwDBNumSetField::Evaluate(const SwDoc& rDoc)
     if( m_bCondValid && pMgr && pMgr->IsInMerge() &&
                         pMgr->IsDataSourceOpen(aTmpData.sDataSource, aTmpData.sCommand, true))
     {   // condition OK -> adjust current Set
-        pMgr->ToRecordId(std::max(static_cast<sal_uInt16>(m_aPar2.toInt32()), sal_uInt16(1))-1);
+        pMgr->ToRecordId(std::max(o3tl::narrowing<sal_uInt16>(m_aPar2.toInt32()), sal_uInt16(1))-1);
     }
 }
 
diff --git a/sw/source/core/fields/expfld.cxx b/sw/source/core/fields/expfld.cxx
index ceea88941ddb..6ee39cf4d8a0 100644
--- a/sw/source/core/fields/expfld.cxx
+++ b/sw/source/core/fields/expfld.cxx
@@ -472,7 +472,7 @@ bool SwGetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId )
         break;
     case FIELD_PROP_USHORT1:
          rAny >>= nTmp;
-         m_nSubType = static_cast<sal_uInt16>(nTmp);
+         m_nSubType = o3tl::narrowing<sal_uInt16>(nTmp);
         break;
     case FIELD_PROP_PAR1:
     {
@@ -484,7 +484,7 @@ bool SwGetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId )
     case FIELD_PROP_SUBTYPE:
         nTmp = lcl_APIToSubType(rAny);
         if( nTmp >=0 )
-            SetSubType( static_cast<sal_uInt16>((GetSubType() & 0xff00) | nTmp));
+            SetSubType( o3tl::narrowing<sal_uInt16>((GetSubType() & 0xff00) | nTmp));
         break;
     case FIELD_PROP_BOOL2:
         if(*o3tl::doAccess<bool>(rAny))
@@ -697,7 +697,7 @@ void SwSetExpFieldType::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId )
         {
             sal_Int32 nSet = lcl_APIToSubType(rAny);
             if(nSet >=0)
-                SetType(static_cast<sal_uInt16>(nSet));
+                SetType(o3tl::narrowing<sal_uInt16>(nSet));
         }
         break;
     case FIELD_PROP_PAR2:
@@ -1109,7 +1109,7 @@ bool SwSetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId )
     case FIELD_PROP_SUBTYPE:
         nTmp32 = lcl_APIToSubType(rAny);
         if(nTmp32 >= 0)
-            SetSubType(static_cast<sal_uInt16>((GetSubType() & 0xff00) | nTmp32));
+            SetSubType(o3tl::narrowing<sal_uInt16>((GetSubType() & 0xff00) | nTmp32));
         break;
     case FIELD_PROP_PAR3:
         rAny >>= maPText;
diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx
index bf7f1d2d618e..bd82d5deee2c 100644
--- a/sw/source/core/frmedt/fetab.cxx
+++ b/sw/source/core/frmedt/fetab.cxx
@@ -564,10 +564,10 @@ void SwFEShell::GetTabCols_(SwTabCols &rToFill, const SwFrame *pBox) const
             }
 
             if ( !bDel &&
-                 m_pColumnCache->pLastCols->GetLeftMin () == static_cast<sal_uInt16>(nLeftMin) &&
-                 m_pColumnCache->pLastCols->GetLeft    () == static_cast<sal_uInt16>(aRectFnSet.GetLeft(pTab->getFramePrintArea())) &&
-                 m_pColumnCache->pLastCols->GetRight   () == static_cast<sal_uInt16>(aRectFnSet.GetRight(pTab->getFramePrintArea()))&&
-                 m_pColumnCache->pLastCols->GetRightMax() == static_cast<sal_uInt16>(nRightMax) - m_pColumnCache->pLastCols->GetLeftMin() )
+                 m_pColumnCache->pLastCols->GetLeftMin () == o3tl::narrowing<sal_uInt16>(nLeftMin) &&
+                 m_pColumnCache->pLastCols->GetLeft    () == o3tl::narrowing<sal_uInt16>(aRectFnSet.GetLeft(pTab->getFramePrintArea())) &&
+                 m_pColumnCache->pLastCols->GetRight   () == o3tl::narrowing<sal_uInt16>(aRectFnSet.GetRight(pTab->getFramePrintArea()))&&
+                 m_pColumnCache->pLastCols->GetRightMax() == o3tl::narrowing<sal_uInt16>(nRightMax) - m_pColumnCache->pLastCols->GetLeftMin() )
             {
                 if (m_pColumnCache->pLastCellFrame != pBox)
                 {
diff --git a/sw/source/core/frmedt/tblsel.cxx b/sw/source/core/frmedt/tblsel.cxx
index 067786a6c2a2..e5aae5f1a945 100644
--- a/sw/source/core/frmedt/tblsel.cxx
+++ b/sw/source/core/frmedt/tblsel.cxx
@@ -2364,7 +2364,7 @@ void FndBox_::MakeFrames( SwTable &rTable )
                     i >= 0 && !pSibling; --i )
             {
                 SwTableLine *pLine = m_pLineBehind ? m_pLineBehind :
-                                                    rTable.GetTabLines()[static_cast<sal_uInt16>(i)];
+                                                    rTable.GetTabLines()[o3tl::narrowing<sal_uInt16>(i)];
                 SwIterator<SwRowFrame,SwFormat> aIter( *pLine->GetFrameFormat() );
                 pSibling = aIter.First();
                 while ( pSibling && (
diff --git a/sw/source/core/graphic/grfatr.cxx b/sw/source/core/graphic/grfatr.cxx
index 703a06d69d3d..b267a55c19d2 100644
--- a/sw/source/core/graphic/grfatr.cxx
+++ b/sw/source/core/graphic/grfatr.cxx
@@ -332,7 +332,7 @@ bool SwDrawModeGrf::PutValue( const uno::Any& rVal,
     sal_Int32 eVal = SWUnoHelper::GetEnumAsInt32( rVal );
     if(eVal >= 0 && eVal <= sal_uInt16(GraphicDrawMode::Watermark))
     {
-        SetEnumValue(static_cast<sal_uInt16>(eVal));
+        SetEnumValue(o3tl::narrowing<sal_uInt16>(eVal));
         return true;
     }
     return false;
diff --git a/sw/source/core/inc/tblrwcl.hxx b/sw/source/core/inc/tblrwcl.hxx
index cc1f0a514769..addc40804f74 100644
--- a/sw/source/core/inc/tblrwcl.hxx
+++ b/sw/source/core/inc/tblrwcl.hxx
@@ -126,7 +126,7 @@ struct SwGCLineBorder
 
     SwGCLineBorder( const SwTableBox& rBox )
         : pLines( &rBox.GetTabLines() ), pShareFormats(nullptr), nLinePos( 0 )  {}
-    bool IsLastLine() const { return nLinePos + 1 >= static_cast<sal_uInt16>(pLines->size()); }
+    bool IsLastLine() const { return nLinePos + 1 >= o3tl::narrowing<sal_uInt16>(pLines->size()); }
 };
 
 class SwGCBorder_BoxBrd
diff --git a/sw/source/core/inc/wrong.hxx b/sw/source/core/inc/wrong.hxx
index dcd8503ef6aa..3d32eae81e2f 100644
--- a/sw/source/core/inc/wrong.hxx
+++ b/sw/source/core/inc/wrong.hxx
@@ -320,7 +320,7 @@ public:
         return nIdx < maList.size() ? maList[nIdx].mnPos : 0;
     }
 
-    sal_uInt16 Count() const { return static_cast<sal_uInt16>(maList.size()); }
+    sal_uInt16 Count() const { return o3tl::narrowing<sal_uInt16>(maList.size()); }
 
     void Insert( const OUString& rType,
                         css::uno::Reference< css::container::XStringKeyMap > const & xPropertyBag,
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index fe29ecfe2faa..dd434fb6d90c 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -1098,7 +1098,7 @@ bool SwFormatCol::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
             const text::TextColumn* pArray = aSetColumns.getConstArray();
             m_aColumns.clear();
             //max count is 64k here - this is something the array can't do
-            sal_uInt16 nCount = std::min( static_cast<sal_uInt16>(aSetColumns.getLength()),
+            sal_uInt16 nCount = std::min( o3tl::narrowing<sal_uInt16>(aSetColumns.getLength()),
                                      sal_uInt16(0x3fff) );
             sal_uInt16 nWidthSum = 0;
             // #101224# one column is no column
@@ -2269,7 +2269,7 @@ bool SwTextGridItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
             sal_Int16 nTmp = 0;
             bRet = (rVal >>= nTmp);
             if( bRet && (nTmp >= 0) )
-                SetLines( static_cast<sal_uInt16>(nTmp) );
+                SetLines( o3tl::narrowing<sal_uInt16>(nTmp) );
             else
                 bRet = false;
         }
@@ -2301,15 +2301,15 @@ bool SwTextGridItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
                 if( (nMemberId & ~CONVERT_TWIPS) == MID_GRID_BASEHEIGHT )
                 {
                     nTmp = std::max<sal_Int32>(nTmp, MIN_TEXTGRID_SIZE);
-                    SetBaseHeight( static_cast<sal_uInt16>(nTmp) );
+                    SetBaseHeight( o3tl::narrowing<sal_uInt16>(nTmp) );
                 }
                 else if( (nMemberId & ~CONVERT_TWIPS) == MID_GRID_BASEWIDTH )
                 {
                     nTmp = std::max<sal_Int32>(nTmp, MIN_TEXTGRID_SIZE);
-                    SetBaseWidth( static_cast<sal_uInt16>(nTmp) );
+                    SetBaseWidth( o3tl::narrowing<sal_uInt16>(nTmp) );
                 }
                 else
-                    SetRubyHeight( static_cast<sal_uInt16>(nTmp) );
+                    SetRubyHeight( o3tl::narrowing<sal_uInt16>(nTmp) );
             }
             else
                 bRet = false;
diff --git a/sw/source/core/layout/dbg_lay.cxx b/sw/source/core/layout/dbg_lay.cxx
index 4f1bc42ecc18..6391f97343d8 100644
--- a/sw/source/core/layout/dbg_lay.cxx
+++ b/sw/source/core/layout/dbg_lay.cxx
@@ -409,7 +409,7 @@ void SwImplProtocol::CheckLine( OString& rLine )
                         }
                         break;
                 case 5:
-                    m_nMaxLines = static_cast<sal_uInt16>(nVal);
+                    m_nMaxLines = o3tl::narrowing<sal_uInt16>(nVal);
                     break;
                 case 6:
                     m_aVars.push_back(nVal);
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index ca8cc3c8ef9b..600125e48b9c 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -3412,10 +3412,10 @@ void SwLayoutFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBord
         }
     }
 
-    const sal_uInt16 nLeft = static_cast<sal_uInt16>(pAttrs->CalcLeft(this));
+    const sal_uInt16 nLeft = o3tl::narrowing<sal_uInt16>(pAttrs->CalcLeft(this));
     const sal_uInt16 nUpper = bHideWhitespace ? 0 : pAttrs->CalcTop();
 
-    const sal_uInt16 nRight = static_cast<sal_uInt16>(pAttrs->CalcRight(this));
+    const sal_uInt16 nRight = o3tl::narrowing<sal_uInt16>(pAttrs->CalcRight(this));
     const sal_uInt16 nLower = bHideWhitespace ? 0 : pAttrs->CalcBottom();
 
     const bool bVert = IsVertical() && !IsPageFrame();
diff --git a/sw/source/core/table/swnewtable.cxx b/sw/source/core/table/swnewtable.cxx
index 85592b9a7458..a2506f59bd7c 100644
--- a/sw/source/core/table/swnewtable.cxx
+++ b/sw/source/core/table/swnewtable.cxx
@@ -1062,7 +1062,7 @@ SwTableBox& SwTableBox::FindEndOfRowSpan( const SwTable& rTable, sal_uInt16 nMax
         return *this;
 
     if( nMaxStep > --nAbsSpan )
-        nMaxStep = static_cast<sal_uInt16>(nAbsSpan);
+        nMaxStep = o3tl::narrowing<sal_uInt16>(nAbsSpan);
     const SwTableLine* pMyUpper = GetUpper();
     sal_uInt16 nLine = rTable.GetTabLines().GetPos( pMyUpper );
     nMaxStep = nLine + nMaxStep;
@@ -1388,7 +1388,7 @@ static sal_uInt16 lcl_LineIndex( const SwTable& rTable, const SwSelBoxes& rBoxes
                     nSpan = 0;
                 else if( nSpan )
                 {
-                    sal_uInt16 nEndOfRowSpan = static_cast<sal_uInt16>(nPos + nRowSpan - 1);
+                    sal_uInt16 nEndOfRowSpan = o3tl::narrowing<sal_uInt16>(nPos + nRowSpan - 1);
                     if( nEndOfRowSpan > nSpan || nSpan == USHRT_MAX )
                         nSpan = nEndOfRowSpan;
                 }
@@ -2101,7 +2101,7 @@ void SwTable::CleanUpBottomRowSpan( sal_uInt16 nDelLines )
         if( nRowSp > 1 )
         {
             lcl_ChangeRowSpan( *this, -static_cast<tools::Long>(nDelLines),
-                               static_cast<sal_uInt16>(nLastLine), false );
+                               o3tl::narrowing<sal_uInt16>(nLastLine), false );
             break;
         }
     }
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index fda4da0b85d9..64632d69e583 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -717,7 +717,7 @@ static void lcl_ProcessBoxSet( SwTableBox *pBox, Parm &rParm )
             SwTableBoxes& rTableBoxes = pBox->GetUpper()->GetTabBoxes();
             if( nPos && rTableBoxes[ nPos - 1 ]->getRowSpan() != 1 )
                 nLeftDiff = 0;
-            if( nPos + 1 < static_cast<sal_uInt16>(rTableBoxes.size()) &&
+            if( nPos + 1 < o3tl::narrowing<sal_uInt16>(rTableBoxes.size()) &&
                 rTableBoxes[ nPos + 1 ]->getRowSpan() != 1 )
                 nRightDiff = 0;
         }
@@ -1177,7 +1177,7 @@ void SwTable::NewSetTabCols( Parm &rParm, const SwTabCols &rNew,
         nOldPos = lcl_MulDiv64<tools::Long>(nOldPos, rParm.nOldWish, nOldWidth);
         if( nOldPos != nNewPos && nNewPos > 0 && nOldPos > 0 )
         {
-            ColChange aChg( static_cast<sal_uInt16>(nOldPos), static_cast<sal_uInt16>(nNewPos) );
+            ColChange aChg( o3tl::narrowing<sal_uInt16>(nOldPos), o3tl::narrowing<sal_uInt16>(nNewPos) );
             aOldNew.push_back( aChg );
         }
     }
@@ -1218,7 +1218,7 @@ void SwTable::NewSetTabCols( Parm &rParm, const SwTabCols &rNew,
             }
             aRowSpanPos.clear();
         }
-        if( nCurr+1 < static_cast<sal_uInt16>(rLines.size()) )
+        if( nCurr+1 < o3tl::narrowing<sal_uInt16>(rLines.size()) )
         {
             ChangeList aCopy;
             sal_uInt16 nPos = 0;
@@ -1236,7 +1236,7 @@ void SwTable::NewSetTabCols( Parm &rParm, const SwTabCols &rNew,
                 lcl_CalcNewWidths( aRowSpanPos, aCopy, rLines[++j],
                     rParm.nOldWish, nOldWidth, false );
                 lcl_AdjustWidthsInLine( rLines[j], aCopy, rParm, 0 );
-                bGoOn = !aRowSpanPos.empty() && j+1 < static_cast<sal_uInt16>(rLines.size());
+                bGoOn = !aRowSpanPos.empty() && j+1 < o3tl::narrowing<sal_uInt16>(rLines.size());
             }
         }
         ::lcl_AdjustWidthsInLine( rLines[nCurr], aOldNew, rParm, COLFUZZY );
@@ -1305,7 +1305,7 @@ sal_uInt16 SwTable::GetBoxNum( OUString& rStr, bool bFirstPart,
             nRet = 0;
             if ( !bPerformValidCheck || lcl_IsValidRowName( rStr ) )
             {
-                nRet = static_cast<sal_uInt16>(rStr.toInt32());
+                nRet = o3tl::narrowing<sal_uInt16>(rStr.toInt32());
             }
             rStr.clear();
         }
@@ -1315,7 +1315,7 @@ sal_uInt16 SwTable::GetBoxNum( OUString& rStr, bool bFirstPart,
             const OUString aText( rStr.copy( 0, nPos ) );
             if ( !bPerformValidCheck || lcl_IsValidRowName( aText ) )
             {
-                nRet = static_cast<sal_uInt16>(aText.toInt32());
+                nRet = o3tl::narrowing<sal_uInt16>(aText.toInt32());
             }
             rStr = rStr.copy( nPos+1 );
         }
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 088f21c00b10..ba2f0ad9333f 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -424,7 +424,7 @@ void SwTaggedPDFHelper::BeginTag( vcl::PDFWriter::StructElement eType, const OUS
     ++m_nEndStructureElement;
 
 #if OSL_DEBUG_LEVEL > 1
-    aStructStack.push_back( static_cast<sal_uInt16>(eType) );
+    aStructStack.push_back( o3tl::narrowing<sal_uInt16>(eType) );
 #endif
 
     // Store the id of the current structure element if
@@ -1117,7 +1117,7 @@ void SwTaggedPDFHelper::BeginBlockStructureElements()
                     int nRealLevel = pTextNd->GetAttrOutlineLevel()-1;
                     nRealLevel = std::min(nRealLevel, 5);
 
-                    nPDFType =  static_cast<sal_uInt16>(vcl::PDFWriter::H1 + nRealLevel);
+                    nPDFType =  o3tl::narrowing<sal_uInt16>(vcl::PDFWriter::H1 + nRealLevel);
                     switch(nRealLevel)
                     {
                         case 0 :
diff --git a/sw/source/core/text/frmcrsr.cxx b/sw/source/core/text/frmcrsr.cxx
index ce29c020fa4a..5f3045f0504b 100644
--- a/sw/source/core/text/frmcrsr.cxx
+++ b/sw/source/core/text/frmcrsr.cxx
@@ -1418,7 +1418,7 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const
         if( nDiff > 0 )
         {
             nDiff /= nDist;
-            rFill.Fill().nParaCnt = static_cast<sal_uInt16>(nDiff + 1);
+            rFill.Fill().nParaCnt = o3tl::narrowing<sal_uInt16>(nDiff + 1);
             rFill.nLineWidth = 0;
             rFill.bInner = false;
             rFill.bEmpty = true;
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 344ccede8962..c399ac758a24 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -426,7 +426,7 @@ void SwTextSizeInfo::GetTextSize( const SwScriptInfo* pSI, const TextFrameIndex
     aDrawInf.SetSnapToGrid( SnapToGrid() );
     aDrawInf.SetKanaComp( nComp );
     SwPosSize aSize( m_pFnt->GetTextSize_( aDrawInf ) );
-    nMaxSizeDiff = static_cast<sal_uInt16>(aDrawInf.GetKanaDiff());
+    nMaxSizeDiff = o3tl::narrowing<sal_uInt16>(aDrawInf.GetKanaDiff());
     nMinSize = aSize.Width();
 }
 
@@ -955,7 +955,7 @@ static void lcl_DrawSpecial( const SwTextPaintInfo& rTextPaintInfo, const SwLine
     Point aTmpPos( nX, nY );
     rNonConstTextPaintInfo.SetPos( aTmpPos );
     sal_uInt16 nOldWidth = rPor.Width();
-    const_cast<SwLinePortion&>(rPor).Width( static_cast<sal_uInt16>(aFontSize.Width()) );
+    const_cast<SwLinePortion&>(rPor).Width( o3tl::narrowing<sal_uInt16>(aFontSize.Width()) );
     rTextPaintInfo.DrawText( aTmp, rPor );
     const_cast<SwLinePortion&>(rPor).Width( nOldWidth );
     rNonConstTextPaintInfo.SetFont( const_cast<SwFont*>(pOldFnt) );
diff --git a/sw/source/core/text/itradj.cxx b/sw/source/core/text/itradj.cxx
index a5944e49e357..8e7514cf9be3 100644
--- a/sw/source/core/text/itradj.cxx
+++ b/sw/source/core/text/itradj.cxx
@@ -488,7 +488,7 @@ SwTwips SwTextAdjuster::CalcKanaAdj( SwLineLayout* pCurrent )
                 else
                     nCompress = 10000 - nCompress;
 
-                ( pCurrent->GetKanaComp() )[ nKanaIdx ] = static_cast<sal_uInt16>(nCompress);
+                ( pCurrent->GetKanaComp() )[ nKanaIdx ] = o3tl::narrowing<sal_uInt16>(nCompress);
                 nKanaDiffSum = 0;
             }
 
@@ -524,7 +524,7 @@ SwTwips SwTextAdjuster::CalcKanaAdj( SwLineLayout* pCurrent )
         }
         else if( pPos->InGlueGrp() && pPos->InFixMargGrp() )
         {
-            pPos->Width( static_cast<sal_uInt16>(pPos->Width() - nDecompress) );
+            pPos->Width( o3tl::narrowing<sal_uInt16>(pPos->Width() - nDecompress) );
 
             if ( pPos->InTabGrp() )
                 // set fix width to width
diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx
index f6e298b2d3e0..9571324f8dbe 100644
--- a/sw/source/core/text/itratr.cxx
+++ b/sw/source/core/text/itratr.cxx
@@ -1432,7 +1432,7 @@ sal_uInt16 SwTextFrame::GetScalingOfSelectedText(
         SwTextIter aLine(this, &aInf);
         aLine.CharToLine( nStart );
         pOut->SetMapMode( aOldMap );
-        return static_cast<sal_uInt16>( nWidth ?
+        return o3tl::narrowing<sal_uInt16>( nWidth ?
             ( ( 100 * aLine.GetCurr()->Height() ) / nWidth ) : 0 );
     }
     // no frame or no paragraph, we take the height of the character
@@ -1442,7 +1442,7 @@ sal_uInt16 SwTextFrame::GetScalingOfSelectedText(
     pOut->SetMapMode( aOldMap );
 
     SwDrawTextInfo aDrawInf(pSh, *pOut, GetText(), sal_Int32(nStart), 1);
-    return static_cast<sal_uInt16>( nWidth ? ((100 * aIter.GetFnt()->GetTextSize_( aDrawInf ).Height()) / nWidth ) : 0 );
+    return o3tl::narrowing<sal_uInt16>( nWidth ? ((100 * aIter.GetFnt()->GetTextSize_( aDrawInf ).Height()) / nWidth ) : 0 );
 }
 
 SwTwips SwTextNode::GetWidthOfLeadingTabs() const
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index b728a6ce98ff..f42a84237643 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -142,7 +142,7 @@ namespace {
                 nListLevel = MAXLEVEL - 1;
 
             const SwNumFormat& rNumFormat =
-                    rTextNode.GetNumRule()->Get( static_cast<sal_uInt16>(nListLevel) );
+                    rTextNode.GetNumRule()->Get( o3tl::narrowing<sal_uInt16>(nListLevel) );
             if ( rNumFormat.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
             {
                 bRet = true;
@@ -1625,7 +1625,7 @@ TextFrameIndex SwTextCursor::GetModelPositionForViewPoint( SwPosition *pPos, con
                     nTmpY = pPor->Height() - nTmpY;
                 if( nTmpY < 0 )
                     nTmpY = 0;
-                nX = static_cast<sal_uInt16>(nTmpY);
+                nX = o3tl::narrowing<sal_uInt16>(nTmpY);
             }
 
             if( static_cast<SwMultiPortion*>(pPor)->HasBrackets() )
diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx
index c61e05ea0ab9..e672eabb3fce 100644
--- a/sw/source/core/text/itrform2.cxx
+++ b/sw/source/core/text/itrform2.cxx
@@ -235,7 +235,7 @@ SwLinePortion *SwTextFormatter::Underflow( SwTextFormatInfo &rInf )
 
     // line width is adjusted, so that pPor does not fit to current
     // line anymore
-    rInf.Width( static_cast<sal_uInt16>(rInf.X() + (pPor->Width() ? pPor->Width() - 1 : 0)) );
+    rInf.Width( o3tl::narrowing<sal_uInt16>(rInf.X() + (pPor->Width() ? pPor->Width() - 1 : 0)) );
     rInf.SetLen( pPor->GetLen() );
     rInf.SetFull( false );
     if( pFly )
@@ -424,7 +424,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf )
         {
             SwFontScript nNxtActual = rInf.GetFont()->GetActual();
             SwFontScript nLstActual = nNxtActual;
-            sal_uInt16 nLstHeight = static_cast<sal_uInt16>(rInf.GetFont()->GetHeight());
+            sal_uInt16 nLstHeight = o3tl::narrowing<sal_uInt16>(rInf.GetFont()->GetHeight());
             bool bAllowBehind = false;
             const CharClass& rCC = GetAppCharClass();
 
@@ -467,7 +467,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf )
                         if ( pTmpFnt )
                         {
                             nLstActual = pTmpFnt->GetActual();
-                            nLstHeight = static_cast<sal_uInt16>(pTmpFnt->GetHeight());
+                            nLstHeight = o3tl::narrowing<sal_uInt16>(pTmpFnt->GetHeight());
                         }
                     }
                 }
@@ -528,7 +528,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf )
                 const SwTwips nRestWidth = rInf.Width() - rInf.X();
 
                 if ( nKernWidth <= nRestWidth )
-                    pGridKernPortion->Width( static_cast<sal_uInt16>(nKernWidth) );
+                    pGridKernPortion->Width( o3tl::narrowing<sal_uInt16>(nKernWidth) );
             }
 
             if ( pGridKernPortion != pPor )
@@ -615,7 +615,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf )
                     (m_pScriptInfo->ScriptType(nTmp - TextFrameIndex(1)) == css::i18n::ScriptType::ASIAN ||
                      m_pScriptInfo->ScriptType(nTmp) == css::i18n::ScriptType::ASIAN) )
                 {
-                    const sal_uInt16 nDist = static_cast<sal_uInt16>(rInf.GetFont()->GetHeight()/5);
+                    const sal_uInt16 nDist = o3tl::narrowing<sal_uInt16>(rInf.GetFont()->GetHeight()/5);
 
                     if( nDist )
                     {
@@ -670,7 +670,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf )
                                  0;
                 const SwTwips nTmpWidth = i * nGridWidth;
                 const SwTwips nKernWidth = std::min(nTmpWidth - nSumWidth, nRestWidth);
-                const sal_uInt16 nKernWidth_1 = static_cast<sal_uInt16>(nKernWidth / 2);

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list