Salome HOME
Compute Progress bar: ignore sub-meshes that are NOT_READY to compute
[modules/smesh.git] / src / SMESH / SMESH_Algo.hxx
index 3f8f2c839c1b1021f62c552de9e52a7b64e353e2..8d5d4cf47eca1a566d79961a472b6a6727e622ac 100644 (file)
@@ -169,6 +169,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
    */
   virtual void CancelCompute();
 
+  /*!
+   * \brief If possible, returns progress of computation [0.,1.]
+   */
+  virtual double GetProgress() const;
+
   /*!
    * \brief evaluates size of prospective mesh on a shape
     * \param aMesh - the mesh
@@ -195,7 +200,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
   virtual const std::list <const SMESHDS_Hypothesis *> &
   GetUsedHypothesis(SMESH_Mesh &         aMesh,
                     const TopoDS_Shape & aShape,
-                    const bool           ignoreAuxiliary=true);
+                    const bool           ignoreAuxiliary=true) const;
   /*!
    * \brief Returns a list of compatible hypotheses assigned to a shape in a mesh
     * \param aMesh - the mesh 
@@ -210,7 +215,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
   const list <const SMESHDS_Hypothesis *> &
   GetAppliedHypothesis(SMESH_Mesh &         aMesh,
                        const TopoDS_Shape & aShape,
-                       const bool           ignoreAuxiliary=true);
+                       const bool           ignoreAuxiliary=true) const;
   /*!
    * \brief Make the filter recognize only compatible hypotheses
    * \param theFilter - the filter to initialize
@@ -224,14 +229,23 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
    */
   virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
   virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
+
   /*!
    * \brief return compute error
    */
   SMESH_ComputeErrorPtr GetComputeError() const;
   /*!
-   * \brief initialize compute error
+   * \brief initialize compute error before call of Compute()
    */
   void InitComputeError();
+  /*!
+   * \brief Return compute progress by nb of calls of this method
+   */
+  double GetProgressByTic() const;
+  /*!
+   * Return a storage of "compute cost" of shapes being Compute()d.
+   */
+  int& GetComputeCost() { return _computeCost; }
 
 public:
   // ==================================================================
@@ -325,11 +339,6 @@ public:
    */
   static double EdgeLength(const TopoDS_Edge & E);
 
-  /*!
-   * \brief Calculate normal of a mesh face
-   */
-  static bool FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool normalized=true);
-
   //static int NumberOfWires(const TopoDS_Shape& S);
   int NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W);
 
@@ -356,12 +365,6 @@ public:
    */
   static const SMDS_MeshNode* VertexNode(const TopoDS_Vertex& V, const SMESHDS_Mesh* meshDS);
 
-  /*!
-   * \brief Return nodes common to two elements
-   */
-  static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
-                                                           const SMDS_MeshElement* e2);
-
   enum EMeshError { MEr_OK = 0, MEr_HOLES, MEr_BAD_ORI, MEr_EMPTY };
 
   /*!
@@ -418,8 +421,12 @@ 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.]
 };
 
+
 class SMESH_EXPORT SMESH_0D_Algo: public SMESH_Algo
 {
 public: