0025246: Make methods Intervals and NbIntervals const in Adaptor3d_Curve and it desce...
[occt.git] / src / GeomAdaptor / GeomAdaptor_Curve.cdl
1 -- Created on: 1992-09-01
2 -- Created by: Modelistation
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 class Curve from GeomAdaptor inherits Curve from Adaptor3d
18         
19         ---Purpose: This class provides an interface between the services provided by any
20         -- curve from the package Geom and those required of the curve by algorithms which use it.
21       -- Creation of the loaded curve the curve is C1 by piece.
22
23 uses Vec                  from gp,
24      Pnt                  from gp,
25      Circ                 from gp,
26      Elips                from gp,
27      Hypr                 from gp,
28      Parab                from gp,
29      Lin                  from gp,
30      Array1OfReal         from TColStd,
31      Curve                from Geom,
32      BezierCurve          from Geom,
33      BSplineCurve         from Geom,
34      CurveType            from GeomAbs,
35      Shape                from GeomAbs,
36      HCurve               from Adaptor3d
37      
38 raises NoSuchObject from Standard,
39        ConstructionError from Standard,
40        OutOfRange  from Standard,
41        DomainError from Standard
42
43
44 is
45
46    Create 
47    returns Curve from GeomAdaptor;
48         ---C++: inline
49
50    Create(C : Curve from Geom) 
51    returns Curve from GeomAdaptor;
52         ---C++: inline
53
54    Create(C : Curve from Geom; UFirst,ULast : Real)
55    returns Curve from GeomAdaptor
56    raises 
57         ConstructionError from Standard;
58         ---Purpose: ConstructionError is raised if Ufirst>Ulast
59         ---C++: inline
60    
61    Load(me : in out; C : Curve from Geom);
62         ---C++: inline
63    
64    Load(me : in out; C : Curve from Geom; UFirst,ULast : Real)
65    raises 
66         ConstructionError from Standard;
67         ---C++: inline
68         ---Purpose: ConstructionError is raised if Ufirst>Ulast
69
70    Curve(me) returns Curve from Geom
71         ---Purpose:
72         -- Provides a curve inherited from Hcurve from Adaptor.
73         -- This is inherited to provide easy to use constructors.
74         ---C++: return const& 
75         ---C++: inline
76    is static;
77
78
79
80    FirstParameter(me) returns Real
81         ---C++: inline
82    is redefined static;
83
84    LastParameter(me) returns Real
85         ---C++: inline
86    is redefined static;     
87
88    Continuity(me) returns Shape from GeomAbs
89    is redefined static;
90
91    NbIntervals(me; S : Shape from GeomAbs) returns Integer
92         ---Purpose: Returns  the number  of  intervals for  continuity
93         --          <S>. May be one if Continuity(me) >= <S>
94    is redefined static;
95
96    Intervals(me; T : in out Array1OfReal from TColStd; 
97                   S : Shape from GeomAbs)
98         ---Purpose: Stores in <T> the  parameters bounding the intervals
99         --          of continuity <S>.
100         --          
101         --          The array must provide  enough room to  accomodate
102         --          for the parameters. i.e. T.Length() > NbIntervals()
103    raises
104         OutOfRange from Standard 
105    is redefined static;
106     
107    Trim(me; First, Last, Tol : Real) returns HCurve from Adaptor3d
108         ---Purpose: Returns    a  curve equivalent   of  <me>  between
109         --          parameters <First>  and <Last>. <Tol>  is used  to
110         --          test for 3d points confusion.
111    raises
112         OutOfRange from Standard
113         ---Purpose: If <First> >= <Last> 
114    is redefined static;
115     
116    IsClosed(me) returns Boolean
117    is redefined static;
118     
119    IsPeriodic(me) returns Boolean
120    is redefined static;
121
122    Period(me) returns Real
123    raises
124         DomainError from Standard -- if the curve is not periodic
125    is redefined static;
126
127     
128    Value(me; U : Real) returns Pnt from gp
129         --- Purpose : Computes the point of parameter U on the curve 
130    is redefined static;
131
132    D0 (me; U : Real; P : out Pnt from gp)
133         --- Purpose : Computes the point of parameter U.
134    is redefined static;
135
136    D1 (me; U : Real; P : out Pnt from gp ; V : out Vec from gp)
137         --- Purpose : Computes the point of parameter U on the curve 
138         --  with its first derivative.
139         --  
140         --  Warning : On the specific case of BSplineCurve:
141         --  if the curve is cut in interval of continuity at least C1, the
142         --  derivatives are computed on the current interval.
143         --  else the derivatives are computed on the basis curve.
144    is redefined static;
145     
146    D2 (me; U : Real; P : out Pnt from gp; V1, V2 : out Vec from gp)
147         --- Purpose :
148         --  Returns the point P of parameter U, the first and second
149         --  derivatives V1 and V2.
150         --  
151         --  Warning : On the specific case of BSplineCurve:
152         --  if the curve is cut in interval of continuity at least C2, the
153         --  derivatives are computed on the current interval.
154         --  else the derivatives are computed on the basis curve.
155    is redefined static;
156
157    D3 (me; U : Real; P : out Pnt from gp; V1, V2, V3 : out Vec from gp)
158         --- Purpose :
159         --  Returns the point P of parameter U, the first, the second 
160         --  and the third derivative.
161         --  
162         --  Warning : On the specific case of BSplineCurve:
163         --  if the curve is cut in interval of continuity at least C3, the
164         --  derivatives are computed on the current interval.
165         --  else the derivatives are computed on the basis curve.
166    is redefined static;
167         
168    DN (me; U : Real; N : Integer)   returns Vec from gp
169         --- Purpose :
170         --  The returned vector gives the value of the derivative for the 
171         --  order of derivation N.
172         --  Warning : On the specific case of BSplineCurve:
173         --  if the curve is cut in interval of continuity CN, the
174         --  derivatives are computed on the current interval.
175         --  else the derivatives are computed on the basis curve.
176    raises  
177         OutOfRange from Standard
178         --- Purpose : Raised if N < 1.            
179    is redefined static;
180
181
182    Resolution(me; R3d :Real) returns Real
183         ---Purpose : returns the parametric resolution
184    is redefined static;   
185    
186
187    GetType(me) returns CurveType from GeomAbs
188         ---C++: inline
189    is redefined static;
190
191    Line(me) returns Lin from gp
192    raises 
193         NoSuchObject from Standard
194    is redefined static;
195    
196    Circle(me) returns Circ from gp
197    raises 
198         NoSuchObject from Standard
199    is redefined static;
200
201    Ellipse(me) returns Elips from gp
202    raises 
203         NoSuchObject from Standard
204    is redefined static;
205
206    Hyperbola(me) returns  Hypr from gp
207    raises 
208         NoSuchObject from Standard
209    is redefined static;
210
211    Parabola(me) returns Parab from gp
212    raises 
213         NoSuchObject from Standard
214    is redefined static;
215
216     
217    Degree(me) returns Integer
218     raises 
219         NoSuchObject from Standard
220     is redefined static;
221      ---Purpose: 
222      --          this should NEVER make a copy
223      --          of the underlying curve to read
224      --          the relevant information
225      --          
226    IsRational(me) returns Boolean
227     raises 
228         NoSuchObject from Standard
229     is redefined static;
230     
231      ---Purpose: 
232      --          this should NEVER make a copy
233      --          of the underlying curve to read
234      --          the relevant information
235      --             
236    NbPoles(me) returns Integer
237      raises 
238         NoSuchObject from Standard
239     is redefined static;
240
241      ---Purpose: 
242      --          this should NEVER make a copy
243      --          of the underlying curve to read
244      --          the relevant information
245      --            
246    NbKnots(me) returns Integer
247      raises 
248         NoSuchObject from Standard
249     is redefined static;     
250      ---Purpose: 
251      --          this should NEVER make a copy
252      --          of the underlying curve to read
253      --          the relevant information
254      --                    
255
256    Bezier(me) returns BezierCurve from Geom
257    raises 
258         NoSuchObject from Standard
259    is redefined static;
260    ---Purpose : this will NOT make a copy of the
261     --         Bezier Curve : If you want to modify
262     --         the Curve please make a copy yourself
263     --         Also it will NOT trim the surface to
264     --         myFirst/Last.
265     
266    BSpline(me) returns BSplineCurve from Geom
267    raises 
268         NoSuchObject from Standard
269    is redefined static;
270     ---Purpose : this will NOT make a copy of the
271     --         BSpline Curve : If you want to modify
272     --         the Curve please make a copy yourself
273     --         Also it will NOT trim the surface to
274     --         myFirst/Last.
275      
276
277    LocalContinuity(me; U1, U2 : Real) returns Shape from GeomAbs 
278    is static private;
279
280    load(me : in out; C : Curve from Geom; UFirst,ULast : Real)
281    is private;
282    
283 fields 
284
285   myCurve             : Curve            from Geom ;
286   myTypeCurve         : CurveType        from GeomAbs ;
287   myFirst             : Real             from Standard ;
288   myLast              : Real             from Standard;
289   
290 friends
291     class Surface from GeomAdaptor
292     
293 end Curve;
294