// Created: 12/07/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#endif
#include <ctype.h>
-#include <math.h>
#include "wx/ogl/ogl.h"
wxLineShape::wxLineShape()
{
m_sensitivity = OP_CLICK_LEFT | OP_CLICK_RIGHT;
- m_draggable = FALSE;
+ m_draggable = false;
m_attachmentTo = 0;
m_attachmentFrom = 0;
/*
*/
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;
{
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;
}
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);
bool wxLineShape::DeleteLineControlPoint()
{
if (m_lineControlPoints->GetCount() < 3)
- return FALSE;
+ return false;
wxNode *last = m_lineControlPoints->GetLast();
wxNode *second_last = last->GetPrevious();
delete second_last_point;
delete second_last;
- return TRUE;
+ return true;
}
void wxLineShape::Initialise()
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);
}
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)
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());
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);
double rBottom = (double)(cy + (ch/2.0));
if (x > rLeft && x < rRight && y > rTop && y < rBottom)
{
- inLabelRegion = TRUE;
+ inLabelRegion = true;
i = 3;
}
}
{
*attachment = 0;
*distance = distance_from_seg;
- return TRUE;
+ return true;
}
node = node->GetNext();
}
- return FALSE;
+ return false;
}
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;
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;
{
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;
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())
{
* 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;
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
dc.SetPen(* m_pen);
if (arrow->_GetType() == ARROW_HOLLOW_CIRCLE)
- dc.SetBrush(* g_oglWhiteBackgroundBrush);
+ dc.SetBrush(GetBackgroundBrush());
else
dc.SetBrush(* m_brush);
}
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);
m_labelObjects[i]->Move(dc, xp+xr, yp+yr);
}
}
- return TRUE;
+ return true;
}
void wxLineShape::OnMoveLink(wxDC& dc, bool moveControlPoints)
// 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();
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
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
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;
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;
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);
}
}
}
{
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];
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);
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;
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);
wxClientDC dc(GetCanvas());
GetCanvas()->PrepareDC(dc);
- this->SetDisableLabel(FALSE);
+ this->SetDisableLabel(false);
wxLineShape *lineShape = (wxLineShape *)this;
if (lpt->m_type == CONTROL_POINT_LINE)
GetEventHandler()->OnMoveLink(dc);
- return TRUE;
+ return true;
}
// Implement movement of endpoint to a new attachment
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
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
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)
{
delete arrow;
delete node;
- return TRUE;
+ return true;
}
node = node->GetNext();
}
- return FALSE;
+ return false;
}
/*
{
delete arrow;
delete node;
- return TRUE;
+ return true;
}
node = node->GetNext();
}
- return FALSE;
+ return false;
}
// Overloaded DeleteArrowHead: pass arrowhead id.
{
delete arrow;
delete node;
- return TRUE;
+ return true;
}
node = node->GetNext();
}
- return FALSE;
+ return false;
}
/*
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.
return (wxRealPoint *)node->GetData();
}
else
- return FALSE;
+ return NULL;
}
/*
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;
labelShape->FormatText(dc, s, i);
DrawRegion(dc, labelShape->m_shapeRegion, xx, yy);
}
- return TRUE;
+ return true;
}
// Divert left and right clicks to line object