Implemented LAST_NOT pen style for orthogonal lines.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2001-05-26 21:10:16 +00:00
parent 97af5088ec
commit 2301e28195
2 changed files with 54 additions and 12 deletions

View File

@@ -527,13 +527,34 @@ void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 :
m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2;
wxCoord xx1 = XLOG2DEV(x1);
wxCoord yy1 = YLOG2DEV(y1);
wxCoord xx2 = XLOG2DEV(x2);
wxCoord yy2 = YLOG2DEV(y2);
wxCoord xx1 = XLOG2DEV(x1) - offset;
wxCoord yy1 = YLOG2DEV(y1) - offset;
wxCoord xx2 = XLOG2DEV(x2) - offset;
wxCoord yy2 = YLOG2DEV(y2) - offset;
::MoveTo(xx1 - offset, yy1 - offset);
::LineTo(xx2 - offset, yy2 - offset);
if ((m_pen.GetCap() == wxCAP_ROUND) &&
(m_pen.GetWidth() <= 1))
{
// Implement LAST_NOT for MAC at least for
// orthogonal lines. RR.
if (xx1 == xx2)
{
if (yy1 < yy2)
yy2--;
if (yy1 > yy2)
yy2++;
}
if (yy1 == yy2)
{
if (xx1 < xx2)
xx2--;
if (xx1 > xx2)
xx2++;
}
}
::MoveTo(xx1, yy1);
::LineTo(xx2, yy2);
}
}

View File

@@ -527,13 +527,34 @@ void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 :
m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2;
wxCoord xx1 = XLOG2DEV(x1);
wxCoord yy1 = YLOG2DEV(y1);
wxCoord xx2 = XLOG2DEV(x2);
wxCoord yy2 = YLOG2DEV(y2);
wxCoord xx1 = XLOG2DEV(x1) - offset;
wxCoord yy1 = YLOG2DEV(y1) - offset;
wxCoord xx2 = XLOG2DEV(x2) - offset;
wxCoord yy2 = YLOG2DEV(y2) - offset;
::MoveTo(xx1 - offset, yy1 - offset);
::LineTo(xx2 - offset, yy2 - offset);
if ((m_pen.GetCap() == wxCAP_ROUND) &&
(m_pen.GetWidth() <= 1))
{
// Implement LAST_NOT for MAC at least for
// orthogonal lines. RR.
if (xx1 == xx2)
{
if (yy1 < yy2)
yy2--;
if (yy1 > yy2)
yy2++;
}
if (yy1 == yy2)
{
if (xx1 < xx2)
xx2--;
if (xx1 > xx2)
xx2++;
}
}
::MoveTo(xx1, yy1);
::LineTo(xx2, yy2);
}
}