78689a73ef7303ec2c41e832839f8ce55f1d85e4
[occt.git] / src / Select3D / Select3D_SensitiveGroup.cdl
1 -- Created on: 1998-04-16
2 -- Created by: Robert COUBLANC
3 -- Copyright (c) 1998-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 class SensitiveGroup from Select3D inherits SensitiveEntity from Select3D
24
25         ---Purpose: A framework to define selection of a sensitive group
26         --          by a sensitive entity which is a set of 3D sensitive entities.
27         --          Remark: 2 modes are possible for rectangle selection
28         --          the group is considered selected
29         --          1) when all the entities inside are selected in the rectangle
30         --          2) only one entity inside is selected by the rectangle
31         --          By default the "Match All entities" mode is set.
32
33 uses
34     Pnt                      from gp,
35     Projector                from Select3D,
36     Lin                      from gp,
37     EntityOwner              from SelectBasics,
38     SensitiveEntity          from Select3D,
39     ListOfSensitive          from Select3D,
40     ListOfBox2d              from SelectBasics,
41     Array1OfPnt2d            from TColgp,
42     Box2d                    from Bnd,
43     Location                 from TopLoc
44
45
46 is
47
48     Create (OwnerId      : EntityOwner from SelectBasics;
49             MatchAll     : Boolean from Standard = Standard_True)
50     returns mutable SensitiveGroup from Select3D;
51         ---Purpose: Constructs an empty sensitive group object.
52         -- This is a set of sensitive 3D entities. The sensitive
53         -- entities will be defined using the function Add to fill
54         -- the entity owner OwnerId. If MatchAll is false, nothing can be added.
55
56     Create(OwnerId       : EntityOwner from SelectBasics;
57            TheList       : in out ListOfSensitive from Select3D;
58            MatchAll      : Boolean from Standard = Standard_True)
59     returns mutable SensitiveGroup from Select3D;
60         ---Purpose: Constructs a sensitive group object defined by the list
61         -- TheList and the entity owner OwnerId. If MatchAll is false, nothing is done.
62
63     Add (me   :mutable; LL: in out ListOfSensitive from Select3D);
64         ---Purpose: Adds the list of sensitive entities LL to the empty
65         -- sensitive group object created at construction time.
66         
67     Add (me   :mutable;aSensitive : SensitiveEntity from Select3D);
68         ---Purpose: Adds the sensitive entity aSensitive to the non-empty
69         -- sensitive group object created at construction time.
70
71     Remove(me:mutable; aSensitive :SensitiveEntity from Select3D);
72
73     Clear(me:mutable) ;
74         ---Purpose: Removes all sensitive entities from the list used at the
75         -- time of construction, or added using the function Add.
76
77     IsIn(me;aSensitive: SensitiveEntity from Select3D)
78     returns Boolean from Standard;
79         ---Purpose: Returns true if the sensitive entity aSensitive is in
80         -- the list used at the time of construction, or added using the function Add.
81     Set(me:mutable; MustMatchAllEntities: Boolean from Standard);
82         ---Purpose: Sets the requirement that all sensitive entities in the
83         -- list used at the time of construction, or added using
84         -- the function Add must be matched.
85         ---C++: inline
86     MustMatchAll(me) returns Boolean from Standard;
87         ---Purpose: Returns true if all sensitive entities in the list used
88         -- at the time of construction, or added using the function Add must be matched.
89         ---C++: inline
90
91
92
93
94     Project (me:mutable;aProjector : Projector from Select3D) 
95     is redefined static;
96         ---Level: Public 
97         ---Purpose: projection of the sensitive primitive in order to
98         --          get 2D boxes for the Sort Algorithm
99
100     Areas   (me:mutable ; boxes : in out ListOfBox2d from SelectBasics) 
101     is redefined static;
102         ---Level: Public 
103         ---Purpose: gives the 2D boxes which represent the segment in the 
104         --          selection process...
105
106
107     MaxBoxes(me) returns Integer from Standard is redefined static;
108
109     GetConnected(me:mutable;aLocation: Location from TopLoc)
110     returns SensitiveEntity from Select3D is redefined static;
111
112
113     SetLocation(me:mutable;aLoc:Location from TopLoc) is redefined static;
114         ---Purpose:  propagation of location on all the sensitive inside...
115     ResetLocation(me:mutable) is redefined static;
116         ---Purpose:  propagation of location on all the sensitive inside...    
117
118     Matches(me  :mutable; 
119             X,Y : Real from Standard;
120             aTol: Real from Standard;
121             DMin: out Real from Standard) 
122     returns Boolean
123     is  redefined static;
124         ---Level: Public 
125         ---Purpose: projection of the sensitive primitive in order to
126         --          get 2D boxes for the Sort Algorithm
127
128     Matches (me  :mutable; 
129              XMin,YMin,XMax,YMax : Real from Standard;
130              aTol: Real from Standard) 
131     returns Boolean
132     is static;
133      
134     Matches (me  :mutable; 
135              Polyline:Array1OfPnt2d from TColgp;
136              aBox:Box2d from Bnd;
137              aTol: Real from Standard) 
138     returns Boolean
139     is redefined virtual;
140         ---Level: Public 
141     
142
143     ComputeDepth(me;EyeLine: Lin from gp) 
144     returns Real from Standard is redefined static;
145         ---Purpose: returns the depth of the touched entity
146
147     
148     SetLastPrj(me:mutable;aPrj:Projector from Select3D) is redefined virtual;
149
150     Set(me:mutable;TheOwnerId: EntityOwner from SelectBasics) is redefined static; 
151     ---Purpose: Sets the owner for all entities in group 
152      
153     GetEntities(me)
154     returns ListOfSensitive from Select3D; 
155     ---Purpose: Gets group content 
156     ---C++: inline
157     ---C++: return const&
158
159
160 fields
161     myList         : ListOfSensitive from Select3D;
162     myMustMatchAll : Boolean from Standard;
163     myLastRank     : Integer from Standard;
164     myLastTol      : ShortReal from Standard;
165     myX,myY        : ShortReal from Standard;
166 end SensitiveGroup;
167