1 // Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // SMESHGUI_Filter : Filters for VTK viewer
24 // File : SMESHGUI_Filter.h
25 // Author : Sergey LITONIN, Open CASCADE S.A.S.
27 #ifndef SMESHGUI_FILTER_H
28 #define SMESHGUI_FILTER_H
31 #include "SMESH_SMESHGUI.hxx"
32 #include "SMDSAbs_ElementType.hxx"
34 // SALOME GUI includes
35 #include <VTKViewer_Filter.h>
38 #include <SALOMEconfig.h>
39 #include CORBA_SERVER_HEADER(SMESH_Filter)
45 enum SMESHGUI_FilterType {
51 AllElementsFilter = 4,
54 FirstGeometryTypeFilter,
55 FirstEntityTypeFilter = FirstGeometryTypeFilter + SMDSGeom_NONE,
56 LastFilter = FirstEntityTypeFilter + SMDSEntity_Last
61 Class : SMESHGUI_Filter
62 Description : Base class for SMESH selection filters for VTK viewer.
65 DEFINE_STANDARD_HANDLE(SMESHGUI_Filter, VTKViewer_Filter)
67 class SMESHGUI_Filter : public VTKViewer_Filter
70 Standard_EXPORT virtual bool IsObjValid( const int ) const = 0;
73 DEFINE_STANDARD_RTTIEXT(SMESHGUI_Filter,VTKViewer_Filter)
77 Class : SMESHGUI_PredicateFilter
78 Description : Selection filter for VTK viewer. This class aggregate object
79 of SMESH_Predicate class and uses it for verification of criterion
82 DEFINE_STANDARD_HANDLE(SMESHGUI_PredicateFilter, SMESHGUI_Filter)
84 class SMESHGUI_PredicateFilter : public SMESHGUI_Filter
87 Standard_EXPORT SMESHGUI_PredicateFilter();
88 Standard_EXPORT virtual ~SMESHGUI_PredicateFilter();
90 Standard_EXPORT virtual bool IsValid( const int ) const;
91 Standard_EXPORT virtual bool IsObjValid( const int ) const;
92 Standard_EXPORT virtual int GetId() const;
93 Standard_EXPORT virtual bool IsNodeFilter() const;
94 Standard_EXPORT void SetPredicate( SMESH::Predicate_ptr );
96 Standard_EXPORT void SetActor( SALOME_Actor* );
99 SMESH::Predicate_var myPred;
102 DEFINE_STANDARD_RTTIEXT(SMESHGUI_PredicateFilter,SMESHGUI_Filter)
106 Class : SMESHGUI_QuadrangleFilter
107 Description : Verify whether selected cell is quadrangle
110 DEFINE_STANDARD_HANDLE(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter)
112 class SMESHGUI_QuadrangleFilter : public SMESHGUI_Filter
115 Standard_EXPORT SMESHGUI_QuadrangleFilter();
116 Standard_EXPORT virtual ~SMESHGUI_QuadrangleFilter();
118 Standard_EXPORT virtual bool IsValid( const int ) const;
119 Standard_EXPORT virtual bool IsObjValid( const int ) const;
120 Standard_EXPORT virtual int GetId() const;
121 Standard_EXPORT virtual bool IsNodeFilter() const;
124 DEFINE_STANDARD_RTTIEXT(SMESHGUI_QuadrangleFilter,SMESHGUI_Filter)
128 Class : SMESHGUI_TriangleFilter
129 Description : Verify whether selected cell is triangle
132 DEFINE_STANDARD_HANDLE(SMESHGUI_TriangleFilter, SMESHGUI_Filter)
134 class SMESHGUI_TriangleFilter : public SMESHGUI_Filter
137 Standard_EXPORT SMESHGUI_TriangleFilter();
138 Standard_EXPORT virtual ~SMESHGUI_TriangleFilter();
140 Standard_EXPORT virtual bool IsValid( const int ) const;
141 Standard_EXPORT virtual bool IsObjValid( const int ) const;
142 Standard_EXPORT virtual int GetId() const;
143 Standard_EXPORT virtual bool IsNodeFilter() const;
146 DEFINE_STANDARD_RTTIEXT(SMESHGUI_TriangleFilter,SMESHGUI_Filter)
150 Class : SMESHGUI_FacesFilter
151 Description : Verify whether selected cell is any face
154 DEFINE_STANDARD_HANDLE(SMESHGUI_FacesFilter, SMESHGUI_Filter)
156 class SMESHGUI_FacesFilter : public SMESHGUI_Filter
159 Standard_EXPORT SMESHGUI_FacesFilter();
160 Standard_EXPORT virtual ~SMESHGUI_FacesFilter();
162 Standard_EXPORT virtual bool IsValid( const int ) const;
163 Standard_EXPORT virtual bool IsObjValid( const int ) const;
164 Standard_EXPORT virtual int GetId() const;
165 Standard_EXPORT virtual bool IsNodeFilter() const;
168 DEFINE_STANDARD_RTTIEXT(SMESHGUI_FacesFilter,SMESHGUI_Filter)
172 Class : SMESHGUI_VolumesFilter
173 Description : Verify whether selected cell is any volume
176 DEFINE_STANDARD_HANDLE(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
178 class SMESHGUI_VolumesFilter : public SMESHGUI_Filter
181 Standard_EXPORT SMESHGUI_VolumesFilter();
182 Standard_EXPORT virtual ~SMESHGUI_VolumesFilter();
184 Standard_EXPORT virtual bool IsValid( const int ) const;
185 Standard_EXPORT virtual bool IsObjValid( const int ) const;
186 Standard_EXPORT virtual int GetId() const;
187 Standard_EXPORT virtual bool IsNodeFilter() const;
190 DEFINE_STANDARD_RTTIEXT(SMESHGUI_VolumesFilter,SMESHGUI_Filter)
194 Class : SMESHGUI_VolumeShapeFilter
195 Description : Verify whether selected cell is a volume of a certain shape
198 DEFINE_STANDARD_HANDLE(SMESHGUI_VolumeShapeFilter, SMESHGUI_Filter)
200 class SMESHGUI_VolumeShapeFilter : public SMESHGUI_Filter
202 SMDSAbs_GeometryType myGeometryType;
204 Standard_EXPORT SMESHGUI_VolumeShapeFilter(const SMDSAbs_GeometryType shape);
206 Standard_EXPORT virtual bool IsValid( const int ) const;
207 Standard_EXPORT virtual bool IsObjValid( const int ) const;
208 Standard_EXPORT virtual int GetId() const;
209 Standard_EXPORT virtual bool IsNodeFilter() const;
211 Standard_EXPORT static int GetId( SMDSAbs_GeometryType geom );
214 DEFINE_STANDARD_RTTIEXT(SMESHGUI_VolumeShapeFilter,SMESHGUI_Filter)
217 #endif // SMESHGUI_FILTER_H