From 4b2ca1722150fa6f0fece8e7791350a0648ffa20 Mon Sep 17 00:00:00 2001 From: ouv Date: Mon, 5 Apr 2010 11:55:39 +0000 Subject: [PATCH] 0020713: [CEA 396] VISU frame rate --- doc/salome/gui/VISU/images/animation.png | Bin 29414 -> 33722 bytes doc/salome/gui/VISU/input/animating.doc | 5 +++++ idl/VISU_Gen.idl | 10 ++++++++++ resources/SalomeApp.xml | 2 ++ src/VISUGUI/VISU_msg_en.ts | 20 +++++++++++++++++++ src/VISUGUI/VisuGUI.cxx | 22 ++++++++++++++++++++- src/VISUGUI/VisuGUI_TimeAnimation.cxx | 22 +++++++++++++++++++++ src/VISUGUI/VisuGUI_TimeAnimation.h | 3 +++ src/VISU_I/VISU_TimeAnimation.cxx | 24 ++++++++++++++++++++++- src/VISU_I/VISU_TimeAnimation.h | 15 ++++++++++++++ 10 files changed, 121 insertions(+), 2 deletions(-) diff --git a/doc/salome/gui/VISU/images/animation.png b/doc/salome/gui/VISU/images/animation.png index 24518926f9da71a47c9022928aa6abb32395d1f3..95965a24d8cac4f2206d1798aa6599bf11186f83 100644 GIT binary patch literal 33722 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
+Time stamp frequency spin box: this option is available if +Save animation to AVI file mode is turned on. It provides a +possibility to capture only timestamps with indices divisable by the +specified frequency, that allows to generate less voluminous films. +

Clean memory at each frame - this option allows to optimize the performance of the operation. diff --git a/idl/VISU_Gen.idl b/idl/VISU_Gen.idl index 544dad9b..7ed8c91a 100644 --- a/idl/VISU_Gen.idl +++ b/idl/VISU_Gen.idl @@ -2008,6 +2008,16 @@ module VISU { */ string setDumpFormat(in string theFormat); + /*! Set frequency of timestamps used to generate AVI file. + * \param theFrequency The frequency of timestamps to use. + */ + void setTimeStampFrequency(in long theFrequency); + + /*! Get frequency of timestamps used to generate AVI file. + * \return The frequency of timestamps to use. + */ + long getTimeStampFrequency(); + /*! Returns True, if the playback of the animation is cycling. */ boolean isCycling(); diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml index 12a3641d..4eb9f200 100644 --- a/resources/SalomeApp.xml +++ b/resources/SalomeApp.xml @@ -122,6 +122,8 @@ + + diff --git a/src/VISUGUI/VISU_msg_en.ts b/src/VISUGUI/VISU_msg_en.ts index 3fcd3a9b..84bdd1e2 100644 --- a/src/VISUGUI/VISU_msg_en.ts +++ b/src/VISUGUI/VISU_msg_en.ts @@ -165,6 +165,18 @@ number of time stamps or number of components is not the same! VISU_DISP_ONLY Display only on creation + + VISU_DUMP_MODE + Dump mode + + + VISU_DUMP_PICTURES + Save pictures to directory + + + VISU_DUMP_VIDEO + Save animation to AVI file + VISU_EDGE_COLOR Edge Color @@ -317,6 +329,10 @@ number of time stamps or number of components is not the same! VISU_NB_STEPS Number of steps + + VISU_NO_DUMP + No dump + VISU_ORIENTATION Orientation @@ -405,6 +421,10 @@ number of time stamps or number of components is not the same! VISU_SWEEPING_PREF Sweeping preferences + + VISU_TIME_STAMP_FREQUENCY + Time stamp frequency (for AVI generation) + VISU_TIME_STEP Time step(second) diff --git a/src/VISUGUI/VisuGUI.cxx b/src/VISUGUI/VisuGUI.cxx index 6229236e..b36302cd 100644 --- a/src/VISUGUI/VisuGUI.cxx +++ b/src/VISUGUI/VisuGUI.cxx @@ -4028,7 +4028,7 @@ void VisuGUI::createPreferences() // group: "Animation preferences" { int animationGroup = addPreference( tr( "VISU_ANIMATION_PREFERENCES" ), animationTab ); - setPreferenceProperty( animationGroup, "columns", 3 ); + setPreferenceProperty( animationGroup, "columns", 1 ); int speed = addPreference( tr( "Speed" ), animationGroup, LightApp_Preferences::IntSpin, "VISU", "speed" ); @@ -4041,6 +4041,26 @@ void VisuGUI::createPreferences() setPreferenceProperty( speed, "min", 1 ); setPreferenceProperty( speed, "max", 99 ); + + int dump_mode = addPreference( tr( "VISU_DUMP_MODE" ), animationGroup, + LightApp_Preferences::Selector, "VISU", "dump_mode" ); + + modes.clear(); + modes.append( tr( "VISU_NO_DUMP" ) ); + modes.append( tr( "VISU_DUMP_PICTURES" ) ); + modes.append( tr( "VISU_DUMP_VIDEO" ) ); + setPreferenceProperty( dump_mode, "strings", modes ); + + indices.clear(); + indices.append( 0 ); + indices.append( 1 ); + indices.append( 2 ); + setPreferenceProperty( dump_mode, "indexes", indices ); + + int time_stamp_frequency = addPreference( tr( "VISU_TIME_STAMP_FREQUENCY" ), animationGroup, + LightApp_Preferences::IntSpin, "VISU", "time_stamp_frequency" ); + setPreferenceProperty( time_stamp_frequency, "min", 1 ); + setPreferenceProperty( time_stamp_frequency, "max", 100 ); } // group: "Sweeping preferences" diff --git a/src/VISUGUI/VisuGUI_TimeAnimation.cxx b/src/VISUGUI/VisuGUI_TimeAnimation.cxx index c768f973..7198e984 100644 --- a/src/VISUGUI/VisuGUI_TimeAnimation.cxx +++ b/src/VISUGUI/VisuGUI_TimeAnimation.cxx @@ -95,6 +95,7 @@ #include #include #include +#include #include @@ -1775,9 +1776,25 @@ VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg (VisuGUI* theModule, this, SLOT( onBrowseAVI() )); aSaveLay->addWidget(myBrowseAVIBtn, 4, 2); + myFrequencyLbl = new QLabel("Time stamp frequency:", aSaveBox); + myFrequencyLbl->setEnabled(false); + aSaveLay->addWidget(myFrequencyLbl, 5, 0, 1, 2); + + myFrequencySpin = new QSpinBox(aSaveBox); + myFrequencySpin->setRange(1, 100); + myFrequencySpin->setValue(myAnimator->getTimeStampFrequency()); + myFrequencySpin->setEnabled(false); + aSaveLay->addWidget(myFrequencySpin, 5, 2); + mySaveAVICheck->setChecked(false); //mySaveAVICheck->setEnabled(myAnimator->checkAVIMaker()); + int aDumpMode = myAnimator->getDumpMode(); + if(aDumpMode == VISU_TimeAnimation::DM_Picture) + mySaveCheck->setChecked(true); + else if(aDumpMode == VISU_TimeAnimation::DM_Video && myAnimator->checkAVIMaker()) + mySaveAVICheck->setChecked(true); + TopLayout->addWidget(aSaveBox, 7, 0, 1, 4); QCheckBox* aCleanMemCheck = new QCheckBox("Clean memory at each frame",myPlayFrame); @@ -1936,6 +1953,7 @@ void VisuGUI_TimeAnimationDlg::onPlayPressed() } else if (mySaveAVICheck->isChecked()) { myAnimator->setDumpFormat("AVI"); myAnimator->dumpTo(myPathAVIEdit->text().toLatin1().data()); + myAnimator->setTimeStampFrequency(myFrequencySpin->value()); } else { myAnimator->dumpTo(""); } @@ -2112,6 +2130,8 @@ void VisuGUI_TimeAnimationDlg::onCheckDump(bool) myPathAVILbl->setEnabled(true); myPathAVIEdit->setEnabled(true); myBrowseAVIBtn->setEnabled(true); + myFrequencyLbl->setEnabled(true); + myFrequencySpin->setEnabled(true); } } else { @@ -2122,6 +2142,8 @@ void VisuGUI_TimeAnimationDlg::onCheckDump(bool) myPathAVILbl->setEnabled(false); myPathAVIEdit->setEnabled(false); myBrowseAVIBtn->setEnabled(false); + myFrequencyLbl->setEnabled(false); + myFrequencySpin->setEnabled(false); } mySaveCheck->setEnabled(!mySaveAVICheck->isChecked()); } diff --git a/src/VISUGUI/VisuGUI_TimeAnimation.h b/src/VISUGUI/VisuGUI_TimeAnimation.h index 16216afa..8c4514a0 100644 --- a/src/VISUGUI/VisuGUI_TimeAnimation.h +++ b/src/VISUGUI/VisuGUI_TimeAnimation.h @@ -63,6 +63,7 @@ class QCheckBox; class QComboBox; class QGroupBox; class QToolButton; +class QSpinBox; /*! * Auxilliary class for presentations definition @@ -247,6 +248,8 @@ class VisuGUI_TimeAnimationDlg: public QDialog QLineEdit* myPathAVIEdit; QLabel* myPathAVILbl; QPushButton* myBrowseAVIBtn; + QLabel* myFrequencyLbl; + QSpinBox* myFrequencySpin; QPushButton* myPublishBtn; QPushButton* mySaveBtn; diff --git a/src/VISU_I/VISU_TimeAnimation.cxx b/src/VISU_I/VISU_TimeAnimation.cxx index c2b29a68..3ad6231b 100644 --- a/src/VISU_I/VISU_TimeAnimation.cxx +++ b/src/VISU_I/VISU_TimeAnimation.cxx @@ -206,6 +206,9 @@ VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy, myDumpPath = ""; myAVIMaker = "jpeg2yuv"; + + myDumpMode = VISU::GetResourceMgr()->integerValue("VISU", "dump_mode", 0); + myTimeStampFrequency = VISU::GetResourceMgr()->integerValue("VISU", "time_stamp_frequency", 1); } @@ -1426,6 +1429,9 @@ void VISU_TimeAnimation::saveImages( int theFieldId, QString aDirPath = aFileInfo.absolutePath(); QString aBaseName = aFileInfo.fileName(); + if( myTimeStampFrequency > 1 && myFrame % myTimeStampFrequency != 0 ) + return; + switch (myFrame) { case 0: break; @@ -1485,7 +1491,7 @@ void VISU_TimeAnimation::run() // make AVI file if need if (isDumping && myDumpFormat.compare("AVI") == 0 && myExecutionState->IsActive()) { - double aFPS = 17.3 * mySpeed; + double aFPS = 17.3 * mySpeed / myTimeStampFrequency; QFileInfo aFileInfo(myDumpPath); QString aDirPath = aFileInfo.absolutePath(); @@ -1661,6 +1667,12 @@ std::string VISU_TimeAnimation::setDumpFormat(const char* theFormat) return myDumpFormat.toLatin1().data(); } +//------------------------------------------------------------------------ +void VISU_TimeAnimation::setTimeStampFrequency(CORBA::Long theFrequency) +{ + myTimeStampFrequency = theFrequency; +} + //------------------------------------------------------------------------ bool VISU_TimeAnimation::checkAVIMaker() const { @@ -2260,6 +2272,16 @@ char* VISU_TimeAnimation_i::setDumpFormat (const char* theFormat) return CORBA::string_dup(aDumpFormat.c_str()); } +void VISU_TimeAnimation_i::setTimeStampFrequency(CORBA::Long theFrequency) +{ + myAnim->setTimeStampFrequency(theFrequency); +} + +CORBA::Long VISU_TimeAnimation_i::getTimeStampFrequency() +{ + return myAnim->getTimeStampFrequency(); +} + CORBA::Boolean VISU_TimeAnimation_i::isCycling() { return myAnim->isCycling(); diff --git a/src/VISU_I/VISU_TimeAnimation.h b/src/VISU_I/VISU_TimeAnimation.h index cb485fc0..c23ce541 100644 --- a/src/VISU_I/VISU_TimeAnimation.h +++ b/src/VISU_I/VISU_TimeAnimation.h @@ -66,6 +66,9 @@ class VISU_I_EXPORT VISU_TimeAnimation: public QThread { Q_OBJECT; + public: + enum DumpMode { DM_None = 0, DM_Picture, DM_Video }; + protected: CORBA::Boolean _generateFrames(); void _connectView(); @@ -153,6 +156,12 @@ class VISU_I_EXPORT VISU_TimeAnimation: public QThread void dumpTo(const char* thePath) { myDumpPath = thePath; } std::string setDumpFormat(const char* theFormat); + + void setTimeStampFrequency(CORBA::Long theFrequency); + CORBA::Long getTimeStampFrequency() { return myTimeStampFrequency; } + + int getDumpMode() const { return myDumpMode; } + bool checkAVIMaker() const; QString getLastErrorMsg() { return myLastError; } @@ -218,6 +227,9 @@ class VISU_I_EXPORT VISU_TimeAnimation: public QThread long myFileIndex; SVTK_ViewWindow* myView; + int myDumpMode; + int myTimeStampFrequency; + QString myAnimEntry; static int myNBAnimations; @@ -280,6 +292,9 @@ public: virtual void dumpTo(const char* thePath); virtual char* setDumpFormat(const char* theFormat); + virtual void setTimeStampFrequency(CORBA::Long theFrequency); + virtual CORBA::Long getTimeStampFrequency(); + virtual CORBA::Boolean isCycling(); virtual CORBA::Boolean isCleaningMemoryAtEachFrame(); -- 2.39.2