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

Reply via email to