X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e8482f24cfc00645607f8526fde38d39e0dcaa63..209f3e1453dd576919bf1cc8f696218dae23c34b:/contrib/docs/latex/mmedia/topics.tex diff --git a/contrib/docs/latex/mmedia/topics.tex b/contrib/docs/latex/mmedia/topics.tex index ece8016fce..02159265ed 100644 --- a/contrib/docs/latex/mmedia/topics.tex +++ b/contrib/docs/latex/mmedia/topics.tex @@ -1,161 +1,10 @@ -\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.