WorldCanvas. These devices know
nothing about what data look like, what kind of object will draw on
the devices, and in what circumstances these devices will be used.
The only thing they define is the interface of how to draw on them
and the way that they communicate with other objects, for example
the event handlers.
The DisplayDatas
Thus classes are needed to transform data into objects that are
understood by the canvases. These are the DisplayDatas, which
generate drawing commands based on data and some algorithm which
translates that data into a visual representation: eg. a contouring
algorithm. Exactly how the data is represented is entirely defined
by the DisplayDatas, and as long as it can be done using the
primitives of the WorldCanvas, there are no restrictions. To
display data in a new way, all that must be written is a new
DisplayData which generates appropriate drawing instructions, and
can be asked to carry out those instructions. The DisplayDatas
should be thought of as the "workhorses" of the AIPS++ Display
Library.
The WorldCanvasHolder
The administration of a number of DisplayDatas on one WorldCanvas
is handled by the WorldCanvasHolder class. The WorldCanvasHolder
provides methods to register and unregister DisplayDatas. The
WorldCanvasHolder installs handlers on the WorldCanvas for each
event generated by the WorldCanvas. Since its main task is to
allow more than one DisplayData object to draw on a WorldCanvas at
any one time, the WorldCanvasHolder must pass WorldCanvas events on
to the registered DisplayDatas, either directly or indirectly. For
example, motion events (which occur when the pointer is moved
across the WorldCanvas) will be immediately passed on to all
DisplayDatas for processing, while refresh events (which occur when
the WorldCanvas needs to redraw itself, eg. following a resize) are
managed by the WorldCanvasHolder itself, which may ask only a
subset of the registered DisplayDatas to redraw themselves, and
also ensures that raster-type DisplayDatas draw before vector-type
DisplayDatas.
Some DisplayDatas will consist of a sequence of "drawings," for
example, a set of channel maps in a data cube. The DisplayDatas
are built with such sequences in mind, and the appropriate "frame"
to draw is negotiated between the WorldCanvasHolder and the one or
more DisplayDatas actually registered with the WorldCanvasHolder.
A sequence of images is not restricted to separate planes through a
data volume: it could comprise blinking between two or more images,
or rendering views of data along different lines-of-sight.
To control what is displayed on a WorldCanvas, the programmer can
put restrictions on a WorldCanvasHolder and on DisplayDatas. Only
the DisplayDatas whose internal restrictions actually match those
of the WorldCanvasHolder will be allowed to draw on the
WorldCanvas. Indeed, an important part of the support for
DisplayDatas comprising sequences of images is implemented by
placing restrictions on the WorldCanvas that are appropriate to the
desired image plane.
- ActiveCaching2dDD -- Class providing active behaviour for 2d CachingDisplayDatas. (full description)
- AxesDisplayData -- Interface and simple implementation of axis labelling. (full description)
- AxesDisplayMethod -- Class to draw a single set of axis labels for AxesDisplayData. (full description)
- CachingDisplayData -- Base class for auto-caching DisplayData objects. (full description)
- CachingDisplayMethod -- Assistance class for auto-caching of DisplayData objects. (full description)
- DDDEllipse -- Implementation of an ellipse/rectangle object for DrawingDisplayData class. (full description)
- DDDHandle -- A class to draw and detect handles on a DDDObject (full description)
- DDDObject -- Base class describing interface for objects supported by DrawingDisplayData (full description)
- DDDPolygon -- Implementation of aan ellipse object for DrawingDisplayData class. (full description)
- DDDRectangle -- Implementation of a rectangular object for DrawingDisplayData class. (full description)
- DisplayData -- Base class for display objects. (full description)
- DisplayMethod -- Base class for drawing a particular element (view) of a DisplayData. (full description)
- DrawingDisplayData -- DisplayData which provides interactive drawing capabilities. (full description)
- DrawingDisplayMethod -- DisplayMethod which provides actual drawing for DrawingDisplayData class. (full description)
- Galaxy -- Simple class to represent a Galaxy as a collection of Stars. (full description)
- Histogram2dDD -- A DisplayData to draw histograms (full description)
- Histogram2dDM -- A DisplayMethod to draw histograms (full description)
- LatticeAsContour -- Class to manage the drawing of contour maps of slices from AIPS++ Lattices (full description)
- LatticeAsMarker -- Class to manage the drawing of vector maps of slices from AIPS++ Lattices (full description)
- LatticeAsRaster -- Class to manage the drawing of raster images of slices from AIPS++ Lattices (full description)
- LatticeAsVector -- Class to manage the drawing of vector maps of slices from AIPS++ Lattices (full description)
- LatticePADMContour -- Class to draw a single contour map of a slice from an AIPS++ Lattice. (full description)
- LatticePADMMarker -- Class to draw a single vector map of a slice from an AIPS++ Lattice. (full description)
- LatticePADMRaster -- Class to draw a raster image of a slice of an AIPS++ Lattice. (full description)
- LatticePADMVector -- Class to draw a single vector map of a slice from an AIPS++ Lattice. (full description)
- LatticePADisplayData -- Partial implementation of PrincipalAxesDD for Lattice-based data. (full description)
- LatticePADisplayMethod -- Partial implementation of PrincipalAxesDM for Lattice-based data. (full description)
- MSAsRaster -- Class for displaying data within an MS as a raster (gridded) image. (full description)
- MSAsRasterDM -- (Minimal) DisplayMethod for MSAsRaster. (full description)
- NBody -- Simple class which provides brute force n-body simulation and display. (full description)
- PKSMultiBeamDD -- Base class for Parkes Multibeam DisplayData objects (full description)
- PassiveCachingDD -- Class providing passive behaviour for CachingDisplayDatas. (full description)
- PassiveTableDD -- Class adding Table-specific support functions to PassiveCachingDD. (full description)
- PrincipalAxesDD -- Interface for DisplayDatas which have data arranged in axes. (full description)
- PrincipalAxesDM -- Interface for DisplayMethods which have data arranged in "axes." (full description)
- Profile2dDD -- A DisplayData to draw Profiles (full description)
- Profile2dDM -- A DisplayMethod to draw Profiles (full description)
- ScrollingRasterDD -- Base class for scrolling DisplayData objects (full description)
- ScrollingRasterDM -- Base class for scrolling DisplayData objects (full description)
- SkyCatOverlayDD -- Simple implementation of a cached DisplayData for sky catalogue overlays. (full description)
- SkyCatOverlayDM -- Class to draw catalogue overlays for SkyCatOverlayDD. (full description)
- Star -- Simple class which represents a star as a point mass. (full description)
- TblAsContourDD -- Class for displaying data within a table as a contour image. (full description)
- TblAsContourDM -- A DisplayMethod to draw Contours from table data (full description)
- TblAsRasterDD -- Class for displaying data within a table as a raster image. (full description)
- TblAsRasterDM -- A DisplayMethod to draw Raster images from table data (full description)
- TblAsXYDD -- Class for displaying data within a table as a xy image. (full description)
- TblAsXYDM -- A DisplayMethod to draw XY plots from table data (full description)
- WedgeDD -- A DisplayData to draw color wedges (full description)
- WedgeDM -- The DisplayMethod to draw Wedges (full description)
- WorldAxesDD -- A DisplayData to setup a World coordinate plot (full description)
- WorldAxesDM -- Class to draw a single set of axis labels for AxesDisplayData. (full description)