Salome HOME
Update copyright information
[modules/geom.git] / src / GEOMAlgo / GEOMAlgo_ShapeInfo.hxx
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 #ifndef _GEOMAlgo_ShapeInfo_HeaderFile
23 #define _GEOMAlgo_ShapeInfo_HeaderFile
24
25 #ifndef _TopAbs_ShapeEnum_HeaderFile
26 #include <TopAbs_ShapeEnum.hxx>
27 #endif
28 #ifndef _Standard_Integer_HeaderFile
29 #include <Standard_Integer.hxx>
30 #endif
31 #ifndef _GEOMAlgo_KindOfShape_HeaderFile
32 #include <GEOMAlgo_KindOfShape.hxx>
33 #endif
34 #ifndef _GEOMAlgo_KindOfName_HeaderFile
35 #include <GEOMAlgo_KindOfName.hxx>
36 #endif
37 #ifndef _GEOMAlgo_KindOfBounds_HeaderFile
38 #include <GEOMAlgo_KindOfBounds.hxx>
39 #endif
40 #ifndef _GEOMAlgo_KindOfClosed_HeaderFile
41 #include <GEOMAlgo_KindOfClosed.hxx>
42 #endif
43 #ifndef _gp_Pnt_HeaderFile
44 #include <gp_Pnt.hxx>
45 #endif
46 #ifndef _gp_Dir_HeaderFile
47 #include <gp_Dir.hxx>
48 #endif
49 #ifndef _gp_Ax3_HeaderFile
50 #include <gp_Ax3.hxx>
51 #endif
52 #ifndef _Standard_Real_HeaderFile
53 #include <Standard_Real.hxx>
54 #endif
55 class gp_Pnt;
56 class gp_Dir;
57 class gp_Ax2;
58 class gp_Ax3;
59
60
61 #ifndef _Standard_HeaderFile
62 #include <Standard.hxx>
63 #endif
64 #ifndef _Standard_Macro_HeaderFile
65 #include <Standard_Macro.hxx>
66 #endif
67
68
69 class GEOMAlgo_ShapeInfo  {
70
71 public:
72
73     void* operator new(size_t,void* anAddress) 
74       {
75         return anAddress;
76       }
77     void* operator new(size_t size) 
78       { 
79         return Standard::Allocate(size); 
80       }
81     void  operator delete(void *anAddress) 
82       { 
83         if (anAddress) Standard::Free((Standard_Address&)anAddress); 
84       }
85  // Methods PUBLIC
86  // 
87
88
89 Standard_EXPORT GEOMAlgo_ShapeInfo();
90 Standard_EXPORT virtual ~GEOMAlgo_ShapeInfo();
91
92
93 Standard_EXPORT   void Reset() ;
94
95
96 Standard_EXPORT   void SetType(const TopAbs_ShapeEnum aType) ;
97
98
99 Standard_EXPORT   TopAbs_ShapeEnum Type() const;
100
101
102 Standard_EXPORT   void SetNbSubShapes(const TopAbs_ShapeEnum aType,const Standard_Integer aNb) ;
103
104
105 Standard_EXPORT   Standard_Integer NbSubShapes(const TopAbs_ShapeEnum aType) const;
106
107
108 Standard_EXPORT   void SetKindOfShape(const GEOMAlgo_KindOfShape aT) ;
109
110
111 Standard_EXPORT   GEOMAlgo_KindOfShape KindOfShape() const;
112
113
114 Standard_EXPORT   void SetKindOfName(const GEOMAlgo_KindOfName aT) ;
115
116
117 Standard_EXPORT   GEOMAlgo_KindOfName KindOfName() const;
118
119
120 Standard_EXPORT   void SetKindOfBounds(const GEOMAlgo_KindOfBounds aT) ;
121
122
123 Standard_EXPORT   GEOMAlgo_KindOfBounds KindOfBounds() const;
124
125
126 Standard_EXPORT   void SetKindOfClosed(const GEOMAlgo_KindOfClosed aT) ;
127
128
129 Standard_EXPORT   GEOMAlgo_KindOfClosed KindOfClosed() const;
130
131
132 Standard_EXPORT   void SetLocation(const gp_Pnt& aP) ;
133
134
135 Standard_EXPORT  const gp_Pnt& Location() const;
136
137
138 Standard_EXPORT   void SetDirection(const gp_Dir& aD) ;
139
140
141 Standard_EXPORT  const gp_Dir& Direction() const;
142
143
144 Standard_EXPORT   void SetPosition(const gp_Ax2& aAx2) ;
145
146
147 Standard_EXPORT   void SetPosition(const gp_Ax3& aAx3) ;
148
149
150 Standard_EXPORT  const gp_Ax3& Position() const;
151
152
153 Standard_EXPORT   void SetPnt1(const gp_Pnt& aP) ;
154
155
156 Standard_EXPORT  const gp_Pnt& Pnt1() const;
157
158
159 Standard_EXPORT   void SetPnt2(const gp_Pnt& aP) ;
160
161
162 Standard_EXPORT  const gp_Pnt& Pnt2() const;
163
164
165 Standard_EXPORT   void SetRadius1(const Standard_Real aR) ;
166
167
168 Standard_EXPORT   Standard_Real Radius1() const;
169
170
171 Standard_EXPORT   void SetRadius2(const Standard_Real aR) ;
172
173
174 Standard_EXPORT   Standard_Real Radius2() const;
175
176
177 Standard_EXPORT   void SetLength(const Standard_Real aL) ;
178
179
180 Standard_EXPORT   Standard_Real Length() const;
181
182
183 Standard_EXPORT   void SetWidth(const Standard_Real aW) ;
184
185
186 Standard_EXPORT   Standard_Real Width() const;
187
188
189 Standard_EXPORT   void SetHeight(const Standard_Real aH) ;
190
191
192 Standard_EXPORT   Standard_Real Height() const;
193
194
195 Standard_EXPORT   void Dump() const;
196
197
198
199
200
201 protected:
202
203  // Methods PROTECTED
204  // 
205
206
207 Standard_EXPORT   void DumpVertex() const;
208
209
210 Standard_EXPORT   void DumpEdge() const;
211
212
213 Standard_EXPORT   void DumpWire() const;
214
215
216 Standard_EXPORT   void DumpFace() const;
217
218
219 Standard_EXPORT   void DumpShell() const;
220
221
222 Standard_EXPORT   void DumpSolid() const;
223
224
225 Standard_EXPORT   void DumpCompSolid() const;
226
227
228 Standard_EXPORT   void DumpCompound() const;
229
230
231  // Fields PROTECTED
232  //
233 TopAbs_ShapeEnum myType;
234 Standard_Integer myNbSubShapes[9];
235 GEOMAlgo_KindOfShape myKindOfShape;
236 GEOMAlgo_KindOfName myKindOfName;
237 GEOMAlgo_KindOfBounds myKindOfBounds;
238 GEOMAlgo_KindOfClosed myKindOfClosed;
239 gp_Pnt myLocation;
240 gp_Dir myDirection;
241 gp_Ax3 myPosition;
242 Standard_Real myRadius1;
243 Standard_Real myRadius2;
244 Standard_Real myLength;
245 Standard_Real myWidth;
246 Standard_Real myHeight;
247 gp_Pnt myPnt1;
248 gp_Pnt myPnt2;
249 Standard_Integer myNbTypes;
250
251
252 private: 
253
254  // Methods PRIVATE
255  // 
256
257
258  // Fields PRIVATE
259  //
260
261
262 };
263
264
265
266
267
268 // other Inline functions and methods (like "C++: function call" methods)
269 //
270
271
272 #endif