Salome HOME
Compute Progress bar
authoreap <eap@opencascade.com>
Tue, 9 Jul 2013 11:58:41 +0000 (11:58 +0000)
committereap <eap@opencascade.com>
Tue, 9 Jul 2013 11:58:41 +0000 (11:58 +0000)
-  int& GetComputeCost() { return _computeCost; }
+  std::vector<SMESH_subMesh*>& SubMeshesToCompute() { return _smToCompute; }

src/SMESH/SMESH_Algo.cxx
src/SMESH/SMESH_Algo.hxx

index 79a77f8276b9a14ea9963f62ecfab9315c01a1e5..263a1e673fe1779932eaff6e1e1b68121154d308 100644 (file)
@@ -754,7 +754,6 @@ void SMESH_Algo::InitComputeError()
   _badInputElements.clear();
 
   _computeCanceled = false;
-  _computeCost     = 1;
   _progressTic     = 0;
   _progress        = 0.;
 }
@@ -767,9 +766,14 @@ void SMESH_Algo::InitComputeError()
 
 double SMESH_Algo::GetProgressByTic() const
 {
+  int computeCost = 0;
+  for ( size_t i = 0; i < _smToCompute.size(); ++i )
+    computeCost += _smToCompute[i]->GetComputeCost();
+
   const_cast<SMESH_Algo*>( this )->_progressTic++;
+
   double x = 5 * _progressTic;
-  x = ( x < _computeCost ) ? ( x / _computeCost ) : 1.;
+  x = ( x < computeCost ) ? ( x / computeCost ) : 1.;
   return 0.9 * sin( x * M_PI / 2 );
 }
 
index 8d5d4cf47eca1a566d79961a472b6a6727e622ac..acb852b720c85338f052284e9bae336a5e94b448 100644 (file)
@@ -235,7 +235,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
    */
   SMESH_ComputeErrorPtr GetComputeError() const;
   /*!
-   * \brief initialize compute error before call of Compute()
+   * \brief initialize compute error etc. before call of Compute()
    */
   void InitComputeError();
   /*!
@@ -243,9 +243,9 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
    */
   double GetProgressByTic() const;
   /*!
-   * Return a storage of "compute cost" of shapes being Compute()d.
+   * Return a vector of sub-meshes to Compute()
    */
-  int& GetComputeCost() { return _computeCost; }
+  std::vector<SMESH_subMesh*>& SubMeshesToCompute() { return _smToCompute; }
 
 public:
   // ==================================================================
@@ -421,9 +421,11 @@ protected:
   std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
 
   volatile bool _computeCanceled; //!< is set to True while computing to stop it
-  int           _computeCost;     //!< "compute cost" of shapes being Compute()d
-  int           _progressTic;     //!< counter of calls from SMESH_Mesh::GetComputeProgress()
-  double        _progress;        //!< progress of Compute() [0.,1.]
+
+  double        _progress;        /* progress of Compute() [0.,1.],
+                                     to be set by an algo really tracking the progress */
+  int           _progressTic;     // counter of calls from SMESH_Mesh::GetComputeProgress()
+  std::vector<SMESH_subMesh*> _smToCompute; // sub-meshes to Compute()
 };