-// File : VISU_TimeAnimation.cxx
-// Created : 10 / 04 / 2003
-// Author : Vitaly SMETANNIKOV
-// Project : SALOME
-// Module : VISU_I
-// Copyright : Open CASCADE
-
+// Copyright (C) 2003 CEA/DEN, EDF R&D
+//
+//
+//
+// File : VISU_TimeAnimation.cxx
+// Author : Vitaly SMETANNIKOV
+// Module : VISU
#include "VISU_TimeAnimation.h"
+#include "VISU_Result_i.hh"
+#include "VISU_Prs3d_i.hh"
+#include "VISU_Mesh_i.hh"
+#include "VISU_ScalarMap_i.hh"
+#include "VISU_IsoSurfaces_i.hh"
+#include "VISU_DeformedShape_i.hh"
+#include "VISU_CutPlanes_i.hh"
+#include "VISU_CutLines_i.hh"
+#include "VISU_Vectors_i.hh"
+#include "VISU_StreamLines_i.hh"
+#include "VISU_ViewManager_i.hh"
#include "VISU_ScalarBarActor.hxx"
+#include "VISU_Actor.h"
+
+#include "SALOME_Event.hxx"
+
+#include "VTKViewer_ViewFrame.h"
+
+#include "QAD_Config.h"
+
+using namespace std;
+
+//QWaitCondition myCondition;
+static int MYDELAY = 1;
//************************************************************************
-VISU_TimeAnimation::VISU_TimeAnimation(SALOMEDS::Study_var theStudy) {
- myStudy = theStudy;
+VISU_TimeAnimation::VISU_TimeAnimation(SALOMEDS::Study_ptr theStudy, VISU::View3D_ptr theView3D) {
+ myStudy = SALOMEDS::Study::_duplicate(theStudy);
myIsActive = false;
myFrame = 0;
mySpeed = 1;
myProportional = false;
myView = 0;
+
+ if(!CORBA::is_nil(theView3D)){
+ VISU::View3D_i* pView = dynamic_cast<VISU::View3D_i*>(GetServant(theView3D).in());
+ QAD_StudyFrame* aStudyFrame = pView->GetStudyFrame();
+ myView = VISU::GetViewFrame(aStudyFrame);
+ }
+
myMaxVal = 0;
myMinVal = 0;
+ myTimeMin = 0;
+ myTimeMax = 0;
+ myLastError = "";
+ myCycling = false;
}
//************************************************************************
VISU_TimeAnimation::~VISU_TimeAnimation() {
- for (int i = 0; i < getNbFields(); i++)
+ for (int i = 0; i < getNbFields(); i++) {
clearData(myFieldsLst[i]);
+ }
}
//************************************************************************
-void VISU_TimeAnimation::addField(SALOMEDS::SObject_var theField) {
+void VISU_TimeAnimation::addField(SALOMEDS::SObject_ptr theField) {
FieldData aNewData;
- aNewData.myField = theField;
- aNewData.myNbTimes = 0;
- aNewData.myPrs = 0;
- aNewData.myActors = 0;
- aNewData.myTiming = 0;
+ aNewData.myField = SALOMEDS::SObject::_duplicate(theField);
+ aNewData.myNbFrames = 0;
aNewData.myPrsType = VISU::TSCALARMAP;
+ VISU::Storable::TRestoringMap aMap = getMapOfValue(aNewData.myField);
+ aNewData.myNbTimes = VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
myFieldsLst.append(aNewData);
+
+ //find Min/Max timestamps
+ if ((myTimeMin == 0) && (myTimeMax == 0)) {
+ SALOMEDS::ChildIterator_var anIter = myStudy->NewChildIterator(theField);
+ SALOMEDS::SObject_var aTimeStamp;
+ anIter->Next(); // First is reference on support
+ myTimeMin = getTimeValue(anIter->Value());
+ for(; anIter->More(); anIter->Next()) {
+ myTimeMax = getTimeValue(anIter->Value());
+ }
+ }
}
//************************************************************************
void VISU_TimeAnimation::clearData(FieldData& theData) {
- if (theData.myTiming) {
- free(theData.myTiming);
- theData.myTiming = 0;
- }
+ theData.myTiming.clear();
vtkRenderer* aRen = myView->getRenderer();
- if (theData.myActors) {
- for (int i = 0; i < theData.myNbTimes; i++) {
- if (theData.myActors[i]->HasScalarBar() && (i==0))
- aRen->RemoveActor2D(theData.myActors[i]->getScalarBar());
- aRen->RemoveActor(theData.myActors[i]);
- theData.myActors[i]->Delete();
+ if (!theData.myActors.empty()) {
+ for (int i = 0, iEnd = theData.myActors.size(); i < iEnd; i++) {
+ if (theData.myActors.at(i) != 0) {
+ theData.myActors.at(i)->RemoveFromRender(aRen);
+ theData.myActors.at(i)->Delete();
+ }
}
- free(theData.myActors);
- theData.myActors = 0;
+ theData.myActors.clear();
}
- if (theData.myPrs) {
- for (int i = 0; i < theData.myNbTimes; i++)
- theData.myPrs[i]->_remove_ref();
- free(theData.myPrs);
- theData.myPrs = 0;
+ if (!theData.myPrs.empty()) {
+ for (int i = 0, iEnd = theData.myPrs.size(); i < iEnd; i++)
+ if (theData.myPrs.at(i) != 0) {
+ theData.myPrs.at(i)->_remove_ref();
+ }
+ theData.myPrs.clear();
}
- theData.myNbTimes = 0;
+ theData.myNbFrames = 0;
+ myView->update();
}
//************************************************************************
-void VISU_TimeAnimation::generatePresentations(int theFieldNum) {
+void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
FieldData& aData = myFieldsLst[theFieldNum];
// Delete previous presentations
VISU::Result_i* pResult = createPresent(aData.myField);
VISU::Storable::TRestoringMap aMap = getMapOfValue(aData.myField);
- aData.myNbTimes = VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
+ aData.myNbFrames = aData.myNbTimes;
+ //VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
- aData.myPrs = (VISU::ScalarMap_i**) malloc(aData.myNbTimes * sizeof(VISU::ScalarMap_i*));
- aData.myTiming = (double*) malloc(aData.myNbTimes * sizeof(double));
+ aData.myPrs.resize(aData.myNbTimes,NULL);
+ aData.myTiming.resize(aData.myNbTimes);
SALOMEDS::ChildIterator_var anIter = myStudy->NewChildIterator(aData.myField);
SALOMEDS::SObject_var aTimeStamp;
anIter->Next(); // First is reference on support
long i = 0;
- double aMin = 0, aMax = 0;
+ double aMin = VTK_LARGE_FLOAT, aMax = -VTK_LARGE_FLOAT;
for(;anIter->More();anIter->Next()) {
if (i == aData.myNbTimes) {
- MESSAGE("Found extra timestamps in field");
+ MESSAGE("There are extra timestamps in field");
return;
}
aTimeStamp = anIter->Value();
if (aTimeStamp->_is_nil()) continue;
- aData.myTiming[i] = getTimeValue(aTimeStamp);
+ aData.myTiming.at(i) = getTimeValue(aTimeStamp);
if (isRangeDefined()) {
- if (aData.myTiming[i] < myMinVal) continue;
- if (aData.myTiming[i] > myMaxVal) break;
+ if (aData.myTiming.at(i) < myMinVal) continue;
+ if (aData.myTiming.at(i) > myMaxVal) break;
}
VISU::Storable::TRestoringMap aTimeMap = getMapOfValue(aTimeStamp);
QString aMeshName = VISU::Storable::FindValue(aTimeMap,"myMeshName");
VISU::Entity anEntity = (VISU::Entity) VISU::Storable::FindValue(aTimeMap,"myEntityId").toInt();
QString aFieldName = VISU::Storable::FindValue(aTimeMap,"myFieldName");
- double aTimeStampId = VISU::Storable::FindValue(aTimeMap,"myTimeStampId").toDouble();
+ int aTimeStampId = VISU::Storable::FindValue(aTimeMap,"myTimeStampId").toInt();
switch (aData.myPrsType) {
case VISU::TSCALARMAP: // ScalarMap
aFieldName.latin1(), aTimeStampId);
//VISU::ScalarMap_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
aFieldName.latin1(), aTimeStampId);
//VISU::IsoSurfaces_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
aFieldName.latin1(), aTimeStampId);
//VISU::CutPlanes_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
aFieldName.latin1(), aTimeStampId);
//VISU::DeformedShape_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
case VISU::TVECTORS: // Vectors
{
VISU::Vectors_i* aPresent = new VISU::Vectors_i(pResult, false);
- aPresent->Create(aMeshName.latin1(), anEntity,
+ aPresent->Create(aMeshName.latin1(), anEntity,
aFieldName.latin1(), aTimeStampId);
//VISU::Vectors_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
aFieldName.latin1(), aTimeStampId);
//VISU::StreamLines_var aTmp = aPresent->_this();
//aPresent->_remove_ref();
- aData.myPrs[i] = aPresent;
+ aData.myPrs.at(i) = aPresent;
}
break;
}
- if (aData.myPrs[i]->GetMin() < aMin) aMin = aData.myPrs[i]->GetMin();
- if (aData.myPrs[i]->GetMax() > aMax) aMax = aData.myPrs[i]->GetMax();
+ if (aData.myPrs.at(i)->GetMin() < aMin) aMin = aData.myPrs.at(i)->GetMin();
+ if (aData.myPrs.at(i)->GetMax() > aMax) aMax = aData.myPrs.at(i)->GetMax();
i++;
}
- aData.myNbTimes = i;
- for (i = 0; i < aData.myNbTimes; i++)
- aData.myPrs[i]->SetRange(aMin, aMax);
+ aData.myNbFrames = i;
+ QString aFixRange = QAD_CONFIG->getSetting("Visu:SBImposeRange");
+ if (aFixRange.compare("true") != 0) {
+ for (i = 0; i < aData.myNbFrames; i++)
+ aData.myPrs.at(i)->SetRange(aMin, aMax);
+ if(aData.myPrsType == VISU::TISOSURFACE)
+ for (i = 0; i < aData.myNbFrames; i++)
+ if(VISU::IsoSurfaces_i* aPrs = dynamic_cast<VISU::IsoSurfaces_i*>(aData.myPrs.at(i)))
+ aPrs->SetSubRange(aMin, aMax);
+ }
}
//************************************************************************
-bool VISU_TimeAnimation::generateFrames() {
+CORBA::Boolean VISU_TimeAnimation::generateFrames(){
if (!myView) {
MESSAGE("Viewer is nod defined for animation");
return false;
}
+
+ myLastError = QString("Frame(s) for ");
+ bool aNoError = true;
clearView();
vtkRenderer* aRen = myView->getRenderer();
+
for (int i = 0; i < getNbFields(); i++) {
FieldData& aData = myFieldsLst[i];
- aData.myActors = (VISU_Actor**) malloc(aData.myNbTimes * sizeof(VISU_Actor*));
- for (long j = 0; j < aData.myNbTimes; j++) {
- VISU_Actor* aActor = aData.myPrs[j]->CreateActor();
- if (aActor == NULL) {
- for (int k = 0; k < j; k++) {
- aData.myActors[k]->Delete();
- }
- free(aData.myActors);
- aData.myActors = 0;
- return false;
+ aData.myActors.resize(aData.myNbFrames,NULL);
+ for (long j = 0; j < aData.myNbFrames; j++) {
+ VISU_Actor* aActor = NULL;
+ try{
+ aActor = aData.myPrs.at(j)->CreateActor();
+ myView->AddActor(aActor);
+ if(j == 0)
+ aActor->VisibilityOn();
+ else
+ aActor->VisibilityOff();
+ }catch(...){ //catch(std::runtime_error& exc){
+ aNoError = false;
+ myLastError += QString("%1 ").arg(aData.myTiming.at(j));
}
- aRen->AddActor(aActor);
- if (j == 0) {
- aActor->VisibilityOn();
- if (aActor->HasScalarBar()) {
- aRen->AddActor2D(aActor->getScalarBar());
- }
- } else
- aActor->VisibilityOff();
- aData.myActors[j] = aActor;
+ aData.myActors.at(j) = aActor;
}
}
myFrame = 0;
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ myLastError += QString(" timestamp(s) cannot be created.");
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
myView->Repaint();
- return true;
+ return aNoError;
}
//************************************************************************
vtkRenderer* aRen = myView->getRenderer();
for (int i = 0; i < getNbFields(); i++) {
FieldData& aData = myFieldsLst[i];
- if (aData.myActors) {
- for (int i = 0; i < aData.myNbTimes; i++) {
- if (aData.myActors[i]->HasScalarBar() && (i==0))
- aRen->RemoveActor2D(aData.myActors[i]->getScalarBar());
- aRen->RemoveActor(aData.myActors[i]);
- aData.myActors[i]->Delete();
- }
- free(aData.myActors);
- aData.myActors = 0;
+ if (!aData.myActors.empty()) {
+ for (int i = 0, iEnd = aData.myActors.size(); i < iEnd; i++) {
+ if (aData.myActors.at(i) != 0) {
+ aData.myActors.at(i)->RemoveFromRender(aRen);
+ aData.myActors.at(i)->Delete();
+ }
+ }
+ aData.myActors.clear();
}
}
+ myView->getRW()->getRenderWindow()->Render();
+ //myView->update();
}
//************************************************************************
//************************************************************************
void VISU_TimeAnimation::nextFrame() {
stopAnimation();
- if (myFrame < (myFieldsLst[0].myNbTimes-1)) {
+ if (myFrame < (myFieldsLst[0].myNbFrames-1)) {
int i;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOff();
myFrame++;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOn();
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
myView->Repaint();
}
}
if (myFrame > 0) {
int i;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOff();
myFrame--;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOn();
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
myView->Repaint();
}
}
stopAnimation();
int i;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+ if(!myFieldsLst[i].myActors.empty())
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOff();
myFrame = 0;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOn();
-
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
- myView->Repaint();
+ if(!myFieldsLst[i].myActors.empty())
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOn();
+ if(!myFieldsLst[0].myTiming.empty()){
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
+ myView->Repaint();
+ }
}
//************************************************************************
stopAnimation();
int i;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOff();
- myFrame = myFieldsLst[0].myNbTimes-1;
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOff();
+ myFrame = myFieldsLst[0].myNbFrames-1;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOn();
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
myView->Repaint();
}
//************************************************************************
-void VISU_TimeAnimation::gotoFrame(long theFrame) {
+// For Batchmode using
+void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
if ((theFrame < 0) || (theFrame > (getNbFrames()-1)))
return;
stopAnimation();
+ qApp->lock();
+ qApp->syncX();
int i;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOff();
myFrame = theFrame;
for (i = 0; i < getNbFields(); i++)
- myFieldsLst[i].myActors[myFrame]->VisibilityOn();
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ if (myFieldsLst[i].myActors.at(myFrame) != 0)
+ myFieldsLst[i].myActors.at(myFrame)->VisibilityOn();
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
myView->Repaint();
+ qApp->flushX();
+ qApp->processEvents(3);
+ qApp->unlock();
}
//************************************************************************
-VISU::ScalarMap_i* VISU_TimeAnimation::getPresentation(int theField, long theFrame) {
+VISU::ScalarMap_ptr VISU_TimeAnimation::getPresentation(CORBA::Long theField, CORBA::Long theFrame) {
if ((theField > getNbFields()) || (theField < 0))
- return NULL;
- if ((theFrame < 0) || (theFrame > (myFieldsLst[theField].myNbTimes - 1)))
- return NULL;
- return myFieldsLst[theField].myPrs[theFrame];
+ return VISU::ScalarMap::_nil();
+ if ((theFrame < 0) || (theFrame > (myFieldsLst[theField].myNbFrames - 1)))
+ return VISU::ScalarMap::_nil();
+ return myFieldsLst[theField].myPrs.at(theFrame)->_this();
}
//************************************************************************
-long VISU_TimeAnimation::getNbFrames() {
- return (getNbFields() > 0)? myFieldsLst[0].myNbTimes : 0;
+CORBA::Long VISU_TimeAnimation::getNbFrames() {
+ return (getNbFields() > 0)? myFieldsLst[0].myNbFrames : 0;
}
MESSAGE("Viewer is nod defined for animation");
return;
}
-
double k=1;
double aOneVal;
bool isDumping = !myDumpPath.isEmpty();
- aOneVal = (myFieldsLst[0].myNbTimes > 2) ?
- myFieldsLst[0].myTiming[1] - myFieldsLst[0].myTiming[0] : 1;
-
- while (true) {
- qApp->lock();
- emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+ aOneVal = (myFieldsLst[0].myNbFrames > 2) ?
+ myFieldsLst[0].myTiming.at(1) - myFieldsLst[0].myTiming.at(0) : 1;
+ qApp->lock();
+ while (myIsActive) {
+ emit frameChanged(myFrame, myFieldsLst[0].myTiming.at(myFrame));
for (int i = 0; i < getNbFields(); i++) {
FieldData& aData = myFieldsLst[i];
- if (myFrame > 0) aData.myActors[myFrame-1]->VisibilityOff();
- else aData.myActors[aData.myNbTimes-1]->VisibilityOff();
-
- aData.myActors[myFrame]->VisibilityOn();
+ if (myFrame > 0) {
+ if (aData.myActors.at(myFrame-1) != 0)
+ aData.myActors.at(myFrame-1)->VisibilityOff();
+ } else {
+ if (aData.myActors.at(aData.myNbFrames-1) != 0)
+ aData.myActors.at(aData.myNbFrames-1)->VisibilityOff();
+ }
+ if (aData.myActors.at(myFrame) != 0) {
+ aData.myActors.at(myFrame)->VisibilityOn();
+ }
}
- myView->Repaint();
+ myView->Repaint(false);
if (isDumping) {
QPixmap px = QPixmap::grabWindow(myView->getViewWidget()->winId());
QString aFile(myDumpPath);
- QString aName = QString("%1").arg(myFieldsLst[0].myTiming[myFrame]);
+ QString aName = QString("%1").arg(myFieldsLst[0].myTiming.at(myFrame));
int aPos = -1;
while ((aPos = aName.find(".")) > -1 )
aName.replace(aPos, 1, "_");
aFile += aName;
aFile += ".jpeg";
- //cout<<"### save:"<<aFile<<endl;
px.save(aFile, "JPEG");
}
- qApp->unlock();
-
if (!isDumping) {
if (myProportional) {
switch (myFrame) {
k=1;
break;
case 1:
- if (myFieldsLst[0].myNbTimes > 2)
- k = (myFieldsLst[0].myTiming[myFrame+1] - myFieldsLst[0].myTiming[myFrame])/aOneVal;
+ if (myFieldsLst[0].myNbFrames > 2)
+ k = (myFieldsLst[0].myTiming.at(myFrame+1) - myFieldsLst[0].myTiming.at(myFrame))/aOneVal;
else
k = 1;
break;
default:
- k = (myFrame < (myFieldsLst[0].myNbTimes-1))?
- (myFieldsLst[0].myTiming[myFrame+1] - myFieldsLst[0].myTiming[myFrame])/aOneVal : 1;
+ k = (myFrame < (myFieldsLst[0].myNbFrames-1))?
+ (myFieldsLst[0].myTiming.at(myFrame+1) - myFieldsLst[0].myTiming.at(myFrame))/aOneVal : 1;
}
} else
k = 1;
-
- msleep((int) 1000.*k/mySpeed);
+ qApp->unlock();
+ msleep((int)(1000.*k/mySpeed));
+ qApp->lock();
+ } else {
+ qApp->unlock();
+ msleep(100);
+ qApp->lock();
}
- if (!myIsActive) QThread::exit();
-
+ if (!myIsActive) break;
+
myFrame++;
- if (myFrame == myFieldsLst[0].myNbTimes)
- myFrame = 0;
+ if (myFrame == myFieldsLst[0].myNbFrames) {
+ if (!myCycling) {
+ myIsActive = false;
+ myFrame--;
+ break;
+ } else
+ myFrame = 0;
+ }
}
+ emit stopped();
+ qApp->unlock();
+ QThread::exit();
}
//************************************************************************
aSObj = aSObj->GetFather();
CORBA::Object_var anObject = VISU::SObjectToObject(aSObj);
if(CORBA::is_nil(anObject)) return NULL;
- return dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject));
+ return dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject).in());
}
}
//************************************************************************
-void VISU_TimeAnimation::setSpeed(int theSpeed) {
+void VISU_TimeAnimation::setSpeed(CORBA::Long theSpeed) {
mySpeed = (theSpeed<1)? 1 : theSpeed;
}
+
+
+//========================================================================
+VISU_TimeAnimation_i::VISU_TimeAnimation_i(SALOMEDS::Study_ptr theStudy, VISU::View3D_ptr theView3D){
+ myAnim = new VISU_TimeAnimation(theStudy,theView3D);
+}
+
+
+VISU_TimeAnimation_i::~VISU_TimeAnimation_i(){
+ delete myAnim;
+}
+
+
+void VISU_TimeAnimation_i::addField(SALOMEDS::SObject_ptr theField){
+ myAnim->addField(theField);
+}
+
+
+CORBA::Boolean VISU_TimeAnimation_i::generateFrames(){
+ return ProcessEvent(new TMemFunEvent<VISU_TimeAnimation,bool>(myAnim,&VISU_TimeAnimation::generateFrames));
+}
+
+
+void VISU_TimeAnimation_i::generatePresentations(CORBA::Long theFieldNum){
+ myAnim->generatePresentations(theFieldNum);
+}
+
+
+void VISU_TimeAnimation_i::clearView(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::clearView));
+}
+
+
+void VISU_TimeAnimation_i::stopAnimation(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::stopAnimation));
+}
+
+
+void VISU_TimeAnimation_i::startAnimation(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::startAnimation));
+}
+
+
+void VISU_TimeAnimation_i::nextFrame(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::nextFrame));
+}
+
+
+void VISU_TimeAnimation_i::prevFrame(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::prevFrame));
+}
+
+
+void VISU_TimeAnimation_i::firstFrame(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::firstFrame));
+}
+
+
+void VISU_TimeAnimation_i::lastFrame(){
+ ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(myAnim,&VISU_TimeAnimation::lastFrame));
+}
+
+
+void VISU_TimeAnimation_i::gotoFrame(CORBA::Long theFrame){
+ ProcessVoidEvent(new TVoidMemFun1ArgEvent<VISU_TimeAnimation,CORBA::Long>(myAnim,&VISU_TimeAnimation::gotoFrame,theFrame));
+}
+
+
+CORBA::Long VISU_TimeAnimation_i::getNbFields(){
+ return myAnim->getNbFields();
+}
+
+
+CORBA::Long VISU_TimeAnimation_i::getNbFrames(){
+ return myAnim->getNbFrames();
+}
+
+
+CORBA::Boolean VISU_TimeAnimation_i::isRunning(){
+ return myAnim->isRunning();
+}
+
+
+CORBA::Long VISU_TimeAnimation_i::getCurrentFrame(){
+ return myAnim->getCurrentFrame();
+}
+
+
+VISU::ScalarMap_ptr VISU_TimeAnimation_i::getPresentation(CORBA::Long theField, CORBA::Long theFrame){
+ return myAnim->getPresentation(theField,theFrame);
+}
+
+
+void VISU_TimeAnimation_i::setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType){
+ myAnim->setPresentationType(theFieldNum,theType);
+}
+
+
+VISU::VISUType VISU_TimeAnimation_i::getPresentationType(CORBA::Long theFieldNum){
+ return myAnim->getPresentationType(theFieldNum);
+}
+
+
+void VISU_TimeAnimation_i::setSpeed(CORBA::Long theSpeed){
+ myAnim->setSpeed(theSpeed);
+}
+
+
+CORBA::Long VISU_TimeAnimation_i::getSpeed(){
+ return myAnim->getSpeed();
+}
+
+
+CORBA::Boolean VISU_TimeAnimation_i::isProportional(){
+ return myAnim->isProportional();
+}
+
+
+void VISU_TimeAnimation_i::setAnimationRange(CORBA::Double theMin, CORBA::Double theMax){
+ myAnim->setAnimationRange(theMin,theMax);
+}
+
+
+CORBA::Double VISU_TimeAnimation_i::getMinRange(){
+ return myAnim->getMinRange();
+}
+
+
+CORBA::Double VISU_TimeAnimation_i::getMaxRange(){
+ return myAnim->getMaxRange();
+}
+
+
+CORBA::Boolean VISU_TimeAnimation_i::isRangeDefined(){
+ return myAnim->isRangeDefined();
+}
+
+
+void VISU_TimeAnimation_i::dumpTo(const char* thePath){
+ myAnim->dumpTo(thePath);
+}
+
+
+CORBA::Boolean VISU_TimeAnimation_i::isCycling(){
+ return myAnim->isCycling();
+}
+
+
+CORBA::Double VISU_TimeAnimation_i::getMinTime(){
+ return myAnim->getMinTime();
+}
+
+
+CORBA::Double VISU_TimeAnimation_i::getMaxTime(){
+ return myAnim->getMaxTime();
+}
+
+
+void VISU_TimeAnimation_i::setProportional(CORBA::Boolean theProp){
+ myAnim->setProportional(theProp);
+}
+
+
+void VISU_TimeAnimation_i::setCycling(CORBA::Boolean theCycle){
+ myAnim->setCycling(theCycle);
+}
+
+