Updated OGL documentation and tidied up some code

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1998-09-08 14:38:35 +00:00
parent d6d1892b89
commit 6f5f3ca0fe
26 changed files with 1034 additions and 748 deletions

View File

@@ -2,8 +2,18 @@
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage} \setfooter{\thepage}{}{}{}{}{\thepage}
Version 3.0, September 8th 1998
\begin{itemize}\itemsep=0pt
\item Version for wxWindows 2.0.
\item Various enhancements especially to wxDrawnShape
(multiple metafiles, for different orientations).
\item More ability to override functions e.g. OnSizeDragLeft, so events can be
intercepted for Do/Undo.
\end{itemize}
Version 2.0, June 1st 1996 Version 2.0, June 1st 1996
\begin{itemize}\itemsep=0pt \begin{itemize}\itemsep=0pt
\item First publically released version. \item First publicly released version.
\end{itemize} \end{itemize}

File diff suppressed because it is too large Load Diff

View File

@@ -21,8 +21,8 @@ These are the files that comprise the \ogl\ library.
\item[basic.h] Header for basic objects such as wxShape and wxRectangleShape. \item[basic.h] Header for basic objects such as wxShape and wxRectangleShape.
\item[basic.cpp] Basic objects implementation (1). \item[basic.cpp] Basic objects implementation (1).
\item[basic2.cpp] Basic objects implementation (2). \item[basic2.cpp] Basic objects implementation (2).
\item[bitmap.cpp] wxBitmapShape class header. \item[bmpshape.h] wxBitmapShape class header.
\item[bitmap.cpp] wxBitmapShape implementation. \item[bmpshape.cpp] wxBitmapShape implementation.
\item[canvas.h] wxShapeCanvas class header. \item[canvas.h] wxShapeCanvas class header.
\item[canvas.cpp] wxShapeCanvas class implementation. \item[canvas.cpp] wxShapeCanvas class implementation.
\item[composit.h] Composite object class header. \item[composit.h] Composite object class header.
@@ -40,6 +40,8 @@ These are the files that comprise the \ogl\ library.
\item[misc.cpp] Miscellaneous graphics functions implementation. \item[misc.cpp] Miscellaneous graphics functions implementation.
\item[ogldiag.h] wxDiagram class header. \item[ogldiag.h] wxDiagram class header.
\item[ogldiag.cpp] wxDiagram implementation. \item[ogldiag.cpp] wxDiagram implementation.
\item[mfutils.h] Metafile utilities header.
\item[mfutils.cpp] Metafile utilities implementation.
\end{description} \end{description}

View File

@@ -1,11 +1,19 @@
\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} \documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}
\newcommand{\ogl}[0]{{OGL}} \newcommand{\ogl}[0]{{OGL}}%
\definecolour{black}{0}{0}{0}%
\definecolour{cyan}{0}{255}{255}%
\definecolour{green}{0}{255}{0}%
\definecolour{magenta}{255}{0}{255}%
\definecolour{red}{255}{0}{0}%
\definecolour{blue}{0}{0}{200}%
\definecolour{yellow}{255}{255}{0}%
\definecolour{white}{255}{255}{255}%
\input psbox.tex \input psbox.tex
\parindent 0pt \parindent 0pt
\parskip 11pt \parskip 11pt
\title{Manual for Object Graphics Library 3.0} \title{Manual for Object Graphics Library 3.0}
\author{Julian Smart} \author{Julian Smart}
\date{July 1998} \date{September 1998}
\makeindex \makeindex
\begin{document} \begin{document}

View File

@@ -14,47 +14,6 @@ housekeeping logic required to get it up and running. OGLEdit also provides
a demonstration of the Undo/Redo capability supported by the document/view classes, a demonstration of the Undo/Redo capability supported by the document/view classes,
and how a typical application might implement this feature. and how a typical application might implement this feature.
{\it Note:} A bug in the wxWindows document/view implementation before
version 1.66C may cause Do/Undo to misbehave and get out of sync. If this is the case,
please replace wxCommandProcessor::Submit with the following in wx\_doc.cpp.
{\small
\begin{verbatim}
Bool wxCommandProcessor::Submit(wxCommand *command, Bool storeIt)
{
Bool success = command->Do();
if (success && storeIt)
{
if (commands.Number() == maxNoCommands)
{
wxNode *firstNode = commands.First();
wxCommand *firstCommand = (wxCommand *)firstNode->Data();
delete firstCommand;
delete firstNode;
}
// Correct a bug: we must chop off the current 'branch'
// so that we're at the end of the command list.
if (currentCommand)
{
wxNode *node = currentCommand->Next();
while (node)
{
wxNode *next = node->Next();
delete node;
node = next;
}
}
commands.Append(command);
currentCommand = commands.Last();
SetMenuStrings();
}
return success;
}
\end{verbatim}
}
\section{OGLEdit files} \section{OGLEdit files}
OGLEdit comprises the following source files. OGLEdit comprises the following source files.

View File

@@ -1,3 +1,4 @@
; Last change: JS 8 Sep 98 2:54 pm
runTwice = yes runTwice = yes
titleFontSize = 12 titleFontSize = 12
authorFontSize = 10 authorFontSize = 10
@@ -15,6 +16,11 @@ winHelpContents = yes
winHelpTitle = "OGL Manual" winHelpTitle = "OGL Manual"
truncateFilenames = yes truncateFilenames = yes
combineSubSections = yes combineSubSections = yes
\overview [2] {\rtfonly{See also }\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}} \overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} \htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
\sethotspotcolour{on}\sethotspotunderline{on}} \sethotspotcolour{on}\sethotspotunderline{on}}
\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}}
\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}}
\const [0] {{\bf const}}
\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
\windowstyle [1] {{\bf #1}\index{#1}}

View File

@@ -43,7 +43,6 @@ new shapes from wxShape.
Instances of a class called \helpref{wxDiagram}{wxdiagram} organise collections of Instances of a class called \helpref{wxDiagram}{wxdiagram} organise collections of
shapes, providing default file input and output behaviour. shapes, providing default file input and output behaviour.
\section{wxDividedShape overview}\label{dividedshapeoverview} \section{wxDividedShape overview}\label{dividedshapeoverview}
Classes: \helpref{wxDividedShape}{wxdividedshape} Classes: \helpref{wxDividedShape}{wxdividedshape}
@@ -112,10 +111,9 @@ Here are examples of creating wxDividedShape objects:
\end{verbatim} \end{verbatim}
} }
\section{wxCompositeShape overview}\label{compositeshapeoverview} \section{wxCompositeShape overview}\label{compositeshapeoverview}
Classes: \helpref{wxCompositeShape}{wxcompositeshape}, \helpref{OGLConstraint}{oglconstraint} Classes: \helpref{wxCompositeShape}{wxcompositeshape}, \helpref{wxOGLConstraint}{wxoglconstraint}
The wxCompositeShape allows fairly complex shapes to be created, and maintains The wxCompositeShape allows fairly complex shapes to be created, and maintains
a set of constraints which specify the layout and proportions of child shapes. a set of constraints which specify the layout and proportions of child shapes.
@@ -143,12 +141,12 @@ To specify a constraint, you need three things:
The constraining shape can be either the parent of the constrained shapes, or a sibling. The The constraining shape can be either the parent of the constrained shapes, or a sibling. The
constrained shapes must all be siblings of each other. constrained shapes must all be siblings of each other.
For an exhaustive list and description of the available constraint types, see the \helpref{OGLConstraint constructor}{oglconstraintconstr}. For an exhaustive list and description of the available constraint types, see the \helpref{wxOGLConstraint constructor}{wxoglconstraintconstr}.
Note that most constraints operate in one dimension only (vertically or horizontally), so you will Note that most constraints operate in one dimension only (vertically or horizontally), so you will
usually need to specify constraints in pairs. usually need to specify constraints in pairs.
You can set the spacing between constraining and constrained shapes by You can set the spacing between constraining and constrained shapes by
calling \helpref{OGLConstraint::SetSpacing}{oglconstraintsetspacing}. calling \helpref{wxOGLConstraint::SetSpacing}{wxoglconstraintsetspacing}.
Finally, a wxCompositeShape can have {\it divisions}, which are special child shapes of class Finally, a wxCompositeShape can have {\it divisions}, which are special child shapes of class
wxDivisionShape (not to be confused with wxDividedShape). The purpose of this is to allow wxDivisionShape (not to be confused with wxDividedShape). The purpose of this is to allow

View File

@@ -1635,12 +1635,7 @@ void wxShape::RemoveLine(wxLineShape *line)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
char *wxShape::GetFunctor() void wxShape::WriteAttributes(wxExpr *clause)
{
return "node_image";
}
void wxShape::WritePrologAttributes(wxExpr *clause)
{ {
clause->AddAttributeValueString("type", GetClassInfo()->GetClassName()); clause->AddAttributeValueString("type", GetClassInfo()->GetClassName());
clause->AddAttributeValue("id", m_id); clause->AddAttributeValue("id", m_id);
@@ -1813,7 +1808,7 @@ void wxShape::WriteRegions(wxExpr *clause)
} }
} }
void wxShape::ReadPrologAttributes(wxExpr *clause) void wxShape::ReadAttributes(wxExpr *clause)
{ {
clause->GetAttributeValue("id", m_id); clause->GetAttributeValue("id", m_id);
RegisterId(m_id); RegisterId(m_id);
@@ -2548,7 +2543,7 @@ bool wxShape::AncestorSelected() const
return GetParent()->AncestorSelected(); return GetParent()->AncestorSelected();
} }
int wxShape::GetNumberOfAttachments() int wxShape::GetNumberOfAttachments() const
{ {
// Should return the MAXIMUM attachment point id here, // Should return the MAXIMUM attachment point id here,
// so higher-level functions can iterate through all attachments, // so higher-level functions can iterate through all attachments,
@@ -2570,7 +2565,7 @@ int wxShape::GetNumberOfAttachments()
} }
} }
bool wxShape::AttachmentIsValid(int attachment) bool wxShape::AttachmentIsValid(int attachment) const
{ {
if ((attachment >= 0) && (attachment < 4)) if ((attachment >= 0) && (attachment < 4))
return TRUE; return TRUE;

View File

@@ -269,7 +269,7 @@ class wxShape: public wxShapeEvtHandler
virtual bool HitTest(double x, double y, int *attachment, double *distance); virtual bool HitTest(double x, double y, int *attachment, double *distance);
inline void SetCentreResize(bool cr) { m_centreResize = cr; } inline void SetCentreResize(bool cr) { m_centreResize = cr; }
inline bool GetCentreResize() const { return m_centreResize; } inline bool GetCentreResize() const { return m_centreResize; }
inline wxList& GetLines() { return m_lines; } inline wxList& GetLines() const { return (wxList&) m_lines; }
inline void SetDisableLabel(bool flag) { m_disableLabel = flag; } inline void SetDisableLabel(bool flag) { m_disableLabel = flag; }
inline bool GetDisableLabel() const { return m_disableLabel; } inline bool GetDisableLabel() const { return m_disableLabel; }
inline void SetAttachmentMode(bool flag) { m_attachmentMode = flag; } inline void SetAttachmentMode(bool flag) { m_attachmentMode = flag; }
@@ -364,10 +364,9 @@ class wxShape: public wxShapeEvtHandler
void RemoveLine(wxLineShape *line); void RemoveLine(wxLineShape *line);
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // I/O
virtual char *GetFunctor(); virtual void WriteAttributes(wxExpr *clause);
virtual void WritePrologAttributes(wxExpr *clause); virtual void ReadAttributes(wxExpr *clause);
virtual void ReadPrologAttributes(wxExpr *clause);
// In case the object has constraints it needs to read in in a different pass // In case the object has constraints it needs to read in in a different pass
inline virtual void ReadConstraints(wxExpr *WXUNUSED(clause), wxExprDatabase *WXUNUSED(database)) { }; inline virtual void ReadConstraints(wxExpr *WXUNUSED(clause), wxExprDatabase *WXUNUSED(database)) { };
@@ -378,18 +377,18 @@ class wxShape: public wxShapeEvtHandler
// Attachment code // Attachment code
virtual bool GetAttachmentPosition(int attachment, double *x, double *y, virtual bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
virtual int GetNumberOfAttachments(); virtual int GetNumberOfAttachments() const;
virtual bool AttachmentIsValid(int attachment); virtual bool AttachmentIsValid(int attachment) const;
// Assuming the attachment lies along a vertical or horizontal line, // Assuming the attachment lies along a vertical or horizontal line,
// calculate the position on that point. // calculate the position on that point.
wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2, virtual wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2,
int nth, int noArcs, wxLineShape* line); int nth, int noArcs, wxLineShape* line);
// Returns TRUE if pt1 <= pt2 in the sense that one point comes before another on an // Returns TRUE if pt1 <= pt2 in the sense that one point comes before another on an
// edge of the shape. // edge of the shape.
// attachmentPoint is the attachment point (= side) in question. // attachmentPoint is the attachment point (= side) in question.
bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2); virtual bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2);
virtual void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE); virtual void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
virtual void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE); virtual void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
@@ -446,7 +445,7 @@ class wxShape: public wxShapeEvtHandler
protected: protected:
wxShapeEvtHandler* m_eventHandler; wxShapeEvtHandler* m_eventHandler;
bool m_formatted; bool m_formatted;
double m_xpos, m_ypos; double m_xpos, m_ypos;
wxPen* m_pen; wxPen* m_pen;
wxBrush* m_brush; wxBrush* m_brush;
wxFont* m_font; wxFont* m_font;
@@ -464,7 +463,7 @@ class wxShape: public wxShapeEvtHandler
bool m_selected; bool m_selected;
bool m_highlighted; // Different from selected: user-defined highlighting, bool m_highlighted; // Different from selected: user-defined highlighting,
// e.g. thick border. // e.g. thick border.
double m_rotation; double m_rotation;
int m_sensitivity; int m_sensitivity;
bool m_draggable; bool m_draggable;
bool m_attachmentMode; // TRUE if using attachments, FALSE otherwise bool m_attachmentMode; // TRUE if using attachments, FALSE otherwise
@@ -534,11 +533,11 @@ class wxPolygonShape: public wxShape
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
#endif #endif
int GetNumberOfAttachments(); int GetNumberOfAttachments() const;
bool GetAttachmentPosition(int attachment, double *x, double *y, bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
bool AttachmentIsValid(int attachment); bool AttachmentIsValid(int attachment);
@@ -550,10 +549,10 @@ class wxPolygonShape: public wxShape
private: private:
wxList* m_points; wxList* m_points;
wxList* m_originalPoints; wxList* m_originalPoints;
double m_boundWidth; double m_boundWidth;
double m_boundHeight; double m_boundHeight;
double m_originalWidth; double m_originalWidth;
double m_originalHeight; double m_originalHeight;
}; };
class wxRectangleShape: public wxShape class wxRectangleShape: public wxShape
@@ -571,11 +570,11 @@ class wxRectangleShape: public wxShape
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
#endif #endif
int GetNumberOfAttachments(); int GetNumberOfAttachments() const;
bool GetAttachmentPosition(int attachment, double *x, double *y, bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
// Does the copying for this object // Does the copying for this object
@@ -601,7 +600,7 @@ class wxTextShape: public wxRectangleShape
void OnDraw(wxDC& dc); void OnDraw(wxDC& dc);
#ifdef PROLOGIO #ifdef PROLOGIO
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
#endif #endif
// Does the copying for this object // Does the copying for this object
@@ -624,11 +623,11 @@ class wxEllipseShape: public wxShape
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
#endif #endif
int GetNumberOfAttachments(); int GetNumberOfAttachments() const;
bool GetAttachmentPosition(int attachment, double *x, double *y, bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);

View File

@@ -679,9 +679,9 @@ void wxPolygonShape::ResetControlPoints()
#ifdef PROLOGIO #ifdef PROLOGIO
void wxPolygonShape::WritePrologAttributes(wxExpr *clause) void wxPolygonShape::WriteAttributes(wxExpr *clause)
{ {
wxShape::WritePrologAttributes(clause); wxShape::WriteAttributes(clause);
clause->AddAttributeValue("x", m_xpos); clause->AddAttributeValue("x", m_xpos);
clause->AddAttributeValue("y", m_ypos); clause->AddAttributeValue("y", m_ypos);
@@ -722,9 +722,9 @@ void wxPolygonShape::WritePrologAttributes(wxExpr *clause)
clause->AddAttributeValue("m_originalPoints", list); clause->AddAttributeValue("m_originalPoints", list);
} }
void wxPolygonShape::ReadPrologAttributes(wxExpr *clause) void wxPolygonShape::ReadAttributes(wxExpr *clause)
{ {
wxShape::ReadPrologAttributes(clause); wxShape::ReadAttributes(clause);
// Read a list of lists // Read a list of lists
m_points = new wxList; m_points = new wxList;
@@ -868,7 +868,7 @@ void wxPolygonShape::Copy(wxShape& copy)
polyCopy.m_originalHeight = m_originalHeight; polyCopy.m_originalHeight = m_originalHeight;
} }
int wxPolygonShape::GetNumberOfAttachments() int wxPolygonShape::GetNumberOfAttachments() const
{ {
int maxN = (m_points ? (m_points->Number() - 1) : 0); int maxN = (m_points ? (m_points->Number() - 1) : 0);
wxNode *node = m_attachmentPoints.First(); wxNode *node = m_attachmentPoints.First();
@@ -991,9 +991,9 @@ bool wxRectangleShape::GetPerimeterPoint(double x1, double y1,
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxRectangleShape::WritePrologAttributes(wxExpr *clause) void wxRectangleShape::WriteAttributes(wxExpr *clause)
{ {
wxShape::WritePrologAttributes(clause); wxShape::WriteAttributes(clause);
clause->AddAttributeValue("x", m_xpos); clause->AddAttributeValue("x", m_xpos);
clause->AddAttributeValue("y", m_ypos); clause->AddAttributeValue("y", m_ypos);
@@ -1003,9 +1003,9 @@ void wxRectangleShape::WritePrologAttributes(wxExpr *clause)
clause->AddAttributeValue("corner", m_cornerRadius); clause->AddAttributeValue("corner", m_cornerRadius);
} }
void wxRectangleShape::ReadPrologAttributes(wxExpr *clause) void wxRectangleShape::ReadAttributes(wxExpr *clause)
{ {
wxShape::ReadPrologAttributes(clause); wxShape::ReadAttributes(clause);
clause->AssignAttributeValue("width", &m_width); clause->AssignAttributeValue("width", &m_width);
clause->AssignAttributeValue("height", &m_height); clause->AssignAttributeValue("height", &m_height);
clause->AssignAttributeValue("corner", &m_cornerRadius); clause->AssignAttributeValue("corner", &m_cornerRadius);
@@ -1031,7 +1031,7 @@ void wxRectangleShape::Copy(wxShape& copy)
rectCopy.m_cornerRadius = m_cornerRadius; rectCopy.m_cornerRadius = m_cornerRadius;
} }
int wxRectangleShape::GetNumberOfAttachments() int wxRectangleShape::GetNumberOfAttachments() const
{ {
return wxShape::GetNumberOfAttachments(); return wxShape::GetNumberOfAttachments();
} }
@@ -1218,9 +1218,9 @@ void wxTextShape::Copy(wxShape& copy)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxTextShape::WritePrologAttributes(wxExpr *clause) void wxTextShape::WriteAttributes(wxExpr *clause)
{ {
wxRectangleShape::WritePrologAttributes(clause); wxRectangleShape::WriteAttributes(clause);
} }
#endif #endif
@@ -1285,9 +1285,9 @@ void wxEllipseShape::SetSize(double x, double y, bool recursive)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxEllipseShape::WritePrologAttributes(wxExpr *clause) void wxEllipseShape::WriteAttributes(wxExpr *clause)
{ {
wxShape::WritePrologAttributes(clause); wxShape::WriteAttributes(clause);
clause->AddAttributeValue("x", m_xpos); clause->AddAttributeValue("x", m_xpos);
clause->AddAttributeValue("y", m_ypos); clause->AddAttributeValue("y", m_ypos);
@@ -1295,9 +1295,9 @@ void wxEllipseShape::WritePrologAttributes(wxExpr *clause)
clause->AddAttributeValue("height", m_height); clause->AddAttributeValue("height", m_height);
} }
void wxEllipseShape::ReadPrologAttributes(wxExpr *clause) void wxEllipseShape::ReadAttributes(wxExpr *clause)
{ {
wxShape::ReadPrologAttributes(clause); wxShape::ReadAttributes(clause);
clause->AssignAttributeValue("width", &m_width); clause->AssignAttributeValue("width", &m_width);
clause->AssignAttributeValue("height", &m_height); clause->AssignAttributeValue("height", &m_height);
@@ -1322,7 +1322,7 @@ void wxEllipseShape::Copy(wxShape& copy)
ellipseCopy.m_height = m_height; ellipseCopy.m_height = m_height;
} }
int wxEllipseShape::GetNumberOfAttachments() int wxEllipseShape::GetNumberOfAttachments() const
{ {
return wxShape::GetNumberOfAttachments(); return wxShape::GetNumberOfAttachments();
} }
@@ -1480,7 +1480,7 @@ void wxControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment)
m_shape->GetEventHandler()->OnSizingEndDragLeft(this, x, y, keys, attachment); m_shape->GetEventHandler()->OnSizingEndDragLeft(this, x, y, keys, attachment);
} }
int wxControlPoint::GetNumberOfAttachments() int wxControlPoint::GetNumberOfAttachments() const
{ {
return 1; return 1;
} }

View File

@@ -62,7 +62,7 @@ class wxControlPoint: public wxRectangleShape
bool GetAttachmentPosition(int attachment, double *x, double *y, bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
int GetNumberOfAttachments(); int GetNumberOfAttachments() const;
inline void SetEraseObject(bool er) { m_eraseObject = er; } inline void SetEraseObject(bool er) { m_eraseObject = er; }

View File

@@ -79,23 +79,17 @@ void wxBitmapShape::SetSize(double w, double h, bool recursive)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff void wxBitmapShape::WriteAttributes(wxExpr *clause)
char *wxBitmapShape::GetFunctor()
{
return "node_image";
}
void wxBitmapShape::WritePrologAttributes(wxExpr *clause)
{ {
// Can't really save the bitmap; so instantiate the bitmap // Can't really save the bitmap; so instantiate the bitmap
// at a higher level in the application, from a symbol library. // at a higher level in the application, from a symbol library.
wxRectangleShape::WritePrologAttributes(clause); wxRectangleShape::WriteAttributes(clause);
clause->AddAttributeValueString("filename", m_filename); clause->AddAttributeValueString("filename", m_filename);
} }
void wxBitmapShape::ReadPrologAttributes(wxExpr *clause) void wxBitmapShape::ReadAttributes(wxExpr *clause)
{ {
wxRectangleShape::ReadPrologAttributes(clause); wxRectangleShape::ReadAttributes(clause);
clause->GetAttributeValue("filename", m_filename); clause->GetAttributeValue("filename", m_filename);
} }
#endif #endif

View File

@@ -28,10 +28,9 @@ class wxBitmapShape: public wxRectangleShape
void OnDraw(wxDC& dc); void OnDraw(wxDC& dc);
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // I/O
char *GetFunctor(); void WriteAttributes(wxExpr *clause);
void WritePrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause);
#endif #endif
// Does the copying for this object // Does the copying for this object

View File

@@ -80,7 +80,7 @@ wxCompositeShape::~wxCompositeShape()
wxNode *node = m_constraints.First(); wxNode *node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
delete constraint; delete constraint;
node = node->Next(); node = node->Next();
} }
@@ -323,7 +323,7 @@ void wxCompositeShape::DeleteConstraintsInvolvingChild(wxShape *child)
wxNode *node = m_constraints.First(); wxNode *node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
wxNode *nextNode = node->Next(); wxNode *nextNode = node->Next();
if ((constraint->m_constrainingObject == child) || if ((constraint->m_constrainingObject == child) ||
@@ -341,7 +341,7 @@ void wxCompositeShape::RemoveChildFromConstraints(wxShape *child)
wxNode *node = m_constraints.First(); wxNode *node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
wxNode *nextNode = node->Next(); wxNode *nextNode = node->Next();
if (constraint->m_constrainedObjects.Member(child)) if (constraint->m_constrainedObjects.Member(child))
@@ -396,7 +396,7 @@ void wxCompositeShape::Copy(wxShape& copy)
node = m_constraints.First(); node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
wxShape *newConstraining = (wxShape *)(oglObjectCopyMapping.Find((long)constraint->m_constrainingObject)->Data()); wxShape *newConstraining = (wxShape *)(oglObjectCopyMapping.Find((long)constraint->m_constrainingObject)->Data());
@@ -410,7 +410,7 @@ void wxCompositeShape::Copy(wxShape& copy)
node2 = node2->Next(); node2 = node2->Next();
} }
OGLConstraint *newConstraint = new OGLConstraint(constraint->m_constraintType, newConstraining, wxOGLConstraint *newConstraint = new wxOGLConstraint(constraint->m_constraintType, newConstraining,
newConstrainedList); newConstrainedList);
newConstraint->m_constraintId = constraint->m_constraintId; newConstraint->m_constraintId = constraint->m_constraintId;
if (constraint->m_constraintName) if (constraint->m_constraintName)
@@ -457,7 +457,7 @@ void wxCompositeShape::Copy(wxShape& copy)
} }
} }
OGLConstraint *wxCompositeShape::AddConstraint(OGLConstraint *constraint) wxOGLConstraint *wxCompositeShape::AddConstraint(wxOGLConstraint *constraint)
{ {
m_constraints.Append(constraint); m_constraints.Append(constraint);
if (constraint->m_constraintId == 0) if (constraint->m_constraintId == 0)
@@ -465,32 +465,32 @@ OGLConstraint *wxCompositeShape::AddConstraint(OGLConstraint *constraint)
return constraint; return constraint;
} }
OGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxList& constrained) wxOGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxList& constrained)
{ {
OGLConstraint *constraint = new OGLConstraint(type, constraining, constrained); wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, constrained);
if (constraint->m_constraintId == 0) if (constraint->m_constraintId == 0)
constraint->m_constraintId = NewId(); constraint->m_constraintId = NewId();
m_constraints.Append(constraint); m_constraints.Append(constraint);
return constraint; return constraint;
} }
OGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxShape *constrained) wxOGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxShape *constrained)
{ {
wxList l; wxList l;
l.Append(constrained); l.Append(constrained);
OGLConstraint *constraint = new OGLConstraint(type, constraining, l); wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, l);
if (constraint->m_constraintId == 0) if (constraint->m_constraintId == 0)
constraint->m_constraintId = NewId(); constraint->m_constraintId = NewId();
m_constraints.Append(constraint); m_constraints.Append(constraint);
return constraint; return constraint;
} }
OGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **actualComposite) wxOGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **actualComposite)
{ {
wxNode *node = m_constraints.First(); wxNode *node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
if (constraint->m_constraintId == cId) if (constraint->m_constraintId == cId)
{ {
if (actualComposite) if (actualComposite)
@@ -506,7 +506,7 @@ OGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **act
wxShape *child = (wxShape *)node->Data(); wxShape *child = (wxShape *)node->Data();
if (child->IsKindOf(CLASSINFO(wxCompositeShape))) if (child->IsKindOf(CLASSINFO(wxCompositeShape)))
{ {
OGLConstraint *constraint = ((wxCompositeShape *)child)->FindConstraint(cId, actualComposite); wxOGLConstraint *constraint = ((wxCompositeShape *)child)->FindConstraint(cId, actualComposite);
if (constraint) if (constraint)
{ {
if (actualComposite) if (actualComposite)
@@ -519,7 +519,7 @@ OGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **act
return NULL; return NULL;
} }
void wxCompositeShape::DeleteConstraint(OGLConstraint *constraint) void wxCompositeShape::DeleteConstraint(wxOGLConstraint *constraint)
{ {
m_constraints.DeleteObject(constraint); m_constraints.DeleteObject(constraint);
delete constraint; delete constraint;
@@ -595,7 +595,7 @@ bool wxCompositeShape::Constrain()
node = m_constraints.First(); node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
if (constraint->Evaluate()) changed = TRUE; if (constraint->Evaluate()) changed = TRUE;
node = node->Next(); node = node->Next();
} }
@@ -603,9 +603,9 @@ bool wxCompositeShape::Constrain()
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxCompositeShape::WritePrologAttributes(wxExpr *clause) void wxCompositeShape::WriteAttributes(wxExpr *clause)
{ {
wxRectangleShape::WritePrologAttributes(clause); wxRectangleShape::WriteAttributes(clause);
// clause->AddAttributeValue("selectable", (long)selectable); // clause->AddAttributeValue("selectable", (long)selectable);
@@ -615,7 +615,7 @@ void wxCompositeShape::WritePrologAttributes(wxExpr *clause)
wxNode *node = m_constraints.First(); wxNode *node = m_constraints.First();
while (node) while (node)
{ {
OGLConstraint *constraint = (OGLConstraint *)node->Data(); wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
sprintf(m_constraintNameBuf, "constraint%d", constraintNo); sprintf(m_constraintNameBuf, "constraint%d", constraintNo);
// Each constraint is stored in the form // Each constraint is stored in the form
@@ -674,9 +674,9 @@ void wxCompositeShape::WritePrologAttributes(wxExpr *clause)
// so as to be able to link up to parent. So we may not be able // so as to be able to link up to parent. So we may not be able
// to find the constraint participants until we've read everything // to find the constraint participants until we've read everything
// in. Need to have another pass for composites. // in. Need to have another pass for composites.
void wxCompositeShape::ReadPrologAttributes(wxExpr *clause) void wxCompositeShape::ReadAttributes(wxExpr *clause)
{ {
wxRectangleShape::ReadPrologAttributes(clause); wxRectangleShape::ReadAttributes(clause);
// clause->GetAttributeValue("selectable", selectable); // clause->GetAttributeValue("selectable", selectable);
} }
@@ -747,7 +747,7 @@ void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database)
i ++; i ++;
currentIdExpr = constrainedExpr->Nth(i); currentIdExpr = constrainedExpr->Nth(i);
} }
OGLConstraint *newConstraint = AddConstraint(cType, m_constrainingObject, m_constrainedObjects); wxOGLConstraint *newConstraint = AddConstraint(cType, m_constrainingObject, m_constrainedObjects);
newConstraint->SetSpacing(cXSpacing, cYSpacing); newConstraint->SetSpacing(cXSpacing, cYSpacing);
newConstraint->m_constraintId = cId; newConstraint->m_constraintId = cId;
newConstraint->m_constraintName = (const char*) cName; newConstraint->m_constraintName = (const char*) cName;
@@ -989,9 +989,9 @@ void wxDivisionShape::Copy(wxShape& copy)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxDivisionShape::WritePrologAttributes(wxExpr *clause) void wxDivisionShape::WriteAttributes(wxExpr *clause)
{ {
wxCompositeShape::WritePrologAttributes(clause); wxCompositeShape::WriteAttributes(clause);
if (m_leftSide) if (m_leftSide)
clause->AddAttributeValue("left_side", (long)m_leftSide->GetId()); clause->AddAttributeValue("left_side", (long)m_leftSide->GetId());
@@ -1009,9 +1009,9 @@ void wxDivisionShape::WritePrologAttributes(wxExpr *clause)
clause->AddAttributeValueString("top_style", m_topSideStyle); clause->AddAttributeValueString("top_style", m_topSideStyle);
} }
void wxDivisionShape::ReadPrologAttributes(wxExpr *clause) void wxDivisionShape::ReadAttributes(wxExpr *clause)
{ {
wxCompositeShape::ReadPrologAttributes(clause); wxCompositeShape::ReadAttributes(clause);
clause->GetAttributeValue("handle_side", m_handleSide); clause->GetAttributeValue("handle_side", m_handleSide);
clause->GetAttributeValue("left_colour", m_leftSideColour); clause->GetAttributeValue("left_colour", m_leftSideColour);

View File

@@ -17,7 +17,7 @@
#endif #endif
class wxDivisionShape; class wxDivisionShape;
class OGLConstraint; class wxOGLConstraint;
/* /*
* A composite object is an invisible rectangle surrounding all children * A composite object is an invisible rectangle surrounding all children
@@ -51,11 +51,11 @@ public:
void AddChild(wxShape *child, wxShape *addAfter = NULL); void AddChild(wxShape *child, wxShape *addAfter = NULL);
void RemoveChild(wxShape *child); void RemoveChild(wxShape *child);
OGLConstraint *AddConstraint(OGLConstraint *constraint); wxOGLConstraint *AddConstraint(wxOGLConstraint *constraint);
OGLConstraint *AddConstraint(int type, wxShape *constraining, wxList& constrained); wxOGLConstraint *AddConstraint(int type, wxShape *constraining, wxList& constrained);
OGLConstraint *AddConstraint(int type, wxShape *constraining, wxShape *constrained); wxOGLConstraint *AddConstraint(int type, wxShape *constraining, wxShape *constrained);
void DeleteConstraint(OGLConstraint *constraint); void DeleteConstraint(wxOGLConstraint *constraint);
// Delete constraints that involve this child. // Delete constraints that involve this child.
void DeleteConstraintsInvolvingChild(wxShape *child); void DeleteConstraintsInvolvingChild(wxShape *child);
@@ -66,7 +66,7 @@ public:
// Find constraint, also returning actual composite the constraint was in, // Find constraint, also returning actual composite the constraint was in,
// in case it had to find it recursively. // in case it had to find it recursively.
OGLConstraint *FindConstraint(long id, wxCompositeShape **actualComposite = NULL); wxOGLConstraint *FindConstraint(long id, wxCompositeShape **actualComposite = NULL);
// Returns TRUE if something changed // Returns TRUE if something changed
bool Constrain(); bool Constrain();
@@ -79,8 +79,8 @@ public:
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
// In case the object has constraints it needs to read in in a different pass // In case the object has constraints it needs to read in in a different pass
void ReadConstraints(wxExpr *clause, wxExprDatabase *database); void ReadConstraints(wxExpr *clause, wxExprDatabase *database);
#endif #endif
@@ -155,8 +155,8 @@ class wxDivisionShape: public wxCompositeShape
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
#endif #endif
// Does the copying for this object // Does the copying for this object
void Copy(wxShape& copy); void Copy(wxShape& copy);

View File

@@ -32,95 +32,95 @@
#include "constrnt.h" #include "constrnt.h"
#include "canvas.h" #include "canvas.h"
wxList *OGLConstraintTypes = NULL; wxList *wxOGLConstraintTypes = NULL;
/* /*
* Constraint type * Constraint type
* *
*/ */
IMPLEMENT_DYNAMIC_CLASS(OGLConstraintType, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraintType, wxObject)
OGLConstraintType::OGLConstraintType(int theType, const wxString& theName, const wxString& thePhrase) wxOGLConstraintType::wxOGLConstraintType(int theType, const wxString& theName, const wxString& thePhrase)
{ {
m_type = theType; m_type = theType;
m_name = theName; m_name = theName;
m_phrase = thePhrase; m_phrase = thePhrase;
} }
OGLConstraintType::~OGLConstraintType() wxOGLConstraintType::~wxOGLConstraintType()
{ {
} }
void OGLInitializeConstraintTypes() void OGLInitializeConstraintTypes()
{ {
if (!OGLConstraintTypes) if (!wxOGLConstraintTypes)
return; return;
OGLConstraintTypes = new wxList(wxKEY_INTEGER); wxOGLConstraintTypes = new wxList(wxKEY_INTEGER);
OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY, wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY,
new OGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t.")); new wxOGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t."));
OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY, wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY,
new OGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t.")); new wxOGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t."));
OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH, wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH,
new OGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t.")); new wxOGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t."));
OGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF, wxOGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF,
new OGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of")); new wxOGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of"));
OGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF, wxOGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF,
new OGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of")); new wxOGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of"));
OGLConstraintTypes->Append(gyCONSTRAINT_ABOVE, wxOGLConstraintTypes->Append(gyCONSTRAINT_ABOVE,
new OGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above")); new wxOGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above"));
OGLConstraintTypes->Append(gyCONSTRAINT_BELOW, wxOGLConstraintTypes->Append(gyCONSTRAINT_BELOW,
new OGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below")); new wxOGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below"));
// Alignment // Alignment
OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP, wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP,
new OGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of")); new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of"));
OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM, wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM,
new OGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of")); new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of"));
OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT, wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT,
new OGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of")); new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of"));
OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT, wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT,
new OGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of")); new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of"));
// Mid-alignment // Mid-alignment
OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP, wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP,
new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of")); new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of"));
OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM, wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM,
new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of")); new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of"));
OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT, wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT,
new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of")); new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of"));
OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT, wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT,
new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of")); new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of"));
} }
void OGLCleanUpConstraintTypes() void OGLCleanUpConstraintTypes()
{ {
if (!OGLConstraintTypes) if (!wxOGLConstraintTypes)
return; return;
wxNode* node = OGLConstraintTypes->First(); wxNode* node = wxOGLConstraintTypes->First();
while (node) while (node)
{ {
OGLConstraintType* ct = (OGLConstraintType*) node->Data(); wxOGLConstraintType* ct = (wxOGLConstraintType*) node->Data();
delete ct; delete ct;
node = node->Next(); node = node->Next();
} }
delete OGLConstraintTypes; delete wxOGLConstraintTypes;
OGLConstraintTypes = NULL; wxOGLConstraintTypes = NULL;
} }
/* /*
@@ -128,9 +128,9 @@ void OGLCleanUpConstraintTypes()
* *
*/ */
IMPLEMENT_DYNAMIC_CLASS(OGLConstraint, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraint, wxObject)
OGLConstraint::OGLConstraint(int type, wxShape *constraining, wxList& constrained) wxOGLConstraint::wxOGLConstraint(int type, wxShape *constraining, wxList& constrained)
{ {
m_xSpacing = 0.0; m_xSpacing = 0.0;
m_ySpacing = 0.0; m_ySpacing = 0.0;
@@ -149,11 +149,11 @@ OGLConstraint::OGLConstraint(int type, wxShape *constraining, wxList& constraine
} }
} }
OGLConstraint::~OGLConstraint() wxOGLConstraint::~wxOGLConstraint()
{ {
} }
bool OGLConstraint::Equals(double a, double b) bool wxOGLConstraint::Equals(double a, double b)
{ {
double marg = 0.5; double marg = 0.5;
@@ -162,7 +162,7 @@ bool OGLConstraint::Equals(double a, double b)
} }
// Return TRUE if anything changed // Return TRUE if anything changed
bool OGLConstraint::Evaluate() bool wxOGLConstraint::Evaluate()
{ {
double maxWidth, maxHeight, minWidth, minHeight, x, y; double maxWidth, maxHeight, minWidth, minHeight, x, y;
m_constrainingObject->GetBoundingBoxMax(&maxWidth, &maxHeight); m_constrainingObject->GetBoundingBoxMax(&maxWidth, &maxHeight);

View File

@@ -21,12 +21,12 @@
* *
*/ */
class OGLConstraintType: public wxObject class wxOGLConstraintType: public wxObject
{ {
DECLARE_DYNAMIC_CLASS(OGLConstraintType) DECLARE_DYNAMIC_CLASS(wxOGLConstraintType)
public: public:
OGLConstraintType(int type = 0, const wxString& name = "", const wxString& phrase = ""); wxOGLConstraintType(int type = 0, const wxString& name = "", const wxString& phrase = "");
~OGLConstraintType(); ~wxOGLConstraintType();
public: public:
int m_type; // E.g. gyCONSTRAINT_CENTRED_VERTICALLY int m_type; // E.g. gyCONSTRAINT_CENTRED_VERTICALLY
@@ -35,7 +35,7 @@ public:
}; };
extern wxList* OGLConstraintTypes; extern wxList* wxOGLConstraintTypes;
#define gyCONSTRAINT_CENTRED_VERTICALLY 1 #define gyCONSTRAINT_CENTRED_VERTICALLY 1
#define gyCONSTRAINT_CENTRED_HORIZONTALLY 2 #define gyCONSTRAINT_CENTRED_HORIZONTALLY 2
@@ -56,14 +56,14 @@ extern wxList* OGLConstraintTypes;
#define gyCONSTRAINT_MIDALIGNED_LEFT 14 #define gyCONSTRAINT_MIDALIGNED_LEFT 14
#define gyCONSTRAINT_MIDALIGNED_RIGHT 15 #define gyCONSTRAINT_MIDALIGNED_RIGHT 15
class OGLConstraint: public wxObject class wxOGLConstraint: public wxObject
{ {
DECLARE_DYNAMIC_CLASS(OGLConstraint) DECLARE_DYNAMIC_CLASS(wxOGLConstraint)
public: public:
OGLConstraint() { m_xSpacing = 0.0; m_ySpacing = 0.0; m_constraintType = 0; m_constraintName = ""; m_constraintId = 0; wxOGLConstraint() { m_xSpacing = 0.0; m_ySpacing = 0.0; m_constraintType = 0; m_constraintName = ""; m_constraintId = 0;
m_constrainingObject = NULL; } m_constrainingObject = NULL; }
OGLConstraint(int type, wxShape *constraining, wxList& constrained); wxOGLConstraint(int type, wxShape *constraining, wxList& constrained);
~OGLConstraint(); ~wxOGLConstraint();
// Returns TRUE if anything changed // Returns TRUE if anything changed
bool Evaluate(); bool Evaluate();

View File

@@ -305,7 +305,7 @@ bool wxDividedShape::GetAttachmentPosition(int attachment, double *x, double *y,
return TRUE; return TRUE;
} }
int wxDividedShape::GetNumberOfAttachments() int wxDividedShape::GetNumberOfAttachments() const
{ {
// There are two attachments for each region (left and right), // There are two attachments for each region (left and right),
// plus one on the top and one on the bottom. // plus one on the top and one on the bottom.
@@ -418,14 +418,14 @@ void wxDividedShape::ResetMandatoryControlPoints()
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxDividedShape::WritePrologAttributes(wxExpr *clause) void wxDividedShape::WriteAttributes(wxExpr *clause)
{ {
wxRectangleShape::WritePrologAttributes(clause); wxRectangleShape::WriteAttributes(clause);
} }
void wxDividedShape::ReadPrologAttributes(wxExpr *clause) void wxDividedShape::ReadAttributes(wxExpr *clause)
{ {
wxRectangleShape::ReadPrologAttributes(clause); wxRectangleShape::ReadAttributes(clause);
} }
#endif #endif

View File

@@ -48,8 +48,8 @@ class wxDividedShape: public wxRectangleShape
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // Prolog database stuff
void WritePrologAttributes(wxExpr *clause); void WriteAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
#endif #endif
void Copy(wxShape &copy); void Copy(wxShape &copy);
@@ -65,7 +65,7 @@ class wxDividedShape: public wxRectangleShape
bool GetAttachmentPosition(int attachment, double *x, double *y, bool GetAttachmentPosition(int attachment, double *x, double *y,
int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
bool AttachmentIsValid(int attachment); bool AttachmentIsValid(int attachment);
int GetNumberOfAttachments(); int GetNumberOfAttachments() const;
// Invoke editor on CTRL-right click // Invoke editor on CTRL-right click
void OnRightClick(double x, double y, int keys = 0, int attachment = 0); void OnRightClick(double x, double y, int keys = 0, int attachment = 0);

View File

@@ -236,15 +236,9 @@ bool wxDrawnShape::GetPerimeterPoint(double x1, double y1,
} }
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff void wxDrawnShape::WriteAttributes(wxExpr *clause)
char *wxDrawnShape::GetFunctor()
{ {
return "node_image"; wxRectangleShape::WriteAttributes(clause);
}
void wxDrawnShape::WritePrologAttributes(wxExpr *clause)
{
wxRectangleShape::WritePrologAttributes(clause);
clause->AddAttributeValue("save_metafile", (long)m_saveToFile); clause->AddAttributeValue("save_metafile", (long)m_saveToFile);
if (m_saveToFile) if (m_saveToFile)
@@ -253,14 +247,14 @@ void wxDrawnShape::WritePrologAttributes(wxExpr *clause)
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
if (m_metafiles[i].IsValid()) if (m_metafiles[i].IsValid())
m_metafiles[i].WritePrologAttributes(clause, i); m_metafiles[i].WriteAttributes(clause, i);
} }
} }
} }
void wxDrawnShape::ReadPrologAttributes(wxExpr *clause) void wxDrawnShape::ReadAttributes(wxExpr *clause)
{ {
wxRectangleShape::ReadPrologAttributes(clause); wxRectangleShape::ReadAttributes(clause);
int iVal = (int) m_saveToFile; int iVal = (int) m_saveToFile;
clause->AssignAttributeValue("save_metafile", &iVal); clause->AssignAttributeValue("save_metafile", &iVal);
@@ -271,7 +265,7 @@ void wxDrawnShape::ReadPrologAttributes(wxExpr *clause)
int i = 0; int i = 0;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
m_metafiles[i].ReadPrologAttributes(clause, i); m_metafiles[i].ReadAttributes(clause, i);
} }
} }
} }
@@ -376,32 +370,32 @@ void wxDrawnShape::DestroyClippingRect()
m_metafiles[m_currentAngle].DestroyClippingRect(); m_metafiles[m_currentAngle].DestroyClippingRect();
} }
void wxDrawnShape::SetPen(wxPen* pen, bool isOutline) void wxDrawnShape::SetDrawnPen(wxPen* pen, bool isOutline)
{ {
m_metafiles[m_currentAngle].SetPen(pen, isOutline); m_metafiles[m_currentAngle].SetPen(pen, isOutline);
} }
void wxDrawnShape::SetBrush(wxBrush* brush, bool isFill) void wxDrawnShape::SetDrawnBrush(wxBrush* brush, bool isFill)
{ {
m_metafiles[m_currentAngle].SetBrush(brush, isFill); m_metafiles[m_currentAngle].SetBrush(brush, isFill);
} }
void wxDrawnShape::SetFont(wxFont* font) void wxDrawnShape::SetDrawnFont(wxFont* font)
{ {
m_metafiles[m_currentAngle].SetFont(font); m_metafiles[m_currentAngle].SetFont(font);
} }
void wxDrawnShape::SetTextColour(const wxColour& colour) void wxDrawnShape::SetDrawnTextColour(const wxColour& colour)
{ {
m_metafiles[m_currentAngle].SetTextColour(colour); m_metafiles[m_currentAngle].SetTextColour(colour);
} }
void wxDrawnShape::SetBackgroundColour(const wxColour& colour) void wxDrawnShape::SetDrawnBackgroundColour(const wxColour& colour)
{ {
m_metafiles[m_currentAngle].SetBackgroundColour(colour); m_metafiles[m_currentAngle].SetBackgroundColour(colour);
} }
void wxDrawnShape::SetBackgroundMode(int mode) void wxDrawnShape::SetDrawnBackgroundMode(int mode)
{ {
m_metafiles[m_currentAngle].SetBackgroundMode(mode); m_metafiles[m_currentAngle].SetBackgroundMode(mode);
} }
@@ -1452,7 +1446,7 @@ void wxPseudoMetaFile::Rotate(double x, double y, double theta)
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxPseudoMetaFile::WritePrologAttributes(wxExpr *clause, int whichAngle) void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle)
{ {
wxString widthStr; wxString widthStr;
widthStr.Printf("meta_width%d", whichAngle); widthStr.Printf("meta_width%d", whichAngle);
@@ -1579,7 +1573,7 @@ void wxPseudoMetaFile::WritePrologAttributes(wxExpr *clause, int whichAngle)
} }
void wxPseudoMetaFile::ReadPrologAttributes(wxExpr *clause, int whichAngle) void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
{ {
wxString widthStr; wxString widthStr;
widthStr.Printf("meta_width%d", whichAngle); widthStr.Printf("meta_width%d", whichAngle);

View File

@@ -33,8 +33,8 @@ class wxPseudoMetaFile: public wxObject
void Draw(wxDC& dc, double xoffset, double yoffset); void Draw(wxDC& dc, double xoffset, double yoffset);
#ifdef PROLOGIO #ifdef PROLOGIO
void WritePrologAttributes(wxExpr *clause, int whichAngle); void WriteAttributes(wxExpr *clause, int whichAngle);
void ReadPrologAttributes(wxExpr *clause, int whichAngle); void ReadAttributes(wxExpr *clause, int whichAngle);
#endif #endif
void Clear(); void Clear();
@@ -140,10 +140,9 @@ class wxDrawnShape: public wxRectangleShape
void OnDraw(wxDC& dc); void OnDraw(wxDC& dc);
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // I/O
char *GetFunctor(); void WriteAttributes(wxExpr *clause);
void WritePrologAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause);
void ReadPrologAttributes(wxExpr *clause);
#endif #endif
// Does the copying for this object // Does the copying for this object
@@ -190,12 +189,12 @@ class wxDrawnShape: public wxRectangleShape
virtual void SetClippingRect(const wxRect& rect); virtual void SetClippingRect(const wxRect& rect);
virtual void DestroyClippingRect(); virtual void DestroyClippingRect();
virtual void SetPen(wxPen* pen, bool isOutline = FALSE); // TODO: eventually, just store GDI object attributes, not actual virtual void SetDrawnPen(wxPen* pen, bool isOutline = FALSE); // TODO: eventually, just store GDI object attributes, not actual
virtual void SetBrush(wxBrush* brush, bool isFill = FALSE); // pens/brushes etc. virtual void SetDrawnBrush(wxBrush* brush, bool isFill = FALSE); // pens/brushes etc.
virtual void SetFont(wxFont* font); virtual void SetDrawnFont(wxFont* font);
virtual void SetTextColour(const wxColour& colour); virtual void SetDrawnTextColour(const wxColour& colour);
virtual void SetBackgroundColour(const wxColour& colour); virtual void SetDrawnBackgroundColour(const wxColour& colour);
virtual void SetBackgroundMode(int mode); virtual void SetDrawnBackgroundMode(int mode);
// Set the width/height according to the shapes in the metafile. // Set the width/height according to the shapes in the metafile.
// Call this after drawing into the shape. // Call this after drawing into the shape.
@@ -205,6 +204,8 @@ class wxDrawnShape: public wxRectangleShape
inline int GetAngle() const { return m_currentAngle; } inline int GetAngle() const { return m_currentAngle; }
// Implementation
protected:
// Which metafile do we use now? Based on current rotation and validity // Which metafile do we use now? Based on current rotation and validity
// of metafiles. // of metafiles.
int DetermineMetaFile(double rotation); int DetermineMetaFile(double rotation);

View File

@@ -1296,14 +1296,6 @@ void wxLineShape::OnDrawContents(wxDC& dc)
} }
} }
#ifdef PROLOGIO
char *wxLineShape::GetFunctor()
{
return "arc_image";
}
#endif
void wxLineShape::SetTo(wxShape *object) void wxLineShape::SetTo(wxShape *object)
{ {
m_to = object; m_to = object;
@@ -1377,9 +1369,9 @@ void wxLineShape::ResetControlPoints()
} }
#ifdef PROLOGIO #ifdef PROLOGIO
void wxLineShape::WritePrologAttributes(wxExpr *clause) void wxLineShape::WriteAttributes(wxExpr *clause)
{ {
wxShape::WritePrologAttributes(clause); wxShape::WriteAttributes(clause);
if (m_from) if (m_from)
clause->AddAttributeValue("from", m_from->GetId()); clause->AddAttributeValue("from", m_from->GetId());
@@ -1447,9 +1439,9 @@ void wxLineShape::WritePrologAttributes(wxExpr *clause)
} }
} }
void wxLineShape::ReadPrologAttributes(wxExpr *clause) void wxLineShape::ReadAttributes(wxExpr *clause)
{ {
wxShape::ReadPrologAttributes(clause); wxShape::ReadAttributes(clause);
int iVal = (int) m_isSpline; int iVal = (int) m_isSpline;
clause->AssignAttributeValue("is_spline", &iVal); clause->AssignAttributeValue("is_spline", &iVal);

View File

@@ -189,10 +189,9 @@ class wxLineShape: public wxShape
bool HitTest(double x, double y, int *attachment, double *distance); bool HitTest(double x, double y, int *attachment, double *distance);
#ifdef PROLOGIO #ifdef PROLOGIO
// Prolog database stuff // I/O
virtual char *GetFunctor(); virtual void WriteAttributes(wxExpr *clause);
virtual void WritePrologAttributes(wxExpr *clause); virtual void ReadAttributes(wxExpr *clause);
virtual void ReadPrologAttributes(wxExpr *clause);
#endif #endif
virtual void FindNth(wxShape *image, int *nth, int *no_arcs, bool incoming); virtual void FindNth(wxShape *image, int *nth, int *no_arcs, bool incoming);

View File

@@ -155,7 +155,7 @@ $(DOCDIR)\pdf\ogl.rtf: $(DOCSOURCES)
$(DOCDIR)\html\ogl\ogl.htm: $(DOCSOURCES) $(DOCDIR)\html\ogl\ogl.htm: $(DOCSOURCES)
cd $(LOCALDOCDIR) cd $(LOCALDOCDIR)
-mkdir $(DOCDIR)\html\ogl -mkdir $(DOCDIR)\html\ogl
cp *.gif $(DOCDIR)\html\ogl copy *.gif $(DOCDIR)\html\ogl
-start /w tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\html\ogl\ogl.htm -twice -html -start /w tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\html\ogl\ogl.htm -twice -html
-erase $(DOCDIR)\html\ogl\*.con -erase $(DOCDIR)\html\ogl\*.con
-erase $(DOCDIR)\html\ogl\*.ref -erase $(DOCDIR)\html\ogl\*.ref

View File

@@ -537,7 +537,7 @@ bool wxDiagram::OnDatabaseSave(wxExprDatabase& db)
bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr) bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
{ {
shape.WritePrologAttributes(&expr); shape.WriteAttributes(&expr);
db.Append(&expr); db.Append(&expr);
if (shape.IsKindOf(CLASSINFO(wxCompositeShape))) if (shape.IsKindOf(CLASSINFO(wxCompositeShape)))
@@ -557,7 +557,7 @@ bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
bool wxDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr) bool wxDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
{ {
shape.ReadPrologAttributes(&expr); shape.ReadAttributes(&expr);
return TRUE; return TRUE;
} }

View File

@@ -44,7 +44,7 @@ public:
void SetSnapToGrid(bool snap); void SetSnapToGrid(bool snap);
void SetGridSpacing(double spacing); void SetGridSpacing(double spacing);
inline double GetGridSpacing() { return m_gridSpacing; } inline double GetGridSpacing() const { return m_gridSpacing; }
inline bool GetSnapToGrid() const { return m_snapToGrid; } inline bool GetSnapToGrid() const { return m_snapToGrid; }
void Snap(double *x, double *y); void Snap(double *x, double *y);
@@ -85,7 +85,7 @@ protected:
wxShapeCanvas* m_diagramCanvas; wxShapeCanvas* m_diagramCanvas;
bool m_quickEditMode; bool m_quickEditMode;
bool m_snapToGrid; bool m_snapToGrid;
double m_gridSpacing; double m_gridSpacing;
int m_mouseTolerance; int m_mouseTolerance;
wxList* m_shapeList; wxList* m_shapeList;
}; };