0024070: OpenGL capped object-level clipping planes
[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     PickArgs                 from SelectBasics,
42     Array1OfPnt2d            from TColgp,
43     Box2d                    from Bnd,
44     Location                 from TopLoc
45
46
47 is
48
49     Create (OwnerId      : EntityOwner from SelectBasics;
50             MatchAll     : Boolean from Standard = Standard_True)
51     returns mutable SensitiveGroup from Select3D;
52         ---Purpose: Constructs an empty sensitive group object.
53         -- This is a set of sensitive 3D entities. The sensitive
54         -- entities will be defined using the function Add to fill
55         -- the entity owner OwnerId. If MatchAll is false, nothing can be added.
56
57     Create(OwnerId       : EntityOwner from SelectBasics;
58            TheList       : in out ListOfSensitive from Select3D;
59            MatchAll      : Boolean from Standard = Standard_True)
60     returns mutable SensitiveGroup from Select3D;
61         ---Purpose: Constructs a sensitive group object defined by the list
62         -- TheList and the entity owner OwnerId. If MatchAll is false, nothing is done.
63
64     Add (me   :mutable; LL: in out ListOfSensitive from Select3D);
65         ---Purpose: Adds the list of sensitive entities LL to the empty
66         -- sensitive group object created at construction time.
67         
68     Add (me   :mutable;aSensitive : SensitiveEntity from Select3D);
69         ---Purpose: Adds the sensitive entity aSensitive to the non-empty
70         -- sensitive group object created at construction time.
71
72     Remove(me:mutable; aSensitive :SensitiveEntity from Select3D);
73
74     Clear(me:mutable) ;
75         ---Purpose: Removes all sensitive entities from the list used at the
76         -- time of construction, or added using the function Add.
77
78     IsIn(me;aSensitive: SensitiveEntity from Select3D)
79     returns Boolean from Standard;
80         ---Purpose: Returns true if the sensitive entity aSensitive is in
81         -- the list used at the time of construction, or added using the function Add.
82     Set(me:mutable; MustMatchAllEntities: Boolean from Standard);
83         ---Purpose: Sets the requirement that all sensitive entities in the
84         -- list used at the time of construction, or added using
85         -- the function Add must be matched.
86         ---C++: inline
87     MustMatchAll(me) returns Boolean from Standard;
88         ---Purpose: Returns true if all sensitive entities in the list used
89         -- at the time of construction, or added using the function Add must be matched.
90         ---C++: inline
91
92
93
94
95     Project (me:mutable;aProjector : Projector from Select3D) 
96     is redefined static;
97         ---Level: Public 
98         ---Purpose: projection of the sensitive primitive in order to
99         --          get 2D boxes for the Sort Algorithm
100
101     Areas   (me:mutable ; boxes : in out ListOfBox2d from SelectBasics) 
102     is redefined static;
103         ---Level: Public 
104         ---Purpose: gives the 2D boxes which represent the segment in the 
105         --          selection process...
106
107
108     MaxBoxes(me) returns Integer from Standard is redefined static;
109
110     GetConnected(me:mutable;aLocation: Location from TopLoc)
111     returns SensitiveEntity from Select3D is redefined static;
112
113
114     SetLocation(me:mutable;aLoc:Location from TopLoc) is redefined static;
115         ---Purpose:  propagation of location on all the sensitive inside...
116     ResetLocation(me:mutable) is redefined static;
117         ---Purpose:  propagation of location on all the sensitive inside...    
118
119     Matches (me : mutable;
120              thePickArgs : PickArgs from SelectBasics;
121              theMatchDMin, theMatchDepth : out Real from Standard)
122     returns Boolean is redefined static;
123     ---Level: Public
124     ---Purpose: Checks whether the sensitive entity matches the picking
125     -- detection area (close to the picking line).
126     -- For details please refer to base class declaration.
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     Set(me:mutable;TheOwnerId: EntityOwner from SelectBasics) is redefined static; 
143     ---Purpose: Sets the owner for all entities in group 
144      
145     GetEntities(me)
146     returns ListOfSensitive from Select3D; 
147     ---Purpose: Gets group content 
148     ---C++: inline
149     ---C++: return const&
150
151
152 fields
153     myList         : ListOfSensitive from Select3D;
154     myMustMatchAll : Boolean from Standard;
155 end SensitiveGroup;
156