]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dc.cpp
added "access" parameter to wxFile::Create and Open. The default value is
[wxWidgets.git] / src / gtk / dc.cpp
index c53c2d26fde4a31104c6724d01e8fbee39b1ed4a..faba4faab6364825c06ec9e87b3bcc02eeca0381 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:
 // Author:      Robert Roebling
 // Created:     01/02/97
 // Purpose:
 // Author:      Robert Roebling
 // Created:     01/02/97
-// Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -136,11 +136,17 @@ void wxDC::DrawLines( wxList *list, long xoffset, long yoffset )
 void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 )
 {
   wxList list;
 void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 )
 {
   wxList list;
-  list.DeleteContents(TRUE);
-  list.Append( new wxPoint(x1, y1) );
-  list.Append( new wxPoint(x2, y2) );
-  list.Append( new wxPoint(x3, y3) );
+  list.Append( (wxObject*)new wxPoint(x1, y1) );
+  list.Append( (wxObject*)new wxPoint(x2, y2) );
+  list.Append( (wxObject*)new wxPoint(x3, y3) );
   DrawSpline(&list);
   DrawSpline(&list);
+  wxNode *node = list.First();
+  while (node)
+  {
+    wxPoint *p = (wxPoint*)node->Data();
+    delete p;
+    node = node->Next();
+  };
 };
 
 void wxDC::DrawSpline( wxList *points )
 };
 
 void wxDC::DrawSpline( wxList *points )
@@ -361,10 +367,25 @@ void wxDC::CalcBoundingBox( long x, long y )
 
 void wxDC::ComputeScaleAndOrigin(void)
 {
 
 void wxDC::ComputeScaleAndOrigin(void)
 {
+  // CMB: copy scale to see if it changes
+  double origScaleX = m_scaleX;
+  double origScaleY = m_scaleY;
+
   m_scaleX = m_logicalScaleX * m_userScaleX;
   m_scaleY = m_logicalScaleY * m_userScaleY;
 
   m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX;
   m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY;
   m_scaleX = m_logicalScaleX * m_userScaleX;
   m_scaleY = m_logicalScaleY * m_userScaleY;
 
   m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX;
   m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY;
+
+  // CMB: if scale has changed call SetPen to recalulate the line width 
+  if (m_scaleX != origScaleX || m_scaleY != origScaleY)
+  {
+    // this is a bit artificial, but we need to force wxDC to think
+    // the pen has changed
+    wxPen* pen = GetPen();
+    wxPen tempPen;
+    m_pen = tempPen;
+    SetPen(pen);
+  }
 };
 
 };