starmath/inc/view.hxx | 4 ++-- starmath/source/document.cxx | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-)
New commits: commit 9278577e8f3a3d8a65a3a02c2d4c59b5fa4c26ec Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Sun Oct 29 14:59:47 2023 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Sun Oct 29 20:25:53 2023 +0100 Drop some intermediate conversions to pixel Should improve independence of results from resolution. Some output devices are not even pixel-based (e.g., PDF output). Change-Id: Id4359bfa0d7ba76ac4e4694c3ae4f042a780cd53 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158620 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx index 29dd3f2ef411..59b23522ffa5 100644 --- a/starmath/source/document.cxx +++ b/starmath/source/document.cxx @@ -1544,11 +1544,9 @@ void SmDocShell::Impl_Print(OutputDevice& rOutDev, const SmPrintUIOptions& rPrin case PRINT_SIZE_SCALED: if (!aSize.IsEmpty()) { - Size OutputSize(rOutDev.LogicToPixel(aOutRect.GetSize(), MapMode(SmMapUnit()))); - Size GraphicSize(rOutDev.LogicToPixel(aSize, MapMode(SmMapUnit()))); sal_uInt16 nZ - = std::min(o3tl::convert(OutputSize.Width(), 100, GraphicSize.Width()), - o3tl::convert(OutputSize.Height(), 100, GraphicSize.Height())); + = std::min(o3tl::convert(aOutRect.GetWidth(), 100, aSize.Width()), + o3tl::convert(aOutRect.GetHeight(), 100, aSize.Height())); if (nZ > MINZOOM) nZ -= 10; Fraction aFraction(std::clamp(nZ, MINZOOM, MAXZOOM), 100); @@ -1568,14 +1566,13 @@ void SmDocShell::Impl_Print(OutputDevice& rOutDev, const SmPrintUIOptions& rPrin } } - aSize = rOutDev.PixelToLogic(rOutDev.LogicToPixel(aSize, OutputMapMode), MapMode(SmMapUnit())); + aSize = OutputDevice::LogicToLogic(aSize, OutputMapMode, MapMode(SmMapUnit())); Point aPos(aOutRect.Left() + (aOutRect.GetWidth() - aSize.Width()) / 2, aOutRect.Top() + (aOutRect.GetHeight() - aSize.Height()) / 2); - aPos = rOutDev.PixelToLogic(rOutDev.LogicToPixel(aPos, MapMode(SmMapUnit())), OutputMapMode); - aOutRect - = rOutDev.PixelToLogic(rOutDev.LogicToPixel(aOutRect, MapMode(SmMapUnit())), OutputMapMode); + aPos = OutputDevice::LogicToLogic(aPos, MapMode(SmMapUnit()), OutputMapMode); + aOutRect = OutputDevice::LogicToLogic(aOutRect, MapMode(SmMapUnit()), OutputMapMode); rOutDev.SetMapMode(OutputMapMode); rOutDev.SetClipRegion(vcl::Region(aOutRect)); commit 7605de7303f57c1320d96d5ff833f492d002cfb7 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Sun Oct 29 16:45:53 2023 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Sun Oct 29 20:25:39 2023 +0100 Subtraction could wrap Change-Id: Ifc248835a70ee593e47d50bb0e1bf9165eb06391 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158623 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx index 8b17744d6171..03f67fdbed40 100644 --- a/starmath/inc/view.hxx +++ b/starmath/inc/view.hxx @@ -37,8 +37,8 @@ class SmPrintUIOptions; class SmGraphicAccessible; class SmGraphicWidget; -#define MINZOOM sal_uInt16(25) -#define MAXZOOM sal_uInt16(800) +constexpr sal_uInt16 MINZOOM = 25; +constexpr sal_uInt16 MAXZOOM = 800; class SmGraphicWindow final : public InterimItemWindow { diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx index 715525c94307..29dd3f2ef411 100644 --- a/starmath/source/document.cxx +++ b/starmath/source/document.cxx @@ -1549,7 +1549,8 @@ void SmDocShell::Impl_Print(OutputDevice& rOutDev, const SmPrintUIOptions& rPrin sal_uInt16 nZ = std::min(o3tl::convert(OutputSize.Width(), 100, GraphicSize.Width()), o3tl::convert(OutputSize.Height(), 100, GraphicSize.Height())); - nZ -= 10; + if (nZ > MINZOOM) + nZ -= 10; Fraction aFraction(std::clamp(nZ, MINZOOM, MAXZOOM), 100); OutputMapMode = MapMode(SmMapUnit(), Point(), aFraction, aFraction);