casa
5.7.0-16
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
casa
code
display
DisplayDatas.h
Go to the documentation of this file.
1
//# DisplayDatas.h: The DisplayDatas module - AIPS++ data-based display
2
//# Copyright (C) 1994,1995,1996,1997,1998,1999,2000
3
//# Associated Universities, Inc. Washington DC, USA.
4
//#
5
//# This library is free software; you can redistribute it and/or modify it
6
//# under the terms of the GNU Library General Public License as published by
7
//# the Free Software Foundation; either version 2 of the License, or (at your
8
//# option) any later version.
9
//#
10
//# This library is distributed in the hope that it will be useful, but WITHOUT
11
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13
//# License for more details.
14
//#
15
//# You should have received a copy of the GNU Library General Public License
16
//# along with this library; if not, write to the Free Software Foundation,
17
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18
//#
19
//# Correspondence concerning AIPS++ should be addressed as follows:
20
//# Internet email: aips2-request@nrao.edu.
21
//# Postal address: AIPS++ Project Office
22
//# National Radio Astronomy Observatory
23
//# 520 Edgemont Road
24
//# Charlottesville, VA 22903-2475 USA
25
//#
26
//# $Id$
27
28
#ifndef TRIALDISPLAY_DISPLAYDATAS_H
29
#define TRIALDISPLAY_DISPLAYDATAS_H
30
31
#include <
display/DisplayDatas/LatticeAsRaster.h
>
32
#include <
display/DisplayDatas/LatticeAsContour.h
>
33
34
namespace
casa {
//# NAMESPACE CASA - BEGIN
35
36
// <module>
37
//
38
// <summary>
39
// A module providing classes to draw AIPS++ data in specific ways
40
// </summary>
41
//
42
// <use visibility=export>
43
//
44
// <reviewed reviewer="None yet" date="yyyy/mm/dd" demos="">
45
// </reviewed>
46
//
47
// <prerequisite>
48
// <li> DisplayCanvas
49
// </prerequisite>
50
//
51
// <etymology>
52
// The module provides various classes that are responsible for
53
// "displaying" "data"
54
// </etymology>
55
//
56
// <synopsis>
57
//
58
// <h3>Motivation</h3>
59
//
60
// The basic drawing devices in the Display Library are the <linkto
61
// class="PixelCanvas">PixelCanvas</linkto> and the <linkto
62
// class="WorldCanvas">WorldCanvas</linkto>. These devices know
63
// nothing about what data look like, what kind of object will draw on
64
// the devices, and in what circumstances these devices will be used.
65
// The only thing they define is the interface of how to draw on them
66
// and the way that they communicate with other objects, for example
67
// the event handlers.
68
//
69
// <h3>The DisplayDatas</h3>
70
//
71
// Thus classes are needed to transform data into objects that are
72
// understood by the canvases. These are the DisplayDatas, which
73
// generate drawing commands based on data and some algorithm which
74
// translates that data into a visual representation: eg. a contouring
75
// algorithm. Exactly how the data is represented is entirely defined
76
// by the DisplayDatas, and as long as it can be done using the
77
// primitives of the WorldCanvas, there are no restrictions. To
78
// display data in a new way, all that must be written is a new
79
// DisplayData which generates appropriate drawing instructions, and
80
// can be asked to carry out those instructions. The DisplayDatas
81
// should be thought of as the "workhorses" of the AIPS++ Display
82
// Library.
83
//
84
// <h3>The WorldCanvasHolder</h3>
85
//
86
// The administration of a number of DisplayDatas on one WorldCanvas
87
// is handled by the WorldCanvasHolder class. The WorldCanvasHolder
88
// provides methods to register and unregister DisplayDatas. The
89
// WorldCanvasHolder installs handlers on the WorldCanvas for each
90
// event generated by the WorldCanvas. Since its main task is to
91
// allow more than one DisplayData object to draw on a WorldCanvas at
92
// any one time, the WorldCanvasHolder must pass WorldCanvas events on
93
// to the registered DisplayDatas, either directly or indirectly. For
94
// example, motion events (which occur when the pointer is moved
95
// across the WorldCanvas) will be immediately passed on to all
96
// DisplayDatas for processing, while refresh events (which occur when
97
// the WorldCanvas needs to redraw itself, eg. following a resize) are
98
// managed by the WorldCanvasHolder itself, which may ask only a
99
// subset of the registered DisplayDatas to redraw themselves, and
100
// also ensures that raster-type DisplayDatas draw before vector-type
101
// DisplayDatas.
102
//
103
// Some DisplayDatas will consist of a sequence of "drawings," for
104
// example, a set of channel maps in a data cube. The DisplayDatas
105
// are built with such sequences in mind, and the appropriate "frame"
106
// to draw is negotiated between the WorldCanvasHolder and the one or
107
// more DisplayDatas actually registered with the WorldCanvasHolder.
108
// A sequence of images is not restricted to separate planes through a
109
// data volume: it could comprise blinking between two or more images,
110
// or rendering views of data along different lines-of-sight.
111
//
112
// To control what is displayed on a WorldCanvas, the programmer can
113
// put restrictions on a WorldCanvasHolder and on DisplayDatas. Only
114
// the DisplayDatas whose internal restrictions actually match those
115
// of the WorldCanvasHolder will be allowed to draw on the
116
// WorldCanvas. Indeed, an important part of the support for
117
// DisplayDatas comprising sequences of images is implemented by
118
// placing restrictions on the WorldCanvas that are appropriate to the
119
// desired image plane.
120
//
121
// </synopsis>
122
//
123
// </module>
124
125
126
}
//# NAMESPACE CASA - END
127
128
#endif
129
LatticeAsRaster.h
LatticeAsContour.h
Generated on Sun Sep 1 2019 23:32:30 for casa by
1.8.5