From 2f0011955fe7d3ac0b80247abc88ee0461104eb6 Mon Sep 17 00:00:00 2001 From: Neil Date: Thu, 25 Mar 2021 10:57:35 +1100 Subject: Add FillRectangleAligned to align rectangle to pixel grid on x-axis before filling it to avoid partially drawn pixels on left and right edges. --- win32/PlatWin.cxx | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'win32') diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index c902bad04..65a024565 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -497,6 +497,7 @@ public: void RectangleFrame(PRectangle rc, Stroke stroke) override; void FillRectangle(PRectangle rc, ColourDesired back) override; void FillRectangle(PRectangle rc, Fill fill) override; + void FillRectangleAligned(PRectangle rc, Fill fill) override; void FillRectangle(PRectangle rc, Surface &surfacePattern) override; void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back) override; void RoundedRectangle(PRectangle rc, FillStroke fillStroke) override; @@ -770,6 +771,10 @@ void SurfaceGDI::FillRectangle(PRectangle rc, Fill fill) { } } +void SurfaceGDI::FillRectangleAligned(PRectangle rc, Fill fill) { + FillRectangle(PixelAlign(rc, 1), fill); +} + void SurfaceGDI::FillRectangle(PRectangle rc, Surface &surfacePattern) { HBRUSH br; if (SurfaceGDI *psgdi = dynamic_cast(&surfacePattern); psgdi && psgdi->bitmap) { @@ -1453,6 +1458,7 @@ public: void RectangleFrame(PRectangle rc, Stroke stroke) override; void FillRectangle(PRectangle rc, ColourDesired back) override; void FillRectangle(PRectangle rc, Fill fill) override; + void FillRectangleAligned(PRectangle rc, Fill fill) override; void FillRectangle(PRectangle rc, Surface &surfacePattern) override; void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back) override; void RoundedRectangle(PRectangle rc, FillStroke fillStroke) override; @@ -1879,6 +1885,10 @@ void SurfaceD2D::FillRectangle(PRectangle rc, Fill fill) { } } +void SurfaceD2D::FillRectangleAligned(PRectangle rc, Fill fill) { + FillRectangle(PixelAlign(rc, 1), fill); +} + void SurfaceD2D::FillRectangle(PRectangle rc, Surface &surfacePattern) { SurfaceD2D *psurfOther = dynamic_cast(&surfacePattern); PLATFORM_ASSERT(psurfOther); -- cgit v1.2.3