1 // Created on: 1992-06-29
2 // Created by: Remi GILET
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _Geom2dGcc_HeaderFile
18 #define _Geom2dGcc_HeaderFile
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
24 class Geom2dGcc_QualifiedCurve;
25 class Geom2dAdaptor_Curve;
26 class Geom2dGcc_CurveTool;
27 class Geom2dGcc_QualifiedCurve;
28 class Geom2dGcc_Circ2d3Tan;
29 class Geom2dGcc_Circ2d2TanRad;
30 class Geom2dGcc_Circ2d2TanOn;
31 class Geom2dGcc_Circ2dTanOnRad;
32 class Geom2dGcc_Circ2dTanCen;
33 class Geom2dGcc_Lin2d2Tan;
34 class Geom2dGcc_Lin2dTanObl;
35 class Geom2dGcc_QCurve;
36 class Geom2dGcc_CurveToolGeo;
37 class Geom2dGcc_Circ2d2TanOnGeo;
38 class Geom2dGcc_Circ2d2TanRadGeo;
39 class Geom2dGcc_Circ2dTanCenGeo;
40 class Geom2dGcc_Circ2dTanOnRadGeo;
41 class Geom2dGcc_Circ2d3TanIter;
42 class Geom2dGcc_FunctionTanCuCuCu;
43 class Geom2dGcc_Circ2d2TanOnIter;
44 class Geom2dGcc_FunctionTanCuCuOnCu;
45 class Geom2dGcc_Lin2dTanOblIter;
46 class Geom2dGcc_FunctionTanObl;
47 class Geom2dGcc_Lin2d2TanIter;
48 class Geom2dGcc_FunctionTanCuCu;
49 class Geom2dGcc_FunctionTanCuPnt;
50 class Geom2dGcc_FunctionTanCirCu;
53 //! The Geom2dGcc package describes qualified 2D
54 //! curves used in the construction of constrained geometric
55 //! objects by an algorithm provided by the Geom2dGcc package.
56 //! A qualified 2D curve is a curve with a qualifier which
57 //! specifies whether the solution of a construction
58 //! algorithm using the qualified curve (as an argument):
59 //! - encloses the curve, or
60 //! - is enclosed by the curve, or
61 //! - is built so that both the curve and this solution are external to one another, or
62 //! - is undefined (all solutions apply).
63 //! These package methods provide simpler functions to construct a qualified curve.
64 //! Note: the interior of a curve is defined as the left-hand
65 //! side of the curve in relation to its orientation.
73 //! Constructs such a qualified curve that the relative
74 //! position of the solution computed by a construction
75 //! algorithm using the qualified curve to the circle or line is
76 //! not qualified, i.e. all solutions apply.
78 //! Obj is an adapted curve, i.e. an object which is an interface between:
79 //! - the services provided by a 2D curve from the package Geom2d,
80 //! - and those required on the curve by a computation algorithm.
81 //! The adapted curve is created in the following way:
82 //! Handle(Geom2d_Curve) mycurve = ...
84 //! Geom2dAdaptor_Curve Obj ( mycurve )
86 //! The qualified curve is then constructed with this object:
87 //! Geom2dGcc_QualifiedCurve
88 //! myQCurve = Geom2dGcc::Unqualified(Obj);
89 Standard_EXPORT static Geom2dGcc_QualifiedCurve Unqualified (const Geom2dAdaptor_Curve& Obj);
91 //! Constructs such a qualified curve that the solution
92 //! computed by a construction algorithm using the qualified
93 //! curve encloses the curve.
95 //! Obj is an adapted curve, i.e. an object which is an interface between:
96 //! - the services provided by a 2D curve from the package Geom2d,
97 //! - and those required on the curve by a computation algorithm.
98 //! The adapted curve is created in the following way:
99 //! Handle(Geom2d_Curve) mycurve = ...
101 //! Geom2dAdaptor_Curve Obj ( mycurve )
103 //! The qualified curve is then constructed with this object:
104 //! Geom2dGcc_QualifiedCurve
105 //! myQCurve = Geom2dGcc::Enclosing(Obj);
106 Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosing (const Geom2dAdaptor_Curve& Obj);
108 //! Constructs such a qualified curve that the solution
109 //! computed by a construction algorithm using the qualified
110 //! curve is enclosed by the curve.
112 //! Obj is an adapted curve, i.e. an object which is an interface between:
113 //! - the services provided by a 2D curve from the package Geom2d,
114 //! - and those required on the curve by a computation algorithm.
115 //! The adapted curve is created in the following way:
116 //! Handle(Geom2d_Curve) mycurve = ...
118 //! Geom2dAdaptor_Curve Obj ( mycurve )
120 //! The qualified curve is then constructed with this object:
121 //! Geom2dGcc_QualifiedCurve
122 //! myQCurve = Geom2dGcc::Enclosed(Obj);
123 Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosed (const Geom2dAdaptor_Curve& Obj);
125 //! Constructs such a qualified curve that the solution
126 //! computed by a construction algorithm using the qualified
127 //! curve and the curve are external to one another.
129 //! Obj is an adapted curve, i.e. an object which is an interface between:
130 //! - the services provided by a 2D curve from the package Geom2d,
131 //! - and those required on the curve by a computation algorithm.
132 //! The adapted curve is created in the following way:
133 //! Handle(Geom2d_Curve) mycurve = ...
135 //! Geom2dAdaptor_Curve Obj ( mycurve )
137 //! The qualified curve is then constructed with this object:
138 //! Geom2dGcc_QualifiedCurve
139 //! myQCurve = Geom2dGcc::Outside(Obj);
140 Standard_EXPORT static Geom2dGcc_QualifiedCurve Outside (const Geom2dAdaptor_Curve& Obj);
156 friend class Geom2dGcc_CurveTool;
157 friend class Geom2dGcc_QualifiedCurve;
158 friend class Geom2dGcc_Circ2d3Tan;
159 friend class Geom2dGcc_Circ2d2TanRad;
160 friend class Geom2dGcc_Circ2d2TanOn;
161 friend class Geom2dGcc_Circ2dTanOnRad;
162 friend class Geom2dGcc_Circ2dTanCen;
163 friend class Geom2dGcc_Lin2d2Tan;
164 friend class Geom2dGcc_Lin2dTanObl;
165 friend class Geom2dGcc_QCurve;
166 friend class Geom2dGcc_CurveToolGeo;
167 friend class Geom2dGcc_Circ2d2TanOnGeo;
168 friend class Geom2dGcc_Circ2d2TanRadGeo;
169 friend class Geom2dGcc_Circ2dTanCenGeo;
170 friend class Geom2dGcc_Circ2dTanOnRadGeo;
171 friend class Geom2dGcc_Circ2d3TanIter;
172 friend class Geom2dGcc_FunctionTanCuCuCu;
173 friend class Geom2dGcc_Circ2d2TanOnIter;
174 friend class Geom2dGcc_FunctionTanCuCuOnCu;
175 friend class Geom2dGcc_Lin2dTanOblIter;
176 friend class Geom2dGcc_FunctionTanObl;
177 friend class Geom2dGcc_Lin2d2TanIter;
178 friend class Geom2dGcc_FunctionTanCuCu;
179 friend class Geom2dGcc_FunctionTanCuPnt;
180 friend class Geom2dGcc_FunctionTanCirCu;
190 #endif // _Geom2dGcc_HeaderFile