-\chapter{Topic overviews}
+\chapter{Topic overviews}\label{overviews}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}
The following sections describe particular topics.
-\section{OGL overview}\label{ogloverview}
+\section{MMedia extension overview}\label{mmedoverview}
-\helpref{wxShapeCanvas}{wxshapecanvas}, derived from {\bf wxCanvas}, is the drawing area
-for a number of \helpref{wxShape}{wxshape} instances. Everything drawn on a
-wxShapeCanvas is derived from wxShape, which provides virtual
-member functions for redrawing, creating and destroying
-resize/selection `handles', movement and erasing behaviour, mouse
-click behaviour, calculating the bounding box of the shape, linking
-nodes with arcs, and so on.
-
-The way a client application copes with `damage' to the canvas is to
-erase (white out) anything should no longer be displayed, redraw the shape,
-and then redraw everything on the canvas to repair any damage. If quick edit
-mode is on for the canvas, the complete should be omitted by OGL and the
-application.
-
-Selection handles (called control points in the code) are implemented as
-wxRectangleShapes.
-
-Events are passed to shapes by the canvas in a high-level form, for example {\bf OnLeftClick},
-{\bf OnBeginDragLeft}, {\bf OnDragLeft}, {\bf OnEndDragLeft}. The canvas decides
-what is a click and what is a drag, whether it is on a shape or the canvas itself,
-and (by interrogating the shape) which attachment point the click is associated with.
-
-In order to provide event-handling flexibility, each shapes has an `event handler' associated with it,
-which by default is the shape itself (all shapes derive from wxShapeEvtHandler).
-An application can modify the event-handling behaviour simply by plugging a new
-event handler into the shape. This can avoid the need for multiple inheritance when
-new properties and behaviour are required for a number of different shape classes: instead
-of overriding each class, one new event handler class can be defined and used for all
-existing shape classes.
-
-A range of shapes have been predefined in the library, including rectangles, ellipses,
-polygons. A client application can derive from these shapes and/or derive entirely
-new shapes from wxShape.
-
-Instances of a class called \helpref{wxDiagram}{wxdiagram} organise collections of
-shapes, providing default file input and output behaviour.
-
-\section{wxDividedShape overview}\label{dividedshapeoverview}
-
-Classes: \helpref{wxDividedShape}{wxdividedshape}
-
-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.
-
-Once a wxDividedShape has been created, the user may move the divisions with the
-mouse. By pressing Ctrl while right-clicking, the region attributes can be edited.
-
-Here are examples of creating wxDividedShape objects:
-
-{\small
-\begin{verbatim}
- /*
- * Divided rectangle with 3 regions
- *
- */
-
- wxDividedShape *dividedRect = new wxDividedShape(50, 60);
-
- wxShapeRegion *region = new wxShapeRegion;
- region->SetProportions(0.0, 0.25);
- dividedRect->AddRegion(region);
-
- region = new wxShapeRegion;
- region->SetProportions(0.0, 0.5);
- dividedRect->AddRegion(region);
-
- region = new wxShapeRegion;
- region->SetProportions(0.0, 0.25);
- dividedRect->AddRegion(region);
-
- dividedRect->SetSize(50, 60); // Allow it to calculate region sizes
- dividedRect->SetPen(wxBLACK_PEN);
- dividedRect->SetBrush(wxWHITE_BRUSH);
- dividedRect->Show(TRUE);
- dividedRect->NameRegions();
-
- /*
- * Divided rectangle with 3 regions, rounded
- *
- */
-
- wxDividedShape *dividedRect3 = new wxDividedShape(50, 60);
- dividedRect3->SetCornerRadius(-0.4);
-
- region = new wxShapeRegion;
- region->SetProportions(0.0, 0.25);
- dividedRect3->AddRegion(region);
-
- region = new wxShapeRegion;
- region->SetProportions(0.0, 0.5);
- dividedRect3->AddRegion(region);
-
- region = new wxShapeRegion;
- region->SetProportions(0.0, 0.25);
- dividedRect3->AddRegion(region);
-
- dividedRect3->SetSize(50, 60); // Allow it to calculate region sizes
- dividedRect3->SetPen(wxBLACK_PEN);
- dividedRect3->SetBrush(wxWHITE_BRUSH);
- dividedRect3->Show(TRUE);
- dividedRect3->NameRegions();
-\end{verbatim}
-}
-
-\section{wxCompositeShape overview}\label{compositeshapeoverview}
-
-Classes: \helpref{wxCompositeShape}{wxcompositeshape}, \helpref{wxOGLConstraint}{wxoglconstraint}
-
-The wxCompositeShape allows fairly complex shapes to be created, and maintains
-a set of constraints which specify the layout and proportions of child shapes.
-
-Add child shapes to a wxCompositeShape using \helpref{AddChild}{wxcompositeshapeaddchild}, and
-add constraints using \helpref{AddConstraint}{wxcompositeshapeaddconstraint}.
-
-After children and shapes have been added, call \helpref{Recompute}{wxcompositeshaperecompute} which
-will return TRUE is the constraints could be satisfied, FALSE otherwise. If
-constraints have been correctly and consistently specified, this call will succeed.
-
-If there is more than one child, constraints must be specified: OGL cannot calculate
-the size and position of children otherwise. Don't assume that children will simply
-move relative to the parent without the use of constraints.
-
-To specify a constraint, you need three things:
-
-\begin{enumerate}\itemsep=0pt
-\item a constraint type, such as gyCONSTRAINT\_CENTRED\_VERTICALLY;
-\item a reference shape, with respect to which other shapes are going to be positioned - the\rtfsp
-{\it constraining} shape;
-\item a list of one or more shapes to be constrained: the {\it constrained} shapes.
-\end{enumerate}
-
-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.
-
-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
-usually need to specify constraints in pairs.
-
-You can set the spacing between constraining and constrained shapes by
-calling \helpref{wxOGLConstraint::SetSpacing}{wxoglconstraintsetspacing}.
-
-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
-the composite to be divided into user-adjustable regions (divisions) into which other shapes
-can be dropped dynamically, given suitable application code. Divisons allow the child
-shapes to have an identity of their own - they can be manipulated independently of their container -
-but to behave as if they are contained with the division, moving with the parent shape.
-Divisions boundaries can themselves be moved using the mouse.
-
-To create an initial division, call \helpref{wxCompositeShape::MakeContainer}{wxcompositeshapemakecontainer}.
-Make further divisions by calling \helpref{wxDivisionShape::Divide}{wxdivisionshapedivide}.
+To be written.