0024428: Implementation of LGPL license
[occt.git] / src / ApproxInt / ApproxInt_Approx.cdl
1 -- Created on: 1993-03-17
2 -- Created by: Laurent BUCHARD
3 -- Copyright (c) 1993-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
9 -- under the terms of the GNU Lesser General Public 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 generic class Approx from ApproxInt (
18     ThePSurface        as any;
19     ThePSurfaceTool    as any;
20     TheISurface        as any;
21     TheISurfaceTool    as any;
22     TheWLine           as Transient)
23     
24 uses 
25     MCurvesToBSpCurve from Approx,
26     MultiBSpCurve     from AppParCurves,
27     Pnt               from gp,
28     Pnt2d             from gp,
29     Vec               from gp,
30     Vec2d             from gp,
31     ParametrizationType from Approx   
32      
33 raises 
34     OutOfRange    from Standard,
35     NotDone       from StdFail
36     
37 class ThePrmPrmSvSurfaces instantiates PrmPrmSvSurfaces from ApproxInt (
38     ThePSurface,
39     ThePSurfaceTool,
40     TheWLine); 
41
42 class TheImpPrmSvSurfaces instantiates ImpPrmSvSurfaces from ApproxInt (
43     ThePSurface,
44     ThePSurfaceTool,
45     TheISurface,
46     TheISurfaceTool,
47     TheWLine); 
48
49 class TheMultiLine instantiates MultiLine from ApproxInt (
50     TheWLine,
51     SvSurfaces  from ApproxInt);
52
53 class TheMultiLineTool instantiates MultiLineTool from ApproxInt(
54     TheMultiLine,
55     SvSurfaces  from ApproxInt);
56     
57 class TheComputeLine instantiates BSplComputeLine from Approx (
58     TheMultiLine,
59     TheMultiLineTool);
60
61 class TheComputeLineBezier instantiates ComputeLine from Approx (
62     TheMultiLine,
63     TheMultiLineTool);
64
65 is
66
67     Create
68     returns Approx from ApproxInt;
69
70     Perform(me: in out;
71             Surf1,Surf2 : ThePSurface;
72             aLine       : TheWLine;
73             ApproxXYZ   : Boolean from Standard = Standard_True;
74             ApproxU1V1  : Boolean from Standard = Standard_True;
75             ApproxU2V2  : Boolean from Standard = Standard_True;
76             indicemin   : Integer from Standard = 0;
77             indicemax   : Integer from Standard = 0)
78     is static;
79     
80     Perform(me: in out;
81             aLine       : TheWLine;
82             ApproxXYZ   : Boolean from Standard = Standard_True;
83             ApproxU1V1  : Boolean from Standard = Standard_True;
84             ApproxU2V2  : Boolean from Standard = Standard_True;
85             indicemin   : Integer from Standard = 0;
86             indicemax   : Integer from Standard = 0)        
87     is static;
88
89     
90     SetParameters(me: in out; Tol3d               : Real    from Standard;
91                               Tol2d               : Real    from Standard;
92                               DegMin              : Integer from Standard;
93                               DegMax              : Integer from Standard;
94                               NbIterMax           : Integer from Standard;
95                               ApproxWithTangency  : Boolean from Standard = Standard_True; 
96                               Parametrization     : ParametrizationType from Approx = Approx_ChordLength)
97     is static;
98
99     SetParameters(me: in out; Tol3d               : Real    from Standard;
100                               Tol2d               : Real    from Standard;
101                               RelativeTol         : Boolean from Standard;
102                               DegMin              : Integer from Standard;
103                               DegMax              : Integer from Standard;
104                               NbIterMax           : Integer from Standard;
105                               NbPntMax            : Integer from Standard;
106                               ApproxWithTangency  : Boolean from Standard = Standard_True; 
107                               Parametrization     : ParametrizationType from Approx = Approx_ChordLength)
108     is static;
109
110     Perform(me:in out) 
111     is static;
112
113     TolReached3d(me) returns Real from Standard
114     is static;
115
116     TolReached2d(me) returns Real from Standard
117     is static;
118
119     IsDone(me) returns Boolean from Standard 
120     is static;
121     
122     NbMultiCurves(me) returns Integer from Standard 
123     is static ;
124     
125     Value(me; Index: Integer from Standard) 
126         ---C++: return const &
127     returns MultiBSpCurve from AppParCurves 
128     is static;
129
130
131
132 ---- private methods
133
134     Perform(me: in out ;Surf1       : ThePSurface;
135                         Surf2       : TheISurface;
136                         aLine       : TheWLine;
137                         ApproxXYZ   : Boolean from Standard;
138                         ApproxU1V1  : Boolean from Standard;
139                         ApproxU2V2  : Boolean from Standard;
140                         indicemin   : Integer from Standard;
141                         indicemax   : Integer from Standard)                          
142
143     is static private;
144
145     Perform(me: in out ;Surf1       : TheISurface;
146                         Surf2       : ThePSurface;
147                         aLine       : TheWLine;
148                         ApproxXYZ   : Boolean from Standard;
149                         ApproxU1V1  : Boolean from Standard;
150                         ApproxU2V2  : Boolean from Standard;
151                         indicemin   : Integer from Standard;
152                         indicemax   : Integer from Standard) 
153     is static private;
154     
155     UpdateTolReached(me: in out)
156     is static private;
157
158 fields
159     myComputeLine       : TheComputeLine       from ApproxInt;
160     myComputeLineBezier : TheComputeLineBezier from ApproxInt;    
161     myBezToBSpl         : MCurvesToBSpCurve    from Approx;
162     myTolReached        : Boolean              from Standard; 
163     myApproxBez         : Boolean              from Standard;
164     
165     myWithTangency      : Boolean               from Standard;
166     myTol3d             : Real                  from Standard;
167     myTol2d             : Real                  from Standard;
168     myRelativeTol       : Boolean               from Standard;
169     myDegMin            : Integer               from Standard;
170     myDegMax            : Integer               from Standard;    
171     myNbPntMax          : Integer               from Standard;        
172     myNbIterMax         : Integer               from Standard;        
173
174     myMinFactorXYZ      : Real                  from Standard;    
175     myMinFactorUV       : Real                  from Standard;
176     myTolReached3d      : Real                  from Standard;    
177     myTolReached2d      : Real                  from Standard;
178
179 end Approx;