0026377: Passing Handle objects as arguments to functions as non-const reference...
[occt.git] / src / Geom2dInt / Geom2dInt_GInter.hxx
1 // Created on: 1992-06-04
2 // Created by: Jacques GOUSSARD
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _Geom2dInt_GInter_HeaderFile
18 #define _Geom2dInt_GInter_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <Standard_Real.hxx>
25 #include <IntCurve_IntConicConic.hxx>
26 #include <Geom2dInt_TheIntConicCurveOfGInter.hxx>
27 #include <Geom2dInt_TheIntPCurvePCurveOfGInter.hxx>
28 #include <IntRes2d_Intersection.hxx>
29 #include <Standard_Boolean.hxx>
30 #include <Standard_Integer.hxx>
31 #include <TColStd_Array1OfReal.hxx>
32 class Standard_ConstructionError;
33 class Adaptor2d_Curve2d;
34 class Geom2dInt_Geom2dCurveTool;
35 class Geom2dInt_TheProjPCurOfGInter;
36 class Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter;
37 class Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter;
38 class Geom2dInt_TheIntConicCurveOfGInter;
39 class Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter;
40 class Geom2dInt_IntConicCurveOfGInter;
41 class Geom2dInt_TheIntPCurvePCurveOfGInter;
42 class Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter;
43 class Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter;
44 class Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter;
45 class IntRes2d_Domain;
46
47
48
49 class Geom2dInt_GInter  : public IntRes2d_Intersection
50 {
51 public:
52
53   DEFINE_STANDARD_ALLOC
54
55   
56   //! Empty constructor.
57     Geom2dInt_GInter();
58   
59   //! Self Intersection of a curve
60     Geom2dInt_GInter(const Adaptor2d_Curve2d& C, const Standard_Real TolConf, const Standard_Real Tol);
61   
62   //! Self Intersection of a curve with a domain.
63     Geom2dInt_GInter(const Adaptor2d_Curve2d& C, const IntRes2d_Domain& D, const Standard_Real TolConf, const Standard_Real Tol);
64   
65   //! Intersection between 2 curves.
66     Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol);
67   
68   //! Intersection between 2 curves.
69     Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol);
70   
71   //! Intersection between 2 curves.
72     Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol);
73   
74   //! Intersection between 2 curves.
75     Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol);
76   
77   //! Intersection between 2 curves.
78   Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol);
79   
80   //! Intersection between 2 curves.
81     void Perform (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol);
82   
83   //! Intersection between 2 curves.
84   Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Standard_Real TolConf, const Standard_Real Tol);
85   
86   //! Intersection between 2 curves.
87   Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const Standard_Real TolConf, const Standard_Real Tol);
88   
89   //! Intersection between 2 curves.
90     void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol);
91   
92   //! Intersection between 2 curves.
93     void Perform (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol);
94   
95   //! Create a domain from a curve
96   Standard_EXPORT IntRes2d_Domain ComputeDomain (const Adaptor2d_Curve2d& C1, const Standard_Real TolDomain) const;
97
98
99
100
101 protected:
102
103
104
105
106
107 private:
108
109   
110   //! Intersection between 2 curves.
111   Standard_EXPORT void InternalPerform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite);
112   
113   //! Part of InternalCompositePerform function
114   Standard_EXPORT void InternalCompositePerform_noRecurs (const Standard_Integer NbInterC1, const Adaptor2d_Curve2d& C1, const Standard_Integer NumInterC1, const TColStd_Array1OfReal& Tab1, const IntRes2d_Domain& D1, const Standard_Integer NbInterC2, const Adaptor2d_Curve2d& C2, const Standard_Integer NumInterC2, const TColStd_Array1OfReal& Tab2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol);
115   
116   //! Intersection between 2 curves.
117   Standard_EXPORT void InternalCompositePerform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Standard_Integer N1, const Standard_Integer NB1, const TColStd_Array1OfReal& Tab1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Integer N2, const Standard_Integer NB2, const TColStd_Array1OfReal& Tab2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite);
118
119
120   Standard_Real param1inf;
121   Standard_Real param1sup;
122   Standard_Real param2inf;
123   Standard_Real param2sup;
124   IntCurve_IntConicConic intconiconi;
125   Geom2dInt_TheIntConicCurveOfGInter intconicurv;
126   Geom2dInt_TheIntPCurvePCurveOfGInter intcurvcurv;
127
128
129 };
130
131 #define TheCurve Adaptor2d_Curve2d
132 #define TheCurve_hxx <Adaptor2d_Curve2d.hxx>
133 #define TheCurveTool Geom2dInt_Geom2dCurveTool
134 #define TheCurveTool_hxx <Geom2dInt_Geom2dCurveTool.hxx>
135 #define IntCurve_TheProjPCur Geom2dInt_TheProjPCurOfGInter
136 #define IntCurve_TheProjPCur_hxx <Geom2dInt_TheProjPCurOfGInter.hxx>
137 #define IntCurve_TheCurveLocatorOfTheProjPCur Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter
138 #define IntCurve_TheCurveLocatorOfTheProjPCur_hxx <Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx>
139 #define IntCurve_TheLocateExtPCOfTheProjPCur Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter
140 #define IntCurve_TheLocateExtPCOfTheProjPCur_hxx <Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx>
141 #define IntCurve_TheCurveLocatorOfTheProjPCur Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter
142 #define IntCurve_TheCurveLocatorOfTheProjPCur_hxx <Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx>
143 #define IntCurve_TheLocateExtPCOfTheProjPCur Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter
144 #define IntCurve_TheLocateExtPCOfTheProjPCur_hxx <Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx>
145 #define IntCurve_TheIntConicCurve Geom2dInt_TheIntConicCurveOfGInter
146 #define IntCurve_TheIntConicCurve_hxx <Geom2dInt_TheIntConicCurveOfGInter.hxx>
147 #define IntCurve_TheIntersectorOfTheIntConicCurve Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter
148 #define IntCurve_TheIntersectorOfTheIntConicCurve_hxx <Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx>
149 #define IntCurve_TheIntersectorOfTheIntConicCurve Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter
150 #define IntCurve_TheIntersectorOfTheIntConicCurve_hxx <Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx>
151 #define IntCurve_IntConicCurve Geom2dInt_IntConicCurveOfGInter
152 #define IntCurve_IntConicCurve_hxx <Geom2dInt_IntConicCurveOfGInter.hxx>
153 #define IntCurve_TheIntPCurvePCurve Geom2dInt_TheIntPCurvePCurveOfGInter
154 #define IntCurve_TheIntPCurvePCurve_hxx <Geom2dInt_TheIntPCurvePCurveOfGInter.hxx>
155 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter
156 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx <Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx>
157 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter
158 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx <Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx>
159 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter
160 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx <Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx>
161 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter
162 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx <Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx>
163 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter
164 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx <Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx>
165 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter
166 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx <Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx>
167 #define IntCurve_IntCurveCurveGen Geom2dInt_GInter
168 #define IntCurve_IntCurveCurveGen_hxx <Geom2dInt_GInter.hxx>
169
170 #include <IntCurve_IntCurveCurveGen.lxx>
171
172 #undef TheCurve
173 #undef TheCurve_hxx
174 #undef TheCurveTool
175 #undef TheCurveTool_hxx
176 #undef IntCurve_TheProjPCur
177 #undef IntCurve_TheProjPCur_hxx
178 #undef IntCurve_TheCurveLocatorOfTheProjPCur
179 #undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
180 #undef IntCurve_TheLocateExtPCOfTheProjPCur
181 #undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
182 #undef IntCurve_TheCurveLocatorOfTheProjPCur
183 #undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
184 #undef IntCurve_TheLocateExtPCOfTheProjPCur
185 #undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
186 #undef IntCurve_TheIntConicCurve
187 #undef IntCurve_TheIntConicCurve_hxx
188 #undef IntCurve_TheIntersectorOfTheIntConicCurve
189 #undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
190 #undef IntCurve_TheIntersectorOfTheIntConicCurve
191 #undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
192 #undef IntCurve_IntConicCurve
193 #undef IntCurve_IntConicCurve_hxx
194 #undef IntCurve_TheIntPCurvePCurve
195 #undef IntCurve_TheIntPCurvePCurve_hxx
196 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
197 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
198 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
199 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
200 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
201 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
202 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
203 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
204 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
205 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
206 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
207 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
208 #undef IntCurve_IntCurveCurveGen
209 #undef IntCurve_IntCurveCurveGen_hxx
210
211
212
213
214 #endif // _Geom2dInt_GInter_HeaderFile