Salome HOME
Merge from BR_V5_DEV 16Feb09
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Filter.h
1 //  Copyright (C) 2007-2008  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 // SMESHGUI_Filter : Filters for VTK viewer
23 // File   : SMESHGUI_Filter.h
24 // Author : Sergey LITONIN, Open CASCADE S.A.S.
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