Salome HOME
Merge from V6_3_BR 06/06/2011
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Filter.h
1 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 // SMESHGUI_Filter : Filters for VTK viewer
24 // File   : SMESHGUI_Filter.h
25 // Author : Sergey LITONIN, Open CASCADE S.A.S.
26 //
27 #ifndef SMESHGUI_FILTER_H
28 #define SMESHGUI_FILTER_H
29
30 // SMESH includes
31 #include "SMESH_SMESHGUI.hxx"
32
33 // SALOME GUI includes
34 #include <VTKViewer_Filter.h>
35
36 // IDL includes
37 #include <SALOMEconfig.h>
38 #include CORBA_SERVER_HEADER(SMESH_Filter)
39
40 class SALOME_Actor;
41
42 namespace SMESH
43 {
44   enum SMESHGUI_FilterType {
45     UnknownFilter      = -1,
46     NodeFilter         =  0,
47     EdgeFilter         =  1,
48     FaceFilter         =  2,
49     VolumeFilter       =  3,
50     AllElementsFilter  =  4,
51     QuadFilter         =  5,
52     TriaFilter         =  6,
53     LastFilter
54   };
55 };
56
57 /*
58   Class       : SMESHGUI_Filter
59   Description : Base class for SMESH selection filters for VTK viewer.
60 */
61
62 DEFINE_STANDARD_HANDLE(SMESHGUI_Filter, VTKViewer_Filter)
63
64 class SMESHGUI_Filter : public VTKViewer_Filter
65 {
66 public:
67   Standard_EXPORT virtual bool IsObjValid( const int ) const = 0;
68
69 public:
70   DEFINE_STANDARD_RTTI(SMESHGUI_Filter)
71 };
72
73 /*
74   Class       : SMESHGUI_PredicateFilter
75   Description : Selection filter for VTK viewer. This class aggregate object
76                 of SMESH_Predicate class and uses it for verification of criterion
77 */
78
79 DEFINE_STANDARD_HANDLE(SMESHGUI_PredicateFilter, SMESHGUI_Filter)
80
81 class SMESHGUI_PredicateFilter : public SMESHGUI_Filter
82 {
83 public:
84   Standard_EXPORT SMESHGUI_PredicateFilter();
85   Standard_EXPORT virtual ~SMESHGUI_PredicateFilter();
86
87   Standard_EXPORT virtual bool IsValid( const int ) const;
88   Standard_EXPORT virtual bool IsObjValid( const int ) const;
89   Standard_EXPORT virtual int  GetId() const;
90   Standard_EXPORT virtual bool IsNodeFilter() const;
91   Standard_EXPORT void         SetPredicate( SMESH::Predicate_ptr );
92
93   Standard_EXPORT void         SetActor( SALOME_Actor* );
94
95 private:
96   SMESH::Predicate_var        myPred;
97
98 public:
99   DEFINE_STANDARD_RTTI(SMESHGUI_PredicateFilter)
100 };
101
102 /*
103   Class       : SMESHGUI_QuadrangleFilter
104   Description : Verify whether selected cell is quadranle
105 */
106
107 DEFINE_STANDARD_HANDLE(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter)
108
109 class SMESHGUI_QuadrangleFilter : public SMESHGUI_Filter
110 {
111 public:
112   Standard_EXPORT SMESHGUI_QuadrangleFilter();
113   Standard_EXPORT virtual ~SMESHGUI_QuadrangleFilter();
114
115   Standard_EXPORT virtual bool IsValid( const int ) const;
116   Standard_EXPORT virtual bool IsObjValid( const int ) const;
117   Standard_EXPORT virtual int  GetId() const;
118   Standard_EXPORT virtual bool IsNodeFilter() const;
119
120 public:
121   DEFINE_STANDARD_RTTI(SMESHGUI_QuadrangleFilter)
122 };
123
124 /*
125   Class       : SMESHGUI_TriangleFilter
126   Description : Verify whether selected cell is triangle
127 */
128
129 DEFINE_STANDARD_HANDLE(SMESHGUI_TriangleFilter, SMESHGUI_Filter)
130
131 class SMESHGUI_TriangleFilter : public SMESHGUI_Filter
132 {
133 public:
134   Standard_EXPORT SMESHGUI_TriangleFilter();
135   Standard_EXPORT virtual ~SMESHGUI_TriangleFilter();
136
137   Standard_EXPORT virtual bool IsValid( const int ) const;
138   Standard_EXPORT virtual bool IsObjValid( const int ) const;
139   Standard_EXPORT virtual int  GetId() const;
140   Standard_EXPORT virtual bool IsNodeFilter() const;  
141
142 public:
143   DEFINE_STANDARD_RTTI(SMESHGUI_TriangleFilter)
144 };
145
146 /*
147   Class       : SMESHGUI_FacesFilter
148   Description : Verify whether selected cell is any face
149 */
150
151 DEFINE_STANDARD_HANDLE(SMESHGUI_FacesFilter, SMESHGUI_Filter)
152
153 class SMESHGUI_FacesFilter : public SMESHGUI_Filter
154 {
155 public:
156   Standard_EXPORT SMESHGUI_FacesFilter();
157   Standard_EXPORT virtual ~SMESHGUI_FacesFilter();
158
159   Standard_EXPORT virtual bool IsValid( const int ) const;
160   Standard_EXPORT virtual bool IsObjValid( const int ) const;
161   Standard_EXPORT virtual int  GetId() const;
162   Standard_EXPORT virtual bool IsNodeFilter() const;  
163
164 public:
165   DEFINE_STANDARD_RTTI(SMESHGUI_FacesFilter)
166 };
167
168 /*
169   Class       : SMESHGUI_VolumesFilter
170   Description : Verify whether selected cell is any volume
171 */
172
173 DEFINE_STANDARD_HANDLE(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
174
175 class SMESHGUI_VolumesFilter : public SMESHGUI_Filter
176 {
177 public:
178   Standard_EXPORT SMESHGUI_VolumesFilter();
179   Standard_EXPORT virtual ~SMESHGUI_VolumesFilter();
180
181   Standard_EXPORT virtual bool IsValid( const int ) const;
182   Standard_EXPORT virtual bool IsObjValid( const int ) const;
183   Standard_EXPORT virtual int  GetId() const;
184   Standard_EXPORT virtual bool IsNodeFilter() const;  
185
186 public:
187   DEFINE_STANDARD_RTTI(SMESHGUI_VolumesFilter)
188 };
189
190 #endif // SMESHGUI_FILTER_H