summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2021-02-21 11:10:22 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2021-02-21 10:02:46 +0100
commitcdc67f6da362cea008a780abe412403eae64d04c (patch)
tree63e69c85ebeaf4340b800b58d97ec5338137a19a /sc
parenteb807e785b6acda1529b2f58ada2c1e84b38f7f5 (diff)
Some more unit conversion unification
Change-Id: I1a906d918bb4255a75c62c68a57244f59d51d2b1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111269 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/column2.cxx17
-rw-r--r--sc/source/core/data/documen9.cxx5
-rw-r--r--sc/source/core/data/global.cxx5
-rw-r--r--sc/source/core/data/stlsheet.cxx7
-rw-r--r--sc/source/core/data/table1.cxx5
-rw-r--r--sc/source/core/data/table2.cxx13
-rw-r--r--sc/source/core/tool/detfunc.cxx5
-rw-r--r--sc/source/filter/excel/xechart.cxx4
-rw-r--r--sc/source/filter/excel/xeescher.cxx10
-rw-r--r--sc/source/filter/excel/xichart.cxx5
-rw-r--r--sc/source/filter/excel/xlescher.cxx28
-rw-r--r--sc/source/filter/excel/xlpage.cxx7
-rw-r--r--sc/source/filter/excel/xlstyle.cxx5
-rw-r--r--sc/source/filter/excel/xltools.cxx16
-rw-r--r--sc/source/filter/html/htmlexp.cxx3
-rw-r--r--sc/source/filter/inc/xlconst.hxx5
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx5
17 files changed, 71 insertions, 74 deletions
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index d194ab134dd1..e6430758cc6f 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -44,6 +44,7 @@
#include <editeng/eeitem.hxx>
#include <o3tl/safeint.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <svx/algitem.hxx>
#include <editeng/editobj.hxx>
#include <editeng/editstat.hxx>
@@ -420,7 +421,7 @@ tools::Long ScColumn::GetNeededSize(
// to ensure the exact same paper width (and same line breaks) as in
// ScEditUtil::GetEditArea, used for output.
- fWidthFactor = HMM_PER_TWIPS;
+ fWidthFactor = o3tl::convert(1.0, o3tl::Length::twip, o3tl::Length::mm100);
}
// use original width for hidden columns:
@@ -438,8 +439,9 @@ tools::Long ScColumn::GetNeededSize(
// space for AutoFilter button: 20 * nZoom/100
constexpr tools::Long nFilterButtonWidthPix = 20; // Autofilter pixel width at 100% zoom.
if ( pFlag->HasAutoFilter() && !bTextWysiwyg )
- nDocWidth -= bInPrintTwips ?
- (nFilterButtonWidthPix * TWIPS_PER_PIXEL) : tools::Long(rZoomX * nFilterButtonWidthPix);
+ nDocWidth -= bInPrintTwips ? o3tl::convert(nFilterButtonWidthPix, o3tl::Length::px,
+ o3tl::Length::twip)
+ : tools::Long(rZoomX * nFilterButtonWidthPix);
aPaper.setWidth( nDocWidth );
@@ -572,7 +574,9 @@ tools::Long ScColumn::GetNeededSize(
{
// add 1pt extra (default margin value) for line breaks with SetVertical
constexpr tools::Long nDefaultMarginInPoints = 1;
- nValue += conditionalScaleFunc(nDefaultMarginInPoints * TWIPS_PER_POINT, nPPT);
+ nValue += conditionalScaleFunc(
+ o3tl::convert(nDefaultMarginInPoints, o3tl::Length::pt, o3tl::Length::twip),
+ nPPT);
}
}
}
@@ -594,8 +598,9 @@ tools::Long ScColumn::GetNeededSize(
constexpr tools::Long nFilterButtonWidthPix = 20; // Autofilter pixel width at 100% zoom.
ScMF nFlags = pPattern->GetItem(ATTR_MERGE_FLAG).GetValue();
if (nFlags & ScMF::Auto)
- nValue += bInPrintTwips ?
- (nFilterButtonWidthPix * TWIPS_PER_PIXEL) : tools::Long(rZoomX * nFilterButtonWidthPix);
+ nValue += bInPrintTwips ? o3tl::convert(nFilterButtonWidthPix, o3tl::Length::px,
+ o3tl::Length::twip)
+ : tools::Long(rZoomX * nFilterButtonWidthPix);
}
return nValue;
diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx
index f44159d6c436..ff5eb488f858 100644
--- a/sc/source/core/data/documen9.cxx
+++ b/sc/source/core/data/documen9.cxx
@@ -23,6 +23,7 @@
#include <editeng/autokernitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/langitem.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <osl/thread.h>
#include <svl/asiancfg.hxx>
#include <svx/svditer.hxx>
@@ -456,8 +457,8 @@ bool ScDocument::IsPrintEmpty( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
for (i=nStartCol; i<=nEndCol; i++)
nRight += GetColWidth(i,nTab);
- aMMRect.SetLeft( static_cast<tools::Long>(nLeft * HMM_PER_TWIPS) );
- aMMRect.SetRight( static_cast<tools::Long>(nRight * HMM_PER_TWIPS) );
+ aMMRect.SetLeft(o3tl::convert(nLeft, o3tl::Length::twip, o3tl::Length::mm100));
+ aMMRect.SetRight(o3tl::convert(nRight, o3tl::Length::twip, o3tl::Length::mm100));
}
else
aMMRect = GetMMRect( nStartCol, nStartRow, nEndCol, nEndRow, nTab );
diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx
index 458e81da5188..e47303bf7cab 100644
--- a/sc/source/core/data/global.cxx
+++ b/sc/source/core/data/global.cxx
@@ -23,6 +23,7 @@
#include <editeng/editobj.hxx>
#include <svl/srchitem.hxx>
#include <editeng/langitem.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/objsh.hxx>
@@ -461,8 +462,8 @@ void ScGlobal::InitPPT()
if (comphelper::LibreOfficeKit::isActive())
{
// LOK: the below limited precision is not enough for RowColumnHeader.
- nScreenPPTX = double(pDev->GetDPIX()) / double(TWIPS_PER_INCH);
- nScreenPPTY = double(pDev->GetDPIY()) / double(TWIPS_PER_INCH);
+ nScreenPPTX = o3tl::convert<double>(pDev->GetDPIX(), o3tl::Length::twip, o3tl::Length::in);
+ nScreenPPTY = o3tl::convert<double>(pDev->GetDPIY(), o3tl::Length::twip, o3tl::Length::in);
}
else
{
diff --git a/sc/source/core/data/stlsheet.cxx b/sc/source/core/data/stlsheet.cxx
index 13acfa8e9e56..20f4399dd98b 100644
--- a/sc/source/core/data/stlsheet.cxx
+++ b/sc/source/core/data/stlsheet.cxx
@@ -34,14 +34,15 @@
#include <svl/itempool.hxx>
#include <svl/itemset.hxx>
#include <svl/hint.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <attrib.hxx>
#include <globstr.hrc>
#include <scresid.hxx>
#include <sc.hrc>
-#define TWO_CM 1134
-#define HFDIST_CM 142
+constexpr auto TWO_CM = o3tl::convert(2, o3tl::Length::cm, o3tl::Length::twip); // 1134
+constexpr auto HFDIST_CM = o3tl::convert(250, o3tl::Length::mm100, o3tl::Length::twip); // 142
ScStyleSheet::ScStyleSheet( const OUString& rName,
const ScStyleSheetPool& rPoolP,
@@ -163,7 +164,7 @@ SfxItemSet& ScStyleSheet::GetItemSet()
SfxItemSet& rHFSet = aHFSetItem.GetItemSet();
SvxSizeItem aHFSizeItem( // 0,5 cm + distance
ATTR_PAGE_SIZE,
- Size( 0, tools::Long( 500 / HMM_PER_TWIPS ) + HFDIST_CM ) );
+ Size( 0, o3tl::convert(500, o3tl::Length::mm100, o3tl::Length::twip) + HFDIST_CM ) );
SvxULSpaceItem aHFDistItem ( HFDIST_CM,// nUp
HFDIST_CM,// nLow
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index af09507b5c20..459f804984ed 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -20,6 +20,7 @@
#include <scitems.hxx>
#include <editeng/justifyitem.hxx>
#include <o3tl/safeint.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <unotools/textsearch.hxx>
#include <unotools/charclass.hxx>
@@ -302,8 +303,8 @@ ScTable::ScTable( ScDocument& rDoc, SCTAB nNewTab, const OUString& rNewName,
if ( pDrawLayer->ScAddPage( nTab ) ) // sal_False (not inserted) during Undo
{
pDrawLayer->ScRenamePage( nTab, aName );
- sal_uLong const nx = sal_uLong(double(rDocument.MaxCol()+1) * STD_COL_WIDTH * HMM_PER_TWIPS );
- sal_uLong ny = static_cast<sal_uLong>(double(rDocument.MaxRow()+1) * ScGlobal::nStdRowHeight * HMM_PER_TWIPS );
+ sal_uLong const nx = o3tl::convert((rDocument.MaxCol()+1) * STD_COL_WIDTH, o3tl::Length::twip, o3tl::Length::mm100);
+ sal_uLong ny = o3tl::convert((rDocument.MaxRow()+1) * ScGlobal::nStdRowHeight, o3tl::Length::twip, o3tl::Length::mm10);
pDrawLayer->SetPageSize( static_cast<sal_uInt16>(nTab), Size( nx, ny ), false );
}
}
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index d25e7ce7c7f4..833b4edd13f7 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -58,6 +58,7 @@
#include <editeng/boxitem.hxx>
#include <editeng/editobj.hxx>
#include <o3tl/safeint.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <svl/poolcach.hxx>
#include <unotools/charclass.hxx>
#include <math.h>
@@ -3916,13 +3917,15 @@ void ScTable::SetDrawPageSize(bool bResetStreamValid, bool bUpdateNoteCaptionPos
ScDrawLayer* pDrawLayer = rDocument.GetDrawLayer();
if( pDrawLayer )
{
- double fValX = GetColOffset( rDocument.MaxCol() + 1 ) * HMM_PER_TWIPS;
- double fValY = GetRowOffset( rDocument.MaxRow() + 1 ) * HMM_PER_TWIPS;
- const tools::Long nMax = ::std::numeric_limits<tools::Long>::max();
+ const sal_Int64 nMax = ::std::numeric_limits<tools::Long>::max();
// #i113884# Avoid int32 overflow with possible negative results than can cause bad effects.
// If the draw page size is smaller than all rows, only the bottom of the sheet is affected.
- tools::Long x = ( fValX > static_cast<double>(nMax) ) ? nMax : static_cast<tools::Long>(fValX);
- tools::Long y = ( fValY > static_cast<double>(nMax) ) ? nMax : static_cast<tools::Long>(fValY);
+ tools::Long x = std::min(o3tl::convert(GetColOffset(rDocument.MaxCol() + 1),
+ o3tl::Length::twip, o3tl::Length::mm100),
+ nMax);
+ tools::Long y = std::min(o3tl::convert(GetRowOffset(rDocument.MaxRow() + 1),
+ o3tl::Length::twip, o3tl::Length::mm100),
+ nMax);
if ( IsLayoutRTL() ) // IsNegativePage
x = -x;
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx
index f2d8f8254d20..2b525e8c0891 100644
--- a/sc/source/core/tool/detfunc.cxx
+++ b/sc/source/core/tool/detfunc.cxx
@@ -21,6 +21,7 @@
#include <svtools/colorcfg.hxx>
#include <editeng/eeitem.hxx>
#include <formula/errorcodes.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <svx/sdshitm.hxx>
#include <svx/sdsxyitm.hxx>
#include <svx/sdtditm.hxx>
@@ -328,8 +329,8 @@ Point ScDetectiveFunc::GetDrawPos( SCCOL nCol, SCROW nRow, DrawPosMode eMode ) c
aPos.AdjustX(rDoc.GetColWidth( i, nTab ) );
aPos.AdjustY(rDoc.GetRowHeight( 0, nRow - 1, nTab ) );
- aPos.setX( static_cast< tools::Long >( aPos.X() * HMM_PER_TWIPS ) );
- aPos.setY( static_cast< tools::Long >( aPos.Y() * HMM_PER_TWIPS ) );
+ aPos.setX(o3tl::convert(aPos.X(), o3tl::Length::twip, o3tl::Length::mm100));
+ aPos.setY(o3tl::convert(aPos.Y(), o3tl::Length::twip, o3tl::Length::mm100));
if ( rDoc.IsNegativePage( nTab ) )
aPos.setX( aPos.X() * -1 );
diff --git a/sc/source/filter/excel/xechart.cxx b/sc/source/filter/excel/xechart.cxx
index 0b1f109f665c..ad829a913f31 100644
--- a/sc/source/filter/excel/xechart.cxx
+++ b/sc/source/filter/excel/xechart.cxx
@@ -2302,8 +2302,8 @@ void XclExpChLegend::Convert( const ScfPropertySet& rPropSet )
// legend size, Excel expects points in CHFRAMEPOS record
rFramePos.mnBRMode = EXC_CHFRAMEPOS_ABSSIZE_POINTS;
css::awt::Size aLegendSize = xChart1Legend->getSize();
- rFramePos.maRect.mnWidth = static_cast< sal_uInt16 >( aLegendSize.Width * EXC_POINTS_PER_HMM + 0.5 );
- rFramePos.maRect.mnHeight = static_cast< sal_uInt16 >( aLegendSize.Height * EXC_POINTS_PER_HMM + 0.5 );
+ rFramePos.maRect.mnWidth = o3tl::convert(aLegendSize.Width, o3tl::Length::mm100, o3tl::Length::pt);
+ rFramePos.maRect.mnHeight = o3tl::convert(aLegendSize.Height, o3tl::Length::mm100, o3tl::Length::pt);
maData.maRect.mnWidth = CalcChartXFromHmm( aLegendSize.Width );
maData.maRect.mnHeight = CalcChartYFromHmm( aLegendSize.Height );
eApiExpand = cssc::ChartLegendExpansion_CUSTOM;
diff --git a/sc/source/filter/excel/xeescher.cxx b/sc/source/filter/excel/xeescher.cxx
index 68cf336c88a8..eea83fbeaf70 100644
--- a/sc/source/filter/excel/xeescher.cxx
+++ b/sc/source/filter/excel/xeescher.cxx
@@ -94,11 +94,6 @@ using namespace oox;
namespace
{
-tools::Long lcl_hmm2px(tools::Long nPixel)
-{
- return static_cast<tools::Long>(nPixel*PIXEL_PER_INCH/1000.0/CM_PER_INCH + 0.5);
-}
-
const char *ToHorizAlign( SdrTextHorzAdjust eAdjust )
{
switch( eAdjust )
@@ -149,10 +144,7 @@ void lcl_WriteAnchorVertex( sax_fastparser::FSHelperPtr const & rComments, const
tools::Long lcl_hmm2output(tools::Long value, bool bInEMU)
{
- if (bInEMU)
- return oox::drawingml::convertHmmToEmu(value);
- else
- return lcl_hmm2px(value);
+ return o3tl::convert(value, o3tl::Length::mm100, bInEMU ? o3tl::Length::emu : o3tl::Length::px);
}
void lcl_GetFromTo( const XclExpRoot& rRoot, const tools::Rectangle &aRect, sal_Int32 nTab, tools::Rectangle &aFrom, tools::Rectangle &aTo, bool bInEMU = false )
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 55c13e592cd4..befd63b3414c 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -76,6 +76,7 @@
#include <com/sun/star/chart2/data/LabeledDataSequence.hpp>
#include <comphelper/processfactory.hxx>
#include <o3tl/numeric.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <sfx2/objsh.hxx>
#include <svx/svdpage.hxx>
#include <svx/unoapi.hxx>
@@ -2625,8 +2626,8 @@ Reference< XLegend > XclImpChLegend::CreateLegend() const
(pFramePos->maRect.mnWidth > 0) && (pFramePos->maRect.mnHeight > 0) )
{
eApiExpand = cssc::ChartLegendExpansion_CUSTOM;
- sal_Int32 nWidthHmm = static_cast< sal_Int32 >( pFramePos->maRect.mnWidth / EXC_POINTS_PER_HMM );
- sal_Int32 nHeightHmm = static_cast< sal_Int32 >( pFramePos->maRect.mnHeight / EXC_POINTS_PER_HMM );
+ sal_Int32 nWidthHmm = o3tl::convert(pFramePos->maRect.mnWidth, o3tl::Length::pt, o3tl::Length::mm100);
+ sal_Int32 nHeightHmm = o3tl::convert(pFramePos->maRect.mnHeight, o3tl::Length::pt, o3tl::Length::mm100);
RelativeSize aRelSize( CalcRelativeFromHmmX( nWidthHmm ), CalcRelativeFromHmmY( nHeightHmm ) );
aLegendProp.SetProperty( EXC_CHPROP_RELATIVESIZE, aRelSize );
}
diff --git a/sc/source/filter/excel/xlescher.cxx b/sc/source/filter/excel/xlescher.cxx
index bb59b851a9a8..8ae663cdda7c 100644
--- a/sc/source/filter/excel/xlescher.cxx
+++ b/sc/source/filter/excel/xlescher.cxx
@@ -25,6 +25,7 @@
#include <com/sun/star/drawing/XControlShape.hpp>
#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#include <tools/UnitConversion.hxx>
#include <document.hxx>
#include <xistream.hxx>
#include <xlroot.hxx>
@@ -42,20 +43,11 @@ namespace {
/** Returns the scaling factor to calculate coordinates from twips. */
double lclGetTwipsScale( MapUnit eMapUnit )
{
- /* We cannot use OutputDevice::LogicToLogic() or the XclTools
- conversion functions to calculate drawing layer coordinates due to
- Calc's strange definition of a point (1 inch == 72.27 points, instead
- of 72 points).
- NOTE: Calc's definition changed from TeX points (72.27) to PS points
- (72), so the MapUnit::MapTwip case now actually also delivers a scale of 1.0
- */
double fScale = 1.0;
- switch( eMapUnit )
- {
- case MapUnit::MapTwip: fScale = 1; break; // Calc twips <-> real twips
- case MapUnit::Map100thMM: fScale = HMM_PER_TWIPS; break; // Calc twips <-> 1/100mm
- default: OSL_FAIL( "lclGetTwipsScale - map unit not implemented" );
- }
+ if (const auto eTo = MapToO3tlLength(eMapUnit); eTo != o3tl::Length::invalid)
+ fScale = o3tl::convert(1.0, o3tl::Length::twip, eTo);
+ else
+ OSL_FAIL("lclGetTwipsScale - map unit not implemented");
return fScale;
}
@@ -183,12 +175,10 @@ void XclObjAnchor::SetRect( const Size& rPageSize, sal_Int32 nScaleX, sal_Int32
const tools::Rectangle& rRect, MapUnit eMapUnit )
{
double fScale = 1.0;
- switch( eMapUnit )
- {
- case MapUnit::MapTwip: fScale = HMM_PER_TWIPS; break; // Calc twips -> 1/100mm
- case MapUnit::Map100thMM: fScale = 1.0; break; // Calc 1/100mm -> 1/100mm
- default: OSL_FAIL( "XclObjAnchor::SetRect - map unit not implemented" );
- }
+ if (const auto eFrom = MapToO3tlLength(eMapUnit); eFrom != o3tl::Length::invalid)
+ fScale = o3tl::convert(1.0, eFrom, o3tl::Length::mm100);
+ else
+ OSL_FAIL("XclObjAnchor::SetRect - map unit not implemented");
/* In objects with DFF client anchor, the position of the shape is stored
in the cell address components of the client anchor. In old BIFF3-BIFF5
diff --git a/sc/source/filter/excel/xlpage.cxx b/sc/source/filter/excel/xlpage.cxx
index 6186266fafb0..ef1742dd51e3 100644
--- a/sc/source/filter/excel/xlpage.cxx
+++ b/sc/source/filter/excel/xlpage.cxx
@@ -20,6 +20,7 @@
#include <xlpage.hxx>
#include <xltools.hxx>
#include <editeng/paperinf.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <sal/macros.h>
#include <editeng/brushitem.hxx>
#include <global.hxx>
@@ -36,15 +37,15 @@ struct XclPaperSize
constexpr tools::Long in2twips(double n_inch)
{
- return static_cast<tools::Long>( (n_inch * EXC_TWIPS_PER_INCH) + 0.5);
+ return o3tl::convert(n_inch, o3tl::Length::in, o3tl::Length::twip) + 0.5;
}
constexpr tools::Long mm2twips(double n_mm)
{
- return static_cast<tools::Long>( (n_mm * EXC_TWIPS_PER_INCH / CM_PER_INCH / 10.0) + 0.5);
+ return o3tl::convert(n_mm, o3tl::Length::mm, o3tl::Length::twip) + 0.5;
}
constexpr tools::Long twips2mm(tools::Long n_twips)
{
- return static_cast<tools::Long>((static_cast<double>(n_twips) - 0.5) / EXC_TWIPS_PER_INCH * CM_PER_INCH * 10.0);
+ return o3tl::convert(n_twips, o3tl::Length::twip, o3tl::Length::mm);
}
// see ApiPaperSize spPaperSizeTable in filter and aDinTab in i18nutil
diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx
index 0cc23ed90bfb..84d146c922fb 100644
--- a/sc/source/filter/excel/xlstyle.cxx
+++ b/sc/source/filter/excel/xlstyle.cxx
@@ -32,6 +32,7 @@
#include <svtools/colorcfg.hxx>
#include <vcl/unohelp.hxx>
#include <editeng/svxfont.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <global.hxx>
#include <xlroot.hxx>
#include <xltools.hxx>
@@ -389,7 +390,7 @@ void XclFontData::SetScStrikeout( FontStrikeout eScStrikeout )
float XclFontData::GetApiHeight() const
{
- return static_cast< float >( mnHeight / TWIPS_PER_POINT );
+ return o3tl::convert<double>(mnHeight, o3tl::Length::twip, o3tl::Length::pt);
}
sal_Int16 XclFontData::GetApiFamily() const
@@ -454,7 +455,7 @@ sal_Int16 XclFontData::GetApiStrikeout() const
void XclFontData::SetApiHeight( float fPoint )
{
- mnHeight = static_cast< sal_uInt16 >( ::std::min( fPoint * TWIPS_PER_POINT + 0.5, 32767.0 ) );
+ mnHeight = std::min(o3tl::convert(fPoint, o3tl::Length::pt, o3tl::Length::twip) + 0.5, 32767.0);
}
void XclFontData::SetApiFamily( sal_Int16 nApiFamily )
diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx
index e4ffbebce44b..82c5c0449b25 100644
--- a/sc/source/filter/excel/xltools.cxx
+++ b/sc/source/filter/excel/xltools.cxx
@@ -21,6 +21,7 @@
#include <math.h>
#include <string_view>
+#include <o3tl/unit_conversion.hxx>
#include <sal/mathconf.h>
#include <sal/macros.h>
#include <sal/log.hxx>
@@ -271,35 +272,36 @@ XclBoolError XclTools::ErrorToEnum( double& rfDblValue, bool bErrOrBool, sal_uIn
return eType;
}
+template <typename N> static N to(double f) { return limit_cast<N>(f + 0.5); }
+
sal_uInt16 XclTools::GetTwipsFromInch( double fInches )
{
- return static_cast< sal_uInt16 >(
- ::std::clamp( fInches * EXC_TWIPS_PER_INCH + 0.5, 0.0, 65535.0 ) );
+ return to<sal_uInt16>(o3tl::convert(fInches, o3tl::Length::in, o3tl::Length::twip));
}
sal_uInt16 XclTools::GetTwipsFromHmm( sal_Int32 nHmm )
{
- return GetTwipsFromInch( static_cast< double >( nHmm ) / 1000.0 / CM_PER_INCH );
+ return limit_cast<sal_uInt16>(o3tl::convert(nHmm, o3tl::Length::mm100, o3tl::Length::twip));
}
double XclTools::GetInchFromTwips( sal_Int32 nTwips )
{
- return static_cast< double >( nTwips ) / EXC_TWIPS_PER_INCH;
+ return o3tl::convert<double>(nTwips, o3tl::Length::twip, o3tl::Length::in);
}
double XclTools::GetInchFromHmm( sal_Int32 nHmm )
{
- return GetInchFromTwips( GetTwipsFromHmm( nHmm ) );
+ return o3tl::convert<double>(nHmm, o3tl::Length::mm100, o3tl::Length::in);
}
sal_Int32 XclTools::GetHmmFromInch( double fInches )
{
- return static_cast< sal_Int32 >( fInches * CM_PER_INCH * 1000 );
+ return to<sal_Int32>(o3tl::convert(fInches, o3tl::Length::in, o3tl::Length::mm100));
}
sal_Int32 XclTools::GetHmmFromTwips( sal_Int32 nTwips )
{
- return GetHmmFromInch( GetInchFromTwips( nTwips ) );
+ return limit_cast<sal_Int32>(o3tl::convert(nTwips, o3tl::Length::twip, o3tl::Length::mm100));
}
sal_uInt16 XclTools::GetScColumnWidth( sal_uInt16 nXclWidth, tools::Long nScCharWidth )
diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx
index b0402ada933a..5d527f6ca167 100644
--- a/sc/source/filter/html/htmlexp.cxx
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -48,6 +48,7 @@
#include <vcl/outdev.hxx>
#include <stdio.h>
#include <osl/diagnose.h>
+#include <o3tl/unit_conversion.hxx>
#include <htmlexp.hxx>
#include <global.hxx>
@@ -494,7 +495,7 @@ OString ScHTMLExport::BorderToStyle(const char* pBorderName,
// thickness
int nWidth = pLine->GetWidth();
int nPxWidth = (nWidth > 0) ?
- std::max(int(nWidth / TWIPS_PER_PIXEL), 1) : 0;
+ std::max(o3tl::convert(nWidth, o3tl::Length::twip, o3tl::Length::px), sal_Int64(1)) : 0;
aOut.append(static_cast<sal_Int32>(nPxWidth)).
append("px ");
switch (pLine->GetBorderLineStyle())
diff --git a/sc/source/filter/inc/xlconst.hxx b/sc/source/filter/inc/xlconst.hxx
index 5a1c0dea585f..2338cf15417f 100644
--- a/sc/source/filter/inc/xlconst.hxx
+++ b/sc/source/filter/inc/xlconst.hxx
@@ -131,11 +131,6 @@ const sal_Int32 EXC_RK_INT100 = EXC_RK_100FLAG | EXC_RK_INTFLAG;
// Measures -------------------------------------------------------------------
-const sal_Int32 EXC_POINTS_PER_INCH = 72;
-const sal_Int32 EXC_TWIPS_PER_INCH = EXC_POINTS_PER_INCH * 20;
-
-const double EXC_POINTS_PER_HMM = static_cast< double >( EXC_POINTS_PER_INCH ) / 2540.0;
-
const sal_uInt8 EXC_ORIENT_NONE = 0; /// Text orientation: not rotated.
const sal_uInt8 EXC_ORIENT_STACKED = 1; /// Text orientation: vertically stacked.
const sal_uInt8 EXC_ORIENT_90CCW = 2; /// Text orientation: 90 deg counterclockwise.
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index be0ecc4dd829..db15c1560e10 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -24,6 +24,7 @@
#include <editeng/editobj.hxx>
#include <editeng/escapementitem.hxx>
#include <editeng/langitem.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <svx/svdograf.hxx>
#include <svx/svdpage.hxx>
#include <svtools/htmlcfg.hxx>
@@ -556,8 +557,8 @@ void ScEEImport::InsertGraphic( SCCOL nCol, SCROW nRow, SCTAB nTab,
OutputDevice* pDefaultDev = Application::GetDefaultDevice();
Point aCellInsertPos(
- static_cast<tools::Long>(static_cast<double>(mpDoc->GetColOffset( nCol, nTab )) * HMM_PER_TWIPS),
- static_cast<tools::Long>(static_cast<double>(mpDoc->GetRowOffset( nRow, nTab )) * HMM_PER_TWIPS) );
+ o3tl::convert(mpDoc->GetColOffset(nCol, nTab), o3tl::Length::twip, o3tl::Length::mm100),
+ o3tl::convert(mpDoc->GetRowOffset(nRow, nTab), o3tl::Length::twip, o3tl::Length::mm100));
Point aInsertPos( aCellInsertPos );
Point aSpace;