]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/drawn.cpp
added .chm support for Unix (Markus Sinner)
[wxWidgets.git] / contrib / src / ogl / drawn.cpp
index 24db4482d9a6fac1b60cb0d56f23c28668d3b0d9..15b1863a49bfc15279bba5c6be4b31debe1afb71 100644 (file)
 #include <wx/wx.h>
 #endif
 
 #include <wx/wx.h>
 #endif
 
-#include <wx/wxexpr.h>
+#if wxUSE_PROLOGIO
+#include <wx/deprecated/wxexpr.h>
+#endif
+
+#include "wx/ogl/ogl.h"
+
 
 
-#include <wx/ogl/basic.h>
-#include <wx/ogl/basicp.h>
-#include <wx/ogl/canvas.h>
-#include <wx/ogl/mfutils.h>
-#include <wx/ogl/drawn.h>
-#include <wx/ogl/drawnp.h>
-#include <wx/ogl/misc.h>
+#include <math.h>
 
 
-static void IntToHex(unsigned int dec, char *buf);
-static unsigned long HexToInt(char *buf);
-extern char *oglBuffer;
+static void IntToHex(unsigned int dec, wxChar *buf);
+static unsigned long HexToInt(wxChar *buf);
+extern wxChar *oglBuffer;
 
 #define gyTYPE_PEN   40
 #define gyTYPE_BRUSH 41
 
 #define gyTYPE_PEN   40
 #define gyTYPE_BRUSH 41
@@ -77,7 +76,7 @@ void wxDrawnShape::OnDraw(wxDC& dc)
   m_metafiles[m_currentAngle].Draw(dc, m_xpos, m_ypos);
 }
 
   m_metafiles[m_currentAngle].Draw(dc, m_xpos, m_ypos);
 }
 
-void wxDrawnShape::SetSize(double w, double h, bool recursive)
+void wxDrawnShape::SetSize(double w, double h, bool WXUNUSED(recursive))
 {
   SetAttachmentSize(w, h);
 
 {
   SetAttachmentSize(w, h);
 
@@ -146,15 +145,15 @@ void wxDrawnShape::Rotate(double x, double y, double theta)
   // Rotate attachment points
   double sinTheta = (double)sin(actualTheta);
   double cosTheta = (double)cos(actualTheta);
   // Rotate attachment points
   double sinTheta = (double)sin(actualTheta);
   double cosTheta = (double)cos(actualTheta);
-  wxNode *node = m_attachmentPoints.First();
+  wxNode *node = m_attachmentPoints.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data();
+    wxAttachmentPoint *point = (wxAttachmentPoint *)node->GetData();
     double x1 = point->m_x;
     double y1 = point->m_y;
     point->m_x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
     point->m_y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
     double x1 = point->m_x;
     double y1 = point->m_y;
     point->m_x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
     point->m_y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
-    node = node->Next();
+    node = node->GetNext();
   }
   m_rotation = theta;
 
   }
   m_rotation = theta;
 
@@ -202,9 +201,9 @@ void wxDrawnShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double
 {
     if (m_metafiles[m_currentAngle].GetOutlineOp() != -1)
     {
 {
     if (m_metafiles[m_currentAngle].GetOutlineOp() != -1)
     {
-        wxNode* node = m_metafiles[m_currentAngle].GetOps().Nth(m_metafiles[m_currentAngle].GetOutlineOp());
+        wxNode* node = m_metafiles[m_currentAngle].GetOps().Item(m_metafiles[m_currentAngle].GetOutlineOp());
         wxASSERT (node != NULL);
         wxASSERT (node != NULL);
-        wxDrawOp* op = (wxDrawOp*) node->Data();
+        wxDrawOp* op = (wxDrawOp*) node->GetData();
 
         if (op->OnDrawOutline(dc, x, y, w, h, m_width, m_height))
             return;
 
         if (op->OnDrawOutline(dc, x, y, w, h, m_width, m_height))
             return;
@@ -222,9 +221,9 @@ bool wxDrawnShape::GetPerimeterPoint(double x1, double y1,
 {
     if (m_metafiles[m_currentAngle].GetOutlineOp() != -1)
     {
 {
     if (m_metafiles[m_currentAngle].GetOutlineOp() != -1)
     {
-        wxNode* node = m_metafiles[m_currentAngle].GetOps().Nth(m_metafiles[m_currentAngle].GetOutlineOp());
+        wxNode* node = m_metafiles[m_currentAngle].GetOps().Item(m_metafiles[m_currentAngle].GetOutlineOp());
         wxASSERT (node != NULL);
         wxASSERT (node != NULL);
-        wxDrawOp* op = (wxDrawOp*) node->Data();
+        wxDrawOp* op = (wxDrawOp*) node->GetData();
 
         if (op->GetPerimeterPoint(x1, y1, x2, y2, x3, y3, GetX(), GetY(), GetAttachmentMode()))
             return TRUE;
 
         if (op->GetPerimeterPoint(x1, y1, x2, y2, x3, y3, GetX(), GetY(), GetAttachmentMode()))
             return TRUE;
@@ -234,13 +233,13 @@ bool wxDrawnShape::GetPerimeterPoint(double x1, double y1,
     return wxRectangleShape::GetPerimeterPoint(x1, y1, x2, y2, x3, y3);
 }
 
     return wxRectangleShape::GetPerimeterPoint(x1, y1, x2, y2, x3, y3);
 }
 
-#ifdef PROLOGIO
+#if wxUSE_PROLOGIO
 void wxDrawnShape::WriteAttributes(wxExpr *clause)
 {
   wxRectangleShape::WriteAttributes(clause);
 
 void wxDrawnShape::WriteAttributes(wxExpr *clause)
 {
   wxRectangleShape::WriteAttributes(clause);
 
-  clause->AddAttributeValue("current_angle", (long)m_currentAngle);
-  clause->AddAttributeValue("save_metafile", (long)m_saveToFile);
+  clause->AddAttributeValue(_T("current_angle"), (long)m_currentAngle);
+  clause->AddAttributeValue(_T("save_metafile"), (long)m_saveToFile);
   if (m_saveToFile)
   {
     int i = 0;
   if (m_saveToFile)
   {
     int i = 0;
@@ -257,8 +256,8 @@ void wxDrawnShape::ReadAttributes(wxExpr *clause)
   wxRectangleShape::ReadAttributes(clause);
 
   int iVal = (int) m_saveToFile;
   wxRectangleShape::ReadAttributes(clause);
 
   int iVal = (int) m_saveToFile;
-  clause->GetAttributeValue("save_metafile", iVal);
-  clause->GetAttributeValue("current_angle", m_currentAngle);
+  clause->GetAttributeValue(_T("save_metafile"), iVal);
+  clause->GetAttributeValue(_T("current_angle"), m_currentAngle);
   m_saveToFile = (iVal != 0);
 
   if (m_saveToFile)
   m_saveToFile = (iVal != 0);
 
   if (m_saveToFile)
@@ -290,7 +289,7 @@ void wxDrawnShape::Copy(wxShape& copy)
   drawnCopy.m_currentAngle = m_currentAngle;
 }
 
   drawnCopy.m_currentAngle = m_currentAngle;
 }
 
-bool wxDrawnShape::LoadFromMetaFile(char *filename)
+bool wxDrawnShape::LoadFromMetaFile(const wxString& filename)
 {
   return m_metafiles[0].LoadFromMetaFile(filename, &m_width, &m_height);
 }
 {
   return m_metafiles[0].LoadFromMetaFile(filename, &m_width, &m_height);
 }
@@ -420,7 +419,7 @@ wxOpSetGDI::wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, i
   m_mode = theMode;
 }
 
   m_mode = theMode;
 }
 
-void wxOpSetGDI::Do(wxDC& dc, double xoffset, double yoffset)
+void wxOpSetGDI::Do(wxDC& dc, double WXUNUSED(xoffset), double WXUNUSED(yoffset))
 {
   switch (m_op)
   {
 {
   switch (m_op)
   {
@@ -435,10 +434,10 @@ void wxOpSetGDI::Do(wxDC& dc, double xoffset, double yoffset)
       }
       else
       {
       }
       else
       {
-        wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex);
+        wxNode *node = m_image->m_gdiObjects.Item(m_gdiIndex);
         if (node)
         {
         if (node)
         {
-          wxPen *pen = (wxPen *)node->Data();
+          wxPen *pen = (wxPen *)node->GetData();
           if (pen)
             dc.SetPen(* pen);
         }
           if (pen)
             dc.SetPen(* pen);
         }
@@ -468,10 +467,10 @@ void wxOpSetGDI::Do(wxDC& dc, double xoffset, double yoffset)
       }
       else
       {
       }
       else
       {
-        wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex);
+        wxNode *node = m_image->m_gdiObjects.Item(m_gdiIndex);
         if (node)
         {
         if (node)
         {
-          wxBrush *brush = (wxBrush *)node->Data();
+          wxBrush *brush = (wxBrush *)node->GetData();
           if (brush)
             dc.SetBrush(* brush);
         }
           if (brush)
             dc.SetBrush(* brush);
         }
@@ -480,10 +479,10 @@ void wxOpSetGDI::Do(wxDC& dc, double xoffset, double yoffset)
     }
     case DRAWOP_SET_FONT:
     {
     }
     case DRAWOP_SET_FONT:
     {
-      wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex);
+      wxNode *node = m_image->m_gdiObjects.Item(m_gdiIndex);
       if (node)
       {
       if (node)
       {
-        wxFont *font = (wxFont *)node->Data();
+        wxFont *font = (wxFont *)node->GetData();
         if (font)
           dc.SetFont(* font);
       }
         if (font)
           dc.SetFont(* font);
       }
@@ -520,7 +519,8 @@ wxDrawOp *wxOpSetGDI::Copy(wxPseudoMetaFile *newImage)
   return newOp;
 }
 
   return newOp;
 }
 
-wxExpr *wxOpSetGDI::WriteExpr(wxPseudoMetaFile *image)
+#if wxUSE_PROLOGIO
+wxExpr *wxOpSetGDI::WriteExpr(wxPseudoMetaFile *WXUNUSED(image))
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
@@ -552,7 +552,7 @@ wxExpr *wxOpSetGDI::WriteExpr(wxPseudoMetaFile *image)
   return expr;
 }
 
   return expr;
 }
 
-void wxOpSetGDI::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
+void wxOpSetGDI::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
 {
   switch (m_op)
   {
 {
   switch (m_op)
   {
@@ -580,6 +580,7 @@ void wxOpSetGDI::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
       break;
   }
 }
       break;
   }
 }
+#endif
 
 /*
  * Set/destroy clipping
 
 /*
  * Set/destroy clipping
@@ -595,7 +596,7 @@ wxOpSetClipping::wxOpSetClipping(int theOp, double theX1, double theY1,
   m_y2 = theY2;
 }
 
   m_y2 = theY2;
 }
 
-wxDrawOp *wxOpSetClipping::Copy(wxPseudoMetaFile *newImage)
+wxDrawOp *wxOpSetClipping::Copy(wxPseudoMetaFile *WXUNUSED(newImage))
 {
   wxOpSetClipping *newOp = new wxOpSetClipping(m_op, m_x1, m_y1, m_x2, m_y2);
   return newOp;
 {
   wxOpSetClipping *newOp = new wxOpSetClipping(m_op, m_x1, m_y1, m_x2, m_y2);
   return newOp;
@@ -634,7 +635,8 @@ void wxOpSetClipping::Translate(double x, double y)
   m_y1 += y;
 }
 
   m_y1 += y;
 }
 
-wxExpr *wxOpSetClipping::WriteExpr(wxPseudoMetaFile *image)
+#if wxUSE_PROLOGIO
+wxExpr *wxOpSetClipping::WriteExpr(wxPseudoMetaFile *WXUNUSED(image))
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
@@ -654,7 +656,7 @@ wxExpr *wxOpSetClipping::WriteExpr(wxPseudoMetaFile *image)
   return expr;
 }
 
   return expr;
 }
 
-void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
+void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
 {
   switch (m_op)
   {
 {
   switch (m_op)
   {
@@ -670,6 +672,7 @@ void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
       break;
   }
 }
       break;
   }
 }
+#endif
 
 /*
  * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text
 
 /*
  * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text
@@ -695,7 +698,7 @@ wxOpDraw::~wxOpDraw()
   if (m_textString) delete[] m_textString;
 }
 
   if (m_textString) delete[] m_textString;
 }
 
-wxDrawOp *wxOpDraw::Copy(wxPseudoMetaFile *newImage)
+wxDrawOp *wxOpDraw::Copy(wxPseudoMetaFile *WXUNUSED(newImage))
 {
   wxOpDraw *newOp = new wxOpDraw(m_op, m_x1, m_y1, m_x2, m_y2, m_radius, m_textString);
   newOp->m_x3 = m_x3;
 {
   wxOpDraw *newOp = new wxOpDraw(m_op, m_x1, m_y1, m_x2, m_y2, m_radius, m_textString);
   newOp->m_x3 = m_x3;
@@ -878,7 +881,8 @@ void wxOpDraw::Rotate(double x, double y, double theta, double sinTheta, double
   }
 }
 
   }
 }
 
-wxExpr *wxOpDraw::WriteExpr(wxPseudoMetaFile *image)
+#if wxUSE_PROLOGIO
+wxExpr *wxOpDraw::WriteExpr(wxPseudoMetaFile *WXUNUSED(image))
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
@@ -935,7 +939,7 @@ wxExpr *wxOpDraw::WriteExpr(wxPseudoMetaFile *image)
   return expr;
 }
 
   return expr;
 }
 
-void wxOpDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
+void wxOpDraw::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
 {
   switch (m_op)
   {
 {
   switch (m_op)
   {
@@ -989,6 +993,7 @@ void wxOpDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
     }
   }
 }
     }
   }
 }
+#endif
 
 /*
  * Draw polygon, polyline, spline
 
 /*
  * Draw polygon, polyline, spline
@@ -1006,7 +1011,7 @@ wxOpPolyDraw::~wxOpPolyDraw()
   delete[] m_points;
 }
 
   delete[] m_points;
 }
 
-wxDrawOp *wxOpPolyDraw::Copy(wxPseudoMetaFile *newImage)
+wxDrawOp *wxOpPolyDraw::Copy(wxPseudoMetaFile *WXUNUSED(newImage))
 {
   wxRealPoint *newPoints = new wxRealPoint[m_noPoints];
   for (int i = 0; i < m_noPoints; i++)
 {
   wxRealPoint *newPoints = new wxRealPoint[m_noPoints];
   for (int i = 0; i < m_noPoints; i++)
@@ -1066,7 +1071,6 @@ void wxOpPolyDraw::Do(wxDC& dc, double xoffset, double yoffset)
 
         delete[] actualPoints;
         break;
 
         delete[] actualPoints;
         break;
-      break;
     }
     default:
       break;
     }
     default:
       break;
@@ -1091,7 +1095,7 @@ void wxOpPolyDraw::Translate(double x, double y)
   }
 }
 
   }
 }
 
-void wxOpPolyDraw::Rotate(double x, double y, double theta, double sinTheta, double cosTheta)
+void wxOpPolyDraw::Rotate(double x, double y, double WXUNUSED(theta), double sinTheta, double cosTheta)
 {
   for (int i = 0; i < m_noPoints; i++)
   {
 {
   for (int i = 0; i < m_noPoints; i++)
   {
@@ -1102,15 +1106,16 @@ void wxOpPolyDraw::Rotate(double x, double y, double theta, double sinTheta, dou
   }
 }
 
   }
 }
 
-wxExpr *wxOpPolyDraw::WriteExpr(wxPseudoMetaFile *image)
+#if wxUSE_PROLOGIO
+wxExpr *wxOpPolyDraw::WriteExpr(wxPseudoMetaFile *WXUNUSED(image))
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
   expr->Append(new wxExpr((long)m_noPoints));
 
 //  char buf1[9];
 {
   wxExpr *expr = new wxExpr(wxExprList);
   expr->Append(new wxExpr((long)m_op));
   expr->Append(new wxExpr((long)m_noPoints));
 
 //  char buf1[9];
-  char buf2[5];
-  char buf3[5];
+  wxChar buf2[5];
+  wxChar buf3[5];
 
   oglBuffer[0] = 0;
 
 
   oglBuffer[0] = 0;
 
@@ -1137,20 +1142,20 @@ wxExpr *wxOpPolyDraw::WriteExpr(wxPseudoMetaFile *image)
     // Don't overrun the buffer
     if ((i*8) < 3000)
     {
     // Don't overrun the buffer
     if ((i*8) < 3000)
     {
-      strcat(oglBuffer, buf2);
-      strcat(oglBuffer, buf3);
+      wxStrcat(oglBuffer, buf2);
+      wxStrcat(oglBuffer, buf3);
     }
   }
   expr->Append(new wxExpr(wxExprString, oglBuffer));
   return expr;
 }
 
     }
   }
   expr->Append(new wxExpr(wxExprString, oglBuffer));
   return expr;
 }
 
-void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
+void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
 {
   m_noPoints = (int)expr->Nth(1)->IntegerValue();
 
 {
   m_noPoints = (int)expr->Nth(1)->IntegerValue();
 
-  char buf1[5];
-  char buf2[5];
+  wxChar buf1[5];
+  wxChar buf2[5];
 
   m_points = new wxRealPoint[m_noPoints];
   int i = 0;
 
   m_points = new wxRealPoint[m_noPoints];
   int i = 0;
@@ -1179,7 +1184,7 @@ void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
     // Scale -32K -> +32K
     long signedX = unSignedX - 32767;
     long signedY = unSignedY - 32767;
     // Scale -32K -> +32K
     long signedX = unSignedX - 32767;
     long signedY = unSignedY - 32767;
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && 0
     int testX = (signed int)unSignedX;
     int testY = (signed int)unSignedY;
 #endif
     int testX = (signed int)unSignedX;
     int testY = (signed int)unSignedY;
 #endif
@@ -1190,6 +1195,7 @@ void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr)
     i ++;
   }
 }
     i ++;
   }
 }
+#endif
 
 // Draw an outline using the current operation.
 bool wxOpPolyDraw::OnDrawOutline(wxDC& dc, double x, double y, double w, double h, double oldW, double oldH)
 
 // Draw an outline using the current operation.
 bool wxOpPolyDraw::OnDrawOutline(wxDC& dc, double x, double y, double w, double h, double oldW, double oldH)
@@ -1278,11 +1284,12 @@ bool wxOpPolyDraw::GetPerimeterPoint(double x1, double y1,
  *
  */
 
  *
  */
 
-static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
-  'C', 'D', 'E', 'F' };
+static char hexArray[] = { 
+    _T('0'), _T('1'), _T('2'), _T('3'), _T('4'), _T('5'), _T('6'), _T('7'), 
+    _T('8'), _T('9'), _T('A'), _T('B'), _T('C'), _T('D'), _T('E'), _T('F') };
 
 // Convert unsigned 16-bit integer to 4-character hex string
 
 // Convert unsigned 16-bit integer to 4-character hex string
-static void IntToHex(unsigned int dec, char *buf)
+static void IntToHex(unsigned int dec, wxChar *buf)
 {
   int digit1 = (int)(dec/4096);
   int digit2 = (int)((dec - (digit1*4096))/256);
 {
   int digit1 = (int)(dec/4096);
   int digit2 = (int)((dec - (digit1*4096))/256);
@@ -1297,50 +1304,54 @@ static void IntToHex(unsigned int dec, char *buf)
 }
 
 // One hex digit to decimal number
 }
 
 // One hex digit to decimal number
-static int HexToInt1(char hex)
+static int HexToInt1(wxChar hex)
 {
   switch (hex)
   {
 {
   switch (hex)
   {
-    case '0':
+    case _T('0'):
       return 0;
       return 0;
-    case '1':
+    case _T('1'):
       return 1;
       return 1;
-    case '2':
+    case _T('2'):
       return 2;
       return 2;
-    case '3':
+    case _T('3'):
       return 3;
       return 3;
-    case '4':
+    case _T('4'):
       return 4;
       return 4;
-    case '5':
+    case _T('5'):
       return 5;
       return 5;
-    case '6':
+    case _T('6'):
       return 6;
       return 6;
-    case '7':
+    case _T('7'):
       return 7;
       return 7;
-    case '8':
+    case _T('8'):
       return 8;
       return 8;
-    case '9':
+    case _T('9'):
       return 9;
       return 9;
-    case 'A':
+    case _T('A'):
       return 10;
       return 10;
-    case 'B':
+    case _T('B'):
       return 11;
       return 11;
-    case 'C':
+    case _T('C'):
       return 12;
       return 12;
-    case 'D':
+    case _T('D'):
       return 13;
       return 13;
-    case 'E':
+    case _T('E'):
       return 14;
       return 14;
-    case 'F':
+    case _T('F'):
       return 15;
       return 15;
+    #if 0
+    // handling this default outside switch removes warning under Borland 
     default:
       return 0;
     default:
       return 0;
+    #endif
   }
   }
+
   return 0;
 }
 
 // 4-digit hex string to unsigned integer
   return 0;
 }
 
 // 4-digit hex string to unsigned integer
-static unsigned long HexToInt(char *buf)
+static unsigned long HexToInt(wxChar *buf)
 {
   long d1 = (long)(HexToInt1(buf[0])*4096.0) ;
   long d2 = (long)(HexToInt1(buf[1])*256.0) ;
 {
   long d1 = (long)(HexToInt1(buf[0])*4096.0) ;
   long d2 = (long)(HexToInt1(buf[1])*256.0) ;
@@ -1380,12 +1391,12 @@ wxPseudoMetaFile::~wxPseudoMetaFile()
 
 void wxPseudoMetaFile::Clear()
 {
 
 void wxPseudoMetaFile::Clear()
 {
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     delete op;
     delete op;
-    node = node->Next();
+    node = node->GetNext();
   }
   m_ops.Clear();
   m_gdiObjects.Clear();
   }
   m_ops.Clear();
   m_gdiObjects.Clear();
@@ -1396,23 +1407,23 @@ void wxPseudoMetaFile::Clear()
 
 void wxPseudoMetaFile::Draw(wxDC& dc, double xoffset, double yoffset)
 {
 
 void wxPseudoMetaFile::Draw(wxDC& dc, double xoffset, double yoffset)
 {
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     op->Do(dc, xoffset, yoffset);
     op->Do(dc, xoffset, yoffset);
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
 void wxPseudoMetaFile::Scale(double sx, double sy)
 {
   }
 }
 
 void wxPseudoMetaFile::Scale(double sx, double sy)
 {
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     op->Scale(sx, sy);
     op->Scale(sx, sy);
-    node = node->Next();
+    node = node->GetNext();
   }
   m_width *= sx;
   m_height *= sy;
   }
   m_width *= sx;
   m_height *= sy;
@@ -1420,12 +1431,12 @@ void wxPseudoMetaFile::Scale(double sx, double sy)
 
 void wxPseudoMetaFile::Translate(double x, double y)
 {
 
 void wxPseudoMetaFile::Translate(double x, double y)
 {
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     op->Translate(x, y);
     op->Translate(x, y);
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
   }
 }
 
@@ -1436,17 +1447,17 @@ void wxPseudoMetaFile::Rotate(double x, double y, double theta)
   double cosTheta = (double)cos(theta1);
   double sinTheta = (double)sin(theta1);
 
   double cosTheta = (double)cos(theta1);
   double sinTheta = (double)sin(theta1);
 
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     op->Rotate(x, y, theta, sinTheta, cosTheta);
     op->Rotate(x, y, theta, sinTheta, cosTheta);
-    node = node->Next();
+    node = node->GetNext();
   }
   m_currentRotation = theta;
 }
 
   }
   m_currentRotation = theta;
 }
 
-#ifdef PROLOGIO
+#if wxUSE_PROLOGIO
 void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle)
 {
   wxString widthStr;
 void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle)
 {
   wxString widthStr;
@@ -1468,13 +1479,13 @@ void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle)
   clause->AddAttributeValue(outlineStr, (long)m_outlineOp);
 
   // Write GDI objects
   clause->AddAttributeValue(outlineStr, (long)m_outlineOp);
 
   // Write GDI objects
-  char buf[50];
+  wxChar buf[50];
   int i = 1;
   int i = 1;
-  wxNode *node = m_gdiObjects.First();
+  wxNode *node = m_gdiObjects.GetFirst();
   while (node)
   {
   while (node)
   {
-    sprintf(buf, "gdi%d_%d", whichAngle, i);
-    wxObject *obj = (wxObject *)node->Data();
+    wxSprintf(buf, _T("gdi%d_%d"), whichAngle, i);
+    wxObject *obj = (wxObject *)node->GetData();
     wxExpr *expr = NULL;
     if (obj)
     {
     wxExpr *expr = NULL;
     if (obj)
     {
@@ -1523,48 +1534,48 @@ void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle)
       clause->AddAttributeValue(buf, expr);
       i ++;
     }
       clause->AddAttributeValue(buf, expr);
       i ++;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Write drawing operations
   i = 1;
   }
 
   // Write drawing operations
   i = 1;
-  node = m_ops.First();
+  node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    sprintf(buf, "op%d_%d", whichAngle, i);
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxSprintf(buf, _T("op%d_%d"), whichAngle, i);
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     wxExpr *expr = op->WriteExpr(this);
     if (expr)
     {
       clause->AddAttributeValue(buf, expr);
       i ++;
     }
     wxExpr *expr = op->WriteExpr(this);
     if (expr)
     {
       clause->AddAttributeValue(buf, expr);
       i ++;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Write outline and fill GDI op lists (if any)
   }
 
   // Write outline and fill GDI op lists (if any)
-  if (m_outlineColours.Number() > 0)
+  if (m_outlineColours.GetCount() > 0)
   {
     wxExpr *outlineExpr = new wxExpr(wxExprList);
   {
     wxExpr *outlineExpr = new wxExpr(wxExprList);
-    node = m_outlineColours.First();
+    node = m_outlineColours.GetFirst();
     while (node)
     {
     while (node)
     {
-      outlineExpr->Append(new wxExpr((long)node->Data()));
-      node = node->Next();
+      outlineExpr->Append(new wxExpr((long)node->GetData()));
+      node = node->GetNext();
     }
     wxString outlineObjectsStr;
     outlineObjectsStr.Printf(wxT("outline_objects%d"), whichAngle);
 
     clause->AddAttributeValue(outlineObjectsStr, outlineExpr);
   }
     }
     wxString outlineObjectsStr;
     outlineObjectsStr.Printf(wxT("outline_objects%d"), whichAngle);
 
     clause->AddAttributeValue(outlineObjectsStr, outlineExpr);
   }
-  if (m_fillColours.Number() > 0)
+  if (m_fillColours.GetCount() > 0)
   {
     wxExpr *fillExpr = new wxExpr(wxExprList);
   {
     wxExpr *fillExpr = new wxExpr(wxExprList);
-    node = m_fillColours.First();
+    node = m_fillColours.GetFirst();
     while (node)
     {
     while (node)
     {
-      fillExpr->Append(new wxExpr((long)node->Data()));
-      node = node->Next();
+      fillExpr->Append(new wxExpr((long)node->GetData()));
+      node = node->GetNext();
     }
     wxString fillObjectsStr;
     fillObjectsStr.Printf(wxT("fill_objects%d"), whichAngle);
     }
     wxString fillObjectsStr;
     fillObjectsStr.Printf(wxT("fill_objects%d"), whichAngle);
@@ -1597,12 +1608,12 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
   m_rotateable = (iVal != 0);
 
   // Read GDI objects
   m_rotateable = (iVal != 0);
 
   // Read GDI objects
-  char buf[50];
+  wxChar buf[50];
   int i = 1;
   bool keepGoing = TRUE;
   while (keepGoing)
   {
   int i = 1;
   bool keepGoing = TRUE;
   while (keepGoing)
   {
-    sprintf(buf, "gdi%d_%d", whichAngle, i);
+    wxSprintf(buf, _T("gdi%d_%d"), whichAngle, i);
     wxExpr *expr = NULL;
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     wxExpr *expr = NULL;
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
@@ -1668,7 +1679,7 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
   i = 1;
   while (keepGoing)
   {
   i = 1;
   while (keepGoing)
   {
-    sprintf(buf, "op%d_%d", whichAngle, i);
+    wxSprintf(buf, _T("op%d_%d"), whichAngle, i);
     wxExpr *expr = NULL;
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     wxExpr *expr = NULL;
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
@@ -1777,35 +1788,35 @@ void wxPseudoMetaFile::Copy(wxPseudoMetaFile& copy)
   copy.m_outlineOp = m_outlineOp;
 
   // Copy the GDI objects
   copy.m_outlineOp = m_outlineOp;
 
   // Copy the GDI objects
-  wxNode *node = m_gdiObjects.First();
+  wxNode *node = m_gdiObjects.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxObject *obj = (wxObject *)node->Data();
+    wxObject *obj = (wxObject *)node->GetData();
     copy.m_gdiObjects.Append(obj);
     copy.m_gdiObjects.Append(obj);
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Copy the operations
   }
 
   // Copy the operations
-  node = m_ops.First();
+  node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     copy.m_ops.Append(op->Copy(&copy));
     copy.m_ops.Append(op->Copy(&copy));
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Copy the outline/fill operations
   }
 
   // Copy the outline/fill operations
-  node = m_outlineColours.First();
+  node = m_outlineColours.GetFirst();
   while (node)
   {
   while (node)
   {
-    copy.m_outlineColours.Append((wxObject *)node->Data());
-    node = node->Next();
+    copy.m_outlineColours.Append((wxObject *)node->GetData());
+    node = node->GetNext();
   }
   }
-  node = m_fillColours.First();
+  node = m_fillColours.GetFirst();
   while (node)
   {
   while (node)
   {
-    copy.m_fillColours.Append((wxObject *)node->Data());
-    node = node->Next();
+    copy.m_fillColours.Append((wxObject *)node->GetData());
+    node = node->GetNext();
   }
 }
 
   }
 }
 
@@ -1815,10 +1826,10 @@ void wxPseudoMetaFile::Copy(wxPseudoMetaFile& copy)
  *
  */
 
  *
  */
 
-bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *rheight)
+bool wxPseudoMetaFile::LoadFromMetaFile(const wxString& filename, double *rwidth, double *rheight)
 {
 {
-  if (!FileExists(filename))
-    return NULL;
+  if (!wxFileExists(filename))
+    return FALSE;
 
   wxXMetaFile *metaFile = new wxXMetaFile;
 
 
   wxXMetaFile *metaFile = new wxXMetaFile;
 
@@ -1832,10 +1843,10 @@ bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *
   double lastY = 0.0;
 
   // Convert from metafile records to wxDrawnShape records
   double lastY = 0.0;
 
   // Convert from metafile records to wxDrawnShape records
-  wxNode *node = metaFile->metaRecords.First();
+  wxNode *node = metaFile->metaRecords.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxMetaRecord *record = (wxMetaRecord *)node->Data();
+    wxMetaRecord *record = (wxMetaRecord *)node->GetData();
     switch (record->metaFunction)
     {
       case META_SETBKCOLOR:
     switch (record->metaFunction)
     {
       case META_SETBKCOLOR:
@@ -2007,10 +2018,10 @@ bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *
       {
         // The pen, brush etc. has already been created when the metafile
         // was read in, so we don't create it - we set it.
       {
         // The pen, brush etc. has already been created when the metafile
         // was read in, so we don't create it - we set it.
-        wxNode *recNode = metaFile->gdiObjects.Nth((int)record->param2);
+        wxNode *recNode = metaFile->gdiObjects.Item((int)record->param2);
         if (recNode)
         {
         if (recNode)
         {
-          wxMetaRecord *gdiRec = (wxMetaRecord *)recNode->Data();
+          wxMetaRecord *gdiRec = (wxMetaRecord *)recNode->GetData();
           if (gdiRec && (gdiRec->param1 != 0))
           {
             wxObject *obj = (wxObject *)gdiRec->param1;
           if (gdiRec && (gdiRec->param1 != 0))
           {
             wxObject *obj = (wxObject *)gdiRec->param1;
@@ -2125,7 +2136,7 @@ bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *
         break;
       }
     }
         break;
       }
     }
-    node = node->Next();
+    node = node->GetNext();
   }
   double actualWidth = (double)fabs(metaFile->right - metaFile->left);
   double actualHeight = (double)fabs(metaFile->bottom - metaFile->top);
   }
   double actualWidth = (double)fabs(metaFile->right - metaFile->left);
   double actualHeight = (double)fabs(metaFile->bottom - metaFile->top);
@@ -2182,10 +2193,10 @@ void wxPseudoMetaFile::GetBounds(double *boundMinX, double *boundMinY, double *b
   double minX = (double) 99999.9;
   double minY = (double) 99999.9;
 
   double minX = (double) 99999.9;
   double minY = (double) 99999.9;
 
-  wxNode *node = m_ops.First();
+  wxNode *node = m_ops.GetFirst();
   while (node)
   {
   while (node)
   {
-    wxDrawOp *op = (wxDrawOp *)node->Data();
+    wxDrawOp *op = (wxDrawOp *)node->GetData();
     switch (op->GetOp())
     {
       case DRAWOP_DRAW_LINE:
     switch (op->GetOp())
     {
       case DRAWOP_DRAW_LINE:
@@ -2252,7 +2263,7 @@ void wxPseudoMetaFile::GetBounds(double *boundMinX, double *boundMinY, double *b
       default:
         break;
     }
       default:
         break;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 
   *boundMinX = minX;
   }
 
   *boundMinX = minX;
@@ -2390,7 +2401,7 @@ void wxPseudoMetaFile::DrawPolygon(int n, wxPoint pts[], int flags)
     m_ops.Append(theOp);
 
     if (flags & oglMETAFLAGS_OUTLINE)
     m_ops.Append(theOp);
 
     if (flags & oglMETAFLAGS_OUTLINE)
-        m_outlineOp = (m_ops.Number() - 1);
+        m_outlineOp = (m_ops.GetCount() - 1);
 }
 
 void wxPseudoMetaFile::DrawSpline(int n, wxPoint pts[])
 }
 
 void wxPseudoMetaFile::DrawSpline(int n, wxPoint pts[])
@@ -2408,7 +2419,7 @@ void wxPseudoMetaFile::DrawSpline(int n, wxPoint pts[])
 
 void wxPseudoMetaFile::SetClippingRect(const wxRect& rect)
 {
 
 void wxPseudoMetaFile::SetClippingRect(const wxRect& rect)
 {
-    wxOpSetClipping* theOp = new wxOpSetClipping(DRAWOP_SET_CLIPPING_RECT,
+    /* wxOpSetClipping* theOp = */ new wxOpSetClipping(DRAWOP_SET_CLIPPING_RECT,
         (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height);
 }
 
         (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height);
 }
 
@@ -2423,7 +2434,7 @@ void wxPseudoMetaFile::DestroyClippingRect()
 void wxPseudoMetaFile::SetPen(wxPen* pen, bool isOutline)
 {
     m_gdiObjects.Append(pen);
 void wxPseudoMetaFile::SetPen(wxPen* pen, bool isOutline)
 {
     m_gdiObjects.Append(pen);
-    int n = m_gdiObjects.Number();
+    int n = m_gdiObjects.GetCount();
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_PEN, this, n - 1);
 
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_PEN, this, n - 1);
 
@@ -2438,7 +2449,7 @@ void wxPseudoMetaFile::SetPen(wxPen* pen, bool isOutline)
 void wxPseudoMetaFile::SetBrush(wxBrush* brush, bool isFill)
 {
     m_gdiObjects.Append(brush);
 void wxPseudoMetaFile::SetBrush(wxBrush* brush, bool isFill)
 {
     m_gdiObjects.Append(brush);
-    int n = m_gdiObjects.Number();
+    int n = m_gdiObjects.GetCount();
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_BRUSH, this, n - 1);
 
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_BRUSH, this, n - 1);
 
@@ -2453,7 +2464,7 @@ void wxPseudoMetaFile::SetBrush(wxBrush* brush, bool isFill)
 void wxPseudoMetaFile::SetFont(wxFont* font)
 {
     m_gdiObjects.Append(font);
 void wxPseudoMetaFile::SetFont(wxFont* font)
 {
     m_gdiObjects.Append(font);
-    int n = m_gdiObjects.Number();
+    int n = m_gdiObjects.GetCount();
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_FONT, this, n - 1);
 
 
     wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_FONT, this, n - 1);