]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/lines.cpp
Applied patch by Johan van Zyl
[wxWidgets.git] / contrib / src / ogl / lines.cpp
index 850c19434bb8ffa12209203954adad7ae7e19dff..5db7a490462e08cc8d4970c875ed44eeff293948 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__
@@ -34,7 +34,6 @@
 #endif
 
 #include <ctype.h>
-#include <math.h>
 
 #include "wx/ogl/ogl.h"
 
@@ -45,7 +44,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxLineShape, wxShape)
 wxLineShape::wxLineShape()
 {
   m_sensitivity = OP_CLICK_LEFT | OP_CLICK_RIGHT;
-  m_draggable = FALSE;
+  m_draggable = false;
   m_attachmentTo = 0;
   m_attachmentFrom = 0;
 /*
@@ -54,11 +53,11 @@ wxLineShape::wxLineShape()
 */
   m_from = NULL;
   m_to = NULL;
-  m_erasing = FALSE;
+  m_erasing = false;
   m_arrowSpacing = 5.0; // For the moment, don't bother saving this to file.
-  m_ignoreArrowOffsets = FALSE;
-  m_isSpline = FALSE;
-  m_maintainStraightLines = FALSE;
+  m_ignoreArrowOffsets = false;
+  m_isSpline = false;
+  m_maintainStraightLines = false;
   m_alignmentStart = 0;
   m_alignmentEnd = 0;
 
@@ -97,7 +96,7 @@ wxLineShape::~wxLineShape()
   {
     if (m_labelObjects[i])
     {
-      m_labelObjects[i]->Select(FALSE);
+      m_labelObjects[i]->Select(false);
       m_labelObjects[i]->RemoveFromCanvas(m_canvas);
       delete m_labelObjects[i];
       m_labelObjects[i] = NULL;
@@ -115,8 +114,7 @@ void wxLineShape::MakeLineControlPoints(int n)
   }
   m_lineControlPoints = new wxList;
 
-  int i = 0;
-  for (i = 0; i < n; i++)
+  for (int i = 0; i < n; i++)
   {
     wxRealPoint *point = new wxRealPoint(-999, -999);
     m_lineControlPoints->Append((wxObject*) point);
@@ -145,7 +143,7 @@ wxNode *wxLineShape::InsertLineControlPoint(wxDC* dc)
 bool wxLineShape::DeleteLineControlPoint()
 {
   if (m_lineControlPoints->GetCount() < 3)
-    return FALSE;
+    return false;
 
   wxNode *last = m_lineControlPoints->GetLast();
   wxNode *second_last = last->GetPrevious();
@@ -154,7 +152,7 @@ bool wxLineShape::DeleteLineControlPoint()
   delete second_last_point;
   delete second_last;
 
-  return TRUE;
+  return true;
 }
 
 void wxLineShape::Initialise()
@@ -243,7 +241,7 @@ void wxLineShape::FormatText(wxDC& dc, const wxString& s, int i)
       EraseRegion(dc, region, xx, yy);
       if (m_labelObjects[i])
       {
-        m_labelObjects[i]->Select(FALSE, &dc);
+        m_labelObjects[i]->Select(false, &dc);
         m_labelObjects[i]->Erase(dc);
         m_labelObjects[i]->SetSize(actualW, actualH);
       }
@@ -252,13 +250,13 @@ void wxLineShape::FormatText(wxDC& dc, const wxString& s, int i)
 
       if (m_labelObjects[i])
       {
-        m_labelObjects[i]->Select(TRUE, & dc);
+        m_labelObjects[i]->Select(true, & dc);
         m_labelObjects[i]->Draw(dc);
       }
     }
   }
   oglCentreText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, actualW, actualH, region->GetFormatMode());
-  m_formatted = TRUE;
+  m_formatted = true;
 }
 
 void wxLineShape::DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y)
@@ -288,7 +286,7 @@ void wxLineShape::DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y
       dc.DrawRectangle((long)(xp - w/2.0), (long)(yp - h/2.0), (long)w, (long)h);
 
       if (m_pen) dc.SetPen(* m_pen);
-      dc.SetTextForeground(region->GetActualColourObject());
+      dc.SetTextForeground(region->GetActualColourObject());
 
 #ifdef __WXMSW__
       dc.SetTextBackground(GetBackgroundBrush().GetColour());
@@ -465,10 +463,10 @@ void wxLineShape::SetAttachments(int from_attach, int to_attach)
 bool wxLineShape::HitTest(double x, double y, int *attachment, double *distance)
 {
   if (!m_lineControlPoints)
-    return FALSE;
+    return false;
 
   // Look at label regions in case mouse is over a label
-  bool inLabelRegion = FALSE;
+  bool inLabelRegion = false;
   for (int i = 0; i < 3; i ++)
   {
     wxNode *regionNode = m_regions.Item(i);
@@ -490,7 +488,7 @@ bool wxLineShape::HitTest(double x, double y, int *attachment, double *distance)
         double rBottom = (double)(cy + (ch/2.0));
         if (x > rLeft && x < rRight && y > rTop && y < rBottom)
         {
-          inLabelRegion = TRUE;
+          inLabelRegion = true;
           i = 3;
         }
       }
@@ -521,12 +519,12 @@ bool wxLineShape::HitTest(double x, double y, int *attachment, double *distance)
     {
       *attachment = 0;
       *distance = distance_from_seg;
-      return TRUE;
+      return true;
     }
 
     node = node->GetNext();
   }
-  return FALSE;
+  return false;
 }
 
 void wxLineShape::DrawArrows(wxDC& dc)
@@ -546,10 +544,10 @@ void wxLineShape::DrawArrows(wxDC& dc)
       {
         if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets)
           // If specified, x offset is proportional to line length
-          DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE);
+          DrawArrow(dc, arrow, arrow->GetXOffset(), true);
         else
         {
-          DrawArrow(dc, arrow, startArrowPos, FALSE);      // Absolute distance
+          DrawArrow(dc, arrow, startArrowPos, false);      // Absolute distance
           startArrowPos += arrow->GetSize() + arrow->GetSpacing();
         }
         break;
@@ -557,10 +555,10 @@ void wxLineShape::DrawArrows(wxDC& dc)
       case ARROW_POSITION_END:
       {
         if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets)
-          DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE);
+          DrawArrow(dc, arrow, arrow->GetXOffset(), true);
         else
         {
-          DrawArrow(dc, arrow, endArrowPos, FALSE);
+          DrawArrow(dc, arrow, endArrowPos, false);
           endArrowPos += arrow->GetSize() + arrow->GetSpacing();
         }
         break;
@@ -569,10 +567,10 @@ void wxLineShape::DrawArrows(wxDC& dc)
       {
         arrow->SetXOffset(middleArrowPos);
         if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets)
-          DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE);
+          DrawArrow(dc, arrow, arrow->GetXOffset(), true);
         else
         {
-          DrawArrow(dc, arrow, middleArrowPos, FALSE);
+          DrawArrow(dc, arrow, middleArrowPos, false);
           middleArrowPos += arrow->GetSize() + arrow->GetSpacing();
         }
         break;
@@ -595,10 +593,10 @@ void wxLineShape::DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool p
   wxRealPoint *second_last_line_point = (wxRealPoint *)second_last_line_node->GetData();
 
   // Position where we want to start drawing
-  double positionOnLineX, positionOnLineY;
+  double positionOnLineX = 0.0, positionOnLineY = 0.0;
 
   // Position of start point of line, at the end of which we draw the arrow.
-  double startPositionX, startPositionY;
+  double startPositionX = 0.0 , startPositionY = 0.0;
 
   switch (arrow->GetPosition())
   {
@@ -669,7 +667,7 @@ void wxLineShape::DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool p
    * Add yOffset to arrow, if any
    */
 
-  const double myPi = (double) 3.14159265;
+  const double myPi = (double) M_PI;
   // The translation that the y offset may give
   double deltaX = 0.0;
   double deltaY = 0.0;
@@ -691,7 +689,7 @@ void wxLineShape::DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool p
      double y3 = positionOnLineY;
      double d = -arrow->GetYOffset(); // Negate so +offset is above line
 
-     double theta = 0.0;
+     double theta;
      if (x3 == x1)
        theta = (double)(myPi/2.0);
      else
@@ -746,7 +744,7 @@ void wxLineShape::DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool p
 
       dc.SetPen(* m_pen);
       if (arrow->_GetType() == ARROW_HOLLOW_CIRCLE)
-        dc.SetBrush(* g_oglWhiteBackgroundBrush);
+        dc.SetBrush(GetBackgroundBrush());
       else
         dc.SetBrush(* m_brush);
 
@@ -880,10 +878,10 @@ void wxLineShape::OnErase(wxDC& dc)
     }
     else
     {
-      m_erasing = TRUE;
+      m_erasing = true;
       GetEventHandler()->OnDraw(dc);
       GetEventHandler()->OnEraseControlPoints(dc);
-      m_erasing = FALSE;
+      m_erasing = false;
     }
 
     if (old_pen) SetPen(old_pen);
@@ -967,7 +965,7 @@ void wxLineShape::OnDrawOutline(wxDC& dc, double WXUNUSED(x), double WXUNUSED(y)
   wxPen *old_pen = m_pen;
   wxBrush *old_brush = m_brush;
 
-  wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+  wxPen dottedPen(*wxBLACK, 1, wxDOT);
   SetPen(& dottedPen);
   SetBrush( wxTRANSPARENT_BRUSH );
 
@@ -1019,7 +1017,7 @@ bool wxLineShape::OnMovePre(wxDC& dc, double x, double y, double old_x, double o
       m_labelObjects[i]->Move(dc, xp+xr, yp+yr);
     }
   }
-  return TRUE;
+  return true;
 }
 
 void wxLineShape::OnMoveLink(wxDC& dc, bool moveControlPoints)
@@ -1091,8 +1089,8 @@ void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, d
 
   // Do each end - nothing in the middle. User has to move other points
   // manually if necessary.
-  double end_x, end_y;
-  double other_end_x, other_end_y;
+  double end_x = 0.0, end_y = 0.0;
+  double other_end_x = 0.0, other_end_y = 0.0;
 
   wxNode *first = m_lineControlPoints->GetFirst();
   /* wxRealPoint *first_point = */ (wxRealPoint *)first->GetData();
@@ -1110,7 +1108,7 @@ void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, d
     if (m_from->GetAttachmentMode() != ATTACHMENT_MODE_NONE)
     {
       int nth, no_arcs;
-      FindNth(m_from, &nth, &no_arcs, FALSE); // Not incoming
+      FindNth(m_from, &nth, &no_arcs, false); // Not incoming
       m_from->GetAttachmentPosition(m_attachmentFrom, &end_x, &end_y, nth, no_arcs, this);
     }
     else
@@ -1121,7 +1119,7 @@ void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, d
     if (m_to->GetAttachmentMode() != ATTACHMENT_MODE_NONE)
     {
       int nth, no_arcs;
-      FindNth(m_to, &nth, &no_arcs, TRUE); // Incoming
+      FindNth(m_to, &nth, &no_arcs, true); // Incoming
       m_to->GetAttachmentPosition(m_attachmentTo, &other_end_x, &other_end_y, nth, no_arcs, this);
     }
     else
@@ -1139,7 +1137,7 @@ void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, d
     if (m_from->GetAttachmentMode() != ATTACHMENT_MODE_NONE)
     {
       int nth, no_arcs;
-      FindNth(m_from, &nth, &no_arcs, FALSE);
+      FindNth(m_from, &nth, &no_arcs, false);
       m_from->GetAttachmentPosition(m_attachmentFrom, &end_x, &end_y, nth, no_arcs, this);
       fromX = end_x;
       fromY = end_y;
@@ -1148,7 +1146,7 @@ void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, d
     if (m_to->GetAttachmentMode() != ATTACHMENT_MODE_NONE)
     {
       int nth, no_arcs;
-      FindNth(m_to, &nth, &no_arcs, TRUE);
+      FindNth(m_to, &nth, &no_arcs, true);
       m_to->GetAttachmentPosition(m_attachmentTo, &other_end_x, &other_end_y, nth, no_arcs, this);
       toX = other_end_x;
       toY = other_end_y;
@@ -1551,7 +1549,7 @@ void wxLineShape::ReadAttributes(wxExpr *clause)
       wxExpr *spacingExpr = node->Nth(7);
 
       if (type_expr)
-        arrowType = (int)type_expr->IntegerValue();
+          arrowType = (WXTYPE)type_expr->IntegerValue();
       if (end_expr)
         arrowEnd = (int)end_expr->IntegerValue();
       if (dist_expr)
@@ -1653,16 +1651,16 @@ void wxLineShape::Select(bool select, wxDC* dc)
           GetLabelPosition(i, &xx, &yy);
           if (m_labelObjects[i])
           {
-            m_labelObjects[i]->Select(FALSE);
+            m_labelObjects[i]->Select(false);
             m_labelObjects[i]->RemoveFromCanvas(m_canvas);
             delete m_labelObjects[i];
           }
           m_labelObjects[i] = OnCreateLabelShape(this, region, w, h);
           m_labelObjects[i]->AddToCanvas(m_canvas);
-          m_labelObjects[i]->Show(TRUE);
+          m_labelObjects[i]->Show(true);
           if (dc)
             m_labelObjects[i]->Move(*dc, (double)(x + xx), (double)(y + yy));
-          m_labelObjects[i]->Select(TRUE, dc);
+          m_labelObjects[i]->Select(true, dc);
         }
       }
     }
@@ -1673,7 +1671,7 @@ void wxLineShape::Select(bool select, wxDC* dc)
     {
       if (m_labelObjects[i])
       {
-        m_labelObjects[i]->Select(FALSE, dc);
+        m_labelObjects[i]->Select(false, dc);
         m_labelObjects[i]->Erase(*dc);
         m_labelObjects[i]->RemoveFromCanvas(m_canvas);
         delete m_labelObjects[i];
@@ -1735,7 +1733,7 @@ void wxLineShape::OnSizingDragLeft(wxControlPoint* pt, bool WXUNUSED(draw), doub
 
   dc.SetLogicalFunction(OGLRBLF);
 
-  wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+  wxPen dottedPen(*wxBLACK, 1, wxDOT);
   dc.SetPen(dottedPen);
   dc.SetBrush((* wxTRANSPARENT_BRUSH));
 
@@ -1751,11 +1749,11 @@ void wxLineShape::OnSizingDragLeft(wxControlPoint* pt, bool WXUNUSED(draw), doub
     wxPen *old_pen = lineShape->GetPen();
     wxBrush *old_brush = lineShape->GetBrush();
 
-    wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+    wxPen dottedPen(*wxBLACK, 1, wxDOT);
     lineShape->SetPen(& dottedPen);
     lineShape->SetBrush(wxTRANSPARENT_BRUSH);
 
-    lineShape->GetEventHandler()->OnMoveLink(dc, FALSE);
+    lineShape->GetEventHandler()->OnMoveLink(dc, false);
 
     lineShape->SetPen(old_pen);
     lineShape->SetBrush(old_brush);
@@ -1790,7 +1788,7 @@ void wxLineShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y,
     lineShape->GetTo()->OnDraw(dc);
     lineShape->GetTo()->OnDrawContents(dc);
 
-    this->SetDisableLabel(TRUE);
+    this->SetDisableLabel(true);
     dc.SetLogicalFunction(OGLRBLF);
 
     lpt->m_xpos = x; lpt->m_ypos = y;
@@ -1799,11 +1797,11 @@ void wxLineShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y,
     wxPen *old_pen = lineShape->GetPen();
     wxBrush *old_brush = lineShape->GetBrush();
 
-    wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+    wxPen dottedPen(*wxBLACK, 1, wxDOT);
     lineShape->SetPen(& dottedPen);
     lineShape->SetBrush(wxTRANSPARENT_BRUSH);
 
-    lineShape->GetEventHandler()->OnMoveLink(dc, FALSE);
+    lineShape->GetEventHandler()->OnMoveLink(dc, false);
 
     lineShape->SetPen(old_pen);
     lineShape->SetBrush(old_brush);
@@ -1823,7 +1821,7 @@ void wxLineShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, in
   wxClientDC dc(GetCanvas());
   GetCanvas()->PrepareDC(dc);
 
-  this->SetDisableLabel(FALSE);
+  this->SetDisableLabel(false);
   wxLineShape *lineShape = (wxLineShape *)this;
 
   if (lpt->m_type == CONTROL_POINT_LINE)
@@ -1892,7 +1890,7 @@ bool wxLineShape::OnMoveMiddleControlPoint(wxDC& dc, wxLineControlPoint* lpt, co
 
     GetEventHandler()->OnMoveLink(dc);
 
-    return TRUE;
+    return true;
 }
 
 // Implement movement of endpoint to a new attachment
@@ -2024,7 +2022,7 @@ bool wxLineShape::AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int
   wxNode *refNode = referenceList.GetFirst();
   wxNode *currNode = m_arcArrows.GetFirst();
   wxString targetName(arrow->GetName());
-  if (!refNode) return FALSE;
+  if (!refNode) return false;
 
   // First check whether we need to insert in front of list,
   // because this arrowhead is the first in the reference
@@ -2033,12 +2031,12 @@ bool wxLineShape::AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int
   if (refArrow->GetName() == targetName)
   {
     m_arcArrows.Insert(arrow);
-    return TRUE;
+    return true;
   }
 
+  wxArrowHead *currArrow = (wxArrowHead *)currNode->GetData();
   while (refNode && currNode)
   {
-    wxArrowHead *currArrow = (wxArrowHead *)currNode->GetData();
     refArrow = (wxArrowHead *)refNode->GetData();
 
     // Matching: advance current arrow pointer
@@ -2058,12 +2056,12 @@ bool wxLineShape::AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int
         m_arcArrows.Insert(currNode, arrow);
       else
         m_arcArrows.Append(arrow);
-      return TRUE;
+      return true;
     }
     refNode = refNode->GetNext();
   }
   m_arcArrows.Append(arrow);
-  return TRUE;
+  return true;
 }
 
 void wxLineShape::ClearArrowsAtPosition(int end)
@@ -2123,11 +2121,11 @@ bool wxLineShape::ClearArrow(const wxString& name)
     {
       delete arrow;
       delete node;
-      return TRUE;
+      return true;
     }
     node = node->GetNext();
   }
-  return FALSE;
+  return false;
 }
 
 /*
@@ -2178,11 +2176,11 @@ bool wxLineShape::DeleteArrowHead(int position, const wxString& name)
     {
       delete arrow;
       delete node;
-      return TRUE;
+      return true;
     }
     node = node->GetNext();
   }
-  return FALSE;
+  return false;
 }
 
 // Overloaded DeleteArrowHead: pass arrowhead id.
@@ -2196,11 +2194,11 @@ bool wxLineShape::DeleteArrowHead(long id)
     {
       delete arrow;
       delete node;
-      return TRUE;
+      return true;
     }
     node = node->GetNext();
   }
-  return FALSE;
+  return false;
 }
 
 /*
@@ -2318,7 +2316,7 @@ int wxLineShape::GetAlignmentType(bool isEnd)
 wxRealPoint *wxLineShape::GetNextControlPoint(wxShape *nodeObject)
 {
   int n = m_lineControlPoints->GetCount();
-  int nn = 0;
+  int nn;
   if (m_to == nodeObject)
   {
     // Must be END of line, so we want (n - 1)th control point.
@@ -2332,7 +2330,7 @@ wxRealPoint *wxLineShape::GetNextControlPoint(wxShape *nodeObject)
     return (wxRealPoint *)node->GetData();
   }
   else
-    return FALSE;
+    return NULL;
 }
 
 /*
@@ -2357,7 +2355,7 @@ wxArrowHead::wxArrowHead(WXTYPE type, int end, double size, double dist, const w
     m_id = wxNewId();
 }
 
-wxArrowHead::wxArrowHead(wxArrowHead& toCopy)
+wxArrowHead::wxArrowHead(wxArrowHead& toCopy):wxObject()
 {
   m_arrowType = toCopy.m_arrowType; m_arrowEnd = toCopy.GetArrowEnd();
   m_arrowSize = toCopy.m_arrowSize;
@@ -2409,7 +2407,7 @@ wxLabelShape::wxLabelShape(wxLineShape *parent, wxShapeRegion *region, double w,
 {
   m_lineShape = parent;
   m_shapeRegion = region;
-  SetPen(wxThePenList->FindOrCreatePen(wxColour(0, 0, 0), 1, wxDOT));
+  SetPen(wxThePenList->FindOrCreatePen(*wxBLACK, 1, wxDOT));
 }
 
 wxLabelShape::~wxLabelShape()
@@ -2497,7 +2495,7 @@ bool wxLineShape::OnLabelMovePre(wxDC& dc, wxLabelShape* labelShape, double x, d
     labelShape->FormatText(dc, s, i);
     DrawRegion(dc, labelShape->m_shapeRegion, xx, yy);
   }
-  return TRUE;
+  return true;
 }
 
 // Divert left and right clicks to line object