X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd657b8a5907c8584db84c85535ce281bdd65193..f5766910b6731eb03e82371416e9778203396ce7:/contrib/src/ogl/basic2.cpp?ds=sidebyside diff --git a/contrib/src/ogl/basic2.cpp b/contrib/src/ogl/basic2.cpp index bf4eb57ca4..cecd9d3dbf 100644 --- a/contrib/src/ogl/basic2.cpp +++ b/contrib/src/ogl/basic2.cpp @@ -6,13 +6,9 @@ // Created: 12/07/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "basicp.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -21,11 +17,11 @@ #endif #ifndef WX_PRECOMP -#include +#include "wx/wx.h" #endif -#if wxUSE_DEPRECATED -#include +#if wxUSE_PROLOGIO +#include "wx/deprecated/wxexpr.h" #endif #ifdef new @@ -36,13 +32,8 @@ #include #include -#include -#include -#include -#include -#include -#include -#include +#include "wx/ogl/ogl.h" + // Control point types // Rectangle and most other shapes @@ -68,23 +59,31 @@ void wxPolygonShape::Create(wxList *the_points) { ClearPoints(); - m_originalPoints = the_points; + if (!the_points) + { + m_originalPoints = new wxList; + m_points = new wxList; + } + else + { + m_originalPoints = the_points; - // Duplicate the list of points - m_points = new wxList; + // Duplicate the list of points + m_points = new wxList; - wxNode *node = the_points->GetFirst(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->GetData(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - m_points->Append((wxObject*) new_point); - node = node->GetNext(); + wxObjectList::compatibility_iterator node = the_points->GetFirst(); + while (node) + { + wxRealPoint *point = (wxRealPoint *)node->GetData(); + wxRealPoint *new_point = new wxRealPoint(point->x, point->y); + m_points->Append((wxObject*) new_point); + node = node->GetNext(); + } + CalculateBoundingBox(); + m_originalWidth = m_boundWidth; + m_originalHeight = m_boundHeight; + SetDefaultRegionSize(); } - CalculateBoundingBox(); - m_originalWidth = m_boundWidth; - m_originalHeight = m_boundHeight; - SetDefaultRegionSize(); } wxPolygonShape::~wxPolygonShape() @@ -96,12 +95,12 @@ void wxPolygonShape::ClearPoints() { if (m_points) { - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); delete point; - delete node; + m_points->Erase(node); node = m_points->GetFirst(); } delete m_points; @@ -109,12 +108,12 @@ void wxPolygonShape::ClearPoints() } if (m_originalPoints) { - wxNode *node = m_originalPoints->GetFirst(); + wxObjectList::compatibility_iterator node = m_originalPoints->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); delete point; - delete node; + m_originalPoints->Erase(node); node = m_originalPoints->GetFirst(); } delete m_originalPoints; @@ -138,7 +137,7 @@ void wxPolygonShape::CalculateBoundingBox() double top = 10000; double bottom = -10000; - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -166,7 +165,7 @@ void wxPolygonShape::CalculatePolygonCentre() double top = 10000; double bottom = -10000; - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -199,7 +198,7 @@ void wxPolygonShape::CalculatePolygonCentre() bool PolylineHitTest(double n, double xvec[], double yvec[], double x1, double y1, double x2, double y2) { - bool isAHit = FALSE; + bool isAHit = false; int i; double lastx = xvec[0]; double lasty = yvec[0]; @@ -208,15 +207,12 @@ bool PolylineHitTest(double n, double xvec[], double yvec[], double line_ratio; double other_ratio; -// char buf[300]; for (i = 1; i < n; i++) { oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[i], yvec[i], &line_ratio, &other_ratio); if (line_ratio != 1.0) - isAHit = TRUE; -// sprintf(buf, "Line ratio = %.2f, other ratio = %.2f\n", line_ratio, other_ratio); -// ClipsErrorFunction(buf); + isAHit = true; lastx = xvec[i]; lasty = yvec[i]; @@ -230,14 +226,9 @@ bool PolylineHitTest(double n, double xvec[], double yvec[], oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[0], yvec[0], &line_ratio, &other_ratio); if (line_ratio != 1.0) - isAHit = TRUE; -// sprintf(buf, "Line ratio = %.2f, other ratio = %.2f\n", line_ratio, other_ratio); -// ClipsErrorFunction(buf); + isAHit = true; - if (line_ratio < min_ratio) - min_ratio = line_ratio; } -// ClipsErrorFunction("\n"); return isAHit; } @@ -265,7 +256,7 @@ bool wxPolygonShape::HitTest(double x, double y, int *attachment, double *distan int np = m_points->GetCount(); double *xpoints = new double[np]; double *ypoints = new double[np]; - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); int i = 0; while (node) { @@ -278,13 +269,13 @@ bool wxPolygonShape::HitTest(double x, double y, int *attachment, double *distan // We assume it's inside the polygon UNLESS one or more // lines don't hit the outline. - bool isContained = TRUE; + bool isContained = true; int noPoints = 4; for (i = 0; i < noPoints; i++) { if (!PolylineHitTest(np, xpoints, ypoints, x, y, endPointsX[i], endPointsY[i])) - isContained = FALSE; + isContained = false; } /* if (isContained) @@ -296,7 +287,7 @@ bool wxPolygonShape::HitTest(double x, double y, int *attachment, double *distan delete[] ypoints; if (!isContained) - return FALSE; + return false; int nearest_attachment = 0; @@ -320,12 +311,12 @@ bool wxPolygonShape::HitTest(double x, double y, int *attachment, double *distan } *attachment = nearest_attachment; *distance = nearest; - return TRUE; + return true; } // Really need to be able to reset the shape! Otherwise, if the // points ever go to zero, we've lost it, and can't resize. -void wxPolygonShape::SetSize(double new_width, double new_height, bool recursive) +void wxPolygonShape::SetSize(double new_width, double new_height, bool WXUNUSED(recursive)) { SetAttachmentSize(new_width, new_height); @@ -333,8 +324,8 @@ void wxPolygonShape::SetSize(double new_width, double new_height, bool recursive double x_proportion = (double)(fabs(new_width/m_originalWidth)); double y_proportion = (double)(fabs(new_height/m_originalHeight)); - wxNode *node = m_points->GetFirst(); - wxNode *original_node = m_originalPoints->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); + wxObjectList::compatibility_iterator original_node = m_originalPoints->GetFirst(); while (node && original_node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -357,18 +348,18 @@ void wxPolygonShape::SetSize(double new_width, double new_height, bool recursive void wxPolygonShape::UpdateOriginalPoints() { if (!m_originalPoints) m_originalPoints = new wxList; - wxNode *original_node = m_originalPoints->GetFirst(); + wxObjectList::compatibility_iterator original_node = m_originalPoints->GetFirst(); while (original_node) { - wxNode *next_node = original_node->GetNext(); + wxObjectList::compatibility_iterator next_node = original_node->GetNext(); wxRealPoint *original_point = (wxRealPoint *)original_node->GetData(); delete original_point; - delete original_node; + m_originalPoints->Erase(original_node); original_node = next_node; } - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -384,11 +375,11 @@ void wxPolygonShape::UpdateOriginalPoints() void wxPolygonShape::AddPolygonPoint(int pos) { - wxNode *node = m_points->Item(pos); + wxObjectList::compatibility_iterator node = m_points->Item(pos); if (!node) node = m_points->GetFirst(); wxRealPoint *firstPoint = (wxRealPoint *)node->GetData(); - wxNode *node2 = m_points->Item(pos + 1); + wxObjectList::compatibility_iterator node2 = m_points->Item(pos + 1); if (!node2) node2 = m_points->GetFirst(); wxRealPoint *secondPoint = (wxRealPoint *)node2->GetData(); @@ -396,7 +387,7 @@ void wxPolygonShape::AddPolygonPoint(int pos) double y = (double)((secondPoint->y - firstPoint->y)/2.0 + firstPoint->y); wxRealPoint *point = new wxRealPoint(x, y); - if (pos >= (m_points->GetCount() - 1)) + if (pos >= (int) (m_points->GetCount() - 1)) m_points->Append((wxObject*) point); else m_points->Insert(node2, (wxObject*) point); @@ -412,12 +403,12 @@ void wxPolygonShape::AddPolygonPoint(int pos) void wxPolygonShape::DeletePolygonPoint(int pos) { - wxNode *node = m_points->Item(pos); + wxObjectList::compatibility_iterator node = m_points->Item(pos); if (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); delete point; - delete node; + m_points->Erase(node); UpdateOriginalPoints(); if (m_selected) { @@ -442,7 +433,7 @@ bool wxPolygonShape::GetPerimeterPoint(double x1, double y1, { // Look for the point we'd be connecting to. This is // a heuristic... - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -452,13 +443,13 @@ bool wxPolygonShape::GetPerimeterPoint(double x1, double y1, { *x3 = point->x + m_xpos; *y3 = point->y + m_ypos; - return TRUE; + return true; } else if ((y2 < y1) && (point->y < 0.0)) { *x3 = point->x + m_xpos; *y3 = point->y + m_ypos; - return TRUE; + return true; } } node = node->GetNext(); @@ -468,7 +459,7 @@ bool wxPolygonShape::GetPerimeterPoint(double x1, double y1, double *xpoints = new double[n]; double *ypoints = new double[n]; - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); int i = 0; while (node) { @@ -485,7 +476,7 @@ bool wxPolygonShape::GetPerimeterPoint(double x1, double y1, delete[] xpoints; delete[] ypoints; - return TRUE; + return true; } void wxPolygonShape::OnDraw(wxDC& dc) @@ -546,7 +537,7 @@ void wxPolygonShape::OnDrawOutline(wxDC& dc, double x, double y, double w, doubl // Make as many control points as there are vertices. void wxPolygonShape::MakeControlPoints() { - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -560,8 +551,8 @@ void wxPolygonShape::MakeControlPoints() void wxPolygonShape::ResetControlPoints() { - wxNode *node = m_points->GetFirst(); - wxNode *controlPointNode = m_controlPoints.GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); + wxObjectList::compatibility_iterator controlPointNode = m_controlPoints.GetFirst(); while (node && controlPointNode) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -587,7 +578,7 @@ void wxPolygonShape::WriteAttributes(wxExpr *clause) // Make a list of lists for the coordinates wxExpr *list = new wxExpr(wxExprList); - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -745,7 +736,7 @@ void wxPolygonShape::Copy(wxShape& copy) polyCopy.m_points = new wxList; polyCopy.m_originalPoints = new wxList; - wxNode *node = m_points->GetFirst(); + wxObjectList::compatibility_iterator node = m_points->GetFirst(); while (node) { wxRealPoint *point = (wxRealPoint *)node->GetData(); @@ -770,7 +761,7 @@ void wxPolygonShape::Copy(wxShape& copy) int wxPolygonShape::GetNumberOfAttachments() const { int maxN = (m_points ? (m_points->GetCount() - 1) : 0); - wxNode *node = m_attachmentPoints.GetFirst(); + wxObjectList::compatibility_iterator node = m_attachmentPoints.GetFirst(); while (node) { wxAttachmentPoint *point = (wxAttachmentPoint *)node->GetData(); @@ -784,12 +775,12 @@ int wxPolygonShape::GetNumberOfAttachments() const bool wxPolygonShape::GetAttachmentPosition(int attachment, double *x, double *y, int nth, int no_arcs, wxLineShape *line) { - if ((m_attachmentMode == ATTACHMENT_MODE_EDGE) && m_points && attachment < m_points->GetCount()) + if ((m_attachmentMode == ATTACHMENT_MODE_EDGE) && m_points && attachment < (int) m_points->GetCount()) { wxRealPoint *point = (wxRealPoint *)m_points->Item(attachment)->GetData(); *x = point->x + m_xpos; *y = point->y + m_ypos; - return TRUE; + return true; } else { return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); } @@ -798,20 +789,20 @@ bool wxPolygonShape::GetAttachmentPosition(int attachment, double *x, double *y, bool wxPolygonShape::AttachmentIsValid(int attachment) const { if (!m_points) - return FALSE; + return false; - if ((attachment >= 0) && (attachment < m_points->GetCount())) - return TRUE; + if ((attachment >= 0) && (attachment < (int) m_points->GetCount())) + return true; - wxNode *node = m_attachmentPoints.GetFirst(); + wxObjectList::compatibility_iterator node = m_attachmentPoints.GetFirst(); while (node) { wxAttachmentPoint *point = (wxAttachmentPoint *)node->GetData(); if (point->m_id == attachment) - return TRUE; + return true; node = node->GetNext(); } - return FALSE; + return false; } // Rotate about the given axis by the given amount in radians @@ -822,7 +813,7 @@ void wxPolygonShape::Rotate(double x, double y, double theta) // Rotate attachment points double sinTheta = (double)sin(actualTheta); double cosTheta = (double)cos(actualTheta); - wxNode *node = m_attachmentPoints.GetFirst(); + wxObjectList::compatibility_iterator node = m_attachmentPoints.GetFirst(); while (node) { wxAttachmentPoint *point = (wxAttachmentPoint *)node->GetData(); @@ -911,7 +902,7 @@ void wxRectangleShape::GetBoundingBoxMin(double *the_width, double *the_height) *the_height = m_height; } -void wxRectangleShape::SetSize(double x, double y, bool recursive) +void wxRectangleShape::SetSize(double x, double y, bool WXUNUSED(recursive)) { SetAttachmentSize(x, y); m_width = (double)wxMax(x, 1.0); @@ -925,7 +916,7 @@ void wxRectangleShape::SetCornerRadius(double rad) } // Assume (x1, y1) is centre of box (most generally, line end at box) -bool wxRectangleShape::GetPerimeterPoint(double x1, double y1, +bool wxRectangleShape::GetPerimeterPoint(double WXUNUSED(x1), double WXUNUSED(y1), double x2, double y2, double *x3, double *y3) { @@ -933,7 +924,7 @@ bool wxRectangleShape::GetPerimeterPoint(double x1, double y1, GetBoundingBoxMax(&bound_x, &bound_y); oglFindEndForBox(bound_x, bound_y, m_xpos, m_ypos, x2, y2, x3, y3); - return TRUE; + return true; } #if wxUSE_PROLOGIO @@ -1000,7 +991,7 @@ wxTextShape::wxTextShape(double width, double height): { } -void wxTextShape::OnDraw(wxDC& dc) +void wxTextShape::OnDraw(wxDC& WXUNUSED(dc)) { } @@ -1041,7 +1032,7 @@ bool wxEllipseShape::GetPerimeterPoint(double x1, double y1, // oglFindEndForBox(bound_x, bound_y, m_xpos, m_ypos, x2, y2, x3, y3); oglDrawArcToEllipse(m_xpos, m_ypos, bound_x, bound_y, x2, y2, x1, y1, x3, y3); - return TRUE; + return true; } void wxEllipseShape::OnDraw(wxDC& dc) @@ -1068,7 +1059,7 @@ void wxEllipseShape::OnDraw(wxDC& dc) dc.DrawEllipse((long) (m_xpos - GetWidth()/2), (long) (m_ypos - GetHeight()/2), (long) GetWidth(), (long) GetHeight()); } -void wxEllipseShape::SetSize(double x, double y, bool recursive) +void wxEllipseShape::SetSize(double x, double y, bool WXUNUSED(recursive)) { SetAttachmentSize(x, y); m_width = x; @@ -1180,13 +1171,12 @@ bool wxEllipseShape::GetAttachmentPosition(int attachment, double *x, double *y, default: { return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); - break; } } - return TRUE; + return true; } else - { *x = m_xpos; *y = m_ypos; return TRUE; } + { *x = m_xpos; *y = m_ypos; return true; } } @@ -1195,7 +1185,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxCircleShape, wxEllipseShape) wxCircleShape::wxCircleShape(double diameter):wxEllipseShape(diameter, diameter) { - SetMaintainAspectRatio(TRUE); + SetMaintainAspectRatio(true); } void wxCircleShape::Copy(wxShape& copy) @@ -1203,7 +1193,7 @@ void wxCircleShape::Copy(wxShape& copy) wxEllipseShape::Copy(copy); } -bool wxCircleShape::GetPerimeterPoint(double x1, double y1, +bool wxCircleShape::GetPerimeterPoint(double WXUNUSED(x1), double WXUNUSED(y1), double x2, double y2, double *x3, double *y3) { @@ -1212,7 +1202,7 @@ bool wxCircleShape::GetPerimeterPoint(double x1, double y1, x2, y2, // Other end of line x3, y3); - return TRUE; + return true; } // Control points @@ -1238,8 +1228,8 @@ wxControlPoint::wxControlPoint(wxShapeCanvas *theCanvas, wxShape *object, double SetPen(g_oglBlackForegroundPen); SetBrush(wxBLACK_BRUSH); m_oldCursor = NULL; - m_visible = TRUE; - m_eraseObject = TRUE; + m_visible = true; + m_eraseObject = true; } wxControlPoint::~wxControlPoint() @@ -1247,7 +1237,7 @@ wxControlPoint::~wxControlPoint() } // Don't even attempt to draw any text - waste of time! -void wxControlPoint::OnDrawContents(wxDC& dc) +void wxControlPoint::OnDrawContents(wxDC& WXUNUSED(dc)) { } @@ -1284,16 +1274,16 @@ int wxControlPoint::GetNumberOfAttachments() const return 1; } -bool wxControlPoint::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) +bool wxControlPoint::GetAttachmentPosition(int WXUNUSED(attachment), double *x, double *y, + int WXUNUSED(nth), int WXUNUSED(no_arcs), wxLineShape *WXUNUSED(line)) { *x = m_xpos; *y = m_ypos; - return TRUE; + return true; } // Control points ('handles') redirect control to the actual shape, to make it easier // to override sizing behaviour. -void wxShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) +void wxShape::OnSizingDragLeft(wxControlPoint* pt, bool WXUNUSED(draw), double x, double y, int keys, int WXUNUSED(attachment)) { double bound_x; double bound_y; @@ -1304,7 +1294,7 @@ void wxShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y dc.SetLogicalFunction(OGLRBLF); - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); + wxPen dottedPen(*wxBLACK, 1, wxDOT); dc.SetPen(dottedPen); dc.SetBrush((* wxTRANSPARENT_BRUSH)); @@ -1400,7 +1390,7 @@ void wxShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y } } -void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) +void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int WXUNUSED(attachment)) { m_canvas->CaptureMouse(); @@ -1416,6 +1406,7 @@ void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int double bound_x; double bound_y; this->GetBoundingBoxMin(&bound_x, &bound_y); + this->GetEventHandler()->OnBeginSize(bound_x, bound_y); // Choose the 'opposite corner' of the object as the stationary // point in case this is non-centring resizing. @@ -1438,7 +1429,7 @@ void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int pt->sm_controlPointDragStartWidth = bound_x; pt->sm_controlPointDragStartHeight = bound_y; - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); + wxPen dottedPen(*wxBLACK, 1, wxDOT); dc.SetPen(dottedPen); dc.SetBrush((* wxTRANSPARENT_BRUSH)); @@ -1532,7 +1523,7 @@ void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int } } -void wxShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) +void wxShape::OnSizingEndDragLeft(wxControlPoint* pt, double WXUNUSED(x), double WXUNUSED(y), int WXUNUSED(keys), int WXUNUSED(attachment)) { wxClientDC dc(GetCanvas()); GetCanvas()->PrepareDC(dc); @@ -1545,7 +1536,7 @@ void wxShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int ke this->Erase(dc); /* if (!pt->m_eraseObject) - this->Show(FALSE); + this->Show(false); */ this->SetSize(pt->sm_controlPointDragEndWidth, pt->sm_controlPointDragEndHeight); @@ -1564,12 +1555,12 @@ void wxShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int ke /* if (!eraseIt) - theObject->Show(TRUE); + theObject->Show(true); */ // Recursively redraw links if we have a composite. if (theObject->GetChildren().GetCount() > 0) - theObject->DrawLinks(dc, -1, TRUE); + theObject->DrawLinks(dc, -1, true); double width, height; theObject->GetBoundingBoxMax(&width, &height); @@ -1629,7 +1620,7 @@ void wxPolygonControlPoint::OnEndDragLeft(double x, double y, int keys, int atta // Control points ('handles') redirect control to the actual shape, to make it easier // to override sizing behaviour. -void wxPolygonShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) +void wxPolygonShape::OnSizingDragLeft(wxControlPoint* pt, bool WXUNUSED(draw), double x, double y, int WXUNUSED(keys), int WXUNUSED(attachment)) { wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; @@ -1638,11 +1629,11 @@ void wxPolygonShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, d dc.SetLogicalFunction(OGLRBLF); - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); + wxPen dottedPen(*wxBLACK, 1, wxDOT); dc.SetPen(dottedPen); dc.SetBrush((* wxTRANSPARENT_BRUSH)); - if (0) // keys & KEY_CTRL) + #if 0 // keys & KEY_CTRL) { // TODO: mend this code. Currently we rely on altering the // actual points, but we should assume we're not, as per @@ -1657,16 +1648,17 @@ void wxPolygonShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, d ((wxPolygonShape *)this)->CalculateBoundingBox(); ((wxPolygonShape *)this)->CalculatePolygonCentre(); } - else + #else { ppt->CalculateNewSize(x, y); } + #endif this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), ppt->GetNewSize().x, ppt->GetNewSize().y); } -void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) +void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int WXUNUSED(keys), int WXUNUSED(attachment)) { wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; @@ -1689,11 +1681,11 @@ void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double if (ppt->m_originalDistance == 0.0) ppt->m_originalDistance = (double) 0.0001; - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); + wxPen dottedPen(*wxBLACK, 1, wxDOT); dc.SetPen(dottedPen); dc.SetBrush((* wxTRANSPARENT_BRUSH)); - if (0) // keys & KEY_CTRL) + #if 0 // keys & KEY_CTRL) { // TODO: mend this code. Currently we rely on altering the // actual points, but we should assume we're not, as per @@ -1708,10 +1700,11 @@ void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double ((wxPolygonShape *)this)->CalculateBoundingBox(); ((wxPolygonShape *)this)->CalculatePolygonCentre(); } - else + #else { ppt->CalculateNewSize(x, y); } + #endif this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), ppt->GetNewSize().x, ppt->GetNewSize().y); @@ -1719,7 +1712,7 @@ void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double m_canvas->CaptureMouse(); } -void wxPolygonShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) +void wxPolygonShape::OnSizingEndDragLeft(wxControlPoint* pt, double WXUNUSED(x), double WXUNUSED(y), int keys, int WXUNUSED(attachment)) { wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; @@ -1773,11 +1766,11 @@ wxShapeRegion::wxShapeRegion() m_textColour = wxT("BLACK"); m_penColour = wxT("BLACK"); m_penStyle = wxSOLID; - m_actualColourObject = NULL; + m_actualColourObject = wxTheColourDatabase->Find(wxT("BLACK")); m_actualPenObject = NULL; } -wxShapeRegion::wxShapeRegion(wxShapeRegion& region) +wxShapeRegion::wxShapeRegion(wxShapeRegion& region):wxObject() { m_regionText = region.m_regionText; m_regionName = region.m_regionName; @@ -1794,13 +1787,13 @@ wxShapeRegion::wxShapeRegion(wxShapeRegion& region) m_regionProportionX = region.m_regionProportionX; m_regionProportionY = region.m_regionProportionY; m_formatMode = region.m_formatMode; - m_actualColourObject = NULL; + m_actualColourObject = region.m_actualColourObject; m_actualPenObject = NULL; m_penStyle = region.m_penStyle; m_penColour = region.m_penColour; ClearText(); - wxNode *node = region.m_formattedText.GetFirst(); + wxObjectList::compatibility_iterator node = region.m_formattedText.GetFirst(); while (node) { wxShapeTextLine *line = (wxShapeTextLine *)node->GetData(); @@ -1818,13 +1811,13 @@ wxShapeRegion::~wxShapeRegion() void wxShapeRegion::ClearText() { - wxNode *node = m_formattedText.GetFirst(); + wxObjectList::compatibility_iterator node = m_formattedText.GetFirst(); while (node) { wxShapeTextLine *line = (wxShapeTextLine *)node->GetData(); - wxNode *next = node->GetNext(); + wxObjectList::compatibility_iterator next = node->GetNext(); delete line; - delete node; + m_formattedText.Erase(node); node = next; } } @@ -1866,15 +1859,12 @@ void wxShapeRegion::SetFormatMode(int mode) void wxShapeRegion::SetColour(const wxString& col) { m_textColour = col; - m_actualColourObject = NULL; + m_actualColourObject = col; } -wxColour *wxShapeRegion::GetActualColourObject() +wxColour wxShapeRegion::GetActualColourObject() { - if (!m_actualColourObject) - m_actualColourObject = wxTheColourDatabase->FindColour(GetColour()); - if (!m_actualColourObject) - m_actualColourObject = wxBLACK; + m_actualColourObject = wxTheColourDatabase->Find(GetColour()); return m_actualColourObject; }