Salome HOME
Update copyright info (2010->2011)
[modules/smesh.git] / src / SMESH_I / SMESH_Filter_i.hxx
index 3b654e8809658c008950ddd88a0cee166388d755..6e8c0d173025527424f5b1012bbd6e4f55fa4d47 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2011  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
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
 //  File   : SMESH_Filter_i.hxx
 //  Author : Alexey Petrov, OCC
@@ -107,10 +108,10 @@ namespace SMESH
       double                          GetTolerance();
       
       virtual bool                    Contains( const SMESHDS_Mesh*     theMeshDS,
-                                               const TopoDS_Shape&     theShape,
-                                               const SMDS_MeshElement* theElem,
-                                               TopAbs_ShapeEnum        theFindShapeEnum,
-                                               TopAbs_ShapeEnum        theAvoidShapeEnum = TopAbs_SHAPE );
+                                                const TopoDS_Shape&     theShape,
+                                                const SMDS_MeshElement* theElem,
+                                                TopAbs_ShapeEnum        theFindShapeEnum,
+                                                TopAbs_ShapeEnum        theAvoidShapeEnum = TopAbs_SHAPE );
     private:
       virtual void                    init();
 
@@ -133,7 +134,7 @@ namespace SMESH
     Description : An abstact class for all functors 
   */
   class SMESH_I_EXPORT Functor_i: public virtual POA_SMESH::Functor,
-                  public virtual SALOME::GenericObj_i
+                   public virtual SALOME::GenericObj_i
   {
   public:
     void                            SetMesh( SMESH_Mesh_ptr theMesh );
@@ -152,7 +153,7 @@ namespace SMESH
     Description : Base class for numerical functors 
   */
   class SMESH_I_EXPORT NumericalFunctor_i: public virtual POA_SMESH::NumericalFunctor,
-                           public virtual Functor_i
+                            public virtual Functor_i
   {
   public:
     CORBA::Double                   GetValue( CORBA::Long theElementId );
@@ -170,7 +171,7 @@ namespace SMESH
     Description : Functor for calculation of minimum angle
   */
   class SMESH_I_EXPORT MinimumAngle_i: public virtual POA_SMESH::MinimumAngle,
-                       public virtual NumericalFunctor_i
+                        public virtual NumericalFunctor_i
   {
   public:
     MinimumAngle_i();
@@ -183,7 +184,7 @@ namespace SMESH
     Description : Functor for calculating aspect ratio
   */
   class SMESH_I_EXPORT AspectRatio_i: public virtual POA_SMESH::AspectRatio,
-                      public virtual NumericalFunctor_i
+                       public virtual NumericalFunctor_i
   {
   public:
     AspectRatio_i();
@@ -196,7 +197,7 @@ namespace SMESH
     Description : Functor for calculating aspect ratio for 3D
   */
   class SMESH_I_EXPORT AspectRatio3D_i: public virtual POA_SMESH::AspectRatio3D,
-                        public virtual NumericalFunctor_i
+                         public virtual NumericalFunctor_i
   {
   public:
     AspectRatio3D_i();
@@ -209,7 +210,7 @@ namespace SMESH
     Description : Functor for calculating warping
   */
   class SMESH_I_EXPORT Warping_i: public virtual POA_SMESH::Warping,
-                  public virtual NumericalFunctor_i
+                   public virtual NumericalFunctor_i
   {
   public:
     Warping_i();
@@ -222,7 +223,7 @@ namespace SMESH
     Description : Functor for calculating taper
   */
   class SMESH_I_EXPORT Taper_i: public virtual POA_SMESH::Taper,
-                public virtual NumericalFunctor_i
+                 public virtual NumericalFunctor_i
   {
   public:
     Taper_i();
@@ -235,7 +236,7 @@ namespace SMESH
     Description : Functor for calculating skew in degrees
   */
   class SMESH_I_EXPORT Skew_i: public virtual POA_SMESH::Skew,
-               public virtual NumericalFunctor_i
+                public virtual NumericalFunctor_i
   {
   public:
     Skew_i();
@@ -248,7 +249,7 @@ namespace SMESH
     Description : Functor for calculating area
   */
   class SMESH_I_EXPORT Area_i: public virtual POA_SMESH::Area,
-               public virtual NumericalFunctor_i
+                public virtual NumericalFunctor_i
   {
   public:
     Area_i();
@@ -274,7 +275,7 @@ namespace SMESH
     Description : Functor for calculating length of edge
   */
   class SMESH_I_EXPORT Length_i: public virtual POA_SMESH::Length,
-                 public virtual NumericalFunctor_i
+                  public virtual NumericalFunctor_i
   {
   public:
     Length_i();
@@ -286,7 +287,7 @@ namespace SMESH
     Description : Functor for calculating length of edge
   */
   class SMESH_I_EXPORT Length2D_i: public virtual POA_SMESH::Length2D,
-                   public virtual NumericalFunctor_i
+                    public virtual NumericalFunctor_i
   {
   public:
     Length2D_i();
@@ -303,7 +304,7 @@ namespace SMESH
     Description : Functor for calculating number of faces conneted to the edge
   */
   class SMESH_I_EXPORT MultiConnection_i: public virtual POA_SMESH::MultiConnection,
-                          public virtual NumericalFunctor_i
+                           public virtual NumericalFunctor_i
   {
   public:
     MultiConnection_i();
@@ -315,7 +316,7 @@ namespace SMESH
     Description : Functor for calculating number of faces conneted to the edge
   */
   class SMESH_I_EXPORT MultiConnection2D_i: public virtual POA_SMESH::MultiConnection2D,
-                            public virtual NumericalFunctor_i
+                             public virtual NumericalFunctor_i
   {
   public:
     MultiConnection2D_i();
@@ -335,7 +336,7 @@ namespace SMESH
     Description : Base class for all predicates
   */
   class SMESH_I_EXPORT Predicate_i: public virtual POA_SMESH::Predicate,
-                    public virtual Functor_i
+                     public virtual Functor_i
   {
   public:
     CORBA::Boolean                  IsSatisfy( CORBA::Long theElementId );
@@ -352,7 +353,7 @@ namespace SMESH
     the point of view of MED convention
   */
   class SMESH_I_EXPORT BadOrientedVolume_i: public virtual POA_SMESH::BadOrientedVolume,
-                            public virtual Predicate_i
+                             public virtual Predicate_i
   {
   public:
     BadOrientedVolume_i();
@@ -364,7 +365,7 @@ namespace SMESH
     Description : Predicate for selection on geometrical support
   */
   class SMESH_I_EXPORT BelongToGeom_i: public virtual POA_SMESH::BelongToGeom,
-                       public virtual Predicate_i
+                        public virtual Predicate_i
   {
   public:
     BelongToGeom_i();
@@ -395,7 +396,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom planar object
   */
   class SMESH_I_EXPORT BelongToSurface_i: public virtual POA_SMESH::BelongToSurface,
-                          public virtual Predicate_i
+                           public virtual Predicate_i
   {
   public:
     BelongToSurface_i( const Handle(Standard_Type)& );
@@ -426,7 +427,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom planar object
   */
   class SMESH_I_EXPORT BelongToPlane_i: public virtual POA_SMESH::BelongToPlane,
-                        public virtual BelongToSurface_i
+                         public virtual BelongToSurface_i
   {
   public:
     BelongToPlane_i();
@@ -439,7 +440,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom cylindrical object
   */
   class SMESH_I_EXPORT BelongToCylinder_i: public virtual POA_SMESH::BelongToCylinder,
-                           public virtual BelongToSurface_i
+                            public virtual BelongToSurface_i
   {
   public:
     BelongToCylinder_i();
@@ -465,7 +466,7 @@ namespace SMESH
     Description : Predicate for selection on geometrical support(lying or partially lying)
   */
   class SMESH_I_EXPORT LyingOnGeom_i: public virtual POA_SMESH::LyingOnGeom,
-                      public virtual Predicate_i
+                       public virtual Predicate_i
   {
   public:
     LyingOnGeom_i();
@@ -496,7 +497,7 @@ namespace SMESH
     Description : Predicate for free borders
   */
   class SMESH_I_EXPORT FreeBorders_i: public virtual POA_SMESH::FreeBorders,
-                      public virtual Predicate_i
+                       public virtual Predicate_i
   {
   public:
     FreeBorders_i();
@@ -509,7 +510,7 @@ namespace SMESH
     Description : Predicate for free edges
   */
   class SMESH_I_EXPORT FreeEdges_i: public virtual POA_SMESH::FreeEdges,
-                    public virtual Predicate_i
+                     public virtual Predicate_i
   {
   public:
     FreeEdges_i();
@@ -526,7 +527,7 @@ namespace SMESH
     Description : Predicate for free faces
   */
   class SMESH_I_EXPORT FreeFaces_i: public virtual POA_SMESH::FreeFaces,
-                      public virtual Predicate_i
+                       public virtual Predicate_i
   {
   public:
     FreeFaces_i();
@@ -539,7 +540,7 @@ namespace SMESH
     Description : Predicate for free nodes
   */
   class SMESH_I_EXPORT FreeNodes_i: public virtual POA_SMESH::FreeNodes,
-                      public virtual Predicate_i
+                       public virtual Predicate_i
   {
   public:
     FreeNodes_i();
@@ -552,7 +553,7 @@ namespace SMESH
     Description : Predicate for Range of Ids
   */
   class SMESH_I_EXPORT RangeOfIds_i: public virtual POA_SMESH::RangeOfIds,
-                     public virtual Predicate_i
+                      public virtual Predicate_i
   {
   public:
     RangeOfIds_i();
@@ -572,7 +573,7 @@ namespace SMESH
     Description : Verify whether a mesh element is linear
   */
   class SMESH_I_EXPORT LinearOrQuadratic_i: public virtual POA_SMESH::LinearOrQuadratic,
-                            public virtual Predicate_i
+                             public virtual Predicate_i
   {
   public:
     LinearOrQuadratic_i();
@@ -588,7 +589,7 @@ namespace SMESH
     Description : Functor for check color of group to whic mesh element belongs to
   */
   class SMESH_I_EXPORT GroupColor_i: public virtual POA_SMESH::GroupColor,
-                 public virtual Predicate_i
+                  public virtual Predicate_i
   {
   public:
     GroupColor_i();
@@ -607,7 +608,7 @@ namespace SMESH
     Description : Functor for check element geometry type
   */
   class SMESH_I_EXPORT ElemGeomType_i: public virtual POA_SMESH::ElemGeomType,
-                 public virtual Predicate_i
+                  public virtual Predicate_i
   {
   public:
     ElemGeomType_i();
@@ -621,12 +622,32 @@ namespace SMESH
     Controls::ElemGeomTypePtr myElemGeomTypePtr;
   };
   
+  /*
+    Class       : CoplanarFaces_i
+    Description : Returns true if a mesh face is a coplanar neighbour to a given one
+  */
+  class SMESH_I_EXPORT CoplanarFaces_i: public virtual POA_SMESH::CoplanarFaces,
+                  public virtual Predicate_i
+  {
+  public:
+    CoplanarFaces_i();
+    FunctorType             GetFunctorType();
+
+    void                    SetFace ( CORBA::Long theFaceID );
+    void                    SetTolerance( CORBA::Double theToler );
+    char*                   GetFaceAsString () const;
+    CORBA::Long             GetFace () const;
+    CORBA::Double           GetTolerance () const;
+  private:
+    Controls::CoplanarFacesPtr myCoplanarFacesPtr;
+  };
+  
   /*
     Class       : Comparator_i
     Description : Base class for comparators
   */
   class SMESH_I_EXPORT Comparator_i: public virtual POA_SMESH::Comparator,
-                     public virtual Predicate_i
+                      public virtual Predicate_i
   {
   public:
     virtual                         ~Comparator_i();
@@ -651,7 +672,7 @@ namespace SMESH
     Description : Comparator "<"
   */
   class SMESH_I_EXPORT LessThan_i: public virtual POA_SMESH::LessThan,
-                   public virtual Comparator_i
+                    public virtual Comparator_i
   {
   public:
     LessThan_i();
@@ -664,7 +685,7 @@ namespace SMESH
     Description : Comparator ">"
   */
   class SMESH_I_EXPORT MoreThan_i: public virtual POA_SMESH::MoreThan,
-                   public virtual Comparator_i
+                    public virtual Comparator_i
   {
   public:
     MoreThan_i();
@@ -677,7 +698,7 @@ namespace SMESH
     Description : Comparator "="
   */
   class SMESH_I_EXPORT EqualTo_i: public virtual POA_SMESH::EqualTo,
-                  public virtual Comparator_i
+                   public virtual Comparator_i
   {
   public:
     EqualTo_i();
@@ -695,7 +716,7 @@ namespace SMESH
     Description : Logical NOT predicate
   */
   class SMESH_I_EXPORT LogicalNOT_i: public virtual POA_SMESH::LogicalNOT,
-                     public virtual Predicate_i
+                      public virtual Predicate_i
   {
   public:
     LogicalNOT_i();
@@ -716,7 +737,7 @@ namespace SMESH
     Description : Base class for binary logical predicate
   */
   class SMESH_I_EXPORT LogicalBinary_i: public virtual POA_SMESH::LogicalBinary,
-                        public virtual Predicate_i
+                         public virtual Predicate_i
   {
   public:
     virtual                         ~LogicalBinary_i();
@@ -742,7 +763,7 @@ namespace SMESH
     Description : Logical AND
   */
   class SMESH_I_EXPORT LogicalAND_i: public virtual POA_SMESH::LogicalAND,
-                     public virtual LogicalBinary_i
+                      public virtual LogicalBinary_i
   {
   public:
     LogicalAND_i();
@@ -755,7 +776,7 @@ namespace SMESH
     Description : Logical OR
   */
   class SMESH_I_EXPORT LogicalOR_i: public virtual POA_SMESH::LogicalOR,
-                    public virtual LogicalBinary_i
+                     public virtual LogicalBinary_i
   {
   public:
     LogicalOR_i();
@@ -767,7 +788,7 @@ namespace SMESH
     FILTER
   */
   class SMESH_I_EXPORT Filter_i: public virtual POA_SMESH::Filter,
-                 public virtual SALOME::GenericObj_i
+                  public virtual SALOME::GenericObj_i
   {
   public:
     Filter_i();
@@ -785,16 +806,24 @@ namespace SMESH
     SMESH::long_array* 
     GetIDs();
     
+    virtual
+    SMESH::long_array*
+    GetMeshInfo();
+
+    virtual
+    SMESH::array_of_ElementType*
+    GetTypes();
+
     static
     void
     GetElementsId( Predicate_i*,
-                  const SMDS_Mesh*,
-                  Controls::Filter::TIdSequence& );
+                   const SMDS_Mesh*,
+                   Controls::Filter::TIdSequence& );
     static
     void           
     GetElementsId( Predicate_i*,
-                  SMESH_Mesh_ptr,
-                  Controls::Filter::TIdSequence& );
+                   SMESH_Mesh_ptr,
+                   Controls::Filter::TIdSequence& );
     
     virtual
     long_array*      
@@ -829,7 +858,7 @@ namespace SMESH
     FILTER LIBRARY
   */
   class SMESH_I_EXPORT FilterLibrary_i: public virtual POA_SMESH::FilterLibrary,
-                        public virtual SALOME::GenericObj_i
+                         public virtual SALOME::GenericObj_i
   {
   public:
     FilterLibrary_i( const char* theFileName );
@@ -842,8 +871,8 @@ namespace SMESH
     CORBA::Boolean          AddEmpty( const char* theFilterName, ElementType theType );
     CORBA::Boolean          Delete  ( const char* theFilterName );
     CORBA::Boolean          Replace ( const char* theFilterName, 
-                                     const char* theNewName, 
-                                     Filter_ptr  theFilter );
+                                      const char* theNewName, 
+                                      Filter_ptr  theFilter );
     
     CORBA::Boolean          Save();
     CORBA::Boolean          SaveAs( const char* aFileName );
@@ -867,7 +896,7 @@ namespace SMESH
   */
   
   class SMESH_I_EXPORT FilterManager_i: public virtual POA_SMESH::FilterManager,
-                        public virtual SALOME::GenericObj_i
+                         public virtual SALOME::GenericObj_i
   {
   public:
     FilterManager_i();
@@ -899,13 +928,11 @@ namespace SMESH
     FreeFaces_ptr             CreateFreeFaces();
     
     RangeOfIds_ptr            CreateRangeOfIds();
-    
     BadOrientedVolume_ptr     CreateBadOrientedVolume();
     LinearOrQuadratic_ptr     CreateLinearOrQuadratic();
-    
     GroupColor_ptr            CreateGroupColor();
-
     ElemGeomType_ptr          CreateElemGeomType();
+    CoplanarFaces_ptr         CreateCoplanarFaces();
 
     LessThan_ptr              CreateLessThan();
     MoreThan_ptr              CreateMoreThan();