diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-11-09 09:22:43 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-11-09 08:43:03 +0100 |
commit | d55b2631342bc7babf3709f2f83e0e502ebe4014 (patch) | |
tree | e2d895411ab0409fa7a481652e0f0c7a24983cad /svtools | |
parent | b3c6b3a274b4c89d3572010794897c65b26571aa (diff) |
tdf#145158: pre-multiply the value by factor before conversion
Otherwise it is rounded before multiplying. Prior to the regressing
commit cfff893b9c82843a90aac4ecdb3a3936721b74a0, it was calculating
in twips, and was only converted to points by dividing by 20 in the
end, which allowed to keep some precision.
Change-Id: I142371dc630584f3fe64b5bfd5b592d46226ce32
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124895
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/misc/unitconv.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/svtools/source/misc/unitconv.cxx b/svtools/source/misc/unitconv.cxx index bdff583182b5..5e316c5adf46 100644 --- a/svtools/source/misc/unitconv.cxx +++ b/svtools/source/misc/unitconv.cxx @@ -186,8 +186,8 @@ tools::Long CalcToPoint( tools::Long nIn, MapUnit eUnit, sal_uInt16 nFactor ) eUnit == MapUnit::MapMM || eUnit == MapUnit::MapCM, "this unit is not implemented" ); - if (const auto eTo = MapToO3tlLength(eUnit); eTo != o3tl::Length::invalid) - return o3tl::convert(nIn, eTo, o3tl::Length::pt) * nFactor; + if (const auto eFrom = MapToO3tlLength(eUnit); eFrom != o3tl::Length::invalid) + return o3tl::convert(nIn * static_cast<sal_Int64>(nFactor), eFrom, o3tl::Length::pt); return 0; } |