Integration of OCCT 6.5.0 from SVN
[occt.git] / src / Bnd / Bnd_Box2d.cdl
1 -- File:        Box2d.cdl
2 -- Created:     Mon Jan 28 11:51:08 1991
3 -- Author:      Remi Lequette
4 --              <rle@topsn3>
5 ---Copyright:    Matra Datavision 1991, 1992
6
7
8 class Box2d from Bnd 
9
10         ---Purpose: Describes a bounding box in 2D space.
11         -- A bounding box is parallel to the axes of the coordinates
12         -- system. If it is finite, it is defined by the two intervals:
13         -- -   [ Xmin,Xmax ], and
14         -- -   [ Ymin,Ymax ].
15         -- A bounding box may be infinite (i.e. open) in one or more
16         -- directions. It is said to be:
17         -- -   OpenXmin if it is infinite on the negative side of the   "X Direction";
18         -- -   OpenXmax if it is infinite on the positive side of the   "X Direction";
19         -- -   OpenYmin if it is infinite on the negative side of the   "Y Direction";
20         -- -   OpenYmax if it is infinite on the positive side of the   "Y Direction";
21         -- -   WholeSpace if it is infinite in all four directions. In
22         --   this case, any point of the space is inside the box;
23         -- -   Void if it is empty. In this case, there is no point included in the box.
24         --  A bounding box is defined by four bounds (Xmin, Xmax, Ymin and Ymax) which
25         --   limit the bounding box if it is finite, six flags (OpenXmin, OpenXmax, OpenYmin,
26         --   OpenYmax, WholeSpace and Void) which describe the bounding box if it is infinite or empty, and
27         -- -   a gap, which is included on both sides in any direction when consulting the finite bounds of the box.
28
29
30 uses    Pnt2d  from gp,
31         Dir2d  from gp,
32         Lin2d  from gp,
33         Trsf2d from gp
34     
35 raises
36     ConstructionError from Standard
37
38 is
39
40     Create returns Box2d from Bnd;
41         ---Purpose: Creates an empty 2D bounding box.
42         -- The constructed box is qualified Void. Its gap is null.
43         ---C++: inline
44
45     SetWhole(me : in out)    is static;
46         ---Purpose: Sets this bounding box so that it covers the whole 2D
47         -- space, i.e. it is infinite in all directions.
48         ---C++: inline
49
50     SetVoid(me : in out)    is static;
51         ---Purpose: Sets this 2D bounding box so that it is empty. All points are outside a void box.
52         ---C++: inline
53
54     Set(me : in out; P : Pnt2d)    is static;
55         ---Purpose: Sets this 2D bounding box so that it bounds
56         --   the point P. This involves first setting this bounding box
57         --   to be void and then adding the point PThe rectangle bounds   the  point <P>.   
58         ---C++: inline
59
60     Set(me : in out; P : Pnt2d; D : Dir2d)    is static;
61         ---Purpose: Sets this 2D bounding box so that it bounds
62         -- the half-line defined by point P and direction D, i.e. all
63         --   points M defined by M=P+u*D, where u is greater than
64         --   or equal to 0, are inside the bounding area. This involves
65         --   first setting this 2D box to be void and then adding the   half-line.
66         ---C++: inline
67
68     Update(me : in out; aXmin, aYmin, aXmax, aYmax : Real)
69         ---Purpose: Enlarges this 2D bounding box, if required, so that it
70         --          contains at least:
71         --   -   interval [ aXmin,aXmax ] in the "X Direction",
72         --   -   interval [ aYmin,aYmax ] in the "Y Direction"
73     is static;
74
75     Update(me : in out; X,Y : Real)
76         ---Purpose:    Adds a point of coordinates (X,Y) to this bounding box.
77     is static;
78
79     GetGap(me) returns Real
80         ---Purpose: Returns the gap of this 2D bounding box.
81         ---C++: inline
82     is static;
83
84     SetGap(me : in out; Tol : Real)
85         ---Purpose: Set the gap of this 2D bounding box to abs(Tol).
86         ---C++: inline
87     is static;
88
89     Enlarge(me : in out; Tol : Real)
90         ---Purpose: Enlarges     the  box  with    a  tolerance  value.
91         --   This means that the minimum values of its X and Y
92         -- intervals of definition, when they are finite, are reduced by
93         -- the absolute value of Tol, while the maximum values are
94         -- increased by the same amount.
95         ---C++: inline
96     is static;
97
98     Get(me; aXmin, aYmin, aXmax, aYmax : out Real)
99         ---Purpose: Returns the bounds of this 2D bounding box. 
100         -- The gap is included. If this bounding box is infinite (i.e. "open"), returned values
101         -- may be equal to +/- Precision::Infinite().
102     raises ConstructionError -- if IsVoid()
103     is static;
104     
105     OpenXmin(me : in out)
106         ---Purpose: The Box will be infinitely long in the Xmin direction.
107         ---Level: Public 
108         ---C++: inline
109     is static;
110     
111     OpenXmax(me : in out)
112         ---Purpose: The Box will be infinitely long in the Xmax direction.
113         ---Level: Public 
114         ---C++: inline
115     is static;
116     
117     OpenYmin(me : in out)
118         ---Purpose: The Box will be infinitely long in the Ymin direction.
119         ---Level: Public 
120         ---C++: inline
121     is static;
122     
123     OpenYmax(me : in out)
124         ---Purpose: The Box will be infinitely long in the Ymax direction.
125         ---Level: Public 
126         ---C++: inline
127     is static;
128     
129     IsOpenXmin(me) returns Boolean
130         ---Purpose: Returns true if this bounding box is open in the Xmin direction.
131         ---C++: inline
132     is static;
133     
134     IsOpenXmax(me) returns Boolean
135         ---Purpose: Returns true if this bounding box is open in the Xmax direction.
136         ---C++: inline
137     is static;
138     
139     IsOpenYmin(me) returns Boolean
140         ---Purpose: Returns true if this bounding box is open in the Ymin direction.
141         ---C++: inline
142     is static;
143     
144     IsOpenYmax(me) returns Boolean
145         ---Purpose: Returns true if this bounding box is open in the Ymax direction.
146         ---C++: inline
147     is static;
148     
149     IsWhole(me) returns Boolean    is static;
150         ---Purpose:
151         -- Returns true if this bounding box is infinite in all 4
152         -- directions (Whole Space flag).
153         ---C++: inline
154  
155     IsVoid(me) returns Boolean    is static;
156         ---Purpose:
157         -- Returns true if this 2D bounding box is empty (Void flag).
158         ---C++: inline
159
160     Transformed(me; T : Trsf2d from gp)
161         ---Purpose: Returns a bounding box which is the result of applying the
162         -- transformation T to this bounding box.
163         -- Warning
164         -- Applying a geometric transformation (for example, a
165         -- rotation) to a bounding box generally increases its
166         -- dimensions. This is not optimal for algorithms which use it.
167     
168     returns Box2d from Bnd    is static;
169
170     Add(me : in out; Other : Box2d)    is static;
171         ---Purpose: Adds the 2d box <Other> to <me>.
172         ---Level: Public 
173     
174     Add(me : in out; P : Pnt2d)    is static;
175         ---Purpose: Adds  the 2d pnt <P> to <me>.
176         ---Level: Public 
177         ---C++: inline
178
179     Add(me : in out; P : Pnt2d; D : Dir2d)    is static;
180         ---Purpose: Extends <me> from the Pnt <P> in the direction <D>.
181         ---Level: Public 
182         ---C++: inline
183     
184     Add(me : in out; D : Dir2d)    is static;
185         ---Purpose: Extends the Box  in the given Direction, i.e. adds
186         --          a half-line. The box may become infinite in 1 or 2
187         --          directions. 
188         ---Level: Public 
189     
190     IsOut(me; P : Pnt2d) returns Boolean    is static;
191         ---Purpose: Returns True if the 2d pnt <P> is out <me>.
192         ---Level: Public 
193     
194     IsOut(me; Other : Box2d) returns Boolean    is static;
195         ---Purpose: Returns True if <Box2d> is out <me>.
196         ---Level: Public 
197
198     IsOut(me; Other : Box2d; T : Trsf2d from gp) returns Boolean    is static;
199         ---Purpose: Returns True if transformed <Box2d> is out <me>.
200         ---Level: Public 
201         ---C++: inline
202
203     IsOut(me; T1 : Trsf2d from gp; Other : Box2d; T2 : Trsf2d from gp)
204     returns Boolean    is static;
205         ---Purpose: Compares  a transformed  bounding with  a    transformed
206         --          bounding. The default implementation is  to make a copy
207         --          of <me> and <Other>, to transform them and to test.
208         ---Level: Public 
209         ---C++: inline
210
211     Dump(me)    is static;
212
213
214 fields  Xmin : Real; 
215         Xmax : Real; 
216         Ymin : Real; 
217         Ymax : Real; 
218         Gap  : Real;
219         Flags : Integer;  -- 6 flags
220
221 end Box2d;