don't draw the endpoint in DrawLine at least in the common cases of vertical and horizontal lines
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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 = XLOG2DEV(y1);
|
||||
wxCoord xx2 = XLOG2DEV(x2);
|
||||
wxCoord yy2 = XLOG2DEV(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);
|
||||
|
Reference in New Issue
Block a user