mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
83 lines
2.6 KiB
C++
83 lines
2.6 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkPVRampKeyFrame.cxx
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
#include "vtkPVRampKeyFrame.h"
|
|
|
|
#include "vtkObjectFactory.h"
|
|
#include "vtkPVAnimationCue.h"
|
|
|
|
vtkStandardNewMacro(vtkPVRampKeyFrame);
|
|
//----------------------------------------------------------------------------
|
|
vtkPVRampKeyFrame::vtkPVRampKeyFrame()
|
|
{
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkPVRampKeyFrame::~vtkPVRampKeyFrame()
|
|
{
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// remeber that currenttime is 0 at the KeyTime of this key frame
|
|
// and 1 and the KeyTime of the next key frame. Hence,
|
|
// currenttime belongs to the interval [0,1).
|
|
void vtkPVRampKeyFrame::UpdateValue(double currenttime,
|
|
vtkPVAnimationCue* cue, vtkPVKeyFrame* next)
|
|
{
|
|
if (!next)
|
|
{
|
|
return;
|
|
}
|
|
|
|
cue->BeginUpdateAnimationValues();
|
|
int animated_element = cue->GetAnimatedElement();
|
|
if (animated_element != -1)
|
|
{
|
|
double vmax = next->GetKeyValue();
|
|
double vmin = this->GetKeyValue();
|
|
double value = vmin + currenttime * (vmax - vmin);
|
|
cue->SetAnimationValue(animated_element, value);
|
|
}
|
|
else
|
|
{
|
|
unsigned int i;
|
|
unsigned int start_novalues = this->GetNumberOfKeyValues();
|
|
unsigned int end_novalues = next->GetNumberOfKeyValues();
|
|
unsigned int min = (start_novalues < end_novalues)
|
|
? start_novalues : end_novalues;
|
|
|
|
// interpolate comman indices.
|
|
for (i=0; i < min; i++)
|
|
{
|
|
double vmax = next->GetKeyValue(i);
|
|
double vmin = this->GetKeyValue(i);
|
|
double value = vmin + currenttime * (vmax - vmin);
|
|
cue->SetAnimationValue(i, value);
|
|
}
|
|
|
|
// add any additional indices in start key frame.
|
|
for (i = min; i < start_novalues; i++)
|
|
{
|
|
cue->SetAnimationValue(i, this->GetKeyValue(i));
|
|
}
|
|
}
|
|
cue->EndUpdateAnimationValues();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkPVRampKeyFrame::PrintSelf(ostream& os, vtkIndent indent)
|
|
{
|
|
this->Superclass::PrintSelf(os, indent);
|
|
}
|