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