]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/ogldiag.cpp
Avoid warnings from mgl headers if possible.
[wxWidgets.git] / contrib / src / ogl / ogldiag.cpp
index 2eac01591a692eef7c72428b3f58ef29eff1b8fa..5c5a23a60f952bfcdc486295a935785a1eea9049 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     12/07/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
@@ -14,7 +14,7 @@
 #endif
 
 // For compilers that support precompilation, includes "wx.h".
-#include <wx/wxprec.h>
+#include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 #pragma hdrstop
 #include <wx/wx.h>
 #endif
 
-#include <wx/wxexpr.h>
-
-#if wxUSE_IOSTREAMH
-#include <iostream.h>
-#include <fstream.h>
-#else
-#include <iostream>
-#include <fstream>
-#ifdef _MSC_VER
-//using namespace std;
+#if wxUSE_PROLOGIO
+#include <wx/deprecated/wxexpr.h>
 #endif
+
+#ifdef new
+#undef new
 #endif
 
 #include <ctype.h>
 #include <math.h>
 #include <stdlib.h>
 
-#include <wx/ogl/basic.h>
-#include <wx/ogl/basicp.h>
-#include <wx/ogl/canvas.h>
-#include <wx/ogl/ogldiag.h>
-#include <wx/ogl/lines.h>
-#include <wx/ogl/composit.h>
-#include <wx/ogl/misc.h>
+#include "wx/ogl/ogl.h"
+
 
 IMPLEMENT_DYNAMIC_CLASS(wxDiagram, wxObject)
 
@@ -55,8 +45,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxDiagram, wxObject)
 wxDiagram::wxDiagram()
 {
   m_diagramCanvas = NULL;
-  m_quickEditMode = FALSE;
-  m_snapToGrid = TRUE;
+  m_quickEditMode = false;
+  m_snapToGrid = true;
   m_gridSpacing = 5.0;
   m_shapeList = new wxList;
   m_mouseTolerance = DEFAULT_MOUSE_TOLERANCE;
@@ -94,15 +84,15 @@ void wxDiagram::Redraw(wxDC& dc)
   {
     if (GetCanvas())
       GetCanvas()->SetCursor(* wxHOURGLASS_CURSOR);
-    wxNode *current = m_shapeList->First();
+    wxNode *current = m_shapeList->GetFirst();
 
     while (current)
     {
-      wxShape *object = (wxShape *)current->Data();
+      wxShape *object = (wxShape *)current->GetData();
       if (!object->GetParent())
         object->Draw(dc);
 
-      current = current->Next();
+      current = current->GetNext();
     }
     if (GetCanvas())
       GetCanvas()->SetCursor(* wxSTANDARD_CURSOR);
@@ -125,8 +115,8 @@ void wxDiagram::AddShape(wxShape *object, wxShape *addAfter)
   {
     if (nodeAfter)
     {
-      if (nodeAfter->Next())
-        m_shapeList->Insert(nodeAfter->Next(), object);
+      if (nodeAfter->GetNext())
+        m_shapeList->Insert(nodeAfter->GetNext(), object);
       else
         m_shapeList->Append(object);
     }
@@ -155,37 +145,37 @@ void wxDiagram::RemoveAllShapes()
 
 void wxDiagram::DeleteAllShapes()
 {
-  wxNode *node = m_shapeList->First();
+  wxNode *node = m_shapeList->GetFirst();
   while (node)
   {
-    wxShape *shape = (wxShape *)node->Data();
+    wxShape *shape = (wxShape *)node->GetData();
     if (!shape->GetParent())
     {
       RemoveShape(shape);
       delete shape;
-      node = m_shapeList->First();
+      node = m_shapeList->GetFirst();
     }
     else
-      node = node->Next();
+      node = node->GetNext();
   }
 }
 
 void wxDiagram::ShowAll(bool show)
 {
-  wxNode *current = m_shapeList->First();
+  wxNode *current = m_shapeList->GetFirst();
 
   while (current)
   {
-    wxShape *object = (wxShape *)current->Data();
+    wxShape *object = (wxShape *)current->GetData();
     object->Show(show);
 
-    current = current->Next();
+    current = current->GetNext();
   }
 }
 
 void wxDiagram::DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2)
 {
-  wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+  wxPen dottedPen(*wxBLACK, 1, wxDOT);
   dc.SetPen(dottedPen);
   dc.SetBrush((* wxTRANSPARENT_BRUSH));
 
@@ -211,17 +201,17 @@ void wxDiagram::DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2
 // Make sure all text that should be centred, is centred.
 void wxDiagram::RecentreAll(wxDC& dc)
 {
-  wxNode *object_node = m_shapeList->First();
+  wxNode *object_node = m_shapeList->GetFirst();
   while (object_node)
   {
-    wxShape *obj = (wxShape *)object_node->Data();
+    wxShape *obj = (wxShape *)object_node->GetData();
     obj->Recentre(dc);
-    object_node = object_node->Next();
+    object_node = object_node->GetNext();
   }
 }
 
 // Input/output
-#ifdef PROLOGIO
+#if wxUSE_PROLOGIO
 bool wxDiagram::SaveFile(const wxString& filename)
 {
   wxBeginBusyCursor();
@@ -229,38 +219,38 @@ bool wxDiagram::SaveFile(const wxString& filename)
   wxExprDatabase *database = new wxExprDatabase;
 
   // First write the diagram type
-  wxExpr *header = new wxExpr("diagram");
+  wxExpr *header = new wxExpr(_T("diagram"));
   OnHeaderSave(*database, *header);
 
   database->Append(header);
 
-  wxNode *node = m_shapeList->First();
+  wxNode *node = m_shapeList->GetFirst();
   while (node)
   {
-    wxShape *shape = (wxShape *)node->Data();
+    wxShape *shape = (wxShape *)node->GetData();
 
     if (!shape->IsKindOf(CLASSINFO(wxControlPoint)))
     {
-      wxExpr *expr = NULL;
+      wxExpr *expr;
       if (shape->IsKindOf(CLASSINFO(wxLineShape)))
-        expr = new wxExpr("line");
+        expr = new wxExpr(_T("line"));
        else
-        expr = new wxExpr("shape");
+        expr = new wxExpr(_T("shape"));
 
       OnShapeSave(*database, *shape, *expr);
     }
-    node = node->Next();
+    node = node->GetNext();
   }
   OnDatabaseSave(*database);
 
-  char tempFile[400];
-  wxGetTempFileName("diag", tempFile);
-  FILE* file = fopen(tempFile, "w");
+  wxString tempFile;
+  wxGetTempFileName(wxT("diag"), tempFile);
+  FILE* file = fopen(tempFile.mb_str(wxConvFile), "w");
   if (! file)
   {
     wxEndBusyCursor();
     delete database;
-    return FALSE;
+    return false;
   }
 
   database->Write(file);
@@ -295,37 +285,37 @@ bool wxDiagram::SaveFile(const wxString& filename)
   }
 
   wxEndBusyCursor();
-  return TRUE;
+  return true;
 }
 
 bool wxDiagram::LoadFile(const wxString& filename)
 {
   wxBeginBusyCursor();
 
-  wxExprDatabase database(wxExprInteger, "id");
+  wxExprDatabase database(wxExprInteger, _T("id"));
   if (!database.Read(filename))
   {
     wxEndBusyCursor();
-    return FALSE;
+    return false;
   }
 
   DeleteAllShapes();
 
   database.BeginFind();
-  wxExpr *header = database.FindClauseByFunctor("diagram");
+  wxExpr *header = database.FindClauseByFunctor(_T("diagram"));
 
   if (header)
     OnHeaderLoad(database, *header);
 
   // Scan through all clauses and register the ids
-  wxNode *node = database.First();
+  wxNode *node = database.GetFirst();
   while (node)
   {
-    wxExpr *clause = (wxExpr *)node->Data();
+    wxExpr *clause = (wxExpr *)node->GetData();
     long id = -1;
-    clause->GetAttributeValue("id", id);
+    clause->GetAttributeValue(_T("id"), id);
     wxRegisterId(id);
-    node = node->Next();
+    node = node->GetNext();
   }
 
   ReadNodes(database);
@@ -336,21 +326,21 @@ bool wxDiagram::LoadFile(const wxString& filename)
 
   wxEndBusyCursor();
 
-  return TRUE;
+  return true;
 }
 
 void wxDiagram::ReadNodes(wxExprDatabase& database)
 {
   // Find and create the node images
   database.BeginFind();
-  wxExpr *clause = database.FindClauseByFunctor("shape");
+  wxExpr *clause = database.FindClauseByFunctor(_T("shape"));
   while (clause)
   {
-    char *type = NULL;
+    wxChar *type = NULL;
     long parentId = -1;
 
-    clause->AssignAttributeValue("type", &type);
-    clause->AssignAttributeValue("parent", &parentId);
+    clause->AssignAttributeValue(wxT("type"), &type);
+    clause->AssignAttributeValue(wxT("parent"), &parentId);
     wxClassInfo *classInfo = wxClassInfo::FindClass(type);
     if (classInfo)
     {
@@ -358,14 +348,14 @@ void wxDiagram::ReadNodes(wxExprDatabase& database)
       OnShapeLoad(database, *shape, *clause);
 
       shape->SetCanvas(GetCanvas());
-      shape->Show(TRUE);
+      shape->Show(true);
 
       m_shapeList->Append(shape);
 
       // If child of composite, link up
       if (parentId > -1)
       {
-        wxExpr *parentExpr = database.HashFind("shape", parentId);
+        wxExpr *parentExpr = database.HashFind(_T("shape"), parentId);
         if (parentExpr && parentExpr->GetClientData())
         {
           wxShape *parent = (wxShape *)parentExpr->GetClientData();
@@ -379,7 +369,7 @@ void wxDiagram::ReadNodes(wxExprDatabase& database)
     if (type)
       delete[] type;
 
-    clause = database.FindClauseByFunctor("shape");
+    clause = database.FindClauseByFunctor(_T("shape"));
   }
   return;
 }
@@ -387,34 +377,34 @@ void wxDiagram::ReadNodes(wxExprDatabase& database)
 void wxDiagram::ReadLines(wxExprDatabase& database)
 {
   database.BeginFind();
-  wxExpr *clause = database.FindClauseByFunctor("line");
+  wxExpr *clause = database.FindClauseByFunctor(_T("line"));
   while (clause)
   {
-    wxString type("");
+    wxString type;
     long parentId = -1;
 
-    clause->GetAttributeValue("type", type);
-    clause->GetAttributeValue("parent", parentId);
-    wxClassInfo *classInfo = wxClassInfo::FindClass((char*) (const char*) type);
+    clause->GetAttributeValue(_T("type"), type);
+    clause->GetAttributeValue(_T("parent"), parentId);
+    wxClassInfo *classInfo = wxClassInfo::FindClass(type);
     if (classInfo)
     {
       wxLineShape *shape = (wxLineShape *)classInfo->CreateObject();
-      shape->Show(TRUE);
+      shape->Show(true);
 
       OnShapeLoad(database, *shape, *clause);
       shape->SetCanvas(GetCanvas());
 
       long image_to = -1; long image_from = -1;
-      clause->GetAttributeValue("to", image_to);
-      clause->GetAttributeValue("from", image_from);
+      clause->GetAttributeValue(_T("to"), image_to);
+      clause->GetAttributeValue(_T("from"), image_from);
 
-      wxExpr *image_to_expr = database.HashFind("shape", image_to);
+      wxExpr *image_to_expr = database.HashFind(_T("shape"), image_to);
 
       if (!image_to_expr)
       {
         // Error
       }
-      wxExpr *image_from_expr = database.HashFind("shape", image_from);
+      wxExpr *image_from_expr = database.HashFind(_T("shape"), image_from);
 
       if (!image_from_expr)
       {
@@ -436,7 +426,7 @@ void wxDiagram::ReadLines(wxExprDatabase& database)
       m_shapeList->Append(shape);
     }
 
-    clause = database.FindClauseByFunctor("line");
+    clause = database.FindClauseByFunctor(_T("line"));
   }
 }
 
@@ -446,7 +436,7 @@ void wxDiagram::ReadLines(wxExprDatabase& database)
 void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
 {
   database.BeginFind();
-  wxExpr *clause = database.FindClauseByFunctor("shape");
+  wxExpr *clause = database.FindClauseByFunctor(_T("shape"));
   while (clause)
   {
     wxShape *image = (wxShape *)clause->GetClientData();
@@ -456,7 +446,7 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
       wxExpr *divisionExpr = NULL;
 
       // Find the list of divisions in the composite
-      clause->GetAttributeValue("divisions", &divisionExpr);
+      clause->GetAttributeValue(_T("divisions"), &divisionExpr);
       if (divisionExpr)
       {
         int i = 0;
@@ -464,7 +454,7 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
         while (idExpr)
         {
           long divisionId = idExpr->IntegerValue();
-          wxExpr *childExpr = database.HashFind("shape", divisionId);
+          wxExpr *childExpr = database.HashFind(_T("shape"), divisionId);
           if (childExpr && childExpr->GetClientData())
           {
             wxDivisionShape *child = (wxDivisionShape *)childExpr->GetClientData();
@@ -475,13 +465,13 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
             long topSideId = -1;
             long rightSideId = -1;
             long bottomSideId = -1;
-            childExpr->GetAttributeValue("left_side", leftSideId);
-            childExpr->GetAttributeValue("top_side", topSideId);
-            childExpr->GetAttributeValue("right_side", rightSideId);
-            childExpr->GetAttributeValue("bottom_side", bottomSideId);
+            childExpr->GetAttributeValue(_T("left_side"), leftSideId);
+            childExpr->GetAttributeValue(_T("top_side"), topSideId);
+            childExpr->GetAttributeValue(_T("right_side"), rightSideId);
+            childExpr->GetAttributeValue(_T("bottom_side"), bottomSideId);
             if (leftSideId > -1)
             {
-              wxExpr *leftExpr = database.HashFind("shape", leftSideId);
+              wxExpr *leftExpr = database.HashFind(_T("shape"), leftSideId);
               if (leftExpr && leftExpr->GetClientData())
               {
                 wxDivisionShape *leftSide = (wxDivisionShape *)leftExpr->GetClientData();
@@ -490,7 +480,7 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
             }
             if (topSideId > -1)
             {
-              wxExpr *topExpr = database.HashFind("shape", topSideId);
+              wxExpr *topExpr = database.HashFind(_T("shape"), topSideId);
               if (topExpr && topExpr->GetClientData())
               {
                 wxDivisionShape *topSide = (wxDivisionShape *)topExpr->GetClientData();
@@ -499,7 +489,7 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
             }
             if (rightSideId > -1)
             {
-              wxExpr *rightExpr = database.HashFind("shape", rightSideId);
+              wxExpr *rightExpr = database.HashFind(_T("shape"), rightSideId);
               if (rightExpr && rightExpr->GetClientData())
               {
                 wxDivisionShape *rightSide = (wxDivisionShape *)rightExpr->GetClientData();
@@ -508,7 +498,7 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
             }
             if (bottomSideId > -1)
             {
-              wxExpr *bottomExpr = database.HashFind("shape", bottomSideId);
+              wxExpr *bottomExpr = database.HashFind(_T("shape"), bottomSideId);
               if (bottomExpr && bottomExpr->GetClientData())
               {
                 wxDivisionShape *bottomSide = (wxDivisionShape *)bottomExpr->GetClientData();
@@ -522,19 +512,19 @@ void wxDiagram::ReadContainerGeometry(wxExprDatabase& database)
       }
     }
 
-    clause = database.FindClauseByFunctor("shape");
+    clause = database.FindClauseByFunctor(_T("shape"));
   }
 }
 
 // Allow for modifying file
-bool wxDiagram::OnDatabaseLoad(wxExprDatabase& db)
+bool wxDiagram::OnDatabaseLoad(wxExprDatabase& WXUNUSED(db))
 {
-  return TRUE;
+  return true;
 }
 
-bool wxDiagram::OnDatabaseSave(wxExprDatabase& db)
+bool wxDiagram::OnDatabaseSave(wxExprDatabase& WXUNUSED(db))
 {
-  return TRUE;
+  return true;
 }
 
 bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
@@ -544,33 +534,33 @@ bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
 
   if (shape.IsKindOf(CLASSINFO(wxCompositeShape)))
   {
-    wxNode *node = shape.GetChildren().First();
+    wxNode *node = shape.GetChildren().GetFirst();
     while (node)
     {
-      wxShape *childShape = (wxShape *)node->Data();
-      wxExpr *childExpr = new wxExpr("shape");
+      wxShape *childShape = (wxShape *)node->GetData();
+      wxExpr *childExpr = new wxExpr(_T("shape"));
       OnShapeSave(db, *childShape, *childExpr);
-      node = node->Next();
+      node = node->GetNext();
     }
   }
 
-  return TRUE;
+  return true;
 }
 
-bool wxDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
+bool wxDiagram::OnShapeLoad(wxExprDatabase& WXUNUSED(db), wxShape& shape, wxExpr& expr)
 {
   shape.ReadAttributes(&expr);
-  return TRUE;
+  return true;
 }
 
-bool wxDiagram::OnHeaderSave(wxExprDatabase& db, wxExpr& expr)
+bool wxDiagram::OnHeaderSave(wxExprDatabase& WXUNUSED(db), wxExpr& WXUNUSED(expr))
 {
-  return TRUE;
+  return true;
 }
 
-bool wxDiagram::OnHeaderLoad(wxExprDatabase& db, wxExpr& expr)
+bool wxDiagram::OnHeaderLoad(wxExprDatabase& WXUNUSED(db), wxExpr& WXUNUSED(expr))
 {
-  return TRUE;
+  return true;
 }
 
 #endif
@@ -583,13 +573,13 @@ void wxDiagram::SetCanvas(wxShapeCanvas *can)
 // Find a shape by its id
 wxShape* wxDiagram::FindShape(long id) const
 {
-    wxNode* node = GetShapeList()->First();
+    wxNode* node = GetShapeList()->GetFirst();
     while (node)
     {
-        wxShape* shape = (wxShape*) node->Data();
+        wxShape* shape = (wxShape*) node->GetData();
         if (shape->GetId() == id)
             return shape;
-        node = node->Next();
+        node = node->GetNext();
     }
     return NULL;
 }
@@ -609,27 +599,27 @@ wxLineCrossings::~wxLineCrossings()
 void wxLineCrossings::FindCrossings(wxDiagram& diagram)
 {
     ClearCrossings();
-    wxNode* node1 = diagram.GetShapeList()->First();
+    wxNode* node1 = diagram.GetShapeList()->GetFirst();
     while (node1)
     {
-        wxShape* shape1 = (wxShape*) node1->Data();
+        wxShape* shape1 = (wxShape*) node1->GetData();
         if (shape1->IsKindOf(CLASSINFO(wxLineShape)))
         {
             wxLineShape* lineShape1 = (wxLineShape*) shape1;
             // Iterate through the segments
             wxList* pts1 = lineShape1->GetLineControlPoints();
-            int i;
-            for (i = 0; i < (pts1->Number() - 1); i++)
+            size_t i;
+            for (i = 0; i < (pts1->GetCount() - 1); i++)
             {
-                wxRealPoint* pt1_a = (wxRealPoint*) (pts1->Nth(i)->Data());
-                wxRealPoint* pt1_b = (wxRealPoint*) (pts1->Nth(i+1)->Data());
+                wxRealPoint* pt1_a = (wxRealPoint*) (pts1->Item(i)->GetData());
+                wxRealPoint* pt1_b = (wxRealPoint*) (pts1->Item(i+1)->GetData());
 
                 // Now we iterate through the segments again
 
-                wxNode* node2 = diagram.GetShapeList()->First();
+                wxNode* node2 = diagram.GetShapeList()->GetFirst();
                 while (node2)
                 {
-                    wxShape* shape2 = (wxShape*) node2->Data();
+                    wxShape* shape2 = (wxShape*) node2->GetData();
 
                     // Assume that the same line doesn't cross itself
                     if (shape2->IsKindOf(CLASSINFO(wxLineShape)) && (shape1 != shape2))
@@ -638,10 +628,10 @@ void wxLineCrossings::FindCrossings(wxDiagram& diagram)
                         // Iterate through the segments
                         wxList* pts2 = lineShape2->GetLineControlPoints();
                         int j;
-                        for (j = 0; j < (pts2->Number() - 1); j++)
+                        for (j = 0; j < (int) (pts2->GetCount() - 1); j++)
                         {
-                            wxRealPoint* pt2_a = (wxRealPoint*) (pts2->Nth(j)->Data());
-                            wxRealPoint* pt2_b = (wxRealPoint*) (pts2->Nth(j+1)->Data());
+                            wxRealPoint* pt2_a = (wxRealPoint*) (pts2->Item(j)->GetData());
+                            wxRealPoint* pt2_b = (wxRealPoint*) (pts2->Item(j+1)->GetData());
 
                             // Now let's see if these two segments cross.
                             double ratio1, ratio2;
@@ -668,25 +658,25 @@ void wxLineCrossings::FindCrossings(wxDiagram& diagram)
                             }
                         }
                     }
-                    node2 = node2->Next();
+                    node2 = node2->GetNext();
                 }
             }
         }
 
-        node1 = node1->Next();
+        node1 = node1->GetNext();
     }
 }
 
-void wxLineCrossings::DrawCrossings(wxDiagram& diagram, wxDC& dc)
+void wxLineCrossings::DrawCrossings(wxDiagram& WXUNUSED(diagram), wxDC& dc)
 {
     dc.SetBrush(*wxTRANSPARENT_BRUSH);
 
     long arcWidth = 8;
 
-    wxNode* node = m_crossings.First();
+    wxNode* node = m_crossings.GetFirst();
     while (node)
     {
-        wxLineCrossing* crossing = (wxLineCrossing*) node->Data();
+        wxLineCrossing* crossing = (wxLineCrossing*) node->GetData();
 //        dc.DrawEllipse((long) (crossing->m_intersect.x - (arcWidth/2.0) + 0.5), (long) (crossing->m_intersect.y - (arcWidth/2.0) + 0.5),
 //           arcWidth, arcWidth);
 
@@ -738,18 +728,18 @@ void wxLineCrossings::DrawCrossings(wxDiagram& diagram, wxDC& dc)
         dc.SetPen(*wxWHITE_PEN);
         dc.DrawLine( (long) arcX1, (long) arcY1, (long) arcX2, (long) arcY2 );
 
-        node = node->Next();
+        node = node->GetNext();
     }
 }
 
 void wxLineCrossings::ClearCrossings()
 {
-    wxNode* node = m_crossings.First();
+    wxNode* node = m_crossings.GetFirst();
     while (node)
     {
-        wxLineCrossing* crossing = (wxLineCrossing*) node->Data();
+        wxLineCrossing* crossing = (wxLineCrossing*) node->GetData();
         delete crossing;
-        node = node->Next();
+        node = node->GetNext();
     }
     m_crossings.Clear();
 }