Module DisplayDatas

Changes made in the current development cycle can be found in the changelog.

Description (classes)

A module providing classes to draw AIPS++ data in specific ways

Review Status

Reviewed By:
None yet
Date Reviewed:
yyyy/mm/dd

Prerequisite

Etymology

The module provides various classes that are responsible for "displaying" "data"

Synopsis

Motivation

The basic drawing devices in the Display Library are the PixelCanvas and the 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.


Classes

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)