mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
104 lines
3.2 KiB
C++
104 lines
3.2 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkPVCompositeKeyFrame.h
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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 vtkPVCompositeKeyFrame - composite keyframe.
|
|
// .SECTION Description
|
|
// There are many different types of keyframes such as
|
|
// vtkPVSinusoidKeyFrame, vtkPVRampKeyFrame etc.
|
|
// This is keyframe that has all different types of keyframes
|
|
// as internal objects and provides API to choose one of them as the
|
|
// active type. This is helpful in GUIs that allow for switching the
|
|
// type of keyframe on the fly without much effort from the GUI.
|
|
|
|
#ifndef vtkPVCompositeKeyFrame_h
|
|
#define vtkPVCompositeKeyFrame_h
|
|
|
|
#include "vtkPVKeyFrame.h"
|
|
|
|
class vtkPVBooleanKeyFrame;
|
|
class vtkPVSinusoidKeyFrame;
|
|
class vtkPVExponentialKeyFrame;
|
|
class vtkPVRampKeyFrame;
|
|
|
|
class VTKPVANIMATION_EXPORT vtkPVCompositeKeyFrame : public vtkPVKeyFrame
|
|
{
|
|
public:
|
|
static vtkPVCompositeKeyFrame* New();
|
|
vtkTypeMacro(vtkPVCompositeKeyFrame, vtkPVKeyFrame);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
//BTX
|
|
enum
|
|
{
|
|
NONE =0,
|
|
BOOLEAN=1,
|
|
RAMP=2,
|
|
EXPONENTIAL=3,
|
|
SINUSOID=4
|
|
};
|
|
//ETX
|
|
|
|
// Description:
|
|
// Overridden to pass on to the internal keyframe proxies.
|
|
virtual void RemoveAllKeyValues();
|
|
virtual void SetKeyTime(double time);
|
|
virtual void SetKeyValue(double val)
|
|
{ this->Superclass::SetKeyValue(val); }
|
|
virtual void SetKeyValue(unsigned int index, double val);
|
|
virtual void SetNumberOfKeyValues(unsigned int num);
|
|
|
|
// Description:
|
|
// Passed on to the ExponentialKeyFrame.
|
|
void SetBase(double val);
|
|
void SetStartPower(double val);
|
|
void SetEndPower(double val);
|
|
|
|
// Description:
|
|
// Passed on to the SinusoidKeyFrame.
|
|
void SetPhase(double val);
|
|
void SetFrequency(double val);
|
|
void SetOffset(double val);
|
|
|
|
// Description:
|
|
// Get/Set the type of keyframe to be used as the active type.
|
|
// Default is RAMP.
|
|
vtkSetClampMacro(Type, int, NONE, SINUSOID);
|
|
vtkGetMacro(Type, int);
|
|
const char* GetTypeAsString() { return this->GetTypeAsString(this->Type); }
|
|
static const char* GetTypeAsString(int);
|
|
static int GetTypeFromString(const char* string);
|
|
|
|
// Description:
|
|
// This method will do the actual interpolation.
|
|
// currenttime is normalized to the time range between
|
|
// this key frame and the next key frame.
|
|
virtual void UpdateValue( double currenttime,
|
|
vtkPVAnimationCue* cue, vtkPVKeyFrame* next);
|
|
|
|
protected:
|
|
vtkPVCompositeKeyFrame();
|
|
~vtkPVCompositeKeyFrame();
|
|
|
|
int Type;
|
|
|
|
vtkPVBooleanKeyFrame* BooleanKeyFrame;
|
|
vtkPVRampKeyFrame* RampKeyFrame;
|
|
vtkPVExponentialKeyFrame* ExponentialKeyFrame;
|
|
vtkPVSinusoidKeyFrame* SinusoidKeyFrame;
|
|
private:
|
|
vtkPVCompositeKeyFrame(const vtkPVCompositeKeyFrame&); // Not implemented.
|
|
void operator=(const vtkPVCompositeKeyFrame&); // Not implemented.
|
|
};
|
|
|
|
#endif
|