A-_ha_! The Windows Rectangle() call appears to get uppity if asked
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 27 Apr 2004 22:49:21 +0000 (22:49 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 27 Apr 2004 22:49:21 +0000 (22:49 +0000)
to draw a 1x1 rectangle, presumably on the grounds that that's
beneath its dignity and you ought to be using SetPixel() instead. So
now I do, and now Net actually looks exactly the same on Windows and
GTK. Woo!

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@4157 cda61777-01e9-0310-a592-d414129be87e

windows.c

index 63ee3dd..1fda71b 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -47,11 +47,21 @@ void frontend_default_colour(frontend *fe, float *output)
 
 void draw_rect(frontend *fe, int x, int y, int w, int h, int colour)
 {
-    HBRUSH oldbrush = SelectObject(fe->hdc_bm, fe->brushes[colour]);
-    HPEN oldpen = SelectObject(fe->hdc_bm, fe->pens[colour]);
-    Rectangle(fe->hdc_bm, x, y, x+w, y+h);
-    SelectObject(fe->hdc_bm, oldbrush);
-    SelectObject(fe->hdc_bm, oldpen);
+    if (w == 1 && h == 1) {
+       /*
+        * Rectangle() appears to get uppity if asked to draw a 1x1
+        * rectangle, presumably on the grounds that that's beneath
+        * its dignity and you ought to be using SetPixel instead.
+        * So I will.
+        */
+       SetPixel(fe->hdc_bm, x, y, fe->colours[colour]);
+    } else {
+       HBRUSH oldbrush = SelectObject(fe->hdc_bm, fe->brushes[colour]);
+       HPEN oldpen = SelectObject(fe->hdc_bm, fe->pens[colour]);
+       Rectangle(fe->hdc_bm, x, y, x+w, y+h);
+       SelectObject(fe->hdc_bm, oldbrush);
+       SelectObject(fe->hdc_bm, oldpen);
+    }
 }
 
 void draw_line(frontend *fe, int x1, int y1, int x2, int y2, int colour)