-void wxDC::CrossHair( long x, long y )
-{
-}
-
-void wxDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc )
-{
-}
-
-void wxDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea )
-{
-}
-
-void wxDC::DrawPoint( long x, long y )
-{
- if (!Ok())
- return;
-
- MacVerifySetup() ;
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- MacInstallPen() ;
- long xx1 = XLOG2DEV(x);
- long yy1 = YLOG2DEV(y);
-
- ::MoveTo(xx1,yy1);
- ::LineTo(xx1+1, yy1+1);
- };
-}
-
-void wxDC::DrawLines( int n, wxPoint points[], long xoffset , long yoffset )
-{
- if (!Ok())
- return;
- MacVerifySetup() ;
-
- if (m_pen.GetStyle() == wxTRANSPARENT)
- return;
-
- MacInstallPen() ;
-
- int offset = (m_pen.GetWidth() - 1 ) / 2 ;
- long x1, x2 , y1 , y2 ;
- x1 = XLOG2DEV(points[0].x + xoffset);
- y1 = YLOG2DEV(points[0].y + yoffset);
- ::MoveTo(x1 - offset ,y1 - offset );
-
- for (int i = 0; i < n-1; i++)
- {
- long x2 = XLOG2DEV(points[i+1].x + xoffset);
- long y2 = YLOG2DEV(points[i+1].y + yoffset);
- ::LineTo(x2 - offset , y2 - offset );
- }
-}
-
-void wxDC::DrawPolygon( int n, wxPoint points[], long xoffset , long yoffset ,
- int fillStyle )
-{
- if (!Ok())
- return;
- MacVerifySetup() ;
-
- PolyHandle polygon = OpenPoly() ;
- long x1, x2 , y1 , y2 ;
- x1 = XLOG2DEV(points[0].x + xoffset);
- y1 = YLOG2DEV(points[0].y + yoffset);
- ::MoveTo(x1,y1);
-
- for (int i = 0; i < n-1; i++)
- {
- long x2 = XLOG2DEV(points[i+1].x + xoffset);
- long y2 = YLOG2DEV(points[i+1].y + yoffset);
- ::LineTo(x2, y2);
- }
-
- ClosePoly() ;
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- MacInstallBrush() ;
- ::PaintPoly( polygon ) ;
- };
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- MacInstallPen() ;
- ::FramePoly( polygon ) ;
- };
- KillPoly( polygon ) ;
-}
-
-void wxDC::DrawRectangle( long x, long y, long width, long height )
-{
- if (!Ok())
- return;
- MacVerifySetup() ;
-
- 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;
- }
-
- Rect rect = { yy , xx , yy + hh , xx + ww } ;
-
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- MacInstallBrush() ;
- ::PaintRect( &rect ) ;
- };
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- MacInstallPen() ;
- ::FrameRect( &rect ) ;
- };
-}
-
-void wxDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius )
-{
- if (!Ok())
- return;
- MacVerifySetup() ;
-
- 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);
-
- // 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;
- }
-
- Rect rect = { yy , xx , yy + hh , xx + ww } ;
-
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- MacInstallBrush() ;
- ::PaintRoundRect( &rect , radius * 2 , radius * 2 ) ;
- };
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- MacInstallPen() ;
- ::FrameRoundRect( &rect , radius * 2 , radius * 2 ) ;
- };
-}
-
-void wxDC::DrawEllipse( long x, long y, long width, long height )
-{
- if (!Ok())
- return;
- MacVerifySetup() ;
-
- 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;
- }
-
- Rect rect = { yy , xx , yy + hh , xx + ww } ;
-
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- MacInstallBrush() ;
- ::PaintOval( &rect ) ;
- };
-
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- MacInstallPen() ;
- ::FrameOval( &rect ) ;
- };
-}
-
-// ----------------------------------- spline code ----------------------------------------
-
-static void wx_quadratic_spline(double a1, double b1, double a2, double b2,
- double a3, double b3, double a4, double b4);
-static void wx_clear_stack(void);
-static int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3,
- double *y3, double *x4, double *y4);
-static void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3,
- double x4, double y4);
-static bool wx_spline_add_point(double x, double y);
-static void wx_spline_draw_point_array(wxDC *dc);
-
-static wxList wx_spline_point_list;
-
-#define half(z1, z2) ((z1+z2)/2.0)
-#define THRESHOLD 5
-
-/* iterative version */
-
-static void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4,
- double b4)
-{
- register double xmid, ymid;
- double x1, y1, x2, y2, x3, y3, x4, y4;
-
- wx_clear_stack();
- wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4);
-
- while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) {
- xmid = (double)half(x2, x3);
- ymid = (double)half(y2, y3);
- if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD &&
- fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) {
- wx_spline_add_point( x1, y1 );
- wx_spline_add_point( xmid, ymid );
- } else {
- wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3),
- (double)half(x3, x4), (double)half(y3, y4), x4, y4);
- wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2),
- (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid);
- }
- }
-}
-
-/* utilities used by spline drawing routines */
-
-typedef struct wx_spline_stack_struct {
- double x1, y1, x2, y2, x3, y3, x4, y4;
-} Stack;
-
-#define SPLINE_STACK_DEPTH 20
-static Stack wx_spline_stack[SPLINE_STACK_DEPTH];
-static Stack *wx_stack_top;
-static int wx_stack_count;
-
-static void wx_clear_stack(void)