]> gerrit.simantics Code Review - simantics/3d.git/blob - org.jcae.opencascade/src/OccJava.i
f2352dc9d0e505239d6124abe77367d22d9cd45f
[simantics/3d.git] / org.jcae.opencascade / src / OccJava.i
1 /*\r
2  * Project Info:  http://jcae.sourceforge.net\r
3  * \r
4  * This program is free software; you can redistribute it and/or modify it under\r
5  * the terms of the GNU Lesser General Public License as published by the Free\r
6  * Software Foundation; either version 2.1 of the License, or (at your option)\r
7  * any later version.\r
8  *\r
9  * This program is distributed in the hope that it will be useful, but WITHOUT\r
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
11  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more\r
12  * details.\r
13  *\r
14  * You should have received a copy of the GNU Lesser General Public License\r
15  * along with this program; if not, write to the Free Software Foundation, Inc.,\r
16  * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.\r
17  *\r
18  * (C) Copyright 2005, by EADS CRC\r
19  * (C) Copyright 2008, 2009, by EADS France\r
20  */\r
21 \r
22 %module OccJava\r
23 \r
24 %{\r
25 #ifdef HAVE_CONFIG_H\r
26 //config.h generated by autotools from config.h.in (see an example in Opencascade).\r
27 #include "config.h"\r
28 #endif\r
29 #include <Adaptor3d_Curve.hxx>\r
30 #include <TopExp.hxx>\r
31 #include <Poly_Triangulation.hxx>\r
32 %}\r
33 \r
34 // Handle enums with Java enums\r
35 %javaconst(1);\r
36 %include "enums.swg"\r
37 \r
38 // Handle C arrays as Java arrays\r
39 %include "arrays_java.i";\r
40 %apply double[] {double *};\r
41 %apply double[] {double &};\r
42 \r
43 // load the native library\r
44 %pragma(java) jniclasscode=%{\r
45         static\r
46         {\r
47             System.loadLibrary("TKERNEL");\r
48                 System.loadLibrary("TKMATH");\r
49                 System.loadLibrary("TKG2D");\r
50                 System.loadLibrary("TKG3D");            \r
51                 System.loadLibrary("TKGEOMBASE");\r
52                 System.loadLibrary("TKBREP");\r
53                 System.loadLibrary("TKGEOMALGO");       \r
54                 System.loadLibrary("TKTOPALGO");\r
55                 System.loadLibrary("TKMESH");\r
56                 \r
57                 System.loadLibrary("TKBO");             \r
58                 System.loadLibrary("TKSHHEALING");\r
59                 \r
60                 System.loadLibrary("TKPRIM");\r
61                 System.loadLibrary("TKBOOL");\r
62                 System.loadLibrary("TKFILLET");\r
63                 System.loadLibrary("TKOFFSET"); \r
64                 \r
65                 System.loadLibrary("TKXSBASE");\r
66                 System.loadLibrary("TKIGES");\r
67                 System.loadLibrary("TKSTEPBASE");\r
68                 System.loadLibrary("TKSTEPATTR");\r
69                 System.loadLibrary("TKSTEP209");\r
70                 System.loadLibrary("TKSTEP");\r
71 \r
72                 System.loadLibrary("OccJava");\r
73                 if(!"0".equals(System.getenv("MMGT_OPT")))\r
74                         throw new RuntimeException("The MMGT_OPT environement variable must be set to 0 before using occjava.");\r
75         }\r
76 %}\r
77 \r
78 %include "Standard.i"\r
79 %include "gp.i"\r
80 %include "TCol.i"\r
81 %include "TopAbs.i"\r
82 %include "TopoDS.i"\r
83 %include "GeomAbs.i"\r
84 %include "TopTools.i"\r
85 %include "BRep.i"\r
86 %include "GeomLProp_SLProps.i"\r
87 %include "BRepTools.i"\r
88 %include "BRepBuilderAPI.i"\r
89 %include "BRepOffsetAPI.i"\r
90 %include "BRepPrimAPI.i"\r
91 %include "BRepAlgoAPI.i"\r
92 %include "Poly.i"\r
93 %include "Geom.i"\r
94 %include "BRepLib.i"\r
95 %include "BRepFilletAPI.i"\r
96 %include "BRepCheck.i"\r
97 %include "ShapeBuild.i"\r
98 %include "XSControl.i"\r
99 %include "ShapeFix.i"\r
100 %include "APIHeaderSection_MakeHeader.i"\r
101 // This one require Opencascade 6.2\r
102 %include "ShapeUpgrade.i"\r
103 //Jens Schmidt, req. f. Thesis\r
104 %include "GeomAPI.i"\r
105 %include "GC.i"\r
106 \r
107 \r
108 %typemap(javacode) TopExp\r
109 %{\r
110         public static TopoDS_Vertex[] vertices(TopoDS_Edge edge)\r
111         {\r
112                 TopoDS_Vertex first=new TopoDS_Vertex();\r
113                 TopoDS_Vertex second=new TopoDS_Vertex();\r
114                 vertices(edge, first, second);\r
115                 return new TopoDS_Vertex[]{first, second};\r
116         }\r
117 %}\r
118 \r
119 class TopLoc_Location\r
120 {\r
121         %rename(isIdentity) IsIdentity;\r
122         %rename(transformation) Transformation;\r
123         public:\r
124         Standard_Boolean IsIdentity();\r
125         const gp_Trsf& Transformation();\r
126 };\r
127 \r
128 class TopExp\r
129 {\r
130         public:\r
131         %rename(vertices) Vertices;\r
132         static void Vertices(const TopoDS_Edge& E,TopoDS_Vertex& Vfirst,TopoDS_Vertex& Vlast,const Standard_Boolean CumOri = Standard_False) ;\r
133 };\r
134 \r
135 /**\r
136  * TopExp_Explorer\r
137  */\r
138 %{#include "TopExp_Explorer.hxx"%}\r
139 class TopExp_Explorer\r
140 {\r
141         public:\r
142         TopExp_Explorer();\r
143         TopExp_Explorer(const TopoDS_Shape& S,const TopAbs_ShapeEnum ToFind,\r
144                 const TopAbs_ShapeEnum ToAvoid = TopAbs_SHAPE);\r
145         %rename(init) Init;\r
146         %rename(more) More;\r
147         %rename(next) Next;\r
148         %rename(current) Current;\r
149         void Init(const TopoDS_Shape& S, const TopAbs_ShapeEnum ToFind, \r
150                 const TopAbs_ShapeEnum ToAvoid = TopAbs_SHAPE) ;\r
151         Standard_Boolean More() const;\r
152         void Next() ;\r
153         const TopoDS_Shape & Current();\r
154 };\r
155 \r
156 /**\r
157  * Bnd_Box\r
158  */\r
159 %{#include "Bnd_Box.hxx"%}\r
160 %typemap(javacode) Bnd_Box\r
161 %{\r
162     /**\r
163      * Return the array { Xmin, Ymin, Zmin, Xmax, Ymax, Zmax }\r
164      */ \r
165         public double[] get()\r
166         {\r
167                 double[] toReturn=new double[6];\r
168                 get(toReturn);\r
169                 return toReturn;\r
170         }\r
171 %}\r
172 \r
173 class Bnd_Box\r
174 {\r
175         %rename(isVoid) IsVoid;\r
176         public:\r
177         Bnd_Box();\r
178         Standard_Boolean IsVoid() const;\r
179 };\r
180 \r
181 %extend Bnd_Box\r
182 {\r
183         void get(double box[6])\r
184         {\r
185                 if(!self->IsVoid())\r
186                         self->Get(box[0], box[1], box[2], box[3], box[4], box[5]);\r
187         }\r
188 };\r
189 \r
190 /**\r
191  * BRepBndLib\r
192  */\r
193 %{#include "BRepBndLib.hxx"%}\r
194 class BRepBndLib\r
195 {\r
196         public:\r
197         %rename(add) Add;\r
198         static void Add(const TopoDS_Shape& shape,Bnd_Box& bndBox);\r
199 };\r
200 \r
201 /**\r
202  * Adaptor2d_Curve2d\r
203  */\r
204 %{#include "Adaptor2d_Curve2d.hxx"%}\r
205 \r
206 class Adaptor2d_Curve2d\r
207 {               \r
208         Adaptor2d_Curve2d()=0;\r
209         public:\r
210         %rename(value) Value;\r
211         virtual gp_Pnt2d Value(const Standard_Real U) const;\r
212 };\r
213 \r
214 /**\r
215  * Geom2dAdaptor_Curve\r
216  */\r
217 %{#include "Geom2dAdaptor_Curve.hxx"%}\r
218 class Geom2dAdaptor_Curve: public Adaptor2d_Curve2d\r
219 {\r
220         %rename(load) Load;\r
221         public:\r
222         Geom2dAdaptor_Curve();\r
223         Geom2dAdaptor_Curve(const Handle_Geom2d_Curve & C);\r
224         Geom2dAdaptor_Curve(const Handle_Geom2d_Curve & C,const Standard_Real UFirst,const Standard_Real ULast);\r
225         void Load(const Handle_Geom2d_Curve & C) ;\r
226         void Load(const Handle_Geom2d_Curve & C,const Standard_Real UFirst,const Standard_Real ULast) ;\r
227 };\r
228 \r
229 /**\r
230  * Adaptor3d_Curve\r
231  */\r
232 %{#include "Adaptor3d_Curve.hxx"%}\r
233 \r
234 class Adaptor3d_Curve\r
235 {               \r
236         Adaptor3d_Curve()=0;\r
237         public:\r
238         %rename(value) Value;\r
239         const gp_Pnt Value(const Standard_Real U) const;\r
240 };\r
241 \r
242 //extends the Adaptor3d_Curve class to reduce the JNI overhead when\r
243 //calling a lot of Adaptor3d_Curve.Value\r
244 %extend Adaptor3d_Curve\r
245 {\r
246         public:\r
247         void arrayValues(int size, double u[])\r
248         {\r
249                 for (int i = 0; i < size; i++)\r
250                 {\r
251                         gp_Pnt gp=self->Value(u[3*i]);\r
252                         u[3*i]   = gp.X();\r
253                         u[3*i+1] = gp.Y();\r
254                         u[3*i+2] = gp.Z();\r
255                 }       \r
256         }\r
257 };\r
258 \r
259 /**\r
260  * GeomAdaptor_Curve\r
261  */\r
262 %{#include "GeomAdaptor_Curve.hxx"%}\r
263 \r
264 class GeomAdaptor_Curve: public Adaptor3d_Curve\r
265 {\r
266         %rename(load) Load;\r
267         public:\r
268         GeomAdaptor_Curve();\r
269         GeomAdaptor_Curve(const Handle_Geom_Curve & C);\r
270         GeomAdaptor_Curve(const Handle_Geom_Curve & C,\r
271                 const Standard_Real UFirst,const Standard_Real ULast);\r
272         void Load(const Handle_Geom_Curve & C) ;\r
273         void Load(const Handle_Geom_Curve & C,\r
274                 const Standard_Real UFirst,const Standard_Real ULast) ;\r
275 \r
276 };\r
277 \r
278 \r
279 /**\r
280  * GProp_GProps\r
281  */\r
282  %{#include "GProp_GProps.hxx"%}\r
283 // class GProp_GProps\r
284 // {\r
285 //       public:\r
286 //       %rename(mass) Mass;\r
287 //       GProp_GProps();\r
288 //       Standard_Real Mass() const;\r
289 //};\r
290 class GProp_GProps\r
291 {\r
292         public:\r
293         %rename(mass) Mass;\r
294         %rename(centreOfMass) CentreOfMass;\r
295         %rename(matrixOfInertia) MatrixOfInertia;\r
296         GProp_GProps();\r
297         Standard_Real Mass() const;\r
298         gp_Pnt CentreOfMass() const;\r
299         gp_Mat MatrixOfInertia() const;\r
300 };\r
301 \r
302 %{#include "GProp_PGProps.hxx"%}\r
303 class GProp_PGProps : public GProp_GProps\r
304 {       \r
305 };\r
306 %{#include "GProp_CelGProps.hxx"%}\r
307 class GProp_CelGProps: public GProp_GProps\r
308 {       \r
309 };\r
310 \r
311 %{#include "GProp_SelGProps.hxx"%}\r
312 class GProp_SelGProps: public GProp_GProps\r
313 {       \r
314 };\r
315 \r
316 %{#include "GProp_VelGProps.hxx"%}\r
317 class GProp_VelGProps: public GProp_GProps\r
318 {\r
319 };\r
320 \r
321 \r
322 //%{#include "GProp_CGProps.gxx"%}\r
323 //class GProp_CGProps: public GProp_GProps\r
324 //{     \r
325 //};\r
326 \r
327 //%{#include "GProp_SGProps.gxx"%}\r
328 //class GProp_SGProps: public GProp_GProps\r
329 //{     \r
330 //};\r
331 \r
332 //%{#include "GProp_VGProps.gxx"%}\r
333 //class GProp_VGProps\r
334 //{\r
335 //};\r
336 \r
337  \r
338 /**\r
339  * BRepGProp\r
340  */\r
341 %{#include "BRepGProp.hxx"%}\r
342 class BRepGProp\r
343 {\r
344         public:\r
345         %rename(linearProperties) LinearProperties;\r
346         %rename(surfaceProperties) SurfaceProperties;\r
347         %rename(volumeProperties) VolumeProperties;\r
348         %rename(volumePropertiesGK) VolumePropertiesGK;\r
349         static void LinearProperties(const TopoDS_Shape& shape, GProp_GProps& properties);\r
350         static void VolumeProperties(const TopoDS_Shape& shape, GProp_GProps& properties, const Standard_Boolean onlyClosed = Standard_False) ;\r
351         static Standard_Real VolumeProperties(const TopoDS_Shape& shape, GProp_GProps& properties, const Standard_Real Eps, const Standard_Boolean onlyClosed = Standard_False) ;\r
352         static void SurfaceProperties(const TopoDS_Shape& shape, GProp_GProps& properties) ;\r
353         static Standard_Real SurfaceProperties(const TopoDS_Shape& shape, GProp_GProps& properties, const Standard_Real Eps) ;\r
354                 static Standard_Real VolumePropertiesGK(const TopoDS_Shape& shape, GProp_GProps& properties, const Standard_Real Eps, const Standard_Boolean onlyClosed = Standard_False, const Standard_Boolean isUseSpan = Standard_False, const Standard_Boolean cgFlag = Standard_False, const Standard_Boolean iFlag = Standard_False) ;\r
355 };\r
356 \r
357 /**\r
358  *\r
359  */\r
360 %rename(VOID) IFSelect_RetVoid;\r
361 %rename(DONE) IFSelect_RetDone;\r
362 %rename(ERROR) IFSelect_RetError;\r
363 %rename(FAIL) IFSelect_RetFail;\r
364 %rename(STOP) IFSelect_RetStop;\r
365 enum IFSelect_ReturnStatus {\r
366  IFSelect_RetVoid,\r
367  IFSelect_RetDone,\r
368  IFSelect_RetError,\r
369  IFSelect_RetFail,\r
370  IFSelect_RetStop\r
371 };\r
372  \r
373 %{#include <ShapeAnalysis_FreeBounds.hxx>%}\r
374 class ShapeAnalysis_FreeBounds\r
375 {\r
376         %rename(getClosedWires) GetClosedWires;\r
377         %rename(getOpenWires) GetOpenWires;\r
378         public:\r
379         ShapeAnalysis_FreeBounds(const TopoDS_Shape& shape,\r
380                 const Standard_Boolean splitclosed = Standard_False,\r
381                 const Standard_Boolean splitopen = Standard_True);\r
382         const TopoDS_Compound& GetClosedWires() const;\r
383         const TopoDS_Compound& GetOpenWires() const;\r
384 };\r
385 \r
386 %{#include <GCPnts_UniformDeflection.hxx>%}\r
387 class GCPnts_UniformDeflection\r
388 {\r
389         %rename(initialize) Initialize;\r
390         %rename(nbPoints) NbPoints;\r
391         %rename(parameter) Parameter;\r
392         public:\r
393         GCPnts_UniformDeflection();\r
394         void Initialize(Adaptor3d_Curve& C,const Standard_Real Deflection,\r
395                 const Standard_Real U1,const Standard_Real U2,\r
396                 const Standard_Boolean WithControl = Standard_True) ;\r
397         Standard_Integer NbPoints() const;\r
398         Standard_Real Parameter(const Standard_Integer Index) const;\r
399 };\r
400 \r
401 %{#include <BRepMesh_DiscretRoot.hxx>%}\r
402 class BRepMesh_DiscretRoot\r
403 {\r
404         %rename(setDeflection) SetDeflection;\r
405         %rename(setAngle) SetAngle;\r
406         %rename(deflection) Deflection;\r
407         %rename(angle) Angle;\r
408         %rename(perform) Perform;\r
409         \r
410         protected:\r
411         BRepMesh_DiscretRoot();\r
412         public:\r
413         void SetDeflection(const Standard_Real D) ;\r
414         void SetAngle(const Standard_Real Ang) ;\r
415         Standard_Real Deflection() const;\r
416         Standard_Real Angle() const;\r
417         virtual void Perform();\r
418 };\r
419 \r
420 %{#include <BRepMesh_IncrementalMesh.hxx>%}\r
421 class BRepMesh_IncrementalMesh : public BRepMesh_DiscretRoot\r
422 {\r
423         %rename(perform) Perform;\r
424         %rename(update) Update;\r
425         %rename(isModified) IsModified;\r
426         \r
427         public:\r
428         BRepMesh_IncrementalMesh();\r
429         BRepMesh_IncrementalMesh(const TopoDS_Shape& S,const Standard_Real D,\r
430                 const Standard_Boolean Relatif = Standard_False,\r
431                 const Standard_Real Ang = 0.5);\r
432                 \r
433         void Perform();\r
434         void Update(const TopoDS_Shape& S) ;\r
435         Standard_Boolean IsModified() const;\r
436 };\r
437 \r
438 %{#include <GeomAPI_ProjectPointOnSurf.hxx>%}\r
439 \r
440 %typemap(javacode) GeomAPI_ProjectPointOnSurf\r
441 %{\r
442         public void lowerDistanceParameters(double[] uv)\r
443         {\r
444                 double[] d2=new double[1];\r
445                 lowerDistanceParameters(uv, d2);\r
446                 uv[1]=d2[0];\r
447         }\r
448 %}\r
449 \r
450 class GeomAPI_ProjectPointOnSurf\r
451 {\r
452         %rename(init) Init;\r
453         %rename(nbPoints) NbPoints;\r
454         %rename(lowerDistanceParameters) LowerDistanceParameters;\r
455         %rename(lowerDistance) LowerDistance;\r
456         %rename(point) Point;\r
457         %rename(parameters) Parameters;\r
458         %rename(nearestPoint) NearestPoint;\r
459         public:\r
460         GeomAPI_ProjectPointOnSurf(const gp_Pnt& P,\r
461                 const Handle_Geom_Surface & Surface);\r
462         void Init(const gp_Pnt& P,const Handle_Geom_Surface & surface);\r
463         Standard_Integer NbPoints() const;      \r
464         Quantity_Length LowerDistance() const;\r
465         const gp_Pnt Point(const Standard_Integer Index) const; \r
466         void LowerDistanceParameters(Quantity_Parameter& U,Quantity_Parameter& V) const;\r
467         void Parameters(const Standard_Integer Index,Quantity_Parameter& U,Quantity_Parameter& V) const;\r
468         gp_Pnt NearestPoint() const;\r
469 };\r
470 \r
471 /**\r
472  * BRepAlgo\r
473  */\r
474 %{#include <BRepAlgo.hxx>%}\r
475 class BRepAlgo\r
476 {\r
477         %rename(isValid) IsValid;\r
478         %rename(isTopologicallyValid) IsTopologicallyValid;\r
479         public: \r
480         static Standard_Boolean IsValid(const TopoDS_Shape& S);\r
481         static Standard_Boolean IsTopologicallyValid(const TopoDS_Shape& S);\r
482 };\r