]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dc.cpp
added xpmdecod files
[wxWidgets.git] / src / mac / carbon / dc.cpp
index cbce6e301a4663fe9dda97e950442dab9773b7dd..b1e9a3b4c4c5fa9f9218fce2c84b9b93c449f740 100644 (file)
@@ -45,8 +45,8 @@ long wxDC::m_macCurrentPortId = 1 ;
 wxDC::wxDC()
 {
   m_ok = FALSE;
 wxDC::wxDC()
 {
   m_ok = FALSE;
-  m_optimize = FALSE;
-  m_autoSetting = FALSE;
+//  m_optimize = FALSE;
+//  m_autoSetting = FALSE;
   m_colour = TRUE;
   m_clipping = FALSE;
   
   m_colour = TRUE;
   m_clipping = FALSE;
   
@@ -539,7 +539,7 @@ void  wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
                MacInstallPen() ;
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
                MacInstallPen() ;
-               int offset = (m_pen.GetWidth()  - 1) / 2 ;      
+               int offset = ( (m_pen.GetWidth() == 0 ? 1 : m_pen.GetWidth() ) * m_scaleX - 1) / 2 ;    
        long xx1 = XLOG2DEV(x1); 
        long yy1 = YLOG2DEV(y1);
        long xx2 = XLOG2DEV(x2); 
        long xx1 = XLOG2DEV(x1); 
        long yy1 = YLOG2DEV(y1);
        long xx2 = XLOG2DEV(x2); 
@@ -779,171 +779,6 @@ void  wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
        };
 }
 
        };
 }
 
-// ----------------------------------- 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)
-{
-    wx_stack_top = wx_spline_stack;
-    wx_stack_count = 0;
-}
-
-static void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
-{
-    wx_stack_top->x1 = x1;
-    wx_stack_top->y1 = y1;
-    wx_stack_top->x2 = x2;
-    wx_stack_top->y2 = y2;
-    wx_stack_top->x3 = x3;
-    wx_stack_top->y3 = y3;
-    wx_stack_top->x4 = x4;
-    wx_stack_top->y4 = y4;
-    wx_stack_top++;
-    wx_stack_count++;
-}
-
-static int wx_spline_pop(double *x1, double *y1, double *x2, double *y2,
-                  double *x3, double *y3, double *x4, double *y4)
-{
-    if (wx_stack_count == 0)
-       return (0);
-    wx_stack_top--;
-    wx_stack_count--;
-    *x1 = wx_stack_top->x1;
-    *y1 = wx_stack_top->y1;
-    *x2 = wx_stack_top->x2;
-    *y2 = wx_stack_top->y2;
-    *x3 = wx_stack_top->x3;
-    *y3 = wx_stack_top->y3;
-    *x4 = wx_stack_top->x4;
-    *y4 = wx_stack_top->y4;
-    return (1);
-}
-
-static bool wx_spline_add_point(double x, double y)
-{
-  wxPoint *point = new wxPoint ;
-  point->x = (int) x;
-  point->y = (int) y;
-  wx_spline_point_list.Append((wxObject*)point);
-  return TRUE;
-}
-
-static void wx_spline_draw_point_array(wxDC *dc)
-{
-  dc->DrawLines(&wx_spline_point_list, 0, 0 );
-  wxNode *node = wx_spline_point_list.First();
-  while (node)
-  {
-    wxPoint *point = (wxPoint *)node->Data();
-    delete point;
-    delete node;
-    node = wx_spline_point_list.First();
-  }
-}
-
-void  wxDC::DoDrawSpline(wxList *points)
-{
-    wxPoint *p;
-    double           cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;
-    double           x1, y1, x2, y2;
-
-    wxNode *node = points->First();
-    p = (wxPoint *)node->Data();
-
-    x1 = p->x;
-    y1 = p->y;
-
-    node = node->Next();
-    p = (wxPoint *)node->Data();
-
-    x2 = p->x;
-    y2 = p->y;
-    cx1 = (double)((x1 + x2) / 2);
-    cy1 = (double)((y1 + y2) / 2);
-    cx2 = (double)((cx1 + x2) / 2);
-    cy2 = (double)((cy1 + y2) / 2);
-
-    wx_spline_add_point(x1, y1);
-
-    while ((node = node->Next()) != NULL)
-    {
-        p = (wxPoint *)node->Data();
-       x1 = x2;
-       y1 = y2;
-       x2 = p->x;
-       y2 = p->y;
-        cx4 = (double)(x1 + x2) / 2;
-        cy4 = (double)(y1 + y2) / 2;
-        cx3 = (double)(x1 + cx4) / 2;
-        cy3 = (double)(y1 + cy4) / 2;
-
-        wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
-
-       cx1 = cx4;
-       cy1 = cy4;
-        cx2 = (double)(cx1 + x2) / 2;
-        cy2 = (double)(cy1 + y2) / 2;
-    }
-
-    wx_spline_add_point( cx1, cy1 );
-    wx_spline_add_point( x2, y2 );
-
-    wx_spline_draw_point_array( this );
-}
-
 
     
 bool  wxDC::CanDrawBitmap(void) const 
 
     
 bool  wxDC::CanDrawBitmap(void) const 
@@ -1367,7 +1202,11 @@ void wxDC::MacInstallPen() const
        ::RGBBackColor( &backcolor );
        
        ::PenNormal() ;
        ::RGBBackColor( &backcolor );
        
        ::PenNormal() ;
-       int penWidth = m_pen.GetWidth();
+       int penWidth = m_pen.GetWidth() * m_scaleX ;
+
+       // null means only one pixel, at whatever resolution
+       if ( penWidth == 0 )
+               penWidth = 1 ; 
        ::PenSize(penWidth, penWidth);
 
        int penStyle = m_pen.GetStyle();
        ::PenSize(penWidth, penWidth);
 
        int penStyle = m_pen.GetStyle();