_badInputElements.clear();
_computeCanceled = false;
- _computeCost = 1;
_progressTic = 0;
_progress = 0.;
}
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 );
}
*/
SMESH_ComputeErrorPtr GetComputeError() const;
/*!
- * \brief initialize compute error before call of Compute()
+ * \brief initialize compute error etc. before call of Compute()
*/
void InitComputeError();
/*!
*/
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:
// ==================================================================
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()
};