-void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 )
-{
- if (!Ok()) return;
-
-};
-
-void wxWindowDC::CrossHair( long x, long y )
-{
- if (!Ok()) return;
-
-};
-
-void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc )
-{
- if (!Ok()) return;
-
- long xx1 = XLOG2DEV(x1);
- long yy1 = YLOG2DEV(y1);
- long xx2 = XLOG2DEV(x2);
- long yy2 = YLOG2DEV(y2);
- long xxc = XLOG2DEV((long)xc);
- long yyc = YLOG2DEV((long)yc);
- double dx = xx1 - xxc;
- double dy = yy1 - yyc;
- double radius = sqrt(dx*dx+dy*dy);
- long r = (long)radius;
- double radius1, radius2;
-
- if (xx1 == xx2 && yy1 == yy2)
- {
- radius1 = 0.0;
- radius2 = 360.0;
- }
- else
- if (radius == 0.0)
- {
- radius1 = radius2 = 0.0;
- }
- else
- {
- radius1 = (xx1 - xxc == 0) ?
- (yy1 - yyc < 0) ? 90.0 : -90.0 :
- -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG;
- radius2 = (xx2 - xxc == 0) ?
- (yy2 - yyc < 0) ? 90.0 : -90.0 :
- -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG;
- };
- long alpha1 = long(radius1 * 64.0);
- long alpha2 = long((radius2 - radius1) * 64.0);
- while (alpha2 <= 0) alpha2 += 360*64;
- while (alpha1 > 360*64) alpha1 -= 360*64;
-
- if (m_brush.GetStyle() != wxTRANSPARENT) {};
-
- if (m_pen.GetStyle() != wxTRANSPARENT) {};
-
-};
-
-void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea )
-{
- if (!Ok()) return;
-
- long xx = XLOG2DEV(x);
- long yy = YLOG2DEV(y);
- long ww = m_signX * XLOG2DEVREL(width);
- long hh = m_signY * YLOG2DEVREL(height);
-
- // CMB: handle -ve width and/or height
- if (ww < 0) { ww = -ww; xx = xx - ww; }
- if (hh < 0) { hh = -hh; yy = yy - hh; }
-
- long start = long(sa * 64.0);
- long end = long(ea * 64.0);
- if (m_brush.GetStyle() != wxTRANSPARENT) {};
-
- if (m_pen.GetStyle() != wxTRANSPARENT) {};
-};
-
-void wxWindowDC::DrawPoint( long x, long y )
-{
- if (!Ok()) return;
-
- if (m_pen.GetStyle() != wxTRANSPARENT) {};
-};
-
-void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset )
-{
- if (!Ok()) return;
-
- if (m_pen.GetStyle() == wxTRANSPARENT) return;
-
- for (int i = 0; i < n-1; i++)
- {
- long x1 = XLOG2DEV(points[i].x + xoffset);
- long x2 = XLOG2DEV(points[i+1].x + xoffset);
- long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste
- long y2 = YLOG2DEV(points[i+1].y + yoffset);
- };
-};
-
-void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset )
-{
- if (!Ok()) return;
-
- if (m_pen.GetStyle() == wxTRANSPARENT) return;
-
- wxNode *node = points->First();
- while (node->Next())
- {
- wxPoint *point = (wxPoint*)node->Data();
- wxPoint *npoint = (wxPoint*)node->Next()->Data();
- long x1 = XLOG2DEV(point->x + xoffset);
- long x2 = XLOG2DEV(npoint->x + xoffset);
- long y1 = YLOG2DEV(point->y + yoffset); // and again...
- long y2 = YLOG2DEV(npoint->y + yoffset);
- node = node->Next();
- };
-};
-
-void wxWindowDC::DrawPolygon( int WXUNUSED(n), wxPoint WXUNUSED(points)[],
- long WXUNUSED(xoffset), long WXUNUSED(yoffset), int WXUNUSED(fillStyle) )
-{
- if (!Ok()) return;
-};
-
-void wxWindowDC::DrawPolygon( wxList *WXUNUSED(lines), long WXUNUSED(xoffset),
- long WXUNUSED(yoffset), int WXUNUSED(fillStyle) )
-{
- if (!Ok()) return;
-};
-
-void wxWindowDC::DrawRectangle( long x, long y, long width, long height )
-{
- if (!Ok()) return;
-
- long xx = XLOG2DEV(x);
- long yy = YLOG2DEV(y);
- long ww = m_signX * XLOG2DEVREL(width);
- long hh = m_signY * YLOG2DEVREL(height);
-
- // CMB: draw nothing if transformed w or h is 0
- if (ww == 0 || hh == 0) return;
-
- // CMB: handle -ve width and/or height
- if (ww < 0) { ww = -ww; xx = xx - ww; }
- if (hh < 0) { hh = -hh; yy = yy - hh; }
-
- if (m_brush.GetStyle() != wxTRANSPARENT) {};
-
- if (m_pen.GetStyle() != wxTRANSPARENT) {};
-};
-
-void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius )
-{
- if (!Ok()) return;
-
- if (radius < 0.0) radius = - radius * ((width < height) ? width : height);
-
- long xx = XLOG2DEV(x);
- long yy = YLOG2DEV(y);
- long ww = m_signX * XLOG2DEVREL(width);
- long hh = m_signY * YLOG2DEVREL(height);
- long rr = XLOG2DEVREL((long)radius);
-
- // CMB: handle -ve width and/or height
- if (ww < 0) { ww = -ww; xx = xx - ww; }
- if (hh < 0) { hh = -hh; yy = yy - hh; }
-
- // CMB: if radius is zero use DrawRectangle() instead to avoid
- // X drawing errors with small radii
- if (rr == 0)
- {
- DrawRectangle( x, y, width, height );
- return;
- }
-
- // CMB: draw nothing if transformed w or h is 0
- if (ww == 0 || hh == 0) return;
-
- // CMB: adjust size if outline is drawn otherwise the result is
- // 1 pixel too wide and high
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- ww--;
- hh--;
- }
-
- // CMB: ensure dd is not larger than rectangle otherwise we
- // get an hour glass shape
- long dd = 2 * rr;
- if (dd > ww) dd = ww;
- if (dd > hh) dd = hh;
- rr = dd / 2;
-
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- };
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- };
-};
-
-void wxWindowDC::DrawEllipse( long x, long y, long width, long height )
-{
- if (!Ok()) return;
-
- long xx = XLOG2DEV(x);
- long yy = YLOG2DEV(y);
- long ww = m_signX * XLOG2DEVREL(width);
- long hh = m_signY * YLOG2DEVREL(height);
-
- // CMB: handle -ve width and/or height
- if (ww < 0) { ww = -ww; xx = xx - ww; }
- if (hh < 0) { hh = -hh; yy = yy - hh; }
-
- if (m_brush.GetStyle() != wxTRANSPARENT) {};
-
- if (m_pen.GetStyle() != wxTRANSPARENT) {};
-};
-
-bool wxWindowDC::CanDrawBitmap(void) const
-{
- return TRUE;
-};
-
-void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
-{
- if (!Ok()) return;
-
- if (!icon.Ok()) return;
-
- int xx = XLOG2DEV(x);
- int yy = YLOG2DEV(y);