X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSVTK%2FSVTK_UpdateRateDlg.cxx;h=d2119b50622ac9a4800a1f9def261704ec70f40c;hb=780c853b9afda05be4c024a3ef3d9eb82dfba553;hp=b9f487488cd5a9d212ae6c542a1d943267682adb;hpb=aa05f2a1b23a54321ea7248ae9ac3463652c734e;p=modules%2Fgui.git diff --git a/src/SVTK/SVTK_UpdateRateDlg.cxx b/src/SVTK/SVTK_UpdateRateDlg.cxx index b9f487488..d2119b506 100644 --- a/src/SVTK/SVTK_UpdateRateDlg.cxx +++ b/src/SVTK/SVTK_UpdateRateDlg.cxx @@ -1,48 +1,46 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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 +// + +// SALOME VTKViewer : build VTK viewer into Salome desktop // File : // Author : -// Module : SALOME -// $Header$ #include "SVTK_UpdateRateDlg.h" -#include "SVTK_MainWindow.h" +#include "SVTK_ViewWindow.h" #include "SVTK_RenderWindowInteractor.h" #include "VTKViewer_Algorithm.h" #include "SALOME_Actor.h" -#include "QtxDblSpinBox.h" +#include "QtxDoubleSpinBox.h" #include "QtxAction.h" #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -51,10 +49,8 @@ #include #include -static vtkFloatingPointType OFF_UPDATE_RATE = 0.00001; -static vtkFloatingPointType FLOAT_TOLERANCE = 1.0 / VTK_LARGE_FLOAT; - -using namespace std; +static double OFF_UPDATE_RATE = 0.00001; +static double FLOAT_TOLERANCE = 1.0 / VTK_LARGE_FLOAT; namespace { @@ -64,12 +60,12 @@ namespace GetUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor) { if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ - vtkFloatingPointType aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds(); + double aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds(); if(aLastRenderTimeInSeconds > FLOAT_TOLERANCE){ - std::ostringstream aStr; - vtkFloatingPointType aFPS = 1.0 / aLastRenderTimeInSeconds; - aStr<GetVisibility()){ - myVTKMultiplier += theActor->GetAllocatedRenderTime(); - if(dynamic_cast(theActor)) - mySALOMEMultiplier += theActor->GetAllocatedRenderTime(); + myVTKMultiplier += theActor->GetAllocatedRenderTime(); + if(dynamic_cast(theActor)) + mySALOMEMultiplier += theActor->GetAllocatedRenderTime(); } } }; @@ -101,18 +97,19 @@ namespace //---------------------------------------------------------------------------- inline - vtkFloatingPointType + double AdjustUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor, - vtkFloatingPointType theUpdateRate) + double theUpdateRate) { if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ - if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){ - TRenderTimeMultiplier aMultiplier; - using namespace VTK; - aMultiplier = ForEach(anActorCollection, - aMultiplier); - if(aMultiplier.mySALOMEMultiplier > FLOAT_TOLERANCE) - theUpdateRate *= aMultiplier.mySALOMEMultiplier / aMultiplier.myVTKMultiplier; + VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); + if(vtkActorCollection *anActorCollection = aCopy.GetActors()){ + TRenderTimeMultiplier aMultiplier; + using namespace VTK; + aMultiplier = ForEach(anActorCollection, + aMultiplier); + if(aMultiplier.mySALOMEMultiplier > FLOAT_TOLERANCE) + theUpdateRate *= aMultiplier.mySALOMEMultiplier / aMultiplier.myVTKMultiplier; } } return theUpdateRate; @@ -131,11 +128,11 @@ namespace operator()(SALOME_Actor* theActor) { if(theActor->GetVisibility()){ - if(vtkMapper *aMapper = theActor->GetMapper()){ - if(vtkDataSet *aDataSet = aMapper->GetInput()){ - myCounter += aDataSet->GetNumberOfCells(); - } - } + if(vtkMapper *aMapper = theActor->GetMapper()){ + if(vtkDataSet *aDataSet = aMapper->GetInput()){ + myCounter += aDataSet->GetNumberOfCells(); + } + } } } }; @@ -147,12 +144,13 @@ namespace GetNumberOfCells(SVTK_RenderWindowInteractor* theRWInteractor) { if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){ - if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){ - TCellsCounter aCounter; - using namespace VTK; - aCounter = ForEach(anActorCollection, - aCounter); - return QString::number(aCounter.myCounter); + VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); + if(vtkActorCollection *anActorCollection = aCopy.GetActors()){ + TCellsCounter aCounter; + using namespace VTK; + aCounter = ForEach(anActorCollection, + aCounter); + return QString::number(aCounter.myCounter); } } @@ -165,11 +163,11 @@ namespace */ SVTK_UpdateRateDlg ::SVTK_UpdateRateDlg(QtxAction* theAction, - SVTK_MainWindow* theParent, - const char* theName): - SVTK_DialogBase(theAction, - theParent, - theName), + SVTK_ViewWindow* theParent, + const char* theName): + ViewerTools_DialogBase(theAction, + theParent, + theName), myPriority(0.0), myEventCallbackCommand(vtkCallbackCommand::New()), myRWInteractor(theParent->GetInteractor()), @@ -178,25 +176,26 @@ SVTK_UpdateRateDlg vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice(); bool anIsEnabledUpdateRate = false; - setCaption(tr("DLG_TITLE")); - QVBoxLayout* aVBoxLayout = new QVBoxLayout(this, 5, 5); + setWindowTitle(tr("DLG_TITLE")); + QVBoxLayout* aVBoxLayout = new QVBoxLayout(this); + aVBoxLayout->setMargin(5); + aVBoxLayout->setSpacing(5); { QGroupBox* aGroupBox = new QGroupBox(tr("INPUT_FRAME_TITLE"), this); - aGroupBox->setColumnLayout(0, Qt::Vertical ); - aGroupBox->layout()->setSpacing( 6 ); - aGroupBox->layout()->setMargin( 11 ); aGroupBox->setCheckable(true); aGroupBox->setChecked(anIsEnabledUpdateRate); myIsEnableUpdateRateGroupBox = aGroupBox; - QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout()); + QGridLayout* aGridLayout = new QGridLayout(aGroupBox); + aGridLayout->setSpacing( 6 ); + aGridLayout->setMargin( 11 ); { QLabel* aLabel = new QLabel(tr("DESIRED"), aGroupBox); aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); aGridLayout->addWidget(aLabel, 0, 0); - QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); + QtxDoubleSpinBox* aDblSpinBox = new QtxDoubleSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); aGridLayout->addWidget(aDblSpinBox, 0, 1); @@ -210,7 +209,7 @@ SVTK_UpdateRateDlg aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); aGridLayout->addWidget(aLabel, 1, 0); - QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); + QtxDoubleSpinBox* aDblSpinBox = new QtxDoubleSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox); aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); aGridLayout->addWidget(aDblSpinBox, 1, 1); @@ -223,11 +222,10 @@ SVTK_UpdateRateDlg } { QGroupBox* aGroupBox = new QGroupBox(tr("INFORMATION_FRAME_TITLE"), this); - aGroupBox->setColumnLayout(0, Qt::Vertical ); - aGroupBox->layout()->setSpacing( 6 ); - aGroupBox->layout()->setMargin( 11 ); - - QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout()); + + QGridLayout* aGridLayout = new QGridLayout(aGroupBox); + aGridLayout->layout()->setSpacing( 6 ); + aGridLayout->layout()->setMargin( 11 ); { QLabel* aLabel = new QLabel(tr("CURRENT_FPS"), aGroupBox); aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); @@ -294,8 +292,8 @@ SVTK_UpdateRateDlg myEventCallbackCommand->SetCallback(SVTK_UpdateRateDlg::ProcessEvents); vtkRenderer *aRenderer = myRWInteractor->getRenderer(); aRenderer->AddObserver(vtkCommand::EndEvent, - myEventCallbackCommand.GetPointer(), - myPriority); + myEventCallbackCommand.GetPointer(), + myPriority); } /*! @@ -313,9 +311,9 @@ SVTK_UpdateRateDlg void SVTK_UpdateRateDlg ::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) + unsigned long theEvent, + void* theClientData, + void* vtkNotUsed(theCallData)) { SVTK_UpdateRateDlg* self = reinterpret_cast(theClientData); @@ -334,7 +332,7 @@ SVTK_UpdateRateDlg { vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice(); - vtkFloatingPointType anUpdateRate; + double anUpdateRate; if(myIsEnableUpdateRateGroupBox->isChecked()){ anUpdateRate = AdjustUpdateRate(myRWInteractor,myDesiredUpdateRateSblSpinBox->value()); aRWI->SetDesiredUpdateRate(anUpdateRate);