casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Animator.h
Go to the documentation of this file.
1 //# Animator.h: movie control for one or more WorldCanvasHolders
2 //# Copyright (C) 1996,1997,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_ANIMATOR_H
29 #define TRIALDISPLAY_ANIMATOR_H
30 
31 //# aips includes
32 #include <casa/aips.h>
33 #include <list>
34 
35 //# display library includes
37 
38 namespace casa { //# NAMESPACE CASA - BEGIN
39 
40 //# forwards
41  class WorldCanvasHolder;
42  class Animator;
43 
44 // <summary>
45 // WorldCanvas refresh event handler for Animator class.
46 // </summary>
47 //
48 // <synopsis>
49 // This class is a simple implementation of a WCRefreshEH which
50 // passes WorldCanvas refresh events on to an Animator object.
51 // </synopsis>
52 
53  class AnimatorRefEH : public WCRefreshEH {
54  public:
55  AnimatorRefEH(Animator *animator);
56  virtual ~AnimatorRefEH() {};
57  virtual void operator()(const WCRefreshEvent &ev);
58  private:
60  };
61 
62 // <summary>
63 // Animation controller for WorldCanvasHolders.
64 // </summary>
65 // <use visibility=export>
66 //
67 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
68 // </reviewed>
69 //
70 // <prerequisite>
71 // <li> Attribute
72 // <li> AttributeBuffer
73 // <li> WorldCanvasHolder
74 // <li> DisplayData
75 // </prerequisite>
76 //
77 // <etymology>
78 // An Animator animates animations
79 // </etymology>
80 //
81 // <synopsis>
82 // TBW
83 // </synopsis>
84 // <example>
85 //
86 // First example is making a simple movie of all the
87 // channels in a data cube
88 //
89 // <srcblock>
90 // // Create a PixelCanvas for X11 to draw on
91 // X11PixelCanvas(parent, xpcctbl, width, height) ;
92 // // and a World casacore::Coordinate interface for this PixelCanvas
93 // WorldCanvas wCnvs(&pixelCnvs);
94 //
95 // // Create a WorldCanvasHolder
96 // WorldCanvasHolder wCnvsHldr(&wCnvs);
97 //
98 // // Create an ImageDisplayData object of the data cube to display the
99 // // channels (assuming 3rd axis is velocity in this cube)
100 // ImageDisplayData cube(myDataSet, 0, 1, 2);
101 // // and register this with the WorldCanvasHolder
102 // wCnvsHldr.addDisplayData(&cube);
103 //
104 // // Create an Animator for the WorldCanvasHolder and register the
105 // // WorldCanvasHolder
106 // Animator animator;
107 // animator.addWorldCanvasHolder(&wCnvsHldr);
108 //
109 // // start with first channel
110 // animator.setMin(0.0);
111 // // last channel of cube (assuming it has 30 channels)
112 // animator.setMax(29.0);
113 // // go in steps of one channel
114 // animator.setStep(1.0);
115 // // only one channel at a time, so tolerance must be less than 1.0
116 // anomator.setTolerance(0.1);
117 // // display new channel every 0.2 sec
118 // animator.setUpdateInterval(0.2);
119 // // we want a normal boring movie
120 // animator.setNextMode(animator::NEXT_FORWARD);
121 // // and we define the channel (ie index)
122 // animator.setMatchMode(Animator::MATCH_INDEX);
123 // // set the Update method
124 // animator.setUpdateMode(Animator::UPDATE_DIRECT);
125 // // and start the movie
126 // animator.startMovie();
127 // .
128 // .
129 // .
130 // // After a while we want to change to Rock & Roll mode:
131 // animator.setMovieMode(Animator::NEXT_ROCKandROLL);
132 // .
133 // .
134 // .
135 // // and after another while we stop
136 // animator.stopMovie();
137 // </srcblock>
138 // Second example is that we want to blink between channel 20 of the previous
139 // cube and an optical image
140 // <srcblock>
141 // // Create an ImageDataDisplay of the image and register with
142 // // the WorldCanvasHolder
143 // ImageDataDisplay image(myImage, 0, 2);
144 // wCnvsHldr.addDisplayData(&image);
145 //
146 // // Create a casacore::List to contain the AttributeBuffers
147 // casacore::List<void *> buffList;
148 // // and an iterator for this list
149 // casacore::ListIter<void *> it(&buffList);
150 //
151 // // Create AttributeBuffers and fill them
152 // AttributeBuffer atBuff1;
153 // // This is to mark the cube. The name and value of the Attribute or
154 // // Attributes that can be used is arbitrary, as long as the different
155 // // AttributeBuffers in the casacore::List select different datasets (even that is
156 // // not really necessary, but you will be blinking between the same frames
157 // // and not many people will get excited about that....)
158 // atBuff1.add("AjaxWordtKampioen", "yes");
159 // it.addRight((void *) &attBuff1);
160 //
161 // // the buffer for the image
162 // AttributeBuffer atBuff2;
163 // atBuff2.add("AjaxWordtKampioen", "of course");
164 // at.addRight((void *) &attBuff2);
165 //
166 // // and set this list on the Animator
167 // animator.setBlinkList(&buffList);
168 //
169 // // Set the same attributes on the DisplayDatas so the Attribute matching
170 // // mechanism between the WorldCanvasHolder and the DisplayDatas will select
171 // // the right data at the right time automatically
172 // cube.addAttribute(attBuff1);
173 // image.addAttribute(attBuff2);
174 //
175 // // Tell animator to use channel 20
176 // animator.gotoCoord(20.0);
177 // // The Animator should write "zIndex" to select channel 20
178 // animator.setMatchMode(Animator::MATCH_INDEX);
179 // // Because we set the UpdateMode to UPDATE_BLINK, the zIndex does
180 // // not change each time the timer goes off.
181 // animator.setUpdateMode(Animator::UPDATE_BLINK);
182 // // and the blinking can start:
183 // animator.startMovie();
184 // .
185 // .
186 // .
187 // // After a while we want to blink between channel 19 and the optical image.
188 // // this is done by setting NextMode to NEXT_BACKWARD and invoke nextCoord().
189 // // Of course we could also have used only animator.prevCoord(), but just
190 // // to show the principle...
191 // animator.setNextMode(Animator::NEXT_BACKWARD);
192 // animator.nextCoord();
193 
194 //
195 // // We can add a third data set, set "AjaxWordtKampioen" to "always" for that data,
196 // // and the blinking is between 3 datasets:
197 //
198 // // stop the blinking
199 // animator.stopMovie();
200 //
201 // // Create DisplayData from data
202 // ImageDataDisplay image2(mySecondImage, 0, 2);
203 //
204 // // Add to WorldCanvasHolder
205 // wCnvsHldr.addDisplayData(&image2);
206 //
207 // //Setup AttributeBuffer
208 // AttributeBuffer atBuff3;
209 // atBuff3.add("AjaxWordtKampioen", "always");
210 //
211 // // add to data
212 // image2.addAttribute(attBuff3);
213 //
214 // // and add to List
215 // at.addRight((void *) &attBuff3);
216 //
217 // // set the updated list on the animator (strictly speaking not neseccary
218 // // here, because animator already has the address of this casacore::List, but...)
219 // animator.setBlinkList(&buffList);
220 //
221 // //and go!!!
222 // animator.startMovie();
223 // </srcblock>
224 // The third example is to run movies, selected on world coordinates on two
225 // WorldCanvasHolders in synch:
226 // <srcblock>
227 // // Create a PixelCanvas for X11 to draw on
228 // X11PixelCanvas(parent, xpcctbl, width, height) ;
229 // // and two WorldCanvases side by side on the same PixelCanvas
230 // WorldCanvas wCnvs1(&pixelCanvas, 0.0, 0.25, 0.5, 0.5);
231 // WorldCanvas wCnvs2(&pixelCanvas, 0.5, 0.25, 0.5, 0.5);
232 //
233 // // A WorldCanvasHolder for each WorldCanvas
234 // WorldCanvasHolder wCnvsHldr1(&wCnvs1);
235 // WorldCanvasHolder wCnvsHldr2(&wCnvs2);
236 //
237 // // We have an HI data cube of an object
238 // ImageDisplayData HIcube(HIdata, 0, 1, 2);
239 // // that we display on the first WorldCanvas
240 // wCnvsHldr1.addDisplayData(HIcube);
241 //
242 // // and we have a CO cube of the same object that we display on the second
243 // // WorldCanvas
244 // ImageDisplayData COcube(COdata, 0, 1, 2);
245 // wCnvsHldr2.addDisplayData(COcube);
246 //
247 // // Create an animator and register the two WorldCanvasHolders
248 // Animator animator;
249 // animator.addWorldCanvasHolder(wCnvsHldr1);
250 // animator.addWorldCanvasHolder(wCnvsHldr2);
251 //
252 // // Set the movie parameters:
253 // // Select on world coordinate (ie velocity)
254 // animator.setMatchMode(Animator::MATCH_WORLD);
255 // // start and end velocities
256 // animator.setMinAndMax(1200.0, 1400.0);
257 // // and the tolerance to 10.0 and the step to 20.0
258 // animator.setTolerance(10.0):
259 // animator.setStep(20.0);
260 //
261 // // Set speed of movies and the mode
262 // animator.setUpdateInterval(0.2);
263 // animator.setNextMode(Animator::ROCKandROLL);
264 //
265 // // Now, on the first canvas a movie will be played of the HI data, and on
266 // // the second canvas a movie of the CO data. Because the selection is done
267 // // on world coordinate, the two movies display the data of the same
268 // // velocity (within the tolerance of 10.0), in steps of 20.0, synchronized,
269 // // regardless of the channel separation of the two datasets:
270 // animator.startMovie();
271 //
272 // </srcblock>
273 // </example>
274 //
275 //
276 // <motivation> To allow for easy control of movies, possibly synchonous on
277 // more than one WorldCanvas, as well as lay the basis for the userinterface
278 // for this, a central class is needed that controls sequences of DisplayData.
279 // </motivation>
280 //
281 // <todo>
282 // <li> make Animator know about Units
283 // </todo>
284 
285  class Animator {
286 
287  public:
288 
289  // Defines the way the Animator calculates the Z coordinate of the next
290  // frame in the sequence. This defines the behaviour of the member
291  // nextCoord().
292  enum NextMode {
293  // Movie in forward direction. Step is added, if the Z coordinate is larger
294  // than maximum then display minimum, increment again until maximum, etc.
295  // This is the default.
297  // Movie in backward direction. Step is subtracted, if Z coordinate is
298  // smaller than mimnimum then display maximum, decrement until minimum,
299  // etc etc
301  // Movie goes up and down the sequence. Step is added until the Z
302  // coordinate is larger than maximum, then step is subtracted until the Z
303  // coordinate is smaller than minimum, then step is added, and so on, and
304  // so on
306  };
307 
308  // Defines wheter the sequence is defined using the index in the sequence or
309  // by the world coordinate of the 'Z-axis' (the "zValue" or "zIndex" used by the
310  // WorldCanvasHolders and the DisplayDatas), or only by the AttributeBuffers
311  enum MatchMode {
312  // casacore::Sequence is defined by writing Attribute "zIndex" with the value of the
313  // Z coordinate to WorldCanvasHolders, plus the ones from the casacore::List of
314  // AttributeBuffers.
315  // This is the default
317  // casacore::Sequence is defined by writing Attribute "zValue"with the value of the
318  // Z coordinate to WorldCanvasHolders, plus the ones from the casacore::List of
319  // AttributeBuffers
321  // Only the Attributes from the casacore::List of AttributeBuffers are written
323  };
324 
325  // Decides whether the Z coordinate should be changed according to the
326  // NextMode before each update or not
327  enum UpdateMode {
328  // Do change the Z coordinate before each update. Use this for 'normal
329  // movies'.
330  // This is the default.
332  // Do not change Z coordinate, but rely on the AttributeBuffers to change
333  // what is displayed. Use this for blinking.
335  };
336 
337 
338 
339  // Constructor
340  Animator();
341 
342  //Destrutor
343  virtual ~Animator();
344 
345  // Go to next Z coordinate in sequence
346  virtual void nextCoord();
347 
348  // Go to previous Z coordinate in sequence
349  virtual void prevCoord();
350 
351  // Go to Z coordinate zCoord
352  virtual void gotoCoord(casacore::Double zCoord);
353 
354  // Set increment in the Z coordinate for the movie
355  // <group>
356  virtual void setStep(casacore::uInt zIncrement);
357  virtual void setStep(casacore::Double zIncrement);
358  // </group>
359 
360  // Set the tolerance in the Z coordinate
361  // <group>
362  virtual void setTolerance(casacore::uInt tolerance);
363  virtual void setTolerance(casacore::Double tolerance);
364  // </group>
365 
366  // Set the minimum and maximum Z coordinate for the movie
367  virtual void setMinAndMaxCoord(casacore::Double zMin, casacore::Double zMax);
368 
369  // Set whether "zIndex", "zValue" or none of the two should be written
370  // additionally to the AttributeBuffers.
371  virtual void setMatchMode(Animator::MatchMode match);
372 
373 
374  // Set the way the increments are done, ie. it defines the action of
375  // nextCoord() (options NEXT_FORWARD, NEXT_BACKWARD, UPDATE_ROCKANDROLL)
376  virtual void setNextMode(Animator::NextMode mode);
377 
378 
379  // Set whether an increment should be done before each update (UPDATE_DIRECT or
380  // UPDATE_BLINK)
381  virtual void setUpdateMode(Animator::UpdateMode mode);
382 
383  // Set update interval of movie in milliseconds
384  virtual void setUpdateInterval(casacore::Double interval);
385 
386  // Set the list of additional Attributes that the Animator places on the
387  // WorldCanvasHolders before each update.
388  virtual void setBlinkRestrictions(std::list<void *> *attBuffers);
389 
390  // Remove the casacore::List with AttributeBuffers
391  virtual void clearBlinkRestrictions();
392 
393  // Stop and start movie
394  // <group>
395  virtual void startMovie();
396  virtual void stopMovie();
397  // </group>
398 
399  // Return the length of the movie. In UpdateMode UPDATE_DIRECT this is the
400  // number of frames that follow from the minimum and maximum Z coordiante
401  // and the step. In UPDATE_BLINK mode this is the length of the casacore::List of
402  // AttributeBuffers set on the Animator using setBlinkAttributes
403  virtual casacore::uInt getMovieLength();
404 
405  // Return the current position in the movie. This is really a bad
406  // thing, but needed in the interim for the viewer.
408 
409  // Reset the Animator. This will set the minimum coordiante to 0, the
410  // maximum to the number of elements registered with the WorldCanvasHolders,
411  // the step to 1.0 and the update mode to MATCH_INDEX
412  virtual void reset();
413 
414  // Add a WorldCanvasHolder to the list controlled by this Animator
415  virtual void addWorldCanvasHolder(WorldCanvasHolder *newHolder);
416 
417  // Remove a WorldCanvasHolder from the list controlled by this Animator
418  virtual void removeWorldCanvasHolder(WorldCanvasHolder& holder);
419 
420  // Refresh event handler - just used to see if resetCoordinates was
421  // set. If so, then we should partially reset the animator.
422  virtual void operator()(const WCRefreshEvent& ev);
423 
424  private:
425 
426  // casacore::List of WorldCanvasHolders
427  std::list<void *> holderList;
428 
429  // casacore::List of the AttributeBuffers
430  std::list<void *> *attBufList;
431 
432  // parameters of movies
435 
436  // Increment for computing currentCoord. Always postive
438 
439  // State variables
440  // Tolerance for coordinate Restriction
442  // Current Z coordiante
444  // the MatchMode
446  // the NextMode
448  // The UpdateMode
450  // and the interval of the timer
452 
453  // The number of the AttributeBuffer to use. Computed by computeNewCoord()
454  // Has to be casacore::Int, not casacore::uInt! (because I sometimes subtract 1!)
456 
457  // In which direction the movie is currently going
459 
460  // Compute, based on the UPDATE_MODE and NEXT_MODE, the Z coordinate of the
461  // new frame to display (ie. the new currentCoord). If the updateMode ==
462  // UPDATE_BLINK, nothing happens. If the updateMode == UPDATE_DIRECT, the
463  // value of currentCoord is incremented or decremented with the absolute
464  // value of movieStep, depending in whether the next_Mode is NEXT_FORWARD,
465  // NEXT_BACKWARD or NEXT_ROCKANDROLL and whether the new value goes outside
466  // the bounds set by minCoord and maxCoord.
467  void computeNextCoord(casacore::Int addOrSubtract);
468 
469  // Helper routine for computeNewCoord(). If addOrSubtract > 0, 1 is added to
470  // number, if addOrSubtract < 0, 1 is subtracted
471  void increment(casacore::Int& number, casacore::Int addOrSubtract);
472 
473  // Helper routine for computeNewCoord(). The inverse of <src>increment(casacore::Int&,
474  // casacore::Int)</src>
475  void decrement(casacore::Int& number, casacore::Int addOrSubtract);
476 
477  // Helper routine for computeNewCoord(). If addOrSubtract > 0, movieStep is added to
478  // number, if addOrSubtract < 0, movieStep is subtracted
479  void increment(casacore::Double& number, casacore::Int addOrSubtract);
480 
481  // Helper routine for computeNewCoord(). The inverse of <src>increment(casacore::Double&,
482  // casacore::Int)</src>
483  void decrement(casacore::Double& number, casacore::Int addOrSubtract);
484 
485 
486  // Write the necessary Attributes to all the WorldCanvasHolders. The content
487  // of one of the registered AttributeBuffer is always written. If the
488  // updateMode == UPDATE_DIRECT the n-th AttributeBuffer is written, where n
489  // is the sequence number of the frame, based on minCoord and movieStep. If
490  // the updateMode == UPDATE_BLINK the Animator just loops through the list
491  // of AttributeBuffers based on numberInList.
492  // If MatchMode == MATCH_INDEX also an Attribute is written with name
493  // "zIndex" and with the value of currentCoord.
494  // If MatchMode == MATCH_COORD also an Attribute is written with name
495  // "zValue" and with the value of currentCoord.
496  void writeRestrictions();
497 
498  // Invoke refresh() on all the WorldCanvasHolders registered with the
499  // Animator
500  void refresh();
501 
502  // Return the number of AttributeBuffers in the casacore::List of AttributeBuffer
504 
505  // refresh event handler
507 
508  };
509 
510 
511 } //# NAMESPACE CASA - END
512 
513 #endif
int Int
Definition: aipstype.h:50
virtual void setNextMode(Animator::NextMode mode)
Set the way the increments are done, ie.
virtual ~Animator()
Destrutor.
void computeNextCoord(casacore::Int addOrSubtract)
Compute, based on the UPDATE_MODE and NEXT_MODE, the Z coordinate of the new frame to display (ie...
Class which stores WorldCanvas refresh event information.
virtual void operator()(const WCRefreshEvent &ev)
original handler interface (still used for WCRefreshEvents)
virtual void removeWorldCanvasHolder(WorldCanvasHolder &holder)
Remove a WorldCanvasHolder from the list controlled by this Animator.
virtual void startMovie()
Stop and start movie.
Animator::NextMode nextMode
the NextMode
Definition: Animator.h:447
Animator()
Constructor.
casacore::Double movieStep
Increment for computing currentCoord.
Definition: Animator.h:437
Do change the Z coordinate before each update.
Definition: Animator.h:331
std::list< void * > holderList
casacore::List of WorldCanvasHolders
Definition: Animator.h:427
virtual void setUpdateMode(Animator::UpdateMode mode)
Set whether an increment should be done before each update (UPDATE_DIRECT or UPDATE_BLINK) ...
casacore::Int movieDirection
In which direction the movie is currently going.
Definition: Animator.h:458
void increment(casacore::Int &number, casacore::Int addOrSubtract)
Helper routine for computeNewCoord().
virtual void gotoCoord(casacore::Double zCoord)
Go to Z coordinate zCoord.
virtual void setStep(casacore::uInt zIncrement)
Set increment in the Z coordinate for the movie.
casacore::Double coordTolerance
State variables Tolerance for coordinate Restriction.
Definition: Animator.h:441
MatchMode
Defines wheter the sequence is defined using the index in the sequence or by the world coordinate of ...
Definition: Animator.h:311
Do not change Z coordinate, but rely on the AttributeBuffers to change what is displayed.
Definition: Animator.h:334
NextMode
Defines the way the Animator calculates the Z coordinate of the next frame in the sequence...
Definition: Animator.h:292
casacore::Double maxCoord
Definition: Animator.h:434
WorldCanvas refresh event handler for Animator class.
Definition: Animator.h:53
casacore::Double updateInterval
and the interval of the timer
Definition: Animator.h:451
virtual casacore::uInt getMovieLength()
Return the length of the movie.
Base class for handling WorldCanvas refresh events.
Definition: WCRefreshEH.h:95
virtual void setMinAndMaxCoord(casacore::Double zMin, casacore::Double zMax)
Set the minimum and maximum Z coordinate for the movie.
std::list< void * > * attBufList
casacore::List of the AttributeBuffers
Definition: Animator.h:430
virtual void setBlinkRestrictions(std::list< void * > *attBuffers)
Set the list of additional Attributes that the Animator places on the WorldCanvasHolders before each ...
void refresh()
Invoke refresh() on all the WorldCanvasHolders registered with the Animator.
AnimatorRefEH(Animator *animator)
virtual void prevCoord()
Go to previous Z coordinate in sequence.
double Double
Definition: aipstype.h:55
Animator::MatchMode matchMode
the MatchMode
Definition: Animator.h:445
virtual void setUpdateInterval(casacore::Double interval)
Set update interval of movie in milliseconds.
casacore::Double currentCoord
Current Z coordiante.
Definition: Animator.h:443
Movie in backward direction.
Definition: Animator.h:300
casacore::Double minCoord
parameters of movies
Definition: Animator.h:433
void writeRestrictions()
Write the necessary Attributes to all the WorldCanvasHolders.
virtual void reset()
Reset the Animator.
virtual void setMatchMode(Animator::MatchMode match)
Set whether &quot;zIndex&quot;, &quot;zValue&quot; or none of the two should be written additionally to the AttributeBuff...
virtual void addWorldCanvasHolder(WorldCanvasHolder *newHolder)
Add a WorldCanvasHolder to the list controlled by this Animator.
UpdateMode
Decides whether the Z coordinate should be changed according to the NextMode before each update or no...
Definition: Animator.h:327
Animation controller for WorldCanvasHolders.
Definition: Animator.h:285
casacore::Int listLen()
Return the number of AttributeBuffers in the casacore::List of AttributeBuffer.
virtual void stopMovie()
casacore::Sequence is defined by writing Attribute &quot;zIndex&quot; with the value of the Z coordinate to Wor...
Definition: Animator.h:316
virtual void setTolerance(casacore::uInt tolerance)
Set the tolerance in the Z coordinate.
virtual casacore::Int getCurrentPosition()
Return the current position in the movie.
Movie in forward direction.
Definition: Animator.h:296
casacore::Sequence is defined by writing Attribute &quot;zValue&quot;with the value of the Z coordinate to Worl...
Definition: Animator.h:320
A holder to interface between DisplayDatas and a WorldCanvas.
virtual ~AnimatorRefEH()
Definition: Animator.h:56
Only the Attributes from the casacore::List of AttributeBuffers are written.
Definition: Animator.h:322
virtual void operator()(const WCRefreshEvent &ev)
Refresh event handler - just used to see if resetCoordinates was set.
void decrement(casacore::Int &number, casacore::Int addOrSubtract)
Helper routine for computeNewCoord().
Animator * itsAnimator
Definition: Animator.h:59
virtual void nextCoord()
Go to next Z coordinate in sequence.
AnimatorRefEH * itsAnimatorRefEH
refresh event handler
Definition: Animator.h:506
Movie goes up and down the sequence.
Definition: Animator.h:305
casacore::Int numberInList
The number of the AttributeBuffer to use.
Definition: Animator.h:455
Animator::UpdateMode updateMode
The UpdateMode.
Definition: Animator.h:449
virtual void clearBlinkRestrictions()
Remove the casacore::List with AttributeBuffers.
unsigned int uInt
Definition: aipstype.h:51