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
This commit is contained in:
Julian Smart 2004-01-02 11:56:21 +00:00
parent 6f40108088
commit 4b7eab302f
4 changed files with 37 additions and 17 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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()