From 4b553e8fce75afd0ad0df2e752edafe739db44dc Mon Sep 17 00:00:00 2001 From: Neil Date: Fri, 19 Mar 2021 14:46:09 +1100 Subject: Add Surface::PixelDivisions which detects 'retina' displays that use multiple display pixels per logical pixel. Likely will only return >1 for Apple displays. Can be used for finer placement of elements. --- win32/PlatWin.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'win32') diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index 452bb49bc..014c09793 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -482,6 +482,7 @@ public: bool Initialised() override; void PenColour(ColourDesired fore) override; int LogPixelsY() override; + int PixelDivisions() override; int DeviceHeightFont(int points) override; void MoveTo(int x_, int y_) override; void LineTo(int x_, int y_) override; @@ -637,6 +638,11 @@ int SurfaceGDI::LogPixelsY() { return logPixelsY; } +int SurfaceGDI::PixelDivisions() { + // Win32 uses device pixels. + return 1; +} + int SurfaceGDI::DeviceHeightFont(int points) { return ::MulDiv(points, LogPixelsY(), 72); } @@ -1170,6 +1176,7 @@ public: void PenColour(ColourDesired fore) override; void D2DPenColour(ColourDesired fore, int alpha=255); int LogPixelsY() override; + int PixelDivisions() override; int DeviceHeightFont(int points) override; void MoveTo(int x_, int y_) override; void LineTo(int x_, int y_) override; @@ -1367,6 +1374,11 @@ int SurfaceD2D::LogPixelsY() { return logPixelsY; } +int SurfaceD2D::PixelDivisions() { + // Win32 uses device pixels. + return 1; +} + int SurfaceD2D::DeviceHeightFont(int points) { return ::MulDiv(points, LogPixelsY(), 72); } -- cgit v1.2.3