0030686: Visualization, SelectMgr_ViewerSelector - sorting issues of transformation...
[occt.git] / src / IntPatch / IntPatch_TheSOnBounds.hxx
1 // Created on: 1992-05-06
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 _IntPatch_TheSOnBounds_HeaderFile
18 #define _IntPatch_TheSOnBounds_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <Standard_Boolean.hxx>
25 #include <IntPatch_SequenceOfSegmentOfTheSOnBounds.hxx>
26 #include <IntPatch_SequenceOfPathPointOfTheSOnBounds.hxx>
27 #include <Standard_Real.hxx>
28 #include <Standard_Integer.hxx>
29 class StdFail_NotDone;
30 class Standard_OutOfRange;
31 class Standard_ConstructionError;
32 class Adaptor3d_HVertex;
33 class Adaptor2d_HCurve2d;
34 class IntPatch_HCurve2dTool;
35 class IntPatch_HInterTool;
36 class Adaptor3d_TopolTool;
37 class IntPatch_ArcFunction;
38 class IntPatch_ThePathPointOfTheSOnBounds;
39 class IntPatch_TheSegmentOfTheSOnBounds;
40
41 class IntPatch_TheSOnBounds 
42 {
43 public:
44
45   DEFINE_STANDARD_ALLOC
46
47   
48   //! Empty constructor.
49   Standard_EXPORT IntPatch_TheSOnBounds();
50   
51   //! Algorithm to find the points and parts of curves of Domain
52   //! (domain of of restriction of a surface) which verify
53   //! F = 0.
54   //! TolBoundary defines if a curve is on Q.
55   //! TolTangency defines if a point is on Q.
56   Standard_EXPORT void Perform (IntPatch_ArcFunction& F, const Handle(Adaptor3d_TopolTool)& Domain, const Standard_Real TolBoundary, const Standard_Real TolTangency, const Standard_Boolean RecheckOnRegularity = Standard_False);
57   
58   //! Returns True if the calculus was successful.
59     Standard_Boolean IsDone() const;
60   
61   //! Returns true if all arc of the Arcs are solution (inside
62   //! the surface).
63   //! An exception is raised if IsDone returns False.
64     Standard_Boolean AllArcSolution() const;
65   
66   //! Returns the number of resulting points.
67   //! An exception is raised if IsDone returns False (NotDone).
68     Standard_Integer NbPoints() const;
69   
70   //! Returns the resulting point of range Index.
71   //! The exception NotDone is raised if IsDone() returns
72   //! False.
73   //! The exception OutOfRange is raised if
74   //! Index <= 0 or Index > NbPoints.
75     const IntPatch_ThePathPointOfTheSOnBounds& Point (const Standard_Integer Index) const;
76   
77   //! Returns the number of the resulting segments.
78   //! An exception is raised if IsDone returns False (NotDone).
79     Standard_Integer NbSegments() const;
80   
81   //! Returns the resulting segment of range Index.
82   //! The exception NotDone is raised if IsDone() returns
83   //! False.
84   //! The exception OutOfRange is raised if
85   //! Index <= 0 or Index > NbPoints.
86     const IntPatch_TheSegmentOfTheSOnBounds& Segment (const Standard_Integer Index) const;
87
88
89
90
91 protected:
92
93
94
95
96
97 private:
98
99
100
101   Standard_Boolean done;
102   Standard_Boolean all;
103   IntPatch_SequenceOfSegmentOfTheSOnBounds sseg;
104   IntPatch_SequenceOfPathPointOfTheSOnBounds spnt;
105
106
107 };
108
109 #define TheVertex Handle(Adaptor3d_HVertex)
110 #define TheVertex_hxx <Adaptor3d_HVertex.hxx>
111 #define TheArc Handle(Adaptor2d_HCurve2d)
112 #define TheArc_hxx <Adaptor2d_HCurve2d.hxx>
113 #define TheArcTool IntPatch_HCurve2dTool
114 #define TheArcTool_hxx <IntPatch_HCurve2dTool.hxx>
115 #define TheSOBTool IntPatch_HInterTool
116 #define TheSOBTool_hxx <IntPatch_HInterTool.hxx>
117 #define Handle_TheTopolTool Handle(Adaptor3d_TopolTool)
118 #define TheTopolTool Adaptor3d_TopolTool
119 #define TheTopolTool_hxx <Adaptor3d_TopolTool.hxx>
120 #define TheFunction IntPatch_ArcFunction
121 #define TheFunction_hxx <IntPatch_ArcFunction.hxx>
122 #define IntStart_ThePathPoint IntPatch_ThePathPointOfTheSOnBounds
123 #define IntStart_ThePathPoint_hxx <IntPatch_ThePathPointOfTheSOnBounds.hxx>
124 #define IntStart_SequenceOfPathPoint IntPatch_SequenceOfPathPointOfTheSOnBounds
125 #define IntStart_SequenceOfPathPoint_hxx <IntPatch_SequenceOfPathPointOfTheSOnBounds.hxx>
126 #define IntStart_TheSegment IntPatch_TheSegmentOfTheSOnBounds
127 #define IntStart_TheSegment_hxx <IntPatch_TheSegmentOfTheSOnBounds.hxx>
128 #define IntStart_SequenceOfSegment IntPatch_SequenceOfSegmentOfTheSOnBounds
129 #define IntStart_SequenceOfSegment_hxx <IntPatch_SequenceOfSegmentOfTheSOnBounds.hxx>
130 #define IntStart_SearchOnBoundaries IntPatch_TheSOnBounds
131 #define IntStart_SearchOnBoundaries_hxx <IntPatch_TheSOnBounds.hxx>
132
133 #include <IntStart_SearchOnBoundaries.lxx>
134
135 #undef TheVertex
136 #undef TheVertex_hxx
137 #undef TheArc
138 #undef TheArc_hxx
139 #undef TheArcTool
140 #undef TheArcTool_hxx
141 #undef TheSOBTool
142 #undef TheSOBTool_hxx
143 #undef Handle_TheTopolTool
144 #undef TheTopolTool
145 #undef TheTopolTool_hxx
146 #undef TheFunction
147 #undef TheFunction_hxx
148 #undef IntStart_ThePathPoint
149 #undef IntStart_ThePathPoint_hxx
150 #undef IntStart_SequenceOfPathPoint
151 #undef IntStart_SequenceOfPathPoint_hxx
152 #undef IntStart_TheSegment
153 #undef IntStart_TheSegment_hxx
154 #undef IntStart_SequenceOfSegment
155 #undef IntStart_SequenceOfSegment_hxx
156 #undef IntStart_SearchOnBoundaries
157 #undef IntStart_SearchOnBoundaries_hxx
158
159
160
161
162 #endif // _IntPatch_TheSOnBounds_HeaderFile