]> git.saurik.com Git - wxWidgets.git/commitdiff
Make use of FillRect() when possible.
authorRobert Roebling <robert@roebling.de>
Mon, 21 Feb 2000 14:12:20 +0000 (14:12 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 21 Feb 2000 14:12:20 +0000 (14:12 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/dc.cpp

index 5729050ac64eb08a65acb1586291abd9bc4f9056..b9fdcbe24e65fdc9bffd0dc7d3d0af6fdc8988be 100644 (file)
@@ -576,16 +576,31 @@ void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
     wxCoord x2 = x + width;
     wxCoord y2 = y + height;
 
     wxCoord x2 = x + width;
     wxCoord y2 = y + height;
 
-    // Windows draws the filled rectangles without outline (i.e. drawn with a
-    // transparent pen) one pixel smaller in both directions and we want them
-    // to have the same size regardless of which pen is used - adjust
-    if ( m_pen.GetStyle() == wxTRANSPARENT )
+    if ((m_logicalFunction == wxCOPY) && (m_pen.GetStyle() == wxTRANSPARENT))
     {
     {
-        x2++;
-        y2++;
+           RECT rect;
+        rect.left = XLOG2DEV(x);
+        rect.top = YLOG2DEV(y);
+        rect.right = XLOG2DEV(x2);
+           rect.bottom = YLOG2DEV(y2);
+           (void)FillRect(GetHdc(), &rect, m_brush.GetResourceHandle() );
+    }
+    else
+    {
+        // Windows draws the filled rectangles without outline (i.e. drawn with a
+        // transparent pen) one pixel smaller in both directions and we want them
+           // to have the same size regardless of which pen is used - adjust
+
+        // I wonder if this shouldn´t be done after the LOG2DEV() conversions. RR.
+        if ( m_pen.GetStyle() == wxTRANSPARENT )
+        {
+            x2++;
+            y2++;
+        }
+
+           (void)Rectangle(GetHdc(), XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y2));
     }
 
     }
 
-    (void)Rectangle(GetHdc(), XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y2));
 
     CalcBoundingBox(x, y);
     CalcBoundingBox(x2, y2);
 
     CalcBoundingBox(x, y);
     CalcBoundingBox(x2, y2);