Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

167 lines
6.0 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkAnimationCue.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkAnimationCue - a seqin an animation.
// .SECTION Description
// vtkAnimationCue and vtkAnimationScene provide the framework to support
// animations in VTK. vtkAnimationCue represents an entity that changes/
// animates with time, while vtkAnimationScene represents scene or setup
// for the animation, which consists on individual cues or other scenes.
//
// A cue has three states: UNINITIALIZED, ACTIVE and INACTIVE.
// UNINITIALIZED represents an point in time before the start time of the cue.
// The cue is in ACTIVE state at a point in time between start time and end time
// for the cue. While, beyond the end time, it is in INACTIVE state.
// When the cue enters the ACTIVE state, StartAnimationCueEvent is fired. This
// event may be handled to initialize the entity to be animated.
// When the cue leaves the ACTIVE state, EndAnimationCueEvent is fired, which
// can be handled to cleanup after having run the animation.
// For every request to render during the ACTIVE state, AnimationCueTickEvent is
// fired, which must be handled to perform the actual animation.
// .SECTION See Also
// vtkAnimationScene
#ifndef __vtkAnimationCue_h
#define __vtkAnimationCue_h
#include "vtkObject.h"
class VTK_COMMON_EXPORT vtkAnimationCue: public vtkObject
{
public:
vtkTypeRevisionMacro(vtkAnimationCue,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
static vtkAnimationCue* New();
//BTX
// Structure passed on every event invocation.
// Depending upon the cue time mode, these times are either
// normalized [0,1] or relative to the scene that contains the cue.
class AnimationCueInfo
{
public:
double StartTime;
double EndTime;
double AnimationTime;// valid only on AnimationCueTickEvent
double DeltaTime; // valid only on AnimationCueTickEvent
};
//ETX
// Description:
// Get/Set the time mode. In Normalized mode, the start and end
// times of the cue are normalized [0,1] with respect to the start and
// end times of the container scene. In Relative mode the start and end
// time of the cue are specified in offset seconds relative to the
// start time of the container scene.
virtual void SetTimeMode(int mode);
vtkGetMacro(TimeMode, int);
void SetTimeModeToRelative()
{ this->SetTimeMode(TIMEMODE_RELATIVE); }
void SetTimeModeToNormalized()
{ this->SetTimeMode(TIMEMODE_NORMALIZED); }
// Description:
// Get/Set the Start time for this cue.
// When the current time is >= StartTime, the Cue is in
// ACTIVE state. if Current time i < StartTime, the Cue is in
// UNINITIALIZED state. Whenever the cue enters the ACTIVE state from
// an INACTIVE state, it triggers the StartEvent.
// The Start time is in seconds relative to the start of the
// container Scene (when in Relative time mode) or is normalized
// over the span of the container Scene (when in Normalized time mode).
vtkSetMacro(StartTime, double);
vtkGetMacro(StartTime, double);
// Description:
// Get/Set the End time for this cue.
// When the current time is > EndTime, the Cue is in
// INACTIVE state. Whenever the cue leaves an ACTIVE state to enter
// INACTIVE state, the EndEvent is triggered.
// The End time is in seconds relative to the start of the
// container Scene (when in Relative time mode) or is normalized
// over the span of the container Scene (when in Normalized time mode).
vtkSetMacro(EndTime, double);
vtkGetMacro(EndTime, double);
// Description:
// Indicates a tick or point in time in the animation.
// Triggers a Tick event if currenttime >= StartTime and
// currenttime <= EndTime.
// Whenever the state of the cue changes,
// either StartEvent or EndEvent is triggerred depending upon
// whether the cue entered Active state or quit active state respectively.
// The current time is relative to the start of the container Scene
// (when in Relative time mode) or is normalized
// over the span of the container Scene (when in Normalized time mode).
// deltatime is the time since last call to Tick. deltatime also can be in seconds
// relative to the start of the container Scene or normalized depending upon the
// cue's Time mode.
// For the first call to Tick
// after a call to Initialize(), the deltatime is 0;
virtual void Tick(double currenttime, double deltatime);
// Description:
// Called when the playing of the scene begins.
// This will set the Cue to UNINITIALIZED state.
virtual void Initialize();
// Description:
// Called when the scene reaches the end.
// If the cue state is ACTIVE when this method is called, this will
// trigger a EndAnimationCueEvent.
virtual void Finalize();
//BTX
enum TimeCodes
{
TIMEMODE_NORMALIZED=0,
TIMEMODE_RELATIVE=1
};
//ETX
protected:
vtkAnimationCue();
~vtkAnimationCue();
//BTX
enum {
UNINITIALIZED=0,
INACTIVE,
ACTIVE
};
//ETX
double StartTime;
double EndTime;
int TimeMode;
// Description:
// Current state of the Cue.
int CueState;
// Description:
// These are the internal methods that actually trigger they
// corresponding events. Subclasses can override these to
// do extra processing at start/end or on tick.
virtual void StartCueInternal();
virtual void TickInternal(double currenttime, double deltatime);
virtual void EndCueInternal();
private:
vtkAnimationCue(const vtkAnimationCue&); // Not implemented.
void operator=(const vtkAnimationCue&); // Not implemented.
};
#endif