See below for an overview of the classes in this module.
Part of API
The module provides various classes that are responsible for "drawing" "shapes"
The motivation behind creation of a set of "DisplayShapes" was to enable a convinient way to draw basic shapes which would be general enough to use anywhere in AIPS++. The most obvious application is for use as Annotations.
The shape objects themselves draw onto a pixelcanvas whenever it is passed to them. The have no event handling facilites, this must be handled by an outside class. Annotations is an example of such a class. It adds mouse handling etc and manages a list of shapes.
DisplayShapes use PixelCanvas primitives to draw themselves. They act as wrappers for primitives, and allow every shape to have a common interface. All DisplayShapes, for example have a "move" function. Such a function, when combined with others such as "inObject", enable mouse interactions to be far simpler than they would using pixelcanvas primitives. An interface class is also provided, called DisplayShapeInterface . This class is another layer on top of the DisplayShapes which uses records to further simplify the interface between many different types of shapes. The overall aim of the DisplayShapes is to present all shapes as a single "DisplayShapeInterface" object.
The first place a new shape must be added is as a class in the display shapes directory. This class should inherit from the base class, DisplayShape , or some other class which in turn inherits from it. Examples of appropriate classes would be DSBasic or DSClosed . DisplayShapeInterface must also be made aware of the new shape, so it can properly construct it if requested. If the shape is to be used for annotations, it must be added, along with any special event handling requirements to the Annotations class.
Regardless of how much functionality the shapes share, there will always be a need to apply different options for different shapes. The information below is intended to outline the options available for all displayshapes.
The below listed options are passed via Records to various shapes. This occurs either via get/set options, or via the constructor of DisplayShapeInterface.
General Options :
Record fields specific to individual shapes should be documentented in their respective header files.
Namespaces | |
| namespace | casa |
| FTMachine::rotateUVW(Matrix<Double>& uvw, Vector<Double>& dphase, const VisBuffer& vb). | |
| namespace | casa |
| FTMachine::rotateUVW(Matrix<Double>& uvw, Vector<Double>& dphase, const VisBuffer& vb). | |
Modules | |
| DisplayShapes_internal_classes | |
| Internal DisplayShapes classes and functions. | |
Classes | |
| class | casa::Annotations |
| Control class for a collection of DisplayShapeInterfaces. More... | |
| class | casa::DisplayShape |
| The abstract base class for all "DisplayShapes". More... | |
| class | casa::DisplayShapeInterface |
| class PixelCanvas; class WorldCanvas; Wrapper for DisplayShapes;provides easier/unified constr. of DisplayShapes More... | |
| class | casa::DSArrow |
| Arrow implementation;adds a polygon to a DSLine to represent the arrow head. More... | |
| class | casa::DSBasic |
| Base class for all "basic" shapes. More... | |
| class | casa::DSCircle |
| Circle implementation;extends DSEllipse, adding general circle functions. More... | |
| class | casa::DSClosed |
| DSClosed provides common functionality for all "closed" shapes. More... | |
| class | casa::DSEllipse |
| Implementation of a ellipse. More... | |
| class | casa::DSLine |
| Implementation of a line. More... | |
| class | casa::DSMarker |
| Implementation of a marker. More... | |
| class | casa::DSPoly |
| Implementation of a Polygon. More... | |
| class | casa::DSPolyLine |
| Implementation of a polyline. More... | |
| class | casa::DSRectangle |
| Implementation of a rectangle. More... | |
| class | casa::DSSquare |
| Implementation of a square. More... | |
| class | casa::DSText |
| Implementation of text. More... | |
1.5.1