]> git.saurik.com Git - wxWidgets.git/blobdiff - src/dfb/dc.cpp
aui notebook button enabling/disabling implemented
[wxWidgets.git] / src / dfb / dc.cpp
index 4e171feb3d47fbc41ea6e2d4e0c146c5a7439e7a..60b3782b9275015f480aef7620e1b718f8dfaffc 100644 (file)
@@ -180,8 +180,32 @@ void wxDC::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
     if ( m_pen.GetStyle() == wxTRANSPARENT )
         return;
 
-    m_surface->DrawLine(XLOG2DEV(x1), YLOG2DEV(y1),
-                        XLOG2DEV(x2), YLOG2DEV(y2));
+    wxCoord xx1 = XLOG2DEV(x1);
+    wxCoord yy1 = YLOG2DEV(y1);
+    wxCoord xx2 = XLOG2DEV(x2);
+    wxCoord yy2 = YLOG2DEV(y2);
+
+    // FIXME: DrawLine() shouldn't draw the last pixel, but DFB's DrawLine()
+    //        does draw it. We should undo any change to the last pixel by
+    //        using GetPixel() and PutPixel(), but until they are implemented,
+    //        handle at least the special case of vertical and horizontal
+    //        lines correctly:
+    if ( xx1 == xx2 )
+    {
+        if ( yy1 < yy2 )
+            yy2--;
+        else if ( yy1 > yy2 )
+            yy2++;
+    }
+    if ( yy1 == yy2 )
+    {
+        if ( xx1 < xx2 )
+            xx2--;
+        else if ( xx1 > xx2 )
+            xx2++;
+    }
+
+    m_surface->DrawLine(xx1, yy1, xx2, yy2);
 
     CalcBoundingBox(x1, y1);
     CalcBoundingBox(x2, y2);