X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FVISU_I%2FVISU_TimeAnimation.h;h=d2da49a4c4bcae61918a3aada2dd7ac6534c6c60;hb=e967b0415406f4f86ca2c9489abc8554b4c15dae;hp=34af55dc94683209d6a9f84cd87340ba8c63e008;hpb=e0a7fdcd537cce743ae448ed0ce842a8bfeca3a6;p=modules%2Fvisu.git diff --git a/src/VISU_I/VISU_TimeAnimation.h b/src/VISU_I/VISU_TimeAnimation.h index 34af55dc..d2da49a4 100644 --- a/src/VISU_I/VISU_TimeAnimation.h +++ b/src/VISU_I/VISU_TimeAnimation.h @@ -1,6 +1,21 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : VISU_TimeAnimation.h // Author : Vitaly SMETANNIKOV @@ -9,51 +24,65 @@ #ifndef VISU_TIMEANIMATION_H #define VISU_TIMEANIMATION_H +#include "VISUConfig.hh" + +#include + #include #include #include -#include "VISU_Actor.h" -#include "VISU_PrsObject_i.hh" -#include "VISU_ViewManager_i.hh" -#include "VTKViewer_ViewFrame.h" +class SVTK_ViewWindow; +class VISU_Actor; + +namespace VISU +{ + class Result_i; + class ColoredPrs3d_i; +} struct FieldData { - VISU::VISUType myPrsType; - SALOMEDS::SObject_var myField; // field label - long myNbTimes; // number of Timestamps - long myNbFrames; // number of created Frames - VISU::ScalarMap_i** myPrs; // Presentations - VISU_Actor** myActors; // Actors - double* myTiming; // time values + VISU::VISUType myPrsType; + _PTR(SObject) myField; // field label + long myNbTimes; // number of Timestamps + long myNbFrames; // number of created Frames + std::vector myPrs; // Presentations + std::vector myActors; // Actors + std::vector myTiming; // time values + CORBA::Float myOffset[3]; }; -class VISU_TimeAnimation: public QObject, public QThread, - public virtual POA_VISU::Animation, - public virtual VISU::Base_i +class VISU_TimeAnimation: public QObject, public QThread { Q_OBJECT; public: - static VISU::Result_i* createPresent(SALOMEDS::SObject_var theField); - static VISU::Storable::TRestoringMap getMapOfValue(SALOMEDS::SObject_var theSObject); - static double getTimeValue(SALOMEDS::SObject_var theTimestamp); - - VISU_TimeAnimation(SALOMEDS::Study_var theStudy, VISU::View3D_ptr theView3D = VISU::View3D::_nil()); + //static VISU::Result_i* createPresent (SALOMEDS::SObject_var theField); + //static VISU::Storable::TRestoringMap getMapOfValue (SALOMEDS::SObject_var theSObject); + //static double getTimeValue (SALOMEDS::SObject_var theTimestamp); + + static VISU::Result_i* createPresent (_PTR(SObject) theField); + static VISU::Storable::TRestoringMap getMapOfValue (_PTR(SObject) theSObject); + static double getTimeValue (_PTR(SObject) theTimestamp); + + VISU_TimeAnimation(_PTR(Study) theStudy, + VISU::View3D_ptr theView3D = VISU::View3D::_nil()); ~VISU_TimeAnimation(); - + virtual VISU::VISUType GetType() { return VISU::TNONE;}; - - void addField(SALOMEDS::SObject_ptr theField); - FieldData& getFieldData(int theNum) { return myFieldsLst[theNum]; } + + void addField (_PTR(SObject) theField); + void addField (SALOMEDS::SObject_ptr theField); + FieldData& getFieldData (int theNum) { return myFieldsLst[theNum]; } CORBA::Boolean generateFrames(); void generatePresentations(CORBA::Long theFieldNum); - void setViewer(VTKViewer_ViewFrame* theView) { myView = theView; } - VTKViewer_ViewFrame* getViewer() { return myView; } + void setViewer(SVTK_ViewWindow* theView) { myView = theView; } + SVTK_ViewWindow* getViewer() { return myView; } void clearView(); void clearData(FieldData& theData); + void clearFieldData() { myFieldsLst.clear();}; void stopAnimation(); void startAnimation(); @@ -68,10 +97,12 @@ class VISU_TimeAnimation: public QObject, public QThread, CORBA::Boolean isRunning() { return myIsActive; } CORBA::Long getCurrentFrame() { return myFrame; } - VISU::ScalarMap_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame); + VISU::ColoredPrs3d_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame); - void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType) { myFieldsLst[theFieldNum].myPrsType = theType; } - VISU::VISUType getPresentationType(CORBA::Long theFieldNum) { return myFieldsLst[theFieldNum].myPrsType; } + void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType) + { myFieldsLst[theFieldNum].myPrsType = theType; } + VISU::VISUType getPresentationType(CORBA::Long theFieldNum) + { return myFieldsLst[theFieldNum].myPrsType; } void setSpeed(CORBA::Long theSpeed); CORBA::Long getSpeed() { return mySpeed; } @@ -79,13 +110,15 @@ class VISU_TimeAnimation: public QObject, public QThread, CORBA::Boolean isProportional() { return myProportional; } void setAnimationRange(CORBA::Double theMin, CORBA::Double theMax) - { myMaxVal = theMax; myMinVal = theMin; } + { myTimeMinVal = theMin; myTimeMaxVal = theMax; } - CORBA::Double getMinRange() { return myMinVal; } - CORBA::Double getMaxRange() { return myMaxVal; } - CORBA::Boolean isRangeDefined() { return !((myMaxVal==0) && (myMinVal == myMaxVal)); } + CORBA::Double getMinRange() { return myTimeMinVal; } + CORBA::Double getMaxRange() { return myTimeMaxVal; } + CORBA::Boolean isRangeDefined() { return !((myTimeMaxVal == 0) && (myTimeMinVal == myTimeMaxVal)); } void dumpTo(const char* thePath) { myDumpPath = thePath; } + std::string setDumpFormat(const char* theFormat); + bool checkAVIMaker() const; QString getLastErrorMsg() { return myLastError; } @@ -97,6 +130,12 @@ class VISU_TimeAnimation: public QObject, public QThread, void setProportional(CORBA::Boolean theProp) { myProportional = theProp; } void setCycling(CORBA::Boolean theCycle) { myCycling = theCycle; } + SALOMEDS::SObject_ptr publishInStudy(); + void restoreFromStudy(SALOMEDS::SObject_ptr theField); + void restoreFromStudy(_PTR(SObject) theField); + void saveAnimation(); + bool isSavedInStudy() const { return !myAnimEntry.isEmpty(); } + public slots: void setProportionalSlot(bool theProp) { myProportional = theProp; } void setCyclingSlot(bool theCycle) { myCycling = theCycle; } @@ -107,6 +146,10 @@ class VISU_TimeAnimation: public QObject, public QThread, protected: void run(); + QString GenerateName(); + + private slots: + void onViewDeleted(); private: QString myLastError; @@ -117,12 +160,85 @@ class VISU_TimeAnimation: public QObject, public QThread, int mySpeed; bool myProportional; bool myCycling; - SALOMEDS::Study_var myStudy; + _PTR(Study) myStudy; - double myMaxVal, myMinVal; - double myTimeMin, myTimeMax; + double myTimeMinVal, myTimeMaxVal; //!< Range of time stams, set by user + double myTimeMin , myTimeMax ; //!< Range of time stams, available for animation QString myDumpPath; - VTKViewer_ViewFrame* myView; + QString myDumpFormat; + QString myAVIMaker; + long myFileIndex; + SVTK_ViewWindow* myView; + + QString myAnimEntry; + + static int myNBAnimations; +}; + + +class VISU_TimeAnimation_i: public virtual POA_VISU::Animation, + public virtual VISU::Base_i +{ + VISU_TimeAnimation* myAnim; +public: + VISU_TimeAnimation_i(SALOMEDS::Study_ptr theStudy, + VISU::View3D_ptr theView3D = VISU::View3D::_nil()); + ~VISU_TimeAnimation_i(); + + virtual VISU::VISUType GetType() { return VISU::TANIMATION; } + //virtual VISU::VISUType GetType() { return VISU::TNONE; } + + virtual void addField(SALOMEDS::SObject_ptr theField); + + virtual CORBA::Boolean generateFrames(); + virtual void generatePresentations(CORBA::Long theFieldNum); + + virtual void clearView(); + + virtual void stopAnimation(); + virtual void startAnimation(); + virtual void nextFrame(); + virtual void prevFrame(); + virtual void firstFrame(); + virtual void lastFrame(); + virtual void gotoFrame(CORBA::Long theFrame); + + virtual CORBA::Long getNbFields(); + virtual CORBA::Long getNbFrames(); + virtual CORBA::Boolean isRunning(); + virtual CORBA::Long getCurrentFrame(); + + virtual VISU::ColoredPrs3d_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame); + + virtual void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType); + virtual VISU::VISUType getPresentationType(CORBA::Long theFieldNum); + + virtual void setSpeed(CORBA::Long theSpeed); + virtual CORBA::Long getSpeed(); + + virtual CORBA::Boolean isProportional(); + + virtual void setAnimationRange(CORBA::Double theMin, CORBA::Double theMax); + + virtual CORBA::Double getMinRange(); + virtual CORBA::Double getMaxRange(); + virtual CORBA::Boolean isRangeDefined(); + + virtual void dumpTo(const char* thePath); + virtual char* setDumpFormat(const char* theFormat); + + virtual CORBA::Boolean isCycling(); + + virtual CORBA::Double getMinTime(); + virtual CORBA::Double getMaxTime(); + + virtual void setProportional(CORBA::Boolean theProp); + virtual void setCycling(CORBA::Boolean theCycle); + + virtual SALOMEDS::SObject_ptr publishInStudy(); + virtual void restoreFromStudy(SALOMEDS::SObject_ptr theField); + virtual CORBA::Boolean isSavedInStudy(); + virtual void saveAnimation(); }; #endif //VISU_TIMEANIMATION_H