aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/PlatWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/PlatWin.cxx')
-rw-r--r--win32/PlatWin.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index dacea8522..eac743ef3 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -492,6 +492,7 @@ public:
void Polygon(const Point *pts, size_t npts, FillStroke fillStroke) override;
void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) override;
void RectangleDraw(PRectangle rc, FillStroke fillStroke) override;
+ void RectangleFrame(PRectangle rc, Stroke stroke) override;
void FillRectangle(PRectangle rc, ColourDesired back) override;
void FillRectangle(PRectangle rc, Fill fill) override;
void FillRectangle(PRectangle rc, Surface &surfacePattern) override;
@@ -723,6 +724,12 @@ void SurfaceGDI::RectangleDraw(PRectangle rc, FillStroke fillStroke) {
FillRectangle(rc.Inset(fillStroke.stroke.width), fillStroke.fill.colour);
}
+void SurfaceGDI::RectangleFrame(PRectangle rc, Stroke stroke) {
+ BrushColour(stroke.colour);
+ const RECT rcw = RectFromPRectangle(rc);
+ ::FrameRect(hdc, &rcw, brush);
+}
+
void SurfaceGDI::FillRectangle(PRectangle rc, ColourDesired back) {
// Using ExtTextOut rather than a FillRect ensures that no dithering occurs.
// There is no need to allocate a brush either.
@@ -1416,6 +1423,7 @@ public:
void Polygon(const Point *pts, size_t npts, FillStroke fillStroke) override;
void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) override;
void RectangleDraw(PRectangle rc, FillStroke fillStroke) override;
+ void RectangleFrame(PRectangle rc, Stroke stroke) override;
void FillRectangle(PRectangle rc, ColourDesired back) override;
void FillRectangle(PRectangle rc, Fill fill) override;
void FillRectangle(PRectangle rc, Surface &surfacePattern) override;
@@ -1759,6 +1767,16 @@ void SurfaceD2D::RectangleDraw(PRectangle rc, FillStroke fillStroke) {
pRenderTarget->DrawRectangle(&rectOutline, pBrush, fillStroke.stroke.width);
}
+void SurfaceD2D::RectangleFrame(PRectangle rc, Stroke stroke) {
+ if (pRenderTarget) {
+ const XYPOSITION halfStroke = stroke.width / 2.0f;
+ const D2D1_RECT_F rectangle1 = D2D1::RectF(rc.left + halfStroke, rc.top + halfStroke,
+ rc.right - halfStroke, rc.bottom - halfStroke);
+ D2DPenColourAlpha(stroke.colour);
+ pRenderTarget->DrawRectangle(&rectangle1, pBrush, stroke.width);
+ }
+}
+
void SurfaceD2D::FillRectangle(PRectangle rc, ColourDesired back) {
if (pRenderTarget) {
D2DPenColour(back);