From 4b7eab302f12688ad0fb272ac56500e29014432d Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 2 Jan 2004 11:56:21 +0000 Subject: [PATCH] wxShapeRegion::SetText shouldn't append to formatted strings list Addition of accessors to allow an app to do alternate diagram streaming git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- contrib/include/wx/ogl/basic.h | 12 ++++++++++- contrib/include/wx/ogl/basicp.h | 2 +- contrib/include/wx/ogl/lines.h | 2 ++ contrib/src/ogl/basic2.cpp | 38 ++++++++++++++++++++------------- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/contrib/include/wx/ogl/basic.h b/contrib/include/wx/ogl/basic.h index 2c2ee17563..5839382e33 100644 --- a/contrib/include/wx/ogl/basic.h +++ b/contrib/include/wx/ogl/basic.h @@ -400,6 +400,7 @@ class WXDLLIMPEXP_OGL wxShape: public wxShapeEvtHandler int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); virtual int GetNumberOfAttachments() const; virtual bool AttachmentIsValid(int attachment) const; + virtual wxList& GetAttachments() { return m_attachmentPoints; } // Only get the attachment position at the _edge_ of the shape, ignoring // branching mode. This is used e.g. to indicate the edge of interest, not the point @@ -506,7 +507,8 @@ class WXDLLIMPEXP_OGL wxShape: public wxShapeEvtHandler // Rotate about the given axis by the given amount in radians. virtual void Rotate(double x, double y, double theta); - virtual inline double GetRotation() const { return m_rotation; } + virtual double GetRotation() const { return m_rotation; } + virtual void SetRotation(double rotation) { m_rotation = rotation; } void ClearAttachments(); @@ -629,10 +631,17 @@ class WXDLLIMPEXP_OGL wxPolygonShape: public wxShape void Copy(wxShape& copy); inline wxList *GetPoints() { return m_points; } + inline wxList *GetOriginalPoints() { return m_originalPoints; } // Rotate about the given axis by the given amount in radians virtual void Rotate(double x, double y, double theta); + double GetOriginalWidth() const { return m_originalWidth; } + double GetOriginalHeight() const { return m_originalHeight; } + + void SetOriginalWidth(double w) { m_originalWidth = w; } + void SetOriginalHeight(double h) { m_originalHeight = h; } + private: wxList* m_points; wxList* m_originalPoints; @@ -654,6 +663,7 @@ class WXDLLIMPEXP_OGL wxRectangleShape: public wxShape void OnDraw(wxDC& dc); void SetSize(double x, double y, bool recursive = TRUE); void SetCornerRadius(double rad); // If > 0, rounded corners + double GetCornerRadius() const { return m_cornerRadius; } #if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); diff --git a/contrib/include/wx/ogl/basicp.h b/contrib/include/wx/ogl/basicp.h index 5c5b40317a..6c0e1e8368 100644 --- a/contrib/include/wx/ogl/basicp.h +++ b/contrib/include/wx/ogl/basicp.h @@ -138,7 +138,7 @@ class WXDLLIMPEXP_OGL wxShapeRegion: public wxObject // Accessors inline void SetText(const wxString& s) - { m_regionText = s; m_formattedText.Append(new wxShapeTextLine(0,0,s));} + { m_regionText = s; } void SetFont(wxFont *f); void SetMinSize(double w, double h); void SetSize(double w, double h); diff --git a/contrib/include/wx/ogl/lines.h b/contrib/include/wx/ogl/lines.h index 4ecf39fd18..a7f2f96ec0 100644 --- a/contrib/include/wx/ogl/lines.h +++ b/contrib/include/wx/ogl/lines.h @@ -248,6 +248,8 @@ class WXDLLIMPEXP_OGL wxLineShape: public wxShape void SetAlignmentType(bool isEnd, int alignType); bool GetAlignmentOrientation(bool isEnd); int GetAlignmentType(bool isEnd); + int GetAlignmentStart() const { return m_alignmentStart; } + int GetAlignmentEnd() const { return m_alignmentEnd; } // Find next control point in line after the start/end point // (depending on whether the node object is at start or end) diff --git a/contrib/src/ogl/basic2.cpp b/contrib/src/ogl/basic2.cpp index b79a6c7545..b65c7df5b2 100644 --- a/contrib/src/ogl/basic2.cpp +++ b/contrib/src/ogl/basic2.cpp @@ -63,23 +63,31 @@ void wxPolygonShape::Create(wxList *the_points) { ClearPoints(); - m_originalPoints = the_points; - - // Duplicate the list of points - m_points = new wxList; - - wxNode *node = the_points->GetFirst(); - while (node) + if (!the_points) { - wxRealPoint *point = (wxRealPoint *)node->GetData(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - m_points->Append((wxObject*) new_point); - node = node->GetNext(); + m_originalPoints = new wxList; + m_points = new wxList; + } + else + { + m_originalPoints = the_points; + + // 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(); + } + CalculateBoundingBox(); + m_originalWidth = m_boundWidth; + m_originalHeight = m_boundHeight; + SetDefaultRegionSize(); } - CalculateBoundingBox(); - m_originalWidth = m_boundWidth; - m_originalHeight = m_boundHeight; - SetDefaultRegionSize(); } wxPolygonShape::~wxPolygonShape() -- 2.45.2