\chapter{Class reference}\label{classref}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}

These are the main \ogl\ classes.

\section{\class{OGLConstraint}: wxObject}\label{oglconstraint}

\overview{wxCompositeShape overview}{compositeshapeoverview}

An OGLConstraint object helps specify how child shapes are laid out with respect
to siblings and parents.

\membersection{OGLConstraint::OGLConstraint}\label{oglconstraintconstr}

\func{void}{OGLConstraint}{\void}

Default constructor.

\func{void}{OGLConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxList\& }{constrained}}

Constructor.

{\it constraining} is the shape which is used as the reference for positioning the {\it constrained} objects.

{\it constrained} contains a list of wxShapes which are to be constrained (with respect
to {\it constraining}) using {\it type}.

{\it type} can be one of:

\begin{itemize}\itemsep=0pt
\item {\bf gyCONSTRAINT\_CENTRED\_VERTICALLY}: the Y co-ordinates of the centres of the
bounding boxes of the constrained objects and the constraining object
will be the same
\item {\bf gyCONSTRAINT\_CENTRED\_HORIZONTALLY}: the X co-ordinates of the centres of the
bounding boxes of the constrained objects and the constraining object
will be the same
\item {\bf gyCONSTRAINT\_CENTRED\_BOTH}: the co-ordinates of the centres of the bounding boxes
of the constrained objects and the constraining object will be the same
\item {\bf gyCONSTRAINT\_LEFT\_OF}: the X co-ordinates of the right hand vertical edges
of the bounding boxes of the constrained objects will be less than
the X co-ordinate of the left hand vertical edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_RIGHT\_OF}: the X co-ordinates of the left hand vertical edges
of the bounding boxes of the constrained objects will be greater than
the X co-ordinate of the right hand vertical edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_ABOVE}: the Y co-ordinates of the bottom horizontal edges of the
bounding boxes of the constrained objects will be less than the
Y co-ordinate of the top horizontal edge of the bounding box of the
constraining object
\item {\bf gyCONSTRAINT\_BELOW}: the Y co-ordinates of the top horizontal edges of the
bounding boxes of the constrained objects will be greater than
the X co-ordinate of the bottom horizontal edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_ALIGNED\_TOP}: the Y co-ordinates of the top horizontal edges of the
bounding boxes of the constrained objects will be the same as the
Y co-ordinate of the top horizontal edge of the bounding box of the
constraining object
\item {\bf gyCONSTRAINT\_ALIGNED\_BOTTOM}: the Y co-ordinates of the bottom horizontal edges
of the bounding boxes of the constrained objects will be the same as
the Y co-ordinate of the bottom horizontal edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_ALIGNED\_LEFT}: the X co-ordinates of the left hand vertical edges
of the bounding boxes of the constrained objects will be the same as
the X co-ordinate of the left hand vertical edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_ALIGNED\_RIGHT}: the X co-ordinates of the right hand vertical edges
of the bounding boxes of the constrained objects will be the same as
the X co-ordinate of the right hand vertical edge of the bounding box
of the constraining object
\item {\bf gyCONSTRAINT\_MIDALIGNED\_TOP}: the Y co-ordinates of the centres of
the bounding boxes of the constrained objects will be the same
as the Y co-ordinate of the top horizontal edge of
the bounding box of the constraining object
\item {\bf gyCONSTRAINT\_MIDALIGNED\_BOTTOM}: the Y co-ordinates of the centres of
the bounding boxes of the constrained objects will be the same
as the Y co-ordinate of the bottom horizontal edge of
the bounding box of the constraining object
\item {\bf gyCONSTRAINT\_MIDALIGNED\_LEFT}: the X co-ordinates of the centres of
the bounding boxes of the constrained objects will be the same
as the X co-ordinate of the left hand vertical edge of
the bounding box of the constraining object
\item {\bf gyCONSTRAINT\_MIDALIGNED\_RIGHT}: the X co-ordinates of the centres of
the bounding boxes of the constrained objects will be the same as
the X co-ordinate of the right hand vertical edge of
the bounding box of the constraining object
\end{itemize}


\membersection{OGLConstraint::\destruct{OGLConstraint}}

\func{void}{\destruct{OGLConstraint}}{\void}

Destructor.

\membersection{OGLConstraint::Equals}

\func{bool}{Equals}{\param{float}{ x}, \param{float}{ y}}

Returns TRUE if {\it x} and {\it y} are approximately equal (for the purposes
of evaluating the constraint).

\membersection{OGLConstraint::Evaluate}

\func{bool}{Evaluate}{\void}

Evaluates this constraint, returning TRUE if anything changed.

\membersection{OGLConstraint::SetSpacing}\label{oglconstraintsetspacing}

\func{void}{SetSpacing}{\param{float}{ x}, \param{float}{ y}}

Sets the horizontal and vertical spacing for the constraint.


\section{\class{wxBitmapShape}: wxRectangleShape}\label{wxbitmapshape}

Draws a bitmap (non-resizable).

See also \helpref{wxRectangleShape}{wxrectangleshape}.

\membersection{wxBitmapShape::wxBitmapShape}

\func{void}{wxBitmapShape}{\void}

Constructor.

\membersection{wxBitmapShape::\destruct{wxBitmapShape}}

\func{void}{\destruct{wxBitmapShape}}{\void}

Destructor.

\membersection{wxBitmapShape::GetDeleteBitmap}

\func{bool}{GetDeleteBitmap}{\void}

Returns TRUE if the bitmap will be deleted when the shape is deleted.

\membersection{wxBitmapShape::GetBitmap}

\func{wxBitmap\&}{GetBitmap}{\void}

Returns a reference to the bitmap associated with this shape.

\membersection{wxBitmapShape::GetFilename}

\func{wxString}{GetFilename}{\void}

Returns the bitmap filename.

\membersection{wxBitmapShape::SetDeleteBitmap}

\func{void}{SetDeleteBitmap}{\param{bool}{ deleteBitmap}}

Determines whether the bitmap will be deleted when the shape is deleted.

\membersection{wxBitmapShape::SetBitmap}

\func{void}{SetBitmap}{\param{const wxBitmap\&}{ bitmap}}

Sets the bitmap associated with this shape. You can delete the bitmap
from the calling application, since reference counting will take care of
holding on to the internal bitmap data.

\membersection{wxBitmapShape::SetFilename}

\func{void}{SetFilename}{\param{const wxString\& }{filename}}

Sets the bitmap filename.

\section{\class{wxDiagram}: wxObject}\label{wxdiagram}

Encapsulates an entire diagram, with methods for reading/writing and drawing.

\membersection{wxDiagram::wxDiagram}

\func{void}{wxDiagram}{\void}

Constructor.

\membersection{wxDiagram::\destruct{wxDiagram}}

\func{void}{\destruct{wxDiagram}}{\void}

Destructor.

\membersection{wxDiagram::AddShape}

\func{void}{AddShape}{\param{wxShape *}{shape}, \param{wxShape *}{addAfter = NULL}}

Adds a shape to the diagram. If {\it addAfter} is non-NULL, the shape will be added after this
one.

\membersection{wxDiagram::Clear}

\func{void}{Clear}{\void}

Clears the device context associated with the diagram.

\membersection{wxDiagram::DeleteAllShapes}

\func{void}{DeletesAllShapes}{\void}

Removes and deletes all shapes in the diagram.

\membersection{wxDiagram::DrawOutline}

\func{void}{DrawOutline}{\param{float}{ x1}, \param{float}{ y1}, \param{float}{ x2}, \param{float}{ y2}}

Draws an outline rectangle on the current device context.

\membersection{wxDiagram::GetCanvas}

\func{wxCanvas *}{GetCanvas}{\void}

Returns the canvas associated with this diagram.

\membersection{wxDiagram::GetGridSpacing}

\func{float}{GetGridSpacing}{\void}

Returns the grid spacing.

\membersection{wxDiagram::GetMouseTolerance}

\func{int}{GetMouseTolerance}{\void}

Returns the tolerance within which a mouse move is ignored.

\membersection{wxDiagram::GetShapeList}

\func{wxList *}{GetShapeList}{\void}

Returns a pointer to the internal shape list.

\membersection{wxDiagram::GetQuickEditMode}

\func{bool}{GetQuickEditMode}{\void}

Returns quick edit mode.

\membersection{wxDiagram::GetSnapToGrid}

\func{bool}{GetSnapToGrid}{\void}

Returns snap-to-grid mode.

\membersection{wxDiagram::InsertShape}

\func{void}{InsertShape}{\param{wxShape *}{shape}}

Inserts a shape at the front of the shape list.

\membersection{wxDiagram::LoadFile}

\func{bool}{LoadFile}{\param{const wxString\& }{filename}}

Loads the diagram from a PrologIO file.

\membersection{wxDiagram::OnDatabaseLoad}

\func{void}{OnDatabaseLoad}{\param{PrologDatabase\&}{ database}}

Called just after the nodes and lines have been read from the PrologDatabase. You may override this;
the default member does nothing.


\membersection{wxDiagram::OnDatabaseSave}

\func{void}{OnDatabaseSave}{\param{PrologDatabase\&}{ database}}

Called just after the nodes and lines have been written to the PrologDatabase. You may override this;
the default member does nothing.

\membersection{wxDiagram::OnHeaderLoad}

\func{bool}{OnHeaderLoad}{\param{PrologDatabase\&}{ database}, \param{PrologExpr\&}{ expr}}

Called to allow the `diagram' header object to be read. The default member reads no further information.
You may wish to override this to read version information, author name, etc.


\membersection{wxDiagram::OnHeaderSave}

\func{bool}{OnHeaderSave}{\param{PrologDatabase\&}{ database}, \param{PrologExpr\&}{ expr}}

Called to allow instantiation of the `diagram' header object. The default member writes no further information.
You may wish to override this to include version information, author name, etc.

\membersection{wxDiagram::OnShapeLoad}

\func{bool}{OnShapeLoad}{\param{PrologDatabase\&}{ database}, \param{wxShape\&}{ shape}, \param{PrologExpr\&}{ expr}}

Called to read the shape from the {\it expr}. You may override this, but call this function first.
The default member calls ReadPrologAttributes for the shape.

\membersection{wxDiagram::OnShapeSave}

\func{bool}{OnShapeSave}{\param{PrologDatabase\&}{ database}, \param{wxShape\&}{ shape}, \param{PrologExpr\&}{ expr}}

Called to save the shape to the {\it expr} and {\it database}. You may override this, but call this function first.
The default member calls WritePrologAttributes for the shape, appends the shape to the database, and of the shape
is a composite, recursively calls OnShapeSave for its children.

\membersection{wxDiagram::ReadContainerGeometry}

\func{void}{ReadContainerGeometry}{\param{PrologDatabase\&}{ database}}

Reads container geometry from a PrologDatabase, linking up nodes which
are part of a composite. You probably won't need to redefine this.

\membersection{wxDiagram::ReadLines}

\func{void}{ReadLines}{\param{PrologDatabase\&}{ database}}

Reads lines from a PrologDatabase. You probably won't need to redefine this.

\membersection{wxDiagram::ReadNodes}

\func{void}{ReadNodes}{\param{PrologDatabase\&}{ database}}

Reads nodes from a PrologDatabase. You probably won't need to redefine this.


\membersection{wxDiagram::RecentreAll}

\func{void}{RecentreAll}{\void}

Make sure all text that should be centred, is centred.

\membersection{wxDiagram::Redraw}

\func{void}{Redraw}{\void}

Draws the shapes in the diagram on the currently set device context.

\membersection{wxDiagram::RemoveAllShapes}

\func{void}{RemoveAllShapes}{\void}

Removes all shapes from the diagram but does not delete the shapes.

\membersection{wxDiagram::RemoveShape}

\func{void}{RemoveShape}{\param{wxShape *}{shape}}

Removes the shape from the diagram (non-recursively) but does not delete it.

\membersection{wxDiagram::SaveFile}

\func{bool}{SaveFile}{\param{const wxString\& }{filename}}

Saves the diagram in a PrologIO file.

\membersection{wxDiagram::SetCanvas}

\func{void}{SetCanvas}{\param{wxShapeCanvas *}{canvas}}

Sets the canvas associated with this diagram.

\membersection{wxDiagram::SetGridSpacing}

\func{void}{SetGridSpacing}{\param{float}{ spacing}}

Sets the grid spacing. The default is 5.

\membersection{wxDiagram::SetMouseTolerance}

\func{void}{SetMouseTolerance}{\param{int}{ tolerance}}

Sets the tolerance within which a mouse move is ignored. The default is 3 pixels.

\membersection{wxDiagram::SetQuickEditMode}

\func{void}{SetQuickEditMode}{\param{bool}{ mode}}

Sets quick-edit-mode on or off. In this mode, refreshes are minimized, but the
diagram may need manual refreshing occasionally.

\membersection{wxDiagram::SetSnapToGrid}

\func{void}{SetSnapToGrid}{\param{bool}{ snap}}

Sets snap-to-grid mode on or off. The default is on.

\membersection{wxDiagram::ShowAll}

\func{void}{ShowAll}{\param{bool}{ show}}

Calls Show for each shape in the diagram.

\membersection{wxDiagram::Snap}

\func{void}{Snap}{\param{float *}{x}, \param{float *}{y}}

`Snaps' the coordinate to the nearest grid position, if snap-to-grid is on.


\section{\class{wxDrawnShape}: wxRectangleShape}\label{wxdrawnshape}

Draws a pseduo-metafile shape, which can be loaded from a simple Windows metafile.

See also \helpref{wxRectangleShape}{wxrectangleshape}.

\membersection{wxDrawnShape::wxDrawnShape}

\func{void}{wxDrawnShape}{\void}

Constructor.

\membersection{wxDrawnShape::\destruct{wxDrawnShape}}

\func{void}{\destruct{wxDrawnShape}}{\void}

Destructor.

\membersection{wxDrawnShape::GetMetaFile}

\func{wxPseudoMetaFile\& }{GetMetaFile}{\void}

Returns a reference to the internal `pseudo-metafile'.

\membersection{wxDrawnShape::LoadFromMetaFile}

\func{bool}{LoadFromMetaFile}{\param{const wxString\& }{filename}}

Loads a (very simple) Windows metafile, created for example by Top Draw, the Windows shareware graphics package.

\membersection{wxDrawnShape::Rotate}

\func{void}{Rotate}{\param{float }{x}, \param{float }{y}, \param{float }{theta}}

Rotate about the given axis by the given amount in radians.

\membersection{wxDrawnShape::Scale}

\func{void}{Scale}{\param{float }{sx}, \param{float }{sy}}

Scales the shape by the given amount.

\membersection{wxDrawnShape::SetSaveToFile}

\func{void}{SetSaveToFile}{\param{bool }{save}}

If {\it save} is TRUE, the image will be saved along with the shape's other attributes. The reason
why this might not be desirable is that if there are many shapes with the same image, it would be
more efficient for the application to save one copy, and not duplicate the information for every
shape. The default is TRUE.

\membersection{wxDrawnShape::Translate}

\func{void}{Translate}{\param{float }{x}, \param{float }{y}}

Translates the shape by the given amount.

\section{\class{wxCircleShape}: wxEllipseShape}\label{wxcircleshape}

An wxEllipseShape whose width and height are the same.

See also \helpref{wxEllipseShape}{wxellipseshape}.

\membersection{wxCircleShape::wxCircleShape}

\func{void}{wxCircleShape}{\param{float}{ width = 0.0}}

Constructor.

\membersection{wxCircleShape::\destruct{wxCircleShape}}

\func{void}{\destruct{wxCircleShape}}{\void}

Destructor.


\section{\class{wxCompositeShape}: wxRectangleShape}\label{wxcompositeshape}

\overview{wxCompositeShape overview}{compositeshapeoverview}

This is an object with a list of child objects, and a list of size
and positioning constraints between the children.

See also \helpref{wxRectangleShape}{wxrectangleshape}.

\membersection{wxCompositeShape::wxCompositeShape}

\func{void}{wxCompositeShape}{\void}

Constructor.

\membersection{wxCompositeShape::\destruct{wxCompositeShape}}

\func{void}{\destruct{wxCompositeShape}}{\void}

Destructor.

\membersection{wxCompositeShape::AddChild}\label{wxcompositeshapeaddchild}

\func{void}{AddChild}{\param{wxShape *}{child}, \param{wxShape *}{addAfter = NULL}}

Adds a child shape to the composite. If {\it addAfter} is non-NULL, the shape will be added
after this shape.

\membersection{wxCompositeShape::AddConstraint}\label{wxcompositeshapeaddconstraint}

\func{OGLConstraint *}{AddConstraint}{\param{OGLConstraint *}{constraint}}

\func{OGLConstraint *}{AddConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxList\&}{constrained}}

\func{OGLConstraint *}{AddConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxShape *}{constrained}}

Adds a constraint to the composite.

\membersection{wxCompositeShape::CalculateSize}

\func{void}{CalculateSize}{\void}

Calculates the size and position of the composite based on child sizes and positions.

\membersection{wxCompositeShape::ContainsDivision}

\func{bool}{FindContainerImage}{\param{wxDivisionShape *}{division}}

Returns TRUE if {\it division} is a descendant of this container.

\membersection{wxCompositeShape::DeleteConstraint}

\func{void}{DeleteConstraint}{\param{OGLConstraint *}{constraint}}

Deletes constraint from composite.

\membersection{wxCompositeShape::DeleteConstraintsInvolvingChild}

\func{void}{DeleteConstraintsInvolvingChild}{\param{wxShape *}{child}}

This function deletes constraints which mention the given child. Used when
deleting a child from the composite.

\membersection{wxCompositeShape::FindConstraint}

\func{OGLConstraint *}{FindConstraint}{\param{long}{ id}, \param{wxCompositeShape **}{actualComposite}}

Finds the constraint with the given id, also returning the actual composite the constraint was in,
in case that composite was a descendant of this composite.

\membersection{wxCompositeShape::FindContainerImage}

\func{wxShape *}{FindContainerImage}{\void}

Finds the image used to visualize a container. This is any child
of the composite that is not in the divisions list.

\membersection{wxCompositeShape::GetConstraints}

\func{wxList\&}{GetConstraints}{\void}

Returns a reference to the list of constraints.

\membersection{wxCompositeShape::GetDivisions}

\func{wxList\&}{GetDivisions}{\void}

Returns a reference to the list of divisions.

\membersection{wxCompositeShape::MakeContainer}\label{wxcompositeshapemakecontainer}

\func{void}{MakeContainer}{\void}

Makes this composite into a container by creating one child wxDivisionShape.

\membersection{wxCompositeShape::OnCreateDivision}

\func{wxDivisionShape *}{OnCreateDivision}{\void}

Called when a new division shape is required. Can be overriden to allow an application
to use a different class of division.

\membersection{wxCompositeShape::Recompute}\label{wxcompositeshaperecompute}

\func{bool}{Recompute}{\void} 

Recomputes any constraints associated with the object. If FALSE is returned,
the constraints could not be satisfied (there was an inconsistency).

\membersection{wxCompositeShape::RemoveChild}

\func{void}{RemoveChild}{\param{wxShape *}{child}}

Removes the child from the composite and any constraint relationships, but does not
delete the child.

\section{\class{wxDividedShape}: wxRectangleShape}\label{wxdividedshape}

\overview{wxDividedShape overview}{dividedshapeoverview}

A wxDividedShape is a rectangle with a number of vertical divisions. Each
division may have its text formatted with independent characteristics, and
the size of each division relative to the whole image may be specified.

See also \helpref{wxRectangleShape}{wxrectangleshape}.

\membersection{wxDividedShape::wxDividedShape}

\func{void}{wxDividedShape}{\param{float}{ width = 0.0}, \param{float}{ height = 0.0}}

Constructor.

\membersection{wxDividedShape::\destruct{wxDividedShape}}

\func{void}{\destruct{wxDividedShape}}{\void}

Destructor.

\membersection{wxDividedShape::EditRegions}

\func{void}{EditRegions}{\void}

Edit the region colours and styles.

\membersection{wxDividedShape::SetRegionSizes}

\func{void}{SetRegionSizes}{\void}

Set all region sizes according to proportions and
this object total size.




\section{\class{wxDivisionShape}: wxCompositeShape}\label{wxdivisionshape}

\overview{wxCompositeShape overview}{compositeshapeoverview}

A division shape is like a composite in that it can contain further objects, but is used exclusively to
divide another shape into regions, or divisions. A wxDivisionShape is never free-standing.

See also \helpref{wxCompositeShape}{wxcompositeshape}.

\membersection{wxDivisionShape::wxDivisionShape}

\func{void}{wxDivisionShape}{\void}

Constructor.

\membersection{wxDivisionShape::\destruct{wxDivisionShape}}

\func{void}{\destruct{wxDivisionShape}}{\void}

Destructor.

\membersection{wxDivisionShape::AdjustBottom}

\func{void}{AdjustBottom}{\param{float}{ bottom}, \param{bool}{ test}}

Adjust a side, returning FALSE if it's not physically possible to adjust it to this point.

\membersection{wxDivisionShape::AdjustLeft}

\func{void}{AdjustLeft}{\param{float}{ left}, \param{bool}{ test}}

Adjust a side, returning FALSE if it's not physically possible to adjust it to this point.

\membersection{wxDivisionShape::AdjustRight}

\func{void}{AdjustRight}{\param{float}{ right}, \param{bool}{ test}}

Adjust a side, returning FALSE if it's not physically possible to adjust it to this point.

\membersection{wxDivisionShape::AdjustTop}

\func{void}{AdjustTop}{\param{float}{ top}, \param{bool}{ test}}

Adjust a side, returning FALSE if it's not physically possible to adjust it to this point.

\membersection{wxDivisionShape::Divide}\label{wxdivisionshapedivide}

\func{void}{Divide}{\param{int}{ direction}}

Divide this division into two further divisions, horizontally ({\it direction} is wxHORIZONTAL) or
vertically ({\it direction} is wxVERTICAL).

\membersection{wxDivisionShape::EditEdge}

\func{void}{EditEdge}{\param{int}{ side}}

Interactively edit style of left or top side.

\membersection{wxDivisionShape::GetBottomSide}

\func{wxDivisionShape *}{GetBottomSide}{\void}

Returns a pointer to the division on the bottom side of this division.

\membersection{wxDivisionShape::GetHandleSide}

\func{int}{GetHandleSide}{\void}

Returns the side which the handle appears on (DIVISION\_SIDE\_LEFT or DIVISION\_SIDE\_TOP).

\membersection{wxDivisionShape::GetLeftSide}

\func{wxDivisionShape *}{GetLeftSide}{\void}

Returns a pointer to the division on the left side of this division.

\membersection{wxDivisionShape::GetLeftSideColour}

\func{wxString}{GetLeftSideColour}{\void}

Returns a pointer to the colour used for drawing the left side of the division.

\membersection{wxDivisionShape::GetLeftSidePen}

\func{wxPen *}{GetLeftSidePen}{\void}

Returns a pointer to the pen used for drawing the left side of the division.

\membersection{wxDivisionShape::GetRightSide}

\func{wxDivisionShape *}{GetRightSide}{\void}

Returns a pointer to the division on the right side of this division.

\membersection{wxDivisionShape::GetTopSide}

\func{wxDivisionShape *}{GetTopSide}{\void}

Returns a pointer to the division on the top side of this division.

\membersection{wxDivisionShape::GetTopSideColour}

\func{wxString}{GetTopSideColour}{\void}

Returns a pointer to the colour used for drawing the top side of the division.

\membersection{wxDivisionShape::GetTopSidePen}

\func{wxPen *}{GetTopSidePen}{\void}

Returns a pointer to the pen used for drawing the left side of the division.


\membersection{wxDivisionShape::ResizeAdjoining}

\func{void}{ResizeAdjoining}{\param{int}{ side}, \param{float}{ newPos}, \param{bool}{ test}}

Resize adjoining divisions at the given side. If {\it test} is TRUE,
just see whether it's possible for each adjoining region,
returning FALSE if it's not.

{\it side} can be one of:

\begin{itemize}\itemsep=0pt
\item DIVISION\_SIDE\_NONE
\item DIVISION\_SIDE\_LEFT
\item DIVISION\_SIDE\_TOP
\item DIVISION\_SIDE\_RIGHT
\item DIVISION\_SIDE\_BOTTOM
\end{itemize}

\membersection{wxDivisionShape::PopupMenu}

\func{void}{PopupMenu}{\param{float}{ x}, \param{float}{ y}}

Popup the division menu.

\membersection{wxDivisionShape::SetBottomSide}

\func{void}{SetBottomSide}{\param{wxDivisionShape *}{shape}}

Set the pointer to the division on the bottom side of this division.

\membersection{wxDivisionShape::SetHandleSide}

\func{int}{SetHandleSide}{\void}

Sets the side which the handle appears on (DIVISION\_SIDE\_LEFT or DIVISION\_SIDE\_TOP).

\membersection{wxDivisionShape::SetLeftSide}

\func{void}{SetLeftSide}{\param{wxDivisionShape *}{shape}}

Set the pointer to the division on the left side of this division.

\membersection{wxDivisionShape::SetLeftSideColour}

\func{void}{SetLeftSideColour}{\param{const wxString\& }{colour}}

Sets the colour for drawing the left side of the division.

\membersection{wxDivisionShape::SetLeftSidePen}

\func{void}{SetLeftSidePen}{\param{wxPen *}{pen}}

Sets the pen for drawing the left side of the division.

\membersection{wxDivisionShape::SetRightSide}

\func{void}{SetRightSide}{\param{wxDivisionShape *}{shape}}

Set the pointer to the division on the right side of this division.

\membersection{wxDivisionShape::SetTopSide}

\func{void}{SetTopSide}{\param{wxDivisionShape *}{shape}}

Set the pointer to the division on the top side of this division.

\membersection{wxDivisionShape::SetTopSideColour}

\func{void}{SetTopSideColour}{\param{const wxString\& }{colour}}

Sets the colour for drawing the top side of the division.

\membersection{wxDivisionShape::SetTopSidePen}

\func{void}{SetTopSidePen}{\param{wxPen *}{pen}}

Sets the pen for drawing the top side of the division.



\section{\class{wxEllipseShape}: wxShape}\label{wxellipseshape}

The wxEllipseShape behaves similarly to the wxRectangleShape but is
elliptical.

See also \helpref{wxShape}{wxshape}.

\membersection{wxEllipseShape::wxEllipseShape}

\func{void}{wxEllipseShape}{\param{float}{ width = 0.0}, \param{float}{ height = 0.0}}

Constructor.

\membersection{wxEllipseShape::\destruct{wxEllipseShape}}

\func{void}{\destruct{wxEllipseShape}}{\void}

Destructor.

\section{\class{wxLineShape}: wxShape}\label{wxlineshape}

A wxLineShape may be attached to two nodes; it may be segmented, in which
case a control point is drawn for each joint.

See also \helpref{wxShape}{wxshape}.

\membersection{wxLineShape::wxLineShape}

\func{void}{wxLineShape}{\void}

\func{void}{wxLineShape}{\param{wxList *}{list}}

Constructors. In the second (usual) form, supply a list of wxPoints, each to be used
as a `control point' for the line. The minimum number of points is two.

\membersection{wxLineShape::\destruct{wxLineShape}}

\func{void}{\destruct{wxLineShape}}{\void}

Destructor.

\membersection{wxLineShape::AddArrow}

\func{void}{AddArrow}{\param{WXTYPE}{ type}, \param{bool}{ end = ARROW\_POSITION\_END}, \param{float}{ arrowSize = 10.0},
 \param{float}{ xOffset = 0.0}, \param{const wxString\& }{name = NULL}, \param{wxPseudoMetaFile *}{mf = NULL}, \param{long}{ arrowId = -1}}

Adds an arrow (or annotation) to the line.

{\it type} may currently be one of:

\begin{description}\itemsep=0pt
\item[ARROW\_HOLLOW\_CIRCLE] Hollow circle.
\item[ARROW\_FILLED\_CIRCLE] Filled circle.
\item[ARROW\_ARROW] Conventional arrowhead.
\item[ARROW\_SINGLE\_OBLIQUE] Single oblique stroke.
\item[ARROW\_DOUBLE\_OBLIQUE] Double oblique stroke.
\item[ARROW\_DOUBLE\_METAFILE] Custom arrowhead.
\end{description}

{\it end} may currently be one of:

\begin{description}\itemsep=0pt
\item[ARROW\_POSITION\_END] Arrow appears at the end.
\item[ARROW\_POSITION\_START] Arrow appears at the start.
\end{description}

{\it arrowSize} specifies the length of the arrow.

{\it xOffset} specifies the offset from the end of the line.

{\it name} specifies a name for the arrow.

{\it mf} can be a wxPseduoMetaFile, perhaps loaded from a simple Windows metafile.

{\it arrowId} is the id for the arrow.

\membersection{wxLineShape::AddArrowOrdered}

\func{void}{AddArrowOrdered}{\param{wxArrowHead *}{arrow}, \param{wxList\&}{ referenceList}, \param{int}{ end}}

Add an arrowhead in the position indicated by the reference
list of arrowheads, which contains all legal arrowheads for this
line, in the correct order.
E.g.

\begin{verbatim}
  Reference list:      a b c d e
  Current line list:   a d
\end{verbatim}

Add c, then line list is: a c d.

If no legal arrowhead position, return FALSE.  Assume reference list is
for one end only, since it potentially defines the ordering for any one
of the 3 positions. So we don't check the reference list for arrowhead
position.

\membersection{wxLineShape::ClearArrow}

\func{bool}{ClearArrow}{\param{const wxString\& }{name}}

Delete the arrow with the given name.

\membersection{wxLineShape::ClearArrowsAtPosition}

\func{void}{ClearArrowsAtPosition}{\param{int}{ position = -1}}

Delete the arrows at the specified position, or at any position if {\it position} is -1.

\membersection{wxLineShape::DrawArrow}

\func{void}{DrawArrow}{\param{ArrowHead *}{arrow}, \param{float}{ xOffset}, \param{bool}{ proportionalOffset}}

Draws the given arrowhead (or annotation).

\membersection{wxLineShape::DeleteArrowHead}

\func{bool}{DeleteArrowHead}{\param{long}{ arrowId}}

\func{bool}{DeleteArrowHead}{\param{int}{ position}, \param{const wxString\& }{name}}

Delete arrowhead by id or position and name.

\membersection{wxLineShape::DeleteLineControlPoint}

\func{bool}{DeleteLineControlPoint}{\void}

Deletes an arbitary point on the line.

\membersection{wxLineShape::DrawArrows}

\func{void}{DrawArrows}{\void}

Draws all arrows.

\membersection{wxLineShape::DrawRegion}

\func{void}{DrawRegion}{\param{wxShapeRegion *}{region}, \param{float}{ x}, \param{float}{ y}}

Format one region at this position.

\membersection{wxLineShape::EraseRegion}

\func{void}{EraseRegion}{\param{wxShapeRegion *}{region}, \param{float}{ x}, \param{float}{ y}}

Format one region at this position.

\membersection{wxLineShape::FindArrowHead}

\func{wxArrowHead *}{FindArrowHead}{\param{long}{ arrowId}}

\func{wxArrowHead *}{FindArrowHead}{\param{int}{ position}, \param{const wxString\& }{name}}

Find arrowhead by id or position and name.

\membersection{wxLineShape::FindLineEndPoints}

\func{void}{FindLineEndPoints}{\param{float *}{fromX}, \param{float *}{fromY}, \param{float *}{toX}, \param{float *}{toY}}

Finds the x, y points at the two ends of the line. This function can be
used by e.g. line-routing routines to get the actual points on the two
node images where the lines will be drawn to/from.

\membersection{wxLineShape::FindLinePosition}

\func{int}{FindLinePosition}{\param{float }{x}, \param{float }{y}}

Find which position we're talking about at this x, y.
Returns ARROW\_POSITION\_START, ARROW\_POSITION\_MIDDLE, ARROW\_POSITION\_END.

\membersection{wxLineShape::FindMinimumWidth}

\func{float}{FindMinimumWidth}{\void}

Finds the horizontal width for drawing a line with arrows in minimum
space. Assume arrows at end only.

\membersection{wxLineShape::FindNth}

\func{void}{FindNth}{\param{wxShape *}{image}, \param{int *}{nth}, \param{int *}{noArcs}, \param{bool}{ incoming}}

Finds the position of the line on the given object. Specify whether incoming or outgoing lines are
being considered with {\it incoming}.

\membersection{wxLineShape::GetAttachmentFrom}

\func{int}{GetAttachmentFrom}{\void}

Returns the attachment point on the `from' node.

\membersection{wxLineShape::GetAttachmentTo}

\func{int}{GetAttachmentTo}{\void}

Returns the attachment point on the `to' node.

\membersection{wxLineShape::GetEnds}

\func{void}{GetEnds}{\param{float *}{x1}, \param{float *}{y1}, \param{float *}{x2}, \param{float *}{y2}}

Gets the visible endpoints of the lines for drawing between two objects.

\membersection{wxLineShape::GetFormatMode}

\func{int}{GetFormatMode}{\param{int}{ regionId = 0}}

Returns the format mode for this region. See als \helpref{SetFormatMode}{setformatmode}.

\membersection{wxLineShape::GetFrom}

\func{wxShape *}{GetFrom}{\void}

Gets the `from' object.

\membersection{wxLineShape::GetLabelPosition}

\func{void}{GetLabelPosition}{\param{int}{ position}, \param{float *}{x}, \param{float *}{y}}

Get the reference point for a label. Region x and y are offsets from this.
position is 0 (middle), 1 (start), 2 (end).

\membersection{wxLineShape::GetNextControlPoint}

\func{wxPoint *}{GetNextControlPoint}{\param{wxShape *}{shape}}

Find the next control point in the line after the start/end point,
depending on whether the shape is at the start or end.

\membersection{wxLineShape::GetTo}

\func{wxShape *}{GetTo}{\void}

Gets the `to' object.

\membersection{wxLineShape::Initialise}

\func{void}{Initialise}{\void}

Initialises the line object.

\membersection{wxLineShape::InsertLineControlPoint}

\func{void}{InsertLineControlPoint}{\void}

Inserts a control point at an arbitrary position.

\membersection{wxLineShape::IsEnd}

\func{bool}{IsEnd}{\param{wxShape *}{shape}}

Returns TRUE if {\it shape} is at the end of the line.

\membersection{wxLineShape::IsSpline}

\func{bool}{IsSpline}{\void}

Returns TRUE if a spline is drawn through the control points, and FALSE otherwise.

\membersection{wxLineShape::MakeLineControlPoints}

\func{void}{MakeLineControlPoints}{\param{int}{ n}}

Make a given number of control points.

\membersection{wxLineShape::OnMoveLink}

\func{void}{OnMoveLink}{\void}

Called when a connected object has moved, to move the link to
correct position.

\membersection{wxLineShape::SetAttachments}

\func{void}{SetAttachments}{\param{int}{ fromAttach}, \param{int}{ toAttach}}

Specifies which object attachment points should be used at each end of the line.

\membersection{wxLineShape::SetEnds}

\func{void}{SetEnds}{\param{float}{ x1}, \param{float}{ y1}, \param{float}{ x2}, \param{float}{ y2}}

Sets the end positions of the line.

\membersection{wxLineShape::SetFrom}

\func{void}{SetFrom}{\param{wxShape *}{object}}

Sets the `from' object for the line.

\membersection{wxLineShape::SetIgnoreOffsets}

\func{void}{SetIgnoreOffsets}{\param{bool}{ ignore}}

Tells the shape whether to ignore offsets from the end of the line when drawing.

\membersection{wxLineShape::SetSpline}

\func{void}{SetSpline}{\param{bool}{ spline}}

Specifies whether a spline is to be drawn through the control points (TRUE), or a line (FALSE).

\membersection{wxLineShape::SetTo}

\func{void}{SetTo}{\param{wxShape *}{object}}

Sets the `to' object for the line.

\membersection{wxLineShape::Straighten}

\func{void}{Straighten}{\void}

Straighten verticals and horizontals.

\membersection{wxLineShape::Unlink}

\func{void}{Unlink}{\void}

Unlinks the line from the nodes at either end.


\section{\class{wxPolygonShape}: wxShape}\label{wxpolygonshape}

A wxPolygonShape's shape is defined by a number of points passed to the object's
constructor. It can be used to create new shapes such as diamonds and triangles.

See also \helpref{wxShape}{wxshape}.

\membersection{wxPolygonShape::wxPolygonShape}

\func{void}{wxPolygonShape}{void}

Constructor. Call Create to specify the polygon's vertices.

\membersection{wxPolygonShape::\destruct{wxPolygonShape}}

\func{void}{\destruct{wxPolygonShape}}{\void}

Destructor.

\membersection{wxPolygonShape::Create}

\func{void}{Create}{\param{wxList *}{points}}

Takes a list of wxPoints; each point is an {\it offset} from the centre.
The polygon's destructor will delete these points, so do not delete them yourself.

\membersection{wxPolygonShape::AddPolygonPoint}

\func{void}{AddPolygonPoint}{\param{int}{ pos = 0}}

Add a control point after the given point.

\membersection{wxPolygonShape::CalculatePolygonCentre}

\func{void}{CalculatePolygonCentre}{\void}

Recalculates the centre of the polygon.

\membersection{wxPolygonShape::DeletePolygonPoint}

\func{void}{DeletePolygonPoint}{\param{int}{ pos = 0}}

Deletes a control point.

\membersection{wxPolygonShape::GetPoints}

\func{wxList *}{GetPoints}{\void}

Returns a pointer to the internal list of polygon vertices.

\membersection{wxPolygonShape::UpdateOriginalPoints}

\func{void}{UpdateOriginalPoints}{\void}

If we've changed the shape, must make the original
points match the working points with this function.

\section{\class{wxRectangleShape}: wxShape}\label{wxrectangleshape}

The wxRectangleShape has rounded or square corners.

See also \helpref{wxShape}{wxshape}.

\membersection{wxRectangleShape::wxRectangleShape}

\func{void}{wxRectangleShape}{\param{float}{ width = 0.0}, \param{float}{ height = 0.0}}

Constructor.

\membersection{wxRectangleShape::\destruct{wxRectangleShape}}

\func{void}{\destruct{wxRectangleShape}}{\void}

Destructor.

\membersection{wxRectangleShape::SetCornerRadius}

\func{void}{SetCornerRadius}{\param{float}{ radius}}

Sets the radius of the rectangle's rounded corners. If the radius is zero, a non-rounded
rectangle will be drawn. If the radius is negative, the value is the proportion of the
smaller dimension of the rectangle.

\section{\class{wxPseudoMetaFile}: wxObject}\label{wxpseudometafile}

A simple metafile-like class which can load data from a Windows metafile on all platforms.


\section{\class{wxShape}: wxShapeEvtHandler}\label{wxshape}

The wxShape is the top-level, abstract object that all other
objects are derived from. All common functionality is represented by
wxShape's members, and overriden members that appear in derived
classes and have behaviour as documented for wxShape, are not
documented separately.

See also \helpref{wxShapeEvtHandler}{wxshapeevthandler}.

\membersection{wxShape::wxShape}

\func{void}{wxShape}{\param{wxShapeCanvas *}{canvas = NULL}}

Constructs a new wxShape.

\membersection{wxShape::\destruct{wxShape}}

\func{void}{\destruct{wxShape}}{\void}

Destructor.

\membersection{wxShape::AddLine}

\func{void}{AddLine}{\param{wxLineShape *}{line}, \param{wxShape *}{other}, \param{int}{attachFrom = 0}, \param{int}{ attachTo = 0}}

Adds a line between the specified canvas objects, at the specified attachment points.

\membersection{wxShape::AddRegion}

\func{void}{AddRegion}{\param{wxShapeRegion *}{region}}

Adds a region to the shape.

\membersection{wxShape::AddText}

\func{void}{AddText}{\param{const wxString\& }{string}}

Adds a line of text to the object's default text region.

\membersection{wxShape::AddToCanvas}

\func{void}{AddToCanvas}{\param{wxShapeCanvas *}{theCanvas}, \param{wxShape *}{addAfter=NULL}}

Adds the object to the canvas's object list. If {\it addAfter} is
non-NULL, will add the shape after this one.

\membersection{wxShape::AncestorSelected}

\func{bool}{AncestorSelected}{\void}

TRUE if the object's ancestor is currently selected.

\membersection{wxShape::AssignNewIds}

\func{void}{AssignNewIds}{\void}

Assigns new ids to this image and its children.

\membersection{wxShape::Attach}

\func{void}{Attach}{\param{wxShapeCanvas *}{can}}

Sets the object's internal canvas pointer to point to the given canvas.

\membersection{wxShape::CalculateSize}

\func{void}{CalculateSize}{\void}

Called to calculate the object's size if dependent on children sizes.

\membersection{wxShape::ClearAttachments}

\func{void}{ClearAttachments}{\void}

Clears internal custom attachment point objects (of class wxAttachmentPoint).

\membersection{wxShape::ClearRegions}

\func{void}{ClearRegions}{\void}

Clears the wxShapeRegions from the shape.

\membersection{wxShape::ClearText}

\func{void}{ClearText}{\param{int}{ regionId = 0}}

Clears the text from the specified text region.

\membersection{wxShape::Constrain}

\func{bool}{Constrain}{\void}

Calculates the object's constraints (if any). Applicable
only to wxCompositeShape, does nothing if the object is of
a different class.

\membersection{wxShape::Copy}

\func{void}{Copy}{\param{wxShape\&}{ copy}}

Copy the object into the given object. Every derived class must have one of these.

\membersection{wxShape::CreateNewCopy}

\func{wxShape *}{CreateNewCopy}{\param{wxShapeCanvas *}{theCanvas = NULL}}

Creates and returns a new copy of this object (calling PrivateCopy). Do not override this function.

This function should always be used to create a new copy, since it must do special processing
for copying constraints associated with constraints.

\membersection{wxShape::DeleteControlPoints}

\func{void}{DeleteControlPoints}{\void}

Deletes the control points (or handles) for the object. Does not redraw
the object.

\membersection{wxShape::Detach}

\func{void}{Detach}{\void}

Disassociates the object from its canvas by setting the internal object
canvas pointer to NULL.

\membersection{wxShape::Draggable}

\func{bool}{Draggable}{\void} 

TRUE if the object may be dragged by the user.

\membersection{wxShape::Draw}

\func{void}{Draw}{\void}

Draws the whole object and any lines attached to it.

Do not override this function: override OnDraw, which is called
by this function.

\membersection{wxShape::DrawContents}

\func{void}{DrawContents}{\void}

Draws the internal graphic of the object (such as
text).

Do not override this function: override OnDrawContents, which is called
by this function.

\membersection{wxShape::DrawLines}

\func{void}{DrawLinks}{\param{int}{ attachment = -1}}

Draws any lines linked to this object.

\membersection{wxShape::Erase}

\func{void}{Erase}{\void}

Erases the object, but does not repair damage caused to other
objects.

\membersection{wxShape::EraseContents}

\func{void}{EraseContents}{\void}

Erases the object contents, that is, the area within the object's
minimum bounding box.

\membersection{wxShape::EraseLinks}

\func{void}{EraseLinks}{\param{int}{ attachment = -1}}

Erases links attached to this object, but does not repair
damage caused to other objects.

\membersection{wxShape::FindRegion}

\func{wxShape *}{FindRegion}{\param{const wxString\& }{regionName}, \param{int *}{regionId}}

Finds the actual image (`this' if non-composite) and region id for the given
region name.

\membersection{wxShape::FindRegionNames}

\func{void}{FindRegionNames}{\param{wxStringList\&}{ list}}

Finds all region names for this image (composite or simple).
Supply an empty string list.

\membersection{wxShape::Flash}

\func{void}{Flash}{\void}

Flashes the object.

\membersection{wxShape::FormatText}

\func{void}{FormatText}{\param{const wxString\& }{s}, \param{int}{ i = 0}}

Reformats the given text region; defaults to formatting the default region.

\membersection{wxShape::GetAttachmentMode}

\func{void}{GetAttachmentMode}{\void}

Returns the attachment mode. See \helpref{SetAttachmentMode}{setattachmentmode}.

\membersection{wxShape::GetAttachmentPosition}

\func{void}{GetAttachmentPosition}{\param{int}{ attachment}, \param{float *}{x}, \param{float *}{y}, \param{int}{ nth = 0}, \param{int}{ noArcs = 1}}

Gets the position at which the given attachment point should be drawn.

\membersection{wxShape::GetBoundingBoxMax}

\func{void}{GetBoundingBoxMax}{\param{float *}{width}, \param{float *}{height}}

Gets the maximum bounding box for the object, taking into
account external features such as shadows.

\membersection{wxShape::GetBoundingBoxMin}

\func{void}{GetBoundingBoxMin}{\param{float *}{width}, \param{float *}{height}}

Gets the minimum bounding box for the object, that defines
the area available for drawing the contents (such as text).

\membersection{wxShape::GetBrush}

\func{wxBrush *}{GetBrush}{\void}

Returns the brush used for filling the shape.

\membersection{wxShape::GetCanvas}

\func{wxShapeCanvas *}{GetCanvas}{\void}

Gets the internal canvas pointer.

\membersection{wxShape::GetCentreResize}

\func{bool}{GetCentreResize}{\void}

Returns TRUE if the shape is to be resized from the centre (the centre
stands still), or FALSE if from the corner or side being dragged (the
other corner or side stands still).

\membersection{wxShape::GetChildren}

\func{wxList\&}{GetChildren}{\void}

Returns a reference to the list of children for this shape.

\membersection{wxShape::GetClientData}

\func{wxObject *}{GetClientData}{\void}

Gets the client data associated with the object (NULL if there is
none).

\membersection{wxShape::GetDisableLabel}

\func{bool}{GetDisableLabel}{\void}

Returns TRUE if the default region will not be shown, FALSE otherwise.

\membersection{wxShape::GetEventHandler}

\func{wxShapeEvtHandler *}{GetEventHandler}{\void}

Returns the event handler for this shape.

\membersection{wxShape::GetFixedHeight}

\func{bool}{GetFixedHeight}{\void}

Returns TRUE if the shape cannot be resized in the vertical plane.

\membersection{wxShape::GetFixedSize}

\func{void}{GetFixedSize}{\param{bool *}{ x}, \param{bool *}{ y}} 

Returns flags indicating whether the shape is of fixed size in either direction.

\membersection{wxShape::GetFixedWidth}

\func{bool}{GetFixedWidth}{\void}

Returns TRUE if the shape cannot be resized in the horizontal plane.

\membersection{wxShape::GetFont}

\func{int}{GetFont}{\param{int}{ regionId = 0}}

Gets the font for the specified text region.

\membersection{wxShape::GetFunctor}

\func{char*}{GetFunctor}{\void}

Gets a string representing the type of the object, to be used when
writing out object descriptions to a file. This is overridden by
each derived object class to provide an appropriate type string.

\membersection{wxShape::GetId}

\func{long}{GetId}{\void}

Returns the integer identifier for this shape.

\membersection{wxShape::GetLines}

\func{wxList\&}{GetLines}{\void}

Returns a reference to the list of lines connected to this shape.

\membersection{wxShape::GetNumberOfAttachments}

\func{int}{GetNumberOfAttachments}{\void}

Gets the number of attachment points for this object.

\membersection{wxShape::GetNumberOfTextRegions}

\func{int}{GetNumberOfTextRegions}{\void} 

Gets the number of text regions for this object.

\membersection{wxShape::GetParent}

\func{wxShape *}{GetParent}{\void}

Returns the parent of this shape, if it is part of a composite.

\membersection{wxShape::GetPen}

\func{wxPen *}{GetPen}{\void}

Returns the pen used for drawing the shape's outline.

\membersection{wxShape::GetPerimeterPoint}

\func{bool}{GetPerimeterPoint}{\param{float}{ x1}, \param{float}{ y1}, \param{float}{ x2}, \param{float}{ y2}, \param{float *}{x3}, \param{float *}{y3}}

Gets the point at which the line from (x1, y1) to (x2, y2) hits the object. Returns TRUE if the
line hits the perimeter.

\membersection{wxShape::GetRegionId}\label{getregionid}

\func{int}{GetRegionId}{\param{const wxString\& }{name}}

Gets the region's identifier by name. This is {\it not} unique for within an entire composite, but
is unique for the image.

\membersection{wxShape::GetRegionName}\label{getregionname}

\func{wxString}{GetRegionName}{\param{int}{ regionId = 0}}

Gets the region's name. A region's name can be used to uniquely determine a region within
an entire composite image hierarchy. See also \helpref{SetRegionName}{setregionname}.

\membersection{wxShape::GetRegions}\label{getregions}

\func{wxList\&}{GetRegions}{\void}

Returns the list of wxShapeRegions.

\membersection{wxShape::GetRotation}

\func{float}{GetRotatation}{\void}

Returns the angle of rotation in radians.

\membersection{wxShape::GetSensitivityFilter}

\func{void}{GetSensitivityFilter}{\void}

Returns the sensitivity filter, a bitlist of values. See \helpref{SetSensitivityFilter}{setsensitivityfilter}.

\membersection{wxShape::GetShadowMode}

\func{int}{SetShadowMode}{\void}

Returns the shadow mode. See \helpref{SetShadowMode}{setshadowmode}.

\membersection{wxShape::GetSpaceAttachments}

\func{bool}{GetSpaceAttachments}{\void}

Indicates whether lines should be spaced out evenly at the point they touch the node (TRUE), or whether they
should join at a single point (FALSE).

\membersection{wxShape::GetTextColour}

\func{wxString}{GetTextColour}{\param{int}{ regionId = 0}}

Gets the colour for the specified text region.

\membersection{wxShape::GetTopAncestor}

\func{wxShape *}{GetTopAncestor}{\void}

Returns the top-most ancestor of this shape (the root of the composite).

\membersection{wxShape::GetX}

\func{float}{GetX}{\void}

Gets the x position of the centre of the object.

\membersection{wxShape::GetY}

\func{float}{GetY}{\void}

Gets the y position of the centre of the object.

\membersection{wxShape::HitTest}

\func{bool}{HitTest}{\param{float}{ x}, \param{float}{ y}, \param{int *}{attachment}, \param{float *}{distance}}

Given a point on a canvas, returns TRUE if the point was on the object, and returns
the nearest attachment point and distance from the given point and target.

\membersection{wxShape::Insert}

\func{void}{InsertInCanvas}{\param{wxShapeCanvas *}{canvas}}

Inserts the shape at the front of the object list of {\it canvas}.

\membersection{wxShape::IsHighlighted}

\func{bool}{IsHighlighted}{\void}

Returns TRUE if the shape is highlighted. Shape highlighting is unimplemented.

\membersection{wxShape::IsShown}

\func{bool}{IsShown}{\void}

Returns TRUE if the shape is in a visible state, FALSE otherwise. Note
that this has nothing to do with whether the window is hidden or the
shape has scrolled off the canvas; it refers to the internal
visibility flag.

\membersection{wxShape::MakeControlPoints}

\func{void}{MakeControlPoints}{\void}

Make a list of control points (draggable handles) appropriate to the object.

\membersection{wxShape::MakeMandatoryControlPoints}

\func{void}{MakeMandatoryControlPoints}{\void}

Make the mandatory control points. For example, the control point on a dividing line should
appear even if the divided rectangle shape's handles should not appear (because it is the child of
a composite, and children are not resizable).

\membersection{wxShape::Move}

\func{void}{Move}{\param{float}{ x1}, \param{float}{ y1}, \param{bool}{ display = TRUE}}

Move the object to the given position, redrawing if {\it display} is TRUE.

\membersection{wxShape::MoveLineToNewAttachment}

\func{void}{MoveLineToNewAttachment}{\param{wxLineShape *}{toMove}, \param{float}{ x}, \param{float}{ y}}

Move the given line (which must already be attached to the object) to 
a different attachment point on the object.

\membersection{wxShape::MoveLinks}

\func{void}{MoveLinks}{\void}

Redraw all the lines attached to the object.

\membersection{wxShape::NameRegions}

\func{void}{NameRegions}{\param{const wxString\& }{parentName = ``"}}

Make unique names for all the regions in a shape or composite shape.

\membersection{wxShape::NewCopy}

\func{wxShape *}{NewCopy}{\void} 

Returns a new instance, and does the copy for this class. Should be
defined for each object class.

\membersection{wxShape::PrivateCopy}

\func{wxShape *}{PrivateCopy}{\void}

Returns a new instance, and does the copy for this class. This member
should be define for each class.

\membersection{wxShape::Rotate}

\func{void}{Rotate}{\param{float }{x}, \param{float }{y}, \param{float }{theta}}

Rotate about the given axis by the given amount in radians (does nothing
for most objects). But even non-rotating objects should record their
notional rotation in case it's important (e.g. in dog-leg code). 

\membersection{wxShape::ReadConstraints}

\func{void}{ReadConstraints}{\param{PrologExpr *}{clause}, \param{PrologDatabase *}{database}}

If the object is a composite, it may have constraints that need to be read in in a separate pass.

\membersection{wxShape::ReadPrologAttributes}

\func{void}{ReadPrologAttributes}{\param{PrologExpr *}{clause}}

Reads the attributes (data member values) from the given expression.

\membersection{wxShape::ReadRegions}

\func{void}{ReadRegions}{\param{PrologExpr *}{clause}}

Reads in the regions.

\membersection{wxShape::Recentre}

\func{void}{Recentre}{\void}

Does recentring (or other formatting) for all the text regions for this object.

\membersection{wxShape::RemoveFromCanvas}

\func{void}{RemoveFromCanvas}{\param{wxShapeCanvas *}{canvas}}

Removes the shape from the canvas.

\membersection{wxShape::ResetControlPoints}

\func{void}{ResetControlPoints}{\void}

Resets the positions of the control points (for instance when the
object's shape has changed).

\membersection{wxShape::ResetMandatoryControlPoints}

\func{void}{ResetMandatoryControlPoints}{\void}

Reset the mandatory control points. For example, the control point on a dividing line should
appear even if the divided rectangle shape's handles should not appear (because it is the child of
a composite, and children are not resizable).

\membersection{wxShape::Recompute}

\func{bool}{Recompute}{\void} 

Recomputes any constraints associated with the object (normally
applicable to wxCompositeShapes only, but harmless for other
classes of object).

\membersection{wxShape::RemoveLine}

\func{void}{RemoveLine}{\param{wxLineShape *}{line}}

Removes the given line from the object's list of attached lines.

\membersection{wxShape::Select}

\func{void}{Select}{\param{bool}{ select = TRUE}}

Selects or deselects the given object, drawing or erasing control points
(handles) as necessary.

\membersection{wxShape::Selected}

\func{bool}{Selected}{\void}

TRUE if the object is currently selected.

\membersection{wxShape::SetAttachmentMode}\label{setattachmentmode}

\func{void}{SetAttachmentMode}{\param{bool}{ flag}}

Sets the attachment mode to TRUE or FALSE. If TRUE, attachment points
will be significant when drawing lines to and from this object.
If FALSE, lines will be drawn as if to the centre of the object.

\membersection{wxShape::SetBrush}

\func{void}{SetBrush}{\param{wxBrush *}{brush}}

Sets the brush for filling the object's shape.

\membersection{wxShape::SetCanvas}

\func{void}{SetCanvas}{\param{wxShapeCanvas *}{theCanvas}}

Identical to Attach.

\membersection{wxShape::SetCentreResize}

\func{void}{SetCentreResize}{\param{bool}{ cr}}

Specify whether the shape is to be resized from the centre (the centre stands still) or from the corner or side
being dragged (the other corner or side stands still).

\membersection{wxShape::SetClientData}

\func{void}{SetClientData}{\param{wxObject *}{clientData}}

Sets the client data.


\membersection{wxShape::SetDC}

\func{void}{SetDC}{\param{wxDC *}{dc}}

Sets the device context associated with the object. This may temporarily be set
to (for example) a printer device context, so that the object will be printed
instead of drawn on a canvas.

\membersection{wxShape::SetDefaultRegionSize}\label{setdefaultregionsize}

\func{void}{SetDefaultRegionSize}{\void}

Set the default region to be consistent with the shape size.

\membersection{wxShape::SetDisableLabel}

\func{void}{SetDisableLabel}{\param{bool}{ flag}}

Set {\it flag} to TRUE to stop the default region being shown, FALSE otherwise.

\membersection{wxShape::SetDraggable}

\func{void}{SetDraggable}{\param{bool}{ drag}, \param{bool}{ recursive = FALSE}}

Sets the object to be draggable or not draggable.

\membersection{wxShape::SetDrawHandles}

\func{void}{SetDrawHandles}{\param{bool}{ drawH}}

Sets the {\it drawHandles} flag for this shape and all descendants. If {\it drawH} is TRUE (the default),
any handles (control points) will be drawn. Otherwise, the handles will not be drawn.

\membersection{wxShape::SetEventHandler}

\func{void}{GetEventHandler}{\param{wxShapeEvtHandler *}{handler}}

Sets the event handler for this shape.

\membersection{wxShape::SetFixedSize}

\func{void}{SetFixedSize}{\param{bool}{ x}, \param{bool}{ y}} 

Sets the object to be of the given, fixed size.

\membersection{wxShape::SetFont}

\func{void}{SetFont}{\param{wxFont *}{font}, \param{int}{ regionId = 0}}

Sets the font for the specified text region.

\membersection{wxShape::SetFormatMode}\label{setformatmode}

\func{void}{SetFormatMode}{\param{int}{ mode}, \param{int}{ regionId = 0}} 

Sets the format mode of the default text region. The argument can be a bit list
of the following:

\begin{description}\itemsep=0pt
\item[FORMAT\_NONE] No formatting.
\item[FORMAT\_CENTRE\_HORIZ] Horizontal centring.
\item[FORMAT\_CENTRE\_VERT] Vertical centring.
\end{description}

\membersection{wxShape::SetHighlight}

\func{void}{SetHighlight}{\param{bool}{ hi}, \param{bool}{ recurse = FALSE}}

Sets the highlight for a shape. Shape highlighting is unimplemented.

\membersection{wxShape::SetId}

\func{void}{SetId}{\param{long}{ id}}

Set the integer identifier for this shape.

\membersection{wxShape::SetPen}

\func{void}{SetPen}{\param{wxPen *}{pen}}

Sets the pen for drawing the object's outline.

\membersection{wxShape::SetRegionName}\label{setregionname}

\func{void}{SetRegionName}{\param{const wxString\& }{name}, \param{int}{ regionId = 0}}

Sets the name for this region. The name for a region is unique within the scope of the whole
composite, whereas a region id is unique only for a single image.

\membersection{wxShape::SetSensitivityFilter}\label{setsensitivityfilter}

\func{void}{SetSensitivityFilter}{\param{int}{ sens=OP\_ALL}, \param{bool}{ recursive = FALSE}}

Sets the object to be sensitive or insensitive to specific mouse operations.

{\it sens} is a bitlist of the following:

\begin{itemize}\itemsep=0pt
\item OP\_CLICK\_LEFT
\item OP\_CLICK\_RIGHT
\item OP\_DRAG\_LEFT
\item OP\_DRAG\_RIGHT
\item OP\_ALL (equivalent to a combination of all the above).
\end{itemize}

\membersection{wxShape::SetShadowMode}\label{setshadowmode}

\func{void}{SetShadowMode}{\param{int}{ mode}, \param{bool}{ redraw = FALSE}}

Sets the shadow mode (whether a shadow is drawn or not). {\it mode} can be one of
the following:

\begin{description}\itemsep=0pt
\item[SHADOW\_NONE] No shadow (the default).
\item[SHADOW\_LEFT] Shadow on the left side.
\item[SHADOW\_RIGHT] Shadow on the right side.
\end{description}

\membersection{wxShape::SetSize}

\func{void}{SetSize}{\param{float}{ x}, \param{float}{ y}, \param{bool}{ recursive = TRUE}}

Sets the object's size.

\membersection{wxShape::SetSpaceAttachments}

\func{void}{SetSpaceAttachments}{\param{bool}{ sp}}

Indicate whether lines should be spaced out evenly at the point they touch the node (TRUE), or whether they
should join at a single point (FALSE).

\membersection{wxShape::SetTextColour}

\func{void}{SetTextColour}{\param{const wxString\& }{colour}, \param{int}{ regionId = 0}}

Sets the colour for the specified text region.

\membersection{wxShape::SetX}

\func{void}{SetX}{\param{float}{ x}}

Sets the {\it x} position of the shape.

\membersection{wxShape::SetX}

\func{void}{SetY}{\param{float}{ y}}

Sets the {\it y} position of the shape.

\membersection{wxShape::SpaceAttachments}

\func{void}{SpaceAttachments}{\param{bool}{ sp}} 

Sets the spacing mode: if TRUE, lines at the same attachment point will be
spaced evenly across that side of the object. If false, all lines at the
same attachment point will emanate from the same point.

\membersection{wxShape::Show}

\func{void}{Show}{\param{bool}{ show}}

Sets a flag indicating whether the object should be drawn.

\membersection{wxShape::Unlink}

\func{void}{Unlink}{\void}

If the shape is a line, unlinks the nodes attached to the object, removing itself from the list of
lines for each of the `to' and `from' nodes.

\membersection{wxShape::WritePrologAttributes}

\func{void}{WritePrologAttributes}{\param{PrologExpr *}{clause}}

Writes the object's attributes (data member values) into the given expression.

\membersection{wxShape::WriteRegions}

\func{void}{WriteRegions}{\param{PrologExpr *}{clause}}

Writes the regions.



\section{\class{wxShapeCanvas}: wxCanvas}\label{wxshapecanvas}

A canvas for drawing diagrams on.

\membersection{wxShapeCanvas::wxShapeCanvas}

\func{void}{wxShapeCanvas}{\void}

Constructor.

\membersection{wxShapeCanvas::\destruct{wxShapeCanvas}}

\func{void}{\destruct{wxShapeCanvas}}{\void}

Destructor.

\membersection{wxShapeCanvas::AddShape}

\func{void}{AddShape}{\param{wxShape *}{shape}, \param{wxShape *}{addAfter = NULL}}

Adds a shape to the diagram. If {\it addAfter} is non-NULL, the shape will be added after this
one.

\membersection{wxShapeCanvas::Clear}

\func{void}{Clear}{\void}

Clears the device context associated with the diagram.

\membersection{wxShapeCanvas::DrawOutline}

\func{void}{DrawOutline}{\param{float}{ x1}, \param{float}{ y1}, \param{float}{ x2}, \param{float}{ y2}}

Draws an outline rectangle on the current device context.

\membersection{wxShapeCanvas::FindShape}

\func{wxShape *}{FindShape}{\param{float}{ x1}, \param{float}{ y}, \param{int *}{attachment}, \param{wxClassInfo *}{info = NULL},
 \param{wxShape *}{notImage = NULL}}

Find a shape under this mouse click. Returns the shape (or NULL), and the nearest attachment point.

If {\it info} is non-NULL, a shape whose class which is a descendant of the desired class is found.

If {\it notImage} is non-NULL, shapes which are descendants of {\it notImage} are ignored.

\membersection{wxShapeCanvas::FindFirstSensitiveShape}

\func{wxShape *}{FindFirstSensitiveShape}{\param{float}{ x1}, \param{float}{ y}, \param{int *}{attachment}, \param{int}{ op}}

Finds the first sensitive shape whose sensitivity filter matches {\it op}, working up the hierarchy of composites until
one (or none) is found.

\membersection{wxShapeCanvas::GetCanvas}

\func{wxCanvas *}{GetCanvas}{\void}

Returns the canvas associated with this diagram.

\membersection{wxShapeCanvas::GetDC}

\func{wxDC *}{GetDC}{\void}

Returns the device context associated with this diagram.

\membersection{wxShapeCanvas::GetGridSpacing}

\func{float}{GetGridSpacing}{\void}

Returns the grid spacing.

\membersection{wxShapeCanvas::GetMouseTolerance}

\func{int}{GetMouseTolerance}{\void}

Returns the tolerance within which a mouse move is ignored.

\membersection{wxShapeCanvas::GetShapeList}

\func{wxList *}{GetShapeList}{\void}

Returns a pointer to the internal shape list.

\membersection{wxShapeCanvas::GetQuickEditMode}

\func{bool}{GetQuickEditMode}{\void}

Returns quick edit mode for the associated diagram.

\membersection{wxShapeCanvas::InsertShape}

\func{void}{InsertShape}{\param{wxShape *}{shape}}

Inserts a shape at the front of the shape list.

\membersection{wxShapeCanvas::OnBeginDragLeft}\label{onbegindragleft}

\func{void}{OnBeginDragLeft}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when the start of a left-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnDragLeft}{ondragleft}, \helpref{OnEndDragLeft}{onenddragleft}.

\membersection{wxShapeCanvas::OnBeginDragRight}\label{onbegindragright}

\func{void}{OnBeginDragRight}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when the start of a right-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnDragRight}{ondragright}, \helpref{OnEndDragRight}{onenddragright}.

\membersection{wxShapeCanvas::OnEndDragLeft}\label{onenddragleft}

\func{void}{OnEndDragLeft}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when the end of a left-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnDragLeft}{ondragleft}, \helpref{OnBeginDragLeft}{onbegindragleft}.

\membersection{wxShapeCanvas::OnEndDragRight}\label{onenddragright}

\func{void}{OnEndDragRight}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when the end of a right-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnDragRight}{ondragright}, \helpref{OnBeginDragRight}{onbegindragright}.

\membersection{wxShapeCanvas::OnDragLeft}\label{ondragleft}

\func{void}{OnDragLeft}{\param{bool}{ draw}, \param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when a left-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it draw} is alternately TRUE and FALSE, to assist drawing and erasing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnBeginDragLeft}{onbegindragleft}, \helpref{OnEndDragLeft}{onenddragleft}.

\membersection{wxShapeCanvas::OnDragRight}\label{ondragright}

\func{void}{OnDragRight}{\param{bool}{ draw}, \param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when a right-button drag event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it draw} is alternately TRUE and FALSE, to assist drawing and erasing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

See also \helpref{OnBeginDragRight}{onbegindragright}, \helpref{OnEndDragRight}{onenddragright}.

\membersection{wxShapeCanvas::OnLeftClick}\label{onleftclick}

\func{void}{OnLeftClick}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when a left click event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

\membersection{wxShapeCanvas::OnRightClick}\label{onrightclick}

\func{void}{OnRightClick}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}}

Called when a right click event on the canvas background is detected by OnEvent. You may override this member;
by default it does nothing.

{\it keys} is a bit list of the following:

\begin{itemize}\itemsep=0pt
\item KEY\_SHIFT
\item KEY\_CTRL
\end{itemize}

\membersection{wxShapeCanvas::Redraw}

\func{void}{Redraw}{\void}

Calls wxDiagram::Redraw.

\membersection{wxShapeCanvas::RemoveShape}

\func{void}{RemoveShape}{\param{wxShape *}{shape}}

Calls wxDiagram::RemoveShape.

\membersection{wxShapeCanvas::SetDiagram}

\func{void}{SetDiagram}{\param{wxDiagram *}{diagram}}

Sets the diagram associated with this diagram.

\membersection{wxShapeCanvas::Snap}

\func{void}{Snap}{\param{float *}{x}, \param{float *}{y}}

Calls wxDiagram::Snap.



\section{\class{wxShapeEvtHandler}: wxObject}\label{wxshapeevthandler}

wxShapeEvtHandler is a class from which wxShape (and therefore all shape classes) are derived.
A wxShape also contains a pointer to its current wxShapeEvtHandler. Event handlers
can be swapped in and out, altering the behaviour of a shape. This allows, for example,
a range of behaviours to be redefined in one class, rather than requiring
each shape class to be subclassed.

\membersection{wxShapeEvtHandler::handlerShape}

\member{wxShape *}{handlerShape}

Pointer to the shape associated with this handler.

\membersection{wxShapeEvtHandler::previousHandler}

\member{wxShapeEvtHandler *}{previousHandler}

Pointer to the previous handler.

\membersection{wxShapeEvtHandler::wxShapeEvtHandler}

\func{void}{wxShapeEvtHandler}{\param{wxShapeEvtHandler *}{previous = NULL}, \param{wxShape *}{shape = NULL}}

Constructs a new event handler.

\membersection{wxShapeEvtHandler::\destruct{wxShapeEvtHandler}}

\func{void}{\destruct{wxShapeEvtHandler}}{\void}

Destructor.

\membersection{wxShapeEvtHandler::GetShape}

\func{void}{GetShape}{\void}

Returns the shape associated with this handler.

\membersection{wxShapeEvtHandler::OnBeginDragLeft}

\func{void}{OnBeginDragLeft}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called when the user is beginning to drag using the left mouse button.

\membersection{wxShapeEvtHandler::OnBeginDragRight}

\func{void}{OnBeginDragRight}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called when the user is beginning to drag using the right mouse button.

\membersection{wxShapeEvtHandler::OnBeginSize}

\func{void}{OnBeginSize}{\param{float}{ width}, \param{float}{ height}}

Called when a shape starts to be resized.

\membersection{wxShapeEvtHandler::OnDragLeft}

\func{void}{OnDragLeft}{\param{bool}{ draw}, \param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called twice when the object is being dragged, once to allow erasing the old
image, and again to allow drawing at the new position.

\membersection{wxShapeEvtHandler::OnDragRight}

\func{void}{OnDragRight}{\param{bool}{ draw}, \param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called twice when the object is being dragged, once to allow erasing the old
image, and again to allow drawing at the new position.

\membersection{wxShapeEvtHandler::OnDraw}

\func{void}{OnDraw}{\void}

Defined for each class to draw the main graphic, but
not the contents.

\membersection{wxShapeEvtHandler::OnDrawContents}

\func{void}{OnDrawContents}{\void}

Defined for each class to draw the contents of the
object, such as text.

\membersection{wxShapeEvtHandler::OnDrawControlPoints}

\func{void}{OnDrawControlPoints}{\void}

Called when the object's control points (handles) should
be drawn.

\membersection{wxShapeEvtHandler::OnDrawOutline}

\func{void}{OnDrawOutline}{\void}

Called when the outline of the object should be drawn.

\membersection{wxShapeEvtHandler::OnEndDragLeft}

\func{void}{OnEndDragLeft}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called when the user is stopping dragging using the left mouse button.

\membersection{wxShapeEvtHandler::OnEndDragRight}

\func{void}{OnEndDragRight}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}}

Called when the user is stopping dragging using the right mouse button.

\membersection{wxShapeEvtHandler::OnEndSize}

\func{void}{OnEndSize}{\param{float}{ width}, \param{float}{ height}}

Called after a shape is resized.

\membersection{wxShapeEvtHandler::OnErase}

\func{void}{OnErase}{\void}

Called when the whole object should be erased.

\membersection{wxShapeEvtHandler::OnEraseContents}

\func{void}{OnEraseContents}{\void}

Called when the contents should be erased.

\membersection{wxShapeEvtHandler::OnEraseControlPoints}

\func{void}{OnEraseControlPoints}{\void}

Called when the object's control points (handles) should
be erased.

\membersection{wxShapeEvtHandler::OnHighlight}

\func{void}{OnHighlight}{\void}

Called when the object should be highlighted.

\membersection{wxShapeEvtHandler::OnLeftClick}

\func{void}{OnLeftClick}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys =0}, \param{int}{ attachment = 0}}

Called when the object receives a left mouse click event.

\membersection{wxShapeEvtHandler::OnMove}

\func{void}{OnMove}{\param{float}{ x}, \param{float}{ y}, \param{float}{ oldX}, \param{float}{ oldY}, \param{bool}{ display = TRUE}}

Called when the object receives a move request.

\membersection{wxShapeEvtHandler::OnMoveLink}

\func{void}{OnMoveLink}{\param{bool}{ moveControlPoints=TRUE}}

Called when the line attached to an object need to be repositioned,
because the object has moved.

\membersection{wxShapeEvtHandler::OnMoveLinks}

\func{void}{OnMoveLinks}{\void}

Called when the lines attached to an object need to be repositioned,
because the object has moved.

\membersection{wxShapeEvtHandler::OnMovePre}

\func{bool}{OnMovePre}{\param{float}{ x}, \param{float}{ y}, \param{float}{ oldX}, \param{float}{ oldY}, \param{bool}{ display = TRUE}}

Called just after the object receives a move request.

\membersection{wxShapeEvtHandler::OnMovePre}

\func{bool}{OnMovePre}{\param{float}{ x}, \param{float}{ y}, \param{float}{ oldX}, \param{float}{ oldY}, \param{bool}{ display = TRUE}}

Called just before the object receives a move request. Returning TRUE
allows the move to be processed; returning FALSE vetoes the move. 

\membersection{wxShapeEvtHandler::OnRightClick}

\func{void}{OnRightClick}{\param{float}{ x}, \param{float}{ y}, \param{int}{ keys = 0}, \param{int}{ attachment = 0}}

Called when the object receives a mouse mouse click event.

\membersection{wxShapeEvtHandler::OnSize}

\func{void}{OnSize}{\param{float}{ x}, \param{float}{ y}}

Called when the object receives a resize request.



\section{\class{wxTextShape}: wxRectangleShape}\label{wxtextshape}

As wxRectangleShape, but only the text is displayed.

See also \helpref{wxRectangleShape}{wxrectangleshape}.

\membersection{wxTextShape::wxTextShape}

\func{void}{wxTextShape}{\param{float}{ width = 0.0}, \param{float}{ height = 0.0}}

Constructor.

\membersection{wxTextShape::\destruct{wxTextShape}}

\func{void}{\destruct{wxTextShape}}{\void}

Destructor.

\section{Functions}\label{functions}

These are the OGL functions.

\membersection{::wxOGLInitialize}

\func{void}{wxOGLInitialize}{\param{wxHelpInstance *}{helpInstance = NULL}, \param{const wxString\& }{helpFile = NULL},
 \param{wxFont *}{buttonFont = NULL}, \param{wxFont *}{labelFont = NULL}}
 
Initializes OGL. The optional parameters tell OGL what to use for on-line help and font sizes.

\membersection{::wxOGLCleanUp}

\func{void}{wxOGLCleanUp}{\void}
 
Cleans up OGL.
