casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | Friends | List of all members
casa::DisplayData Class Referenceabstract

Base class for display objects. More...

#include <DisplayData.h>

Inheritance diagram for casa::DisplayData:
casa::DisplayOptions casa::DisplayEH casa::DlTarget casa::CachingDisplayData casa::NBody casa::PrincipalAxesDD casa::ActiveCaching2dDD casa::PassiveCachingDD casa::LatticePADisplayData< T > casa::ScrollingRasterDD casa::LatticePADisplayData< casacore::Float > casa::Histogram2dDD casa::MSAsRaster casa::Profile2dDD casa::TblAsContourDD casa::TblAsRasterDD casa::TblAsXYDD casa::WedgeDD casa::AxesDisplayData casa::DrawingDisplayData casa::PassiveTableDD casa::RegionShape casa::LatticeAsContour< T > casa::LatticeAsMarker< T > casa::LatticeAsRaster< T > casa::LatticeAsVector< T >

Public Types

enum  DisplayState {
  DISPLAYED,
  UNDISPLAYED,
  LIMBO
}
 

Public Member Functions

 DisplayData ()
 (Required) default constructor. More...
 
virtual ~DisplayData ()
 required destructor More...
 
virtual casacore::Bool linToWorld (casacore::Vector< casacore::Double > &world, const casacore::Vector< casacore::Double > &lin)=0
 casacore::Coordinate transformations, called by WorldCanvasHolder (casacore::Matrix versions not implemented) More...
 
virtual casacore::Bool worldToLin (casacore::Vector< casacore::Double > &lin, const casacore::Vector< casacore::Double > &world)=0
 
virtual std::string errorMessage () const =0
 
virtual casacore::String showPosition (const casacore::Vector< casacore::Double > &world, const casacore::Bool &displayAxesOnly=false)=0
 casacore::Format a string containing coordinate information at the given world coordinate More...
 
virtual casacore::String showValue (const casacore::Vector< casacore::Double > &world)=0
 casacore::Format a string containing value information at the given world coordinate More...
 
virtual void setDisplayState (DisplayState s)
 
virtual DisplayState getDisplayState () const
 
virtual bool isDisplayable () const
 
virtual casacore::Vector
< casacore::String
worldAxisNames () const =0
 Some routines that give info on the axes names, units etc. More...
 
virtual casacore::Vector
< casacore::String
worldAxisUnits () const =0
 
virtual casacore::uInt nelements (const WorldCanvasHolder &wcHolder) const =0
 Returns the number of elements in this DisplayData (mainly for movie purposes). More...
 
virtual casacore::uInt nelements () const =0
 and non-specific More...
 
virtual void addRestrictions (AttributeBuffer &otherBuf)
 Add general restrictions or a restriction for item itemNum of this DisplayData. More...
 
virtual void addRestriction (Attribute &newRestriction, casacore::Bool permanent)
 
virtual void addElementRestrictions (const casacore::uInt itemNum, AttributeBuffer &other)
 
virtual void addElementRestriction (const casacore::uInt itemNum, Attribute &newRestriction, casacore::Bool permanent)
 
virtual void setRestrictions (AttributeBuffer &otherBuf)
 Set general restrictions or a restriction for item itemNum of this DisplayData. More...
 
virtual void setRestriction (Attribute &newRestriction)
 
virtual void setElementRestrictions (const casacore::uInt itemNum, AttributeBuffer &other)
 
virtual void setElementRestriction (const casacore::uInt itemNum, Attribute &newRestriction)
 
virtual void removeRestriction (const casacore::String &name)
 Remove a general restriction or a restriction from item itemNum More...
 
virtual void removeElementRestriction (const casacore::uInt itemNum, const casacore::String &name)
 
virtual void clearRestrictions ()
 Clear all general restrictions or all restrictions of item itemNum (except the ones that are permanent of course...) More...
 
virtual void clearElementRestrictions (const casacore::uInt itemNum)
 
virtual casacore::Bool existRestriction (const casacore::String &name)
 Check if a general restriction or a restriction for item itemNum with name name exists. More...
 
virtual casacore::Bool existElementRestriction (const casacore::uInt itemNum, const casacore::String &name)
 
virtual AttributeBufferrestrictionBuffer ()
 Get a handle to the buffer of general restrictions or of the buffer of restrictions for item itemNum More...
 
virtual AttributeBufferelementRestrictionBuffer (const casacore::uInt itemNum)
 
virtual casacore::Bool conformsTo (const WorldCanvas *wCanvas)
 Check whether the DD is is compatible with all WC[H] state, including its coordinate state, restrictions, and zIndex (if any). More...
 
virtual casacore::Bool conformsTo (const WorldCanvas &wc)
 
virtual casacore::Bool conformsToRstrs (const WorldCanvas &wc)
 Determine whether DD restrictions are in conformance with restrictions on the given WCH. More...
 
virtual casacore::Bool conformsToCS (const WorldCanvas &)
 Determine whether DD is compatible with the WC[H]'s current world coordinates. More...
 
virtual casacore::Bool conformsToZIndex (const WorldCanvas &wc)
 Determine whether DD is compatible with the current canvas animation (zIndex) position. More...
 
virtual casacore::Int activeZIndex (const WorldCanvas *wc=0)
 Retrieve 'Active' zIndex. More...
 
virtual casacore::Bool getFirstZIndex (int &firstZIndex, casacore::Int axZrng=-1) const
 Set firstZIndex to minimum zIndex setting from all canvases where this DD is registered. More...
 
virtual void addPositionEventHandler (WCPositionEH *positionHandler)
 Add event handlers on the DisplayData. More...
 
virtual void addMotionEventHandler (WCMotionEH *motionHandler)
 
virtual void addRefreshEventHandler (WCRefreshEH *refreshHandler)
 
virtual void addDisplayEventHandler (DisplayEH *displayHandler)
 
virtual void removePositionEventHandler (WCPositionEH &positionHandler)
 Remove eventhandlers. More...
 
virtual void removeMotionEventHandler (WCMotionEH &motionHandler)
 
virtual void removeRefreshEventHandler (WCRefreshEH &refreshHandler)
 
virtual void removeDisplayEventHandler (DisplayEH &displayHandler)
 
virtual void setColormap (Colormap *cmap, casacore::Float weight)
 Set/remove/get a ColourMap (sorry, ColorMap) for this DisplayData setColormap() throw an casacore::AipsError is a null pointer is passed. More...
 
virtual void removeColormap ()
 
virtual Colormapcolormap () const
 
void setAttribute (Attribute &at)
 set an Attribute or Attributes More...
 
void setAttributes (AttributeBuffer &at)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::uInt &newValue)
 User interface to get value from the attribute buffer. More...
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Int &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Float &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Double &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Bool &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::String &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::uInt > &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::Int > &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::Float > &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::Double > &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::Bool > &newValue)
 
casacore::Bool getAttributeValue (const casacore::String &name, casacore::Vector< casacore::String > &newValue)
 
casacore::Bool existsAttribute (casacore::String &name)
 Check if a certain Attribute exists. More...
 
void removeAttribute (casacore::String &name)
 Remove an Attribute. More...
 
AttValue::ValueType attributeType (casacore::String &name)
 Get the type of the Attribute. More...
 
void setAttributeOnPrimaryWCHs (Attribute &at)
 Set an attribute on any WorldCanvas for which this DD is CS master. More...
 
virtual void notifyRegister (WorldCanvasHolder *wcHolder)
 
virtual void notifyUnregister (WorldCanvasHolder &wcHolder, casacore::Bool ignoreRefresh=false)
 ignoreRefresh tells the DD not to refresh just to clean up DMs More...
 
virtual void removeFromAllWCHs ()
 remove this DD everywhere–will stop any more refresh handling by the DD. More...
 
virtual void setDefaultOptions ()
 install the default options for this DisplayData More...
 
virtual casacore::Bool setOptions (casacore::Record &rec, casacore::Record &recOut)
 apply options stored in val to the DisplayData; return value true means a refresh is needed... More...
 
virtual casacore::Record getOptions (bool scrub=false) const
 retrieve the current and default options and parameter types. More...
 
virtual void refresh (casacore::Bool clean=false)
 an explicit refresh: should be called if the DisplayData is changed such that drawing is required. More...
 
virtual casacore::Bool labelAxes (const WCRefreshEvent &ev)
 an explicit request to draw the axes and/or labels. More...
 
virtual casacore::Bool canLabelAxes () const
 
virtual casacore::String className () const
 Return the class name of this DisplayData; useful mostly for debugging purposes, and perhaps future use in the glish widget interface. More...
 
virtual casacore::String description () const
 
virtual Display::DisplayDataType classType ()=0
 Return the DisplayData type; used by the WorldCanvasHolder to determine the order of drawing. More...
 
virtual casacore::String dataType () const =0
 
virtual const casacore::IPosition dataShape () const =0
 
virtual casacore::uInt dataDim () const =0
 
virtual const casacore::Unit dataUnit () const =0
 
virtual std::vector< int > displayAxes () const =0
 
virtual ImageAnalysis * imageanalysis () const
 Get image analyis about images... More...
 
virtual std::shared_ptr
< casacore::ImageInterface
< casacore::Float > > 
imageinterface ()
 Returns a pointer that should not be deleted... More...
 
virtual void setSubstituteTitleText (const casacore::String)
 
const WorldCanvasHolderfindHolder (const WorldCanvas *wCanvas) const
 Identify the WorldCanvasHolder for the given WorldCanvas. More...
 
WorldCanvasHolderfindHolder (const WorldCanvas *wCanvas)
 
virtual casacore::Block
< casacore::Int
allZIndices (casacore::Int axZrng=-1) const
 Return a sorted casacore::Block of all animation frame numbers currently set onto all WCHs where this DD is registered. More...
 
virtual casacore::Bool zIndexHint (casacore::Int &) const
 Will be called just before registering the [GTk]DD on a [GTk]PanelDisplay which has none registered on it yet. More...
 
virtual void handleEvent (DisplayEvent &ev)
 Overide DisplayEH::handleEvent. More...
 
virtual casacore::Bool isCSmaster (const WorldCanvasHolder *wch=0) const
 Is this DD the CS master of the passed WCH? Defaulting wch to 0 asks whether this DD is CS master of some WCH on which it is registered. More...
 
virtual casacore::Int uiBase () const
 DD 'Absolute Pixel Coordinates', e.g. More...
 
virtual void setUIBase (casacore::Int uibase)
 
virtual casacore::Bool getDelTmpData ()
 Get and set method for the flag. More...
 
virtual void setDelTmpData (casacore::Bool delTmpData)
 
virtual void setDisplayDataRed (DisplayData *)
 
virtual void setDisplayDataBlue (DisplayData *)
 
virtual void setDisplayDataGreen (DisplayData *)
 
- Public Member Functions inherited from casa::DisplayOptions
 DisplayOptions ()
 Constructor. More...
 
virtual ~DisplayOptions ()
 Destructor. More...
 
template<class T >
casacore::Bool readOptionRecord (casacore::Vector< T > &target, casacore::Bool &error, const casacore::Record &rec, const casacore::String &fieldname) const
 Find the field fieldname in casacore::Record rec, containing the requested type (casacore::Bool, casacore::String, casacore::Float, casacore::Int) in itself or its "value" sub-field, and return the value in target. More...
 
template<class T >
casacore::Bool readOptionRecord (T &target, casacore::Bool &error, const casacore::Record &rec, const casacore::String &fieldname) const
 
virtual casacore::Bool readOptionRecord (casacore::String &target, casacore::Bool &unsetTarget, casacore::Bool &error, const casacore::Record &rec, const casacore::String &fieldname) const
 Find the field fieldname in casacore::Record rec, containing the requested type (casacore::String) in itself or its "value" sub-field, and return the value in target. More...
 
casacore::Record unset () const
 Return a casacore::Record which is an "unset" casacore::Record, ie. More...
 
casacore::Bool isUnset (const casacore::Record &rec) const
 Return true or false indicating if the provided casacore::Record is equal to an "unset" Record. More...
 
- Public Member Functions inherited from casa::DisplayEH
virtual ~DisplayEH ()
 
- Public Member Functions inherited from casa::DlTarget
 DlTarget ()
 
 DlTarget (const DlTarget &)
 
virtual ~DlTarget ()
 
void reg (DlHandleBase *p)
 
void unreg (DlHandleBase *p)
 

Static Public Attributes

static const casacore::String DATA_MIN
 
static const casacore::String DATA_MAX
 

Protected Member Functions

virtual casacore::Bool setActiveZIndex_ (casacore::Int zindex)
 DDs may override to adjust the internal stored current animation index (activeZIndex_) if necessary, and to set return value false iff the passed zindex won't work for the DD. More...
 
casacore::Bool conformed ()
 Returns result of last call to conformsTo(WCH&). More...
 
casacore::Bool isCsAndZIndexConformed ()
 Added so that when two images are loaded with no velocity alignment, they can still show their position coordinates without having to be rstrsConformed. More...
 
virtual casacore::Bool sizeControl (WorldCanvasHolder &wcHolder, AttributeBuffer &holderBuf)=0
 Set (coordinate) state of WCH's WC. More...
 
virtual void delTmpData (casacore::String &tmpData)
 Delete temporary data. More...
 
virtual const std::list
< WCPositionEH * > * 
positionEventHandlerList ()
 Retrieve position, motion, refresh and display event handler lists. More...
 
virtual const std::list
< WCMotionEH * > * 
motionEventHandlerList ()
 
virtual const std::list
< WCRefreshEH * > * 
refreshEventHandlerList ()
 
virtual const std::list
< DisplayEH * > * 
displayEventHandlerList ()
 
virtual void positionEH (const WCPositionEvent &ev)
 Position, motion and refresh event handlers that will generally be called by a WorldCanvasHolder. More...
 
virtual void motionEH (const WCMotionEvent &ev)
 
virtual void refreshEH (const WCRefreshEvent &ev)=0
 
virtual void cleanup ()=0
 clean up the memory used by this DisplayData More...
 
 DisplayData (const DisplayData &other)
 (Required) copy constructor. More...
 
void operator= (const DisplayData &other)
 (Required) copy assignment. More...
 
- Protected Member Functions inherited from casa::DisplayOptions
 DisplayOptions (const DisplayOptions &other)
 (Required) copy constructor. More...
 
void operator= (const DisplayOptions &other)
 (Required) copy assignment. More...
 

Protected Attributes

AttributeBuffer restrictions
 The Book says that we should not put data members in class that is supposed to only define an interface, but by putting these here, we can implement some of the restriction & eventhandling stuff so that people do not have to repeat it. More...
 
AttributeBuffer attributes
 buffer for storing Attributes More...
 
casacore::PtrBlock< void * > DDelement
 list of DisplayDataElements, which are of type DisplayMethod or derived More...
 
casacore::Int activeZIndex_
 Indicates the 'current' animation frame, i.e. More...
 
casacore::Bool delTmpData_
 Flag indicating that temporary data should be removed when deleting the object. More...
 
casacore::Bool rstrsConformed_
 Somewhat limited-use state, saved here for 'efficiency'. More...
 
casacore::Bool csConformed_
 
casacore::Bool zIndexConformed_
 

Private Attributes

WorldCanvasHolderoldWCHolder
 
DisplayState displaystate
 is this data currently being displayed? More...
 
ColormapitsColormap
 Colormap for this DisplayData, and its weight. More...
 
casacore::Float itsColormapWeight
 
std::list< WorldCanvasHolder * > itsWCHList
 A list of WorldCanvasHolders for which this DisplayData works. More...
 
std::list< WCPositionEH * > itsPositionEHList
 Lists of position, motion, refresh and display event handlers. More...
 
std::list< WCMotionEH * > itsMotionEHList
 
std::list< WCRefreshEH * > itsRefreshEHList
 
std::list< DisplayEH * > itsDisplayEHList
 
casacore::Int uiBase_
 DD 'Absolute Pixel Coordinates', e.g. More...
 

Friends

class WorldCanvasHolder
 Protected interface for WorldCanvasHolder, can be called by the friends of DisplayData, but are nobody else's business. More...
 

Detailed Description

Base class for display objects.

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Etymology

A class having "DisplayData" as its base is used to generate "Display"s out of "Data."

Synopsis

The basic drawing devices in the Display Library are the PixelCanvas and the WorldCanvas. These devices know nothing about what real data look like, what kind of object will draw on these devices and in what kind of circumstances these devices will be used. The only thing they define is the interface of how to draw on them and the way they communicate with other objects (the event handlers). Building in no assumptions in the Canvases on how they will be used should give larger flexibility in how one can actually use these Canvases. Since the Canvases know nothing about how real data looks, a class is needed to transform data into objects the Canvases do understand. These are the DisplayData. A DisplayData generates, based on data and some algorithm to represent that data, a number of primitives that it draws on the WorldCanvas. So in a way, 'the data draw themselves'. The definition of how data is represented (image, contour, rendering, list of symbols from a catalogue, etc, etc) is entirely defined by these DisplayData and as long it can be done using the primitives of the WorldCanvas, there are no restrictions. If one finds a new way of representing data, the only thing one has to do is to write a new DisplayData that generates this representation and draws it on the WorldCanvas using the primitives of the WorldCnvas.

To do the administration of a number of DisplayDatas on one WorldCanvas, a bookkeeping class is needed, this is the WorldCnvasHolder.

Some DisplayData will consist of a sequence of display object (eg a set of channels in a data cube). The DisplayData are build with sequences in mind (as is clear from the interface), and the Display Library is designed very strongly with movies in mind. The programmer is free to define what a sequence really means, but it is probably best to keep the structure of the sequence in a DisplayData fairly logical. But there is not requirement on the structure of the sequence.

Before a display object is displayed (ie when a refresh happens), a size control step is performed. The WorldCanvas call a sizeControl event handler. Normally this will be a handler that is installed by the WorldCanvasHolder. All the WorldCanvasHolder does is to call the sizeControl member function of all displayData registered with the WorldCanvasHolder to do the sizeControl. The purpose of the size control is to put the WorldCanvas in a correct state before the objects are actually drawn. For example, for images there can be restrictions on the size of the output array (eg the image is expanded using pixelreplication which means that the draw area of the WorldCanvas must by an integral of the size of the image). For each DisplayData the WorldCanvasHolder calls the sizeControl function, supplying an AttributeBuffer where the DisplayData should set the Attributes it needs to be set. THERE IS ONE IMPORTANT RULE IN THIS: a DisplayData should never overwrite an Attribute that is already set in this buffer. If the WorldCanvas cannot be put in a correct state during the size control, a DisplayData should turn itself off. DisplayData are also responsible for the linear coordinate system of the WorldCanvas and usually setting that up will be done in this step.

(dk 6/04 note on 'size control'). The important WC state set during sizeControl() defines a series of coordinate transformations, ultimately between screen (PixelCanvas) pixels and coordinates in world space. First, there are the limits of the WC's 'draw area', inside the labelling margins, on the PC ('canvasDraw{X,Y}{Size,Offset}' WC Attributes). Second is the 'zoom window': the area of 'linear coordinate' space currently mapped to the draw area ('lin{X,Y}{Min,Max}' WC Attributes). Also stored in linear terms are the maximum extents of the data ('lin{X,Y}{Min,Max}Limit' Attributes), which are used to set the zoom window initially or when 'unzoom' (zoom-to-extent) is requested.

'Linear coordinates' often correspond to indices within the data being displayed, although in principle this is not necessary. They serve to isolate the simple linear scaling/translation (zoom and pan) transformations from the final transformation (often a nonlinear sky projection) between 'linear coordinates' and world space (which is changed less often).

(Also, linear coordinates define an entire plane, although a given sky-coordinate projection to that plane may not be defined everywhere. Keeping zoom windows defined in linear coordinates allows natural display of all-sky images even when sky coordinates are not defined everywhere in the display area. In other words, the existing scheme allows all-sky images to be displayed easily in principle; it does not work currently due to inappropriate insistence of WC::drawImage() that its draw area be given in world coordinates; this is high on the list of bugfix priorities...).

The final transformation makes use of the casacore::Coordinate classes (which ultimately use wcslib for any needed sky projection). It defines the current 2D surface on display within some nD world space, as parameterized by the X and Y linear coordinates. State for this purpose includes the 'WorldCanvas DisplayCoordinateSystem' or 'WCCS' (WorldCanvas::itsCoordinateSystem) plus 'axis codes' (which have the odd Attribute names '{x,y}axiscode (required match)'). They are intended to define the coordinate values and types for the world space currently of interest.

This latter transformation is not as simple or well-defined as it might appear, however (and in my opinion this area still needs work). First of all, the WCCS is a rather late addition to WC interface, and in most cases is not even used to do WC linear-to-world transformations. Instead, this chore is handed off (via the older WCCoordinateHandler interface) to one of the DDs currently registered on WC's companion object, WorldCanvasHolder. Also, the axis codes do not always provide enough information about the current world space for DDs to determine whether they are designed to draw in that space (which, in my opinion, should be the codes' purpose). They also implicitly assume a 1-to-1 correspondence between linear and world coordinates, which is not very general.

Back to how it works now, though. During the 'sizeControl' step of refresh, the WCH will attempt to determine a 'CS master DD'. (Usually the same DD will remain 'in charge' as long as it is registered). Within the sizeControl routine, DDs should test isCSMaster(wch) to determine whether they have permission to become the CS master. If so, and if they are willing and able to become CS master, they must set all of the WC state above and return true; in all other cases they should return false. Only the CSmaster should set the WC CS or axis codes, and it will be responsible for performing the WC's linToWorld, etc. transformation chores. In other words, it is entirely in charge of the final transformation to world coordinates. In principle, other DDs may perform certain 'slave sizeControl' tweaks (such as aligning the zoom window on data pixel boundaries or redefining maximum zoom extents). No current implementations do anything but return false if they are not the master, however.

Major implementation examples for sizeControl() can be found in the ActiveCaching2dDD and PrincipalAxesDD classes. They should be consulted as well for the conventions for processing WC 'zoom/unzoom' order attributes, another CSmaster responsibility. (<>)

The control of what is displayed in a display application is done with setting restrictions on the WorldCanvasHolder (and possibly on the Displaydata). Restrictions are implemented as Attributes and stored in AttributeBuffers. To define what is displayed, one sets one or more restrictions on the WorldCanvasHolder and calls a refresh on the WorldCanvas. Most DisplayData will have pre-defined restrictions, for example in an ImageDisplayData each image has defined the restriction zIndex (set to the pixelindex of the 'third' axis in the data set) and zValue (set to the 'third' worldcoordinate of the image). So to display channel 13 of a data cube, one only has to set on the WorldCanvasHolder a restriction called zIndex with value 13 and call refresh:

worldCanvasHolder.setRestriction("zIndex", 13);
worldCanvas.refresh();

Movies can be made using the Animator class. One way it to use indices, but there is a generic way of defining movies using restrictions. So a sequence does not have to correspond to a 'logical' or 'physical' sequence in some datastructure (channels in a cube for example), but can be made of images from different datasets (e.g. blinking) and display data in different forms. This system is very flexible and there are no real limits to what a movie really means.

The DisplayData also define the coordinate system of the WorldCanvas. If the WorldCanvas has to do a coordinate transformation, it asks a coordinate handler to do this. When a WorldCanvasHolder is created for a WorldCanvas, the WorldCanvasHolder install a coordinate handler on the WorldCanvas. What this coordinate handlers does is to ask the DisplayData that is first in the list of the WorldcanvasHolder to do the transformation. This is quite an indirect way of doing the transformation, but it is very flexible (and the WorldCanvas does not have to know what an Aips++ coordinate system is, or what a DisplayData is,, which makes the WorldCanvas more generic). Most DisplayData will use the coordinate system of the data belonging to this DisplayData to do the transformation, but this is not a requirement. As long as you produce something that can be used as a coordinate system, it does not matter how you compute it. The most important thing is that the DisplayData are responsible for this. At the moment, only the Vector version should be implemented, since efficient transformation of a series of positions is not available in AIPS++. The casacore::Matrix versions are handled at the WorldCanvas level at the moment. Most DisplayData will assume that the linear coordinate system of the WorldCanvas corresponds to some underlying pixel array. The way the linear coordinate system is used is that it is the input for the coordinate transformation to world coordinates. The DisplayData are responsible for keeping the linear system correct.

Other event handlers that the DisplayData have to implement are the position- and the motion event handlers. (PositionEH and MotionEH). These are called by the WorldCanvasHolder in response to an event on the WorldCanvas. It is up to the DisplayData what to do with these events.

One can also register position- and motion event handlers on a DisplayData. What kind of event a DisplayData generates in response to an event on the WorldCanvas (passed to the DisplayData by the WorldCanvasHolder by calling PositionEH/MotionEH) is entirely up to the DisplayData, as long as the handlers are derived from WCPositionEH or WCMotionEH. One can also install a refresh handler on a DisplayData, although I have not thought of any use for that (but allowed for it to keep symmetry with the other events).

(1/02) DisplayEH interface has also been added for handling generic DisplayEvents through handleEvent(). It is expected that DDs will handle these events themselves, as needed, or pass them on in an ad-hoc manner. However, nothing prevents implementing a dispatching list for passing on these events too, if needed.

(3/03) One can also register itself as a DisplayEventHandler on a DisplayData. The handleEvent function of DisplayEH is implemented to forward any DisplayEvents its receives to these handlers. Therefore, all DisplayDatas that overide the handleEvent function, should call the handleEvent function of its super class so this forwarding can take place.

A DisplayData also has to implement a refreshEH. This function is called by the WorldCanvasHolder in response to a refresh request of the WorldCanvas. This is a very important function: here the actual drawing has to happen, using the draw primitives of the WorldCanvas. It is a good idea to check the state of the WorldCanvas before the draw is actually done, and decide not to draw if the state (for whatever reason) is not ok. Also be aware that it is a requirement that one DisplayData can work for more than one WorldCanvasHolders at a time, so the DisplayData has to do some administration for that (which WorldCanvasHolders am I working for and which one am I drawing on at the moment, things like that). See ImageDisplayData for an example of that.

DisplayData also have Attributes. These can be used to store whatever information on a DisplayData. The Attributes give a standard interface to do this.

Example

Motivation

An abstract interface between data and canvases was needed

To Do

Definition at line 317 of file DisplayData.h.

Member Enumeration Documentation

Enumerator
DISPLAYED 
UNDISPLAYED 
LIMBO 

Definition at line 321 of file DisplayData.h.

Constructor & Destructor Documentation

casa::DisplayData::DisplayData ( )

(Required) default constructor.

virtual casa::DisplayData::~DisplayData ( )
virtual

required destructor

casa::DisplayData::DisplayData ( const DisplayData other)
protected

(Required) copy constructor.

Member Function Documentation

virtual casacore::Int casa::DisplayData::activeZIndex ( const WorldCanvas wc = 0)
inlinevirtual

Retrieve 'Active' zIndex.

Not likely to be meaningful/useful unless conformsTo(wch) (or conformsToZIndex(wch)) has been called just prior (and has returned a true result). Those calls make wch the 'active' one; zIndex varies from one wch to another. You can pass a wch, which will force a call to conformsToZIndex(wch).

Definition at line 478 of file DisplayData.h.

References activeZIndex_, and conformsToZIndex().

virtual void casa::DisplayData::addDisplayEventHandler ( DisplayEH displayHandler)
virtual
virtual void casa::DisplayData::addElementRestriction ( const casacore::uInt  itemNum,
Attribute newRestriction,
casacore::Bool  permanent 
)
virtual

Reimplemented in casa::NBody.

virtual void casa::DisplayData::addElementRestrictions ( const casacore::uInt  itemNum,
AttributeBuffer other 
)
virtual

Reimplemented in casa::NBody.

virtual void casa::DisplayData::addMotionEventHandler ( WCMotionEH motionHandler)
virtual
virtual void casa::DisplayData::addPositionEventHandler ( WCPositionEH positionHandler)
virtual

Add event handlers on the DisplayData.

I am not sure there is also a need for a refresh handler on a DisplayData, but allowing for it makes things 'symmetric'. These member functions throw an casacore::AipsError if a null pointer is passed.

virtual void casa::DisplayData::addRefreshEventHandler ( WCRefreshEH refreshHandler)
virtual
virtual void casa::DisplayData::addRestriction ( Attribute newRestriction,
casacore::Bool  permanent 
)
virtual
virtual void casa::DisplayData::addRestrictions ( AttributeBuffer otherBuf)
virtual

Add general restrictions or a restriction for item itemNum of this DisplayData.

Note that the item versions of the restriction interface are not implemented. I am not sure the item versions belong in DisplayData and instead they should only appear in some derived classes.

virtual casacore::Block<casacore::Int> casa::DisplayData::allZIndices ( casacore::Int  axZrng = -1) const
virtual

Return a sorted casacore::Block of all animation frame numbers currently set onto all WCHs where this DD is registered.

The frame numbers returned are guaranteed to be in the range 0 <= zIndex < axZrng, where axZrng is the total number of frames on the Z axis. axZrng can be supplied; the default is nelements().

Referenced by getFirstZIndex().

AttValue::ValueType casa::DisplayData::attributeType ( casacore::String name)

Get the type of the Attribute.

virtual casacore::Bool casa::DisplayData::canLabelAxes ( ) const
inlinevirtual

Reimplemented in casa::MSAsRaster, casa::Profile2dDD, casa::PrincipalAxesDD, and casa::WedgeDD.

Definition at line 604 of file DisplayData.h.

virtual casacore::String casa::DisplayData::className ( ) const
inlinevirtual

Return the class name of this DisplayData; useful mostly for debugging purposes, and perhaps future use in the glish widget interface.

Reimplemented in casa::LatticeAsContour< T >, casa::LatticeAsRaster< T >, casa::LatticeAsVector< T >, casa::LatticeAsMarker< T >, casa::LatticePADisplayData< T >, casa::LatticePADisplayData< casacore::Float >, and casa::ScrollingRasterDD.

Definition at line 611 of file DisplayData.h.

virtual Display::DisplayDataType casa::DisplayData::classType ( )
pure virtual
virtual void casa::DisplayData::cleanup ( )
protectedpure virtual
virtual void casa::DisplayData::clearElementRestrictions ( const casacore::uInt  itemNum)
virtual

Reimplemented in casa::NBody.

virtual void casa::DisplayData::clearRestrictions ( )
virtual

Clear all general restrictions or all restrictions of item itemNum (except the ones that are permanent of course...)

virtual Colormap* casa::DisplayData::colormap ( ) const
inlinevirtual

Definition at line 529 of file DisplayData.h.

References itsColormap.

casacore::Bool casa::DisplayData::conformed ( )
inlineprotected

Returns result of last call to conformsTo(WCH&).

Methods like showValue() which don't have access to the wch can use it instead, but that shifts the burden elsewhere of being sure that conformsTo() was called for the current WCH. When possible, it is generally better and safer to call conformsTo(wch) directly when needed, rather than querying this.

Definition at line 773 of file DisplayData.h.

References csConformed_, rstrsConformed_, and zIndexConformed_.

Referenced by conformsTo().

virtual casacore::Bool casa::DisplayData::conformsTo ( const WorldCanvas wCanvas)
inlinevirtual

Check whether the DD is is compatible with all WC[H] state, including its coordinate state, restrictions, and zIndex (if any).

It also assures that the DD is 'focused' on this WC[H] and its zindex for purposes of drawing or event handling.

Definition at line 433 of file DisplayData.h.

References csConformed_, rstrsConformed_, and zIndexConformed_.

virtual casacore::Bool casa::DisplayData::conformsTo ( const WorldCanvas wc)
inlinevirtual

Definition at line 438 of file DisplayData.h.

References conformed(), conformsToCS(), conformsToRstrs(), and conformsToZIndex().

virtual casacore::Bool casa::DisplayData::conformsToCS ( const WorldCanvas )
inlinevirtual

Determine whether DD is compatible with the WC[H]'s current world coordinates.

Derived DDs can override according to their individual capabilities (PADD and ACDD match axis codes). Overriding DDs should set csConformed_ to the value returned.

Reimplemented in casa::MSAsRaster, casa::SkyCatOverlayDD, casa::ActiveCaching2dDD, and casa::PrincipalAxesDD.

Definition at line 456 of file DisplayData.h.

References csConformed_.

Referenced by conformsTo().

virtual casacore::Bool casa::DisplayData::conformsToRstrs ( const WorldCanvas wc)
virtual

Determine whether DD restrictions are in conformance with restrictions on the given WCH.

(Note: this will include blink index, if any, but not zIndex. zIndex is an individual DM restriction, not an overall DD restriction).

Referenced by conformsTo().

virtual casacore::Bool casa::DisplayData::conformsToZIndex ( const WorldCanvas wc)
inlinevirtual

Determine whether DD is compatible with the current canvas animation (zIndex) position.

(This usually means that it lies within the current number of DD animation frames). (Generally, DDs should probably override setActiveZIndex_() rather than this method).

Definition at line 466 of file DisplayData.h.

References casa::AttributeBuffer::exists(), casa::AttributeBuffer::getValue(), casa::WorldCanvas::restrictionBuffer(), and setActiveZIndex_().

Referenced by activeZIndex(), and conformsTo().

virtual casacore::uInt casa::DisplayData::dataDim ( ) const
pure virtual
virtual const casacore::IPosition casa::DisplayData::dataShape ( ) const
pure virtual
virtual casacore::String casa::DisplayData::dataType ( ) const
pure virtual
virtual const casacore::Unit casa::DisplayData::dataUnit ( ) const
pure virtual
virtual void casa::DisplayData::delTmpData ( casacore::String tmpData)
protectedvirtual

Delete temporary data.

To be called by sub-classe that now the filenames.

Referenced by setDelTmpData().

virtual casacore::String casa::DisplayData::description ( ) const
inlinevirtual
virtual std::vector<int> casa::DisplayData::displayAxes ( ) const
pure virtual
virtual const std::list<DisplayEH*>* casa::DisplayData::displayEventHandlerList ( )
inlineprotectedvirtual

Definition at line 804 of file DisplayData.h.

References itsDisplayEHList.

virtual AttributeBuffer* casa::DisplayData::elementRestrictionBuffer ( const casacore::uInt  itemNum)
virtual

Reimplemented in casa::NBody.

virtual std::string casa::DisplayData::errorMessage ( ) const
pure virtual
virtual casacore::Bool casa::DisplayData::existElementRestriction ( const casacore::uInt  itemNum,
const casacore::String name 
)
virtual

Reimplemented in casa::NBody.

virtual casacore::Bool casa::DisplayData::existRestriction ( const casacore::String name)
virtual

Check if a general restriction or a restriction for item itemNum with name name exists.

casacore::Bool casa::DisplayData::existsAttribute ( casacore::String name)

Check if a certain Attribute exists.

const WorldCanvasHolder* casa::DisplayData::findHolder ( const WorldCanvas wCanvas) const

Identify the WorldCanvasHolder for the given WorldCanvas.

Return 0 if the DisplayData does not know of a WorldCanvasHolder for the WorldCanvas.

WorldCanvasHolder* casa::DisplayData::findHolder ( const WorldCanvas wCanvas)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::uInt newValue 
)

User interface to get value from the attribute buffer.

casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Int newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Float newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Double newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Bool newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::String newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::uInt > &  newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::Int > &  newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::Float > &  newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::Double > &  newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::Bool > &  newValue 
)
casacore::Bool casa::DisplayData::getAttributeValue ( const casacore::String name,
casacore::Vector< casacore::String > &  newValue 
)
virtual casacore::Bool casa::DisplayData::getDelTmpData ( )
inlinevirtual

Get and set method for the flag.

Definition at line 699 of file DisplayData.h.

References delTmpData_.

virtual DisplayState casa::DisplayData::getDisplayState ( ) const
inlinevirtual

Definition at line 351 of file DisplayData.h.

References displaystate.

virtual casacore::Bool casa::DisplayData::getFirstZIndex ( int &  firstZIndex,
casacore::Int  axZrng = -1 
) const
inlinevirtual

Set firstZIndex to minimum zIndex setting from all canvases where this DD is registered.

(In the usual case where the DD is registered on one [multi]panel, this will return its animator 'frame #' setting). The routine will return false (and firstZIndex remain unchanged) if there are no registered canvases with zIndex below axZrng–the total number of frames on the Z axis. axZrng can be supplied; the default means 'use nelements()'. (Note: to get the zindex from the 'currently active' wch instead, a DD should check activeZIndex_. Or, if the desired wch is known, it can retrieve the zIndex itself from wch.restrictionBuffer()).

Definition at line 495 of file DisplayData.h.

References allZIndices(), and casacore::Block< T >::nelements().

virtual casacore::Record casa::DisplayData::getOptions ( bool  scrub = false) const
virtual
virtual void casa::DisplayData::handleEvent ( DisplayEvent ev)
virtual

Overide DisplayEH::handleEvent.

This base class on forwards the event on to listeners

Reimplemented from casa::DisplayEH.

Reimplemented in casa::MSAsRaster, and casa::Profile2dDD.

virtual ImageAnalysis* casa::DisplayData::imageanalysis ( ) const
inlinevirtual

Get image analyis about images...

for non-image "DisplayData" this function will return null... Use dataType() to check... Creates a new object (or a null pointer) which may need to be deleted...

Definition at line 632 of file DisplayData.h.

virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > casa::DisplayData::imageinterface ( )
inlinevirtual

Returns a pointer that should not be deleted...

Reimplemented in casa::LatticePADisplayData< T >, and casa::LatticePADisplayData< casacore::Float >.

Definition at line 636 of file DisplayData.h.

casacore::Bool casa::DisplayData::isCsAndZIndexConformed ( )
inlineprotected

Added so that when two images are loaded with no velocity alignment, they can still show their position coordinates without having to be rstrsConformed.

Definition at line 779 of file DisplayData.h.

References csConformed_, and zIndexConformed_.

virtual casacore::Bool casa::DisplayData::isCSmaster ( const WorldCanvasHolder wch = 0) const
virtual

Is this DD the CS master of the passed WCH? Defaulting wch to 0 asks whether this DD is CS master of some WCH on which it is registered.

(That option is mostly a kludge, since the DD may be CS master of some WCHs and not others).

virtual bool casa::DisplayData::isDisplayable ( ) const
inlinevirtual

Reimplemented in casa::WedgeDD.

Definition at line 355 of file DisplayData.h.

virtual casacore::Bool casa::DisplayData::labelAxes ( const WCRefreshEvent ev)
virtual

an explicit request to draw the axes and/or labels.

Returns true if axes were drawn, otherwise false;

Reimplemented in casa::MSAsRaster, casa::Profile2dDD, casa::PrincipalAxesDD, casa::ScrollingRasterDD, and casa::WedgeDD.

virtual casacore::Bool casa::DisplayData::linToWorld ( casacore::Vector< casacore::Double > &  world,
const casacore::Vector< casacore::Double > &  lin 
)
pure virtual
virtual void casa::DisplayData::motionEH ( const WCMotionEvent ev)
protectedvirtual

Reimplemented in casa::NBody, and casa::PrincipalAxesDD.

virtual const std::list<WCMotionEH*>* casa::DisplayData::motionEventHandlerList ( )
inlineprotectedvirtual

Definition at line 798 of file DisplayData.h.

References itsMotionEHList.

virtual casacore::uInt casa::DisplayData::nelements ( const WorldCanvasHolder wcHolder) const
pure virtual

Returns the number of elements in this DisplayData (mainly for movie purposes).

First one is no. of elements for specific WCanvas.

Implemented in casa::MSAsRaster, casa::PrincipalAxesDD, casa::NBody, casa::PassiveCachingDD, and casa::ActiveCaching2dDD.

virtual casacore::uInt casa::DisplayData::nelements ( ) const
pure virtual
virtual void casa::DisplayData::notifyRegister ( WorldCanvasHolder wcHolder)
virtual
virtual void casa::DisplayData::notifyUnregister ( WorldCanvasHolder wcHolder,
casacore::Bool  ignoreRefresh = false 
)
virtual

ignoreRefresh tells the DD not to refresh just to clean up DMs

Reimplemented in casa::PrincipalAxesDD, casa::MSAsRaster, casa::Profile2dDD, casa::WedgeDD, and casa::CachingDisplayData.

void casa::DisplayData::operator= ( const DisplayData other)
protected

(Required) copy assignment.

virtual void casa::DisplayData::positionEH ( const WCPositionEvent ev)
protectedvirtual

Position, motion and refresh event handlers that will generally be called by a WorldCanvasHolder.

Reimplemented in casa::NBody, and casa::PrincipalAxesDD.

virtual const std::list<WCPositionEH*>* casa::DisplayData::positionEventHandlerList ( )
inlineprotectedvirtual

Retrieve position, motion, refresh and display event handler lists.

Definition at line 795 of file DisplayData.h.

References itsPositionEHList.

virtual void casa::DisplayData::refresh ( casacore::Bool  clean = false)
virtual

an explicit refresh: should be called if the DisplayData is changed such that drawing is required.

If clean is true, the DD is totally rebuilt, in practice. This is provided for higher level control, even explicit control of refresh where necessary. ..."refresh(true)"... does not seem to work <drs:Mar 21 2013>

virtual void casa::DisplayData::refreshEH ( const WCRefreshEvent ev)
protectedpure virtual
virtual const std::list<WCRefreshEH*>* casa::DisplayData::refreshEventHandlerList ( )
inlineprotectedvirtual

Definition at line 801 of file DisplayData.h.

References itsRefreshEHList.

void casa::DisplayData::removeAttribute ( casacore::String name)

Remove an Attribute.

virtual void casa::DisplayData::removeColormap ( )
virtual
virtual void casa::DisplayData::removeDisplayEventHandler ( DisplayEH displayHandler)
virtual
virtual void casa::DisplayData::removeElementRestriction ( const casacore::uInt  itemNum,
const casacore::String name 
)
virtual

Reimplemented in casa::NBody.

virtual void casa::DisplayData::removeFromAllWCHs ( )
virtual

remove this DD everywhere–will stop any more refresh handling by the DD.

It is a good idea for top-level DDs to call this first in their destructor.

virtual void casa::DisplayData::removeMotionEventHandler ( WCMotionEH motionHandler)
virtual
virtual void casa::DisplayData::removePositionEventHandler ( WCPositionEH positionHandler)
virtual

Remove eventhandlers.

virtual void casa::DisplayData::removeRefreshEventHandler ( WCRefreshEH refreshHandler)
virtual
virtual void casa::DisplayData::removeRestriction ( const casacore::String name)
virtual

Remove a general restriction or a restriction from item itemNum

virtual AttributeBuffer* casa::DisplayData::restrictionBuffer ( )
virtual

Get a handle to the buffer of general restrictions or of the buffer of restrictions for item itemNum

virtual casacore::Bool casa::DisplayData::setActiveZIndex_ ( casacore::Int  zindex)
inlineprotectedvirtual

DDs may override to adjust the internal stored current animation index (activeZIndex_) if necessary, and to set return value false iff the passed zindex won't work for the DD.

zIndexConformed_ should be set to the value returned; activeZIndex_ should also be set appropriately.

Reimplemented in casa::MSAsRaster, and casa::PrincipalAxesDD.

Definition at line 721 of file DisplayData.h.

References activeZIndex_, and zIndexConformed_.

Referenced by conformsToZIndex().

void casa::DisplayData::setAttribute ( Attribute at)

set an Attribute or Attributes

void casa::DisplayData::setAttributeOnPrimaryWCHs ( Attribute at)

Set an attribute on any WorldCanvas for which this DD is CS master.

void casa::DisplayData::setAttributes ( AttributeBuffer at)
virtual void casa::DisplayData::setColormap ( Colormap cmap,
casacore::Float  weight 
)
virtual

Set/remove/get a ColourMap (sorry, ColorMap) for this DisplayData setColormap() throw an casacore::AipsError is a null pointer is passed.

colormap() returns 0 if no Colormap is registered.

Reimplemented in casa::CachingDisplayData.

virtual void casa::DisplayData::setDefaultOptions ( )
virtual
virtual void casa::DisplayData::setDelTmpData ( casacore::Bool  delTmpData)
inlinevirtual

Definition at line 702 of file DisplayData.h.

References delTmpData(), and delTmpData_.

virtual void casa::DisplayData::setDisplayDataBlue ( DisplayData )
inlinevirtual

Reimplemented in casa::LatticeAsRaster< T >.

Definition at line 708 of file DisplayData.h.

virtual void casa::DisplayData::setDisplayDataGreen ( DisplayData )
inlinevirtual

Reimplemented in casa::LatticeAsRaster< T >.

Definition at line 709 of file DisplayData.h.

virtual void casa::DisplayData::setDisplayDataRed ( DisplayData )
inlinevirtual

Reimplemented in casa::LatticeAsRaster< T >.

Definition at line 707 of file DisplayData.h.

virtual void casa::DisplayData::setDisplayState ( DisplayState  s)
inlinevirtual

Definition at line 348 of file DisplayData.h.

References displaystate.

virtual void casa::DisplayData::setElementRestriction ( const casacore::uInt  itemNum,
Attribute newRestriction 
)
virtual

Reimplemented in casa::NBody.

virtual void casa::DisplayData::setElementRestrictions ( const casacore::uInt  itemNum,
AttributeBuffer other 
)
virtual

Reimplemented in casa::NBody.

virtual casacore::Bool casa::DisplayData::setOptions ( casacore::Record rec,
casacore::Record recOut 
)
virtual
virtual void casa::DisplayData::setRestriction ( Attribute newRestriction)
virtual
virtual void casa::DisplayData::setRestrictions ( AttributeBuffer otherBuf)
virtual

Set general restrictions or a restriction for item itemNum of this DisplayData.

Note that the item versions of the restriction interface are not implemented.

virtual void casa::DisplayData::setSubstituteTitleText ( const casacore::String  )
inlinevirtual

Reimplemented in casa::PrincipalAxesDD.

Definition at line 640 of file DisplayData.h.

virtual void casa::DisplayData::setUIBase ( casacore::Int  uibase)
inlinevirtual

Reimplemented in casa::MSAsRaster.

Definition at line 692 of file DisplayData.h.

References uiBase_.

Referenced by casa::MSAsRaster::setUIBase().

virtual casacore::String casa::DisplayData::showPosition ( const casacore::Vector< casacore::Double > &  world,
const casacore::Bool displayAxesOnly = false 
)
pure virtual

casacore::Format a string containing coordinate information at the given world coordinate

Implemented in casa::MSAsRaster, casa::NBody, casa::PrincipalAxesDD, casa::ActiveCaching2dDD, and casa::PassiveCachingDD.

virtual casacore::String casa::DisplayData::showValue ( const casacore::Vector< casacore::Double > &  world)
pure virtual
virtual casacore::Bool casa::DisplayData::sizeControl ( WorldCanvasHolder wcHolder,
AttributeBuffer holderBuf 
)
protectedpure virtual

Set (coordinate) state of WCH's WC.

Called by WCH::executeSizeControl(). (See important notes on interface and implementation of this function in the class synopsis above).

Implemented in casa::Profile2dDD, casa::NBody, casa::PrincipalAxesDD, casa::PassiveCachingDD, casa::ActiveCaching2dDD, and casa::ScrollingRasterDD.

virtual casacore::Int casa::DisplayData::uiBase ( ) const
inlinevirtual

DD 'Absolute Pixel Coordinates', e.g.

channel numbers, are internally 0-based (they begin numbering at 0), but certain external user-interface functions (e.g. showPosition(), used for position tracking) have produced 1-based output traditionally for the glish-based viewer. uiBase_, and related methods uiBase() and setUIBase(), allow newer (python/Qt-based) code to cause external ui functions like showValue() to report 0-based values instead. Unless setUIBase(0) is called, the traditional 1-based reporting behavior is retained by default.

If you are using 0-basing in the user interface, you should call setUIBase(0) right after constructing this DD, before other user interface operations such as getOptions().

Definition at line 688 of file DisplayData.h.

References uiBase_.

Referenced by casa::MSAsRaster::a1mult_(), and casa::MSAsRaster::setUIBase().

virtual casacore::Vector<casacore::String> casa::DisplayData::worldAxisNames ( ) const
pure virtual

Some routines that give info on the axes names, units etc.

I am not sure this is the right way of doing it.

Implemented in casa::ScrollingRasterDD, casa::PrincipalAxesDD, casa::NBody, casa::ActiveCaching2dDD, and casa::PassiveCachingDD.

virtual casacore::Vector<casacore::String> casa::DisplayData::worldAxisUnits ( ) const
pure virtual
virtual casacore::Bool casa::DisplayData::worldToLin ( casacore::Vector< casacore::Double > &  lin,
const casacore::Vector< casacore::Double > &  world 
)
pure virtual
virtual casacore::Bool casa::DisplayData::zIndexHint ( casacore::Int ) const
inlinevirtual

Will be called just before registering the [GTk]DD on a [GTk]PanelDisplay which has none registered on it yet.

The DD can set the initial animator position in this case by overriding this method to set preferredZIndex and return true.

Reimplemented in casa::MSAsRaster.

Definition at line 661 of file DisplayData.h.

Friends And Related Function Documentation

friend class WorldCanvasHolder
friend

Protected interface for WorldCanvasHolder, can be called by the friends of DisplayData, but are nobody else's business.

I decided to do this in this way to avoid that the programmer has to both register the DisplayData with the WorldCanvasHolder AND the WorldCanvasHolder with the DisplayData. Now one of the two is done automatically. The WorldCanvasHolder is my friend. This is to hide the eventhandler interfaces listed below from the outside world. The WorldCanvasHolder is the only class that needs them

Definition at line 750 of file DisplayData.h.

Member Data Documentation

casacore::Int casa::DisplayData::activeZIndex_
protected

Indicates the 'current' animation frame, i.e.

the zIndex on the canvas for which confromsTo(wch) was last called. Intended to be set only by setActiveZIndex_() in this class or derived classes.

Definition at line 755 of file DisplayData.h.

Referenced by activeZIndex(), casa::MSAsRaster::setActiveZIndex_(), and setActiveZIndex_().

AttributeBuffer casa::DisplayData::attributes
protected

buffer for storing Attributes

Definition at line 737 of file DisplayData.h.

casacore::Bool casa::DisplayData::csConformed_
protected
const casacore::String casa::DisplayData::DATA_MAX
static

Definition at line 712 of file DisplayData.h.

const casacore::String casa::DisplayData::DATA_MIN
static

Definition at line 711 of file DisplayData.h.

casacore::PtrBlock<void *> casa::DisplayData::DDelement
protected

list of DisplayDataElements, which are of type DisplayMethod or derived

Definition at line 740 of file DisplayData.h.

casacore::Bool casa::DisplayData::delTmpData_
protected

Flag indicating that temporary data should be removed when deleting the object.

Definition at line 759 of file DisplayData.h.

Referenced by getDelTmpData(), and setDelTmpData().

DisplayState casa::DisplayData::displaystate
private

is this data currently being displayed?

Definition at line 832 of file DisplayData.h.

Referenced by getDisplayState(), and setDisplayState().

Colormap* casa::DisplayData::itsColormap
private

Colormap for this DisplayData, and its weight.

Definition at line 835 of file DisplayData.h.

Referenced by colormap().

casacore::Float casa::DisplayData::itsColormapWeight
private

Definition at line 836 of file DisplayData.h.

std::list<DisplayEH*> casa::DisplayData::itsDisplayEHList
private

Definition at line 849 of file DisplayData.h.

Referenced by displayEventHandlerList().

std::list<WCMotionEH*> casa::DisplayData::itsMotionEHList
private

Definition at line 847 of file DisplayData.h.

Referenced by motionEventHandlerList().

std::list<WCPositionEH*> casa::DisplayData::itsPositionEHList
private

Lists of position, motion, refresh and display event handlers.

Definition at line 846 of file DisplayData.h.

Referenced by positionEventHandlerList().

std::list<WCRefreshEH*> casa::DisplayData::itsRefreshEHList
private

Definition at line 848 of file DisplayData.h.

Referenced by refreshEventHandlerList().

std::list<WorldCanvasHolder*> casa::DisplayData::itsWCHList
private

A list of WorldCanvasHolders for which this DisplayData works.

The list is maintained by the DisplayData itself based on the notify routines used by the WorldCanvasHolder. This can be used, for example, to find which WorldCanvas belongs to which WorldCanvasHolder.

Definition at line 843 of file DisplayData.h.

WorldCanvasHolder* casa::DisplayData::oldWCHolder
private

Definition at line 829 of file DisplayData.h.

AttributeBuffer casa::DisplayData::restrictions
protected

The Book says that we should not put data members in class that is supposed to only define an interface, but by putting these here, we can implement some of the restriction & eventhandling stuff so that people do not have to repeat it.

buffer for storing restrictions

Definition at line 734 of file DisplayData.h.

casacore::Bool casa::DisplayData::rstrsConformed_
protected

Somewhat limited-use state, saved here for 'efficiency'.

Indicates that the last call to conformsToRstrs(), conformsToCS(), or conformsToZIndex(), passed the respective compatibility tests. (See conformed(), below). Intended to be set only in the methods conformsToRstrs(), conformsToCS() and setActiveZIndex_(), respectively.

Definition at line 766 of file DisplayData.h.

Referenced by conformed(), and conformsTo().

casacore::Int casa::DisplayData::uiBase_
private

DD 'Absolute Pixel Coordinates', e.g.

channel numbers, are internally 0-based (begin numbering at 0), but certain external user-interface functions (e.g. showPosition(), used for position tracking) have produced 1-based output traditionally for the glish-based viewer. uiBase_, and related methods uiBase() and setUIBase(), allow newer (python/Qt-based) code to cause external ui functions like showValue() report 0-based values instead. Unless setUIBase(0) is called, the traditional 1-based reporting behavior is retained by default.

Definition at line 860 of file DisplayData.h.

Referenced by setUIBase(), and uiBase().

casacore::Bool casa::DisplayData::zIndexConformed_
protected

The documentation for this class was generated from the following file: