0023024: Update headers of OCCT files
[occt.git] / src / AIS / AIS_ConnectedInteractive.cdl
1 -- Created on: 1997-01-08
2 -- Created by: Robert COUBLANC
3 -- Copyright (c) 1997-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 ConnectedInteractive from AIS inherits InteractiveObject from AIS
24
25         ---Purpose: Defines an Interactive Object through a connection to
26         -- another Interactive   Object, which serves as a
27         -- reference, and which is located elsewhere in the viewer.
28         -- This allows you to use the Connected Interactive
29         -- Object without having to recalculate presentation,
30         -- selection or graphic structure. These are deduced
31         -- from your reference object.
32         -- The relation between the connected interactive object
33         -- and its source is generally one of geometric transformation. 
34         -- AIS_ConnectedInteractive class doesn't support selection
35         -- modes different from 0. Descendants should redefine ComputeSelection()
36         -- method in order to handle other selection modes and generate connected
37         -- sensitive entities properly. Refer to AIS_ConnectedShape class
38         -- for exisiting implementation of a connected interactive object
39         -- for AIS_Shape that supports all standard sub-shape selection modes.
40         -- Warning
41         -- An Interactive entity which is view (or projector)
42         -- dependent requires recalculation of views in hidden
43         -- parts mode depending on the position of the
44         -- projector in each view. You should derive the entity's
45         -- inheritance from ConnectedInteractive and redefine
46         -- its compute method to enable this type of calculation.
47
48 uses
49     Location              from TopLoc,
50     Transformation        from Geom,
51     PresentationManager3d from PrsMgr,
52     GraphicObject         from Graphic2d,
53     PresentationManager2d from PrsMgr,
54     Presentation          from Prs3d,
55     TypeOfPresentation3d  from PrsMgr,
56     Selection             from SelectMgr,
57     Projector             from Prs3d,
58     KindOfInteractive     from AIS
59 raises
60     NotImplemented from Standard
61
62 is
63
64     Create (aTypeOfPresentation3d: TypeOfPresentation3d from PrsMgr = PrsMgr_TOP_AllView) 
65     returns  mutable  ConnectedInteractive  from  AIS;
66         ---Purpose:
67         -- Disconnects the previous view and sets highlight
68         -- mode to 0. This highlights the wireframe presentation
69         -- aTypeOfPresentation3d.
70         -- Top_AllView deactivates hidden line removal.
71     
72     Type(me) returns KindOfInteractive from AIS 
73     is redefined virtual;
74         ---Purpose: Returns KOI_Object
75
76     Signature(me) returns Integer from Standard
77     is redefined virtual;
78         ---Purpose: Returns 1
79
80
81     Connect(me          : mutable; 
82             anotherIObj : InteractiveObject from AIS) is virtual;
83         ---Purpose: Establishes the connection between the Connected
84         -- Interactive Object, anotherIobj, and its reference
85         -- entity. If a previous connection with an Interactive
86         -- Object already exists, it is removed by Disconnect.
87         -- The second syntax also initiates the location of the
88         -- Connected Interactive Object.
89
90     Connect(me:mutable;
91             anotherIobj: InteractiveObject from AIS;
92             aLocation : Location from TopLoc) is virtual;
93         ---Purpose: 
94             
95
96     HasConnection(me) returns Boolean from Standard;
97         ---C++: inline
98         ---Purpose:
99         -- Returns true if there is a connection established
100         -- between the presentation and its source reference.
101         
102     ConnectedTo(me) returns any InteractiveObject from AIS;
103         ---C++: inline
104         ---C++: return const&
105         ---Purpose:
106         -- Returns the connection with the reference Interactive Object.
107
108             
109     Disconnect(me:mutable);
110         ---Purpose: Clears the connection with a source reference. The
111         -- presentation will no longer be displayed.
112         -- Warning Must be done before deleting the presentation.
113
114     Compute(me                   : mutable;
115             aPresentationManager : PresentationManager3d from PrsMgr;
116             aPresentation        : mutable Presentation from Prs3d;
117             aMode                : Integer from Standard = 0)
118         ---Level: Public 
119         ---Purpose: Calculates the view aPresentation and its updates.
120         -- The latter are managed by aPresentationManager.
121         -- The display mode aMode is 0 by default.
122         --    this method is redefined virtual;
123         --          when the instance is connected to another
124         --          InteractiveObject,this method doesn't
125         --          compute anything, but just uses the 
126         --          presentation of this last object, with
127         --          a transformation if there's one stored. 
128     is redefined virtual private;
129
130     Compute(me            : mutable;
131             aProjector    : Projector from Prs3d;
132             aTrsf         : Transformation from Geom;
133             aPresentation : mutable Presentation from Prs3d)
134     is redefined;
135         ---Purpose: Computes the presentation according to a point of view
136         --          given by <aProjector>. 
137         --          To be Used when the associated degenerated Presentations 
138         --          have been transformed by <aTrsf> which is not a Pure
139         --          Translation. The HLR Prs can't be deducted automatically
140         --          WARNING :<aTrsf> must be applied
141         --           to the object to display before computation  !!!
142
143
144     Compute(me:mutable;
145                 aProjector: Projector from Prs3d;
146                 aPresentation: mutable Presentation from Prs3d)
147     is redefined;     
148
149     Compute(me:mutable;
150                 aPresentationManager: PresentationManager2d from PrsMgr;
151                 aPresentation: mutable GraphicObject from Graphic2d;
152                 aMode: Integer from Standard = 0)
153         ---Level: Internal 
154         ---Purpose: this method should fill the presentation according to the
155         --          enumerated mode of the application and to the display parameter
156         --          of the application.
157                 
158     raises NotImplemented from Standard
159     is redefined;
160     
161     ComputeSelection(me:mutable; aSelection :mutable Selection from SelectMgr;
162                                  aMode      : Integer) is redefined virtual private;
163         ---Level: Public 
164         ---Purpose: Generates sensitive entities by copying 
165         -- them from myReference selection, creates and sets an entity 
166         -- owner for this entities and adds them to aSelection
167
168     AcceptShapeDecomposition(me) returns Boolean from Standard is 
169     redefined virtual;
170         ---C++: inline
171
172
173     UpdateLocation(me:mutable) is redefined virtual;
174
175     UpdateLocation(me:mutable;aSel:Selection from SelectMgr) is redefined virtual;
176         ---Purpose: For this class, the  location effect is treated in the
177         --           compute   &     computeSelection  methods.  So     the
178         --        UpdateLocation Methods are redefined to do nothing else
179
180 --   UpdateLocation(me:mutable;P : mutable Presentation from Prs3d) is redefined virtual;
181     
182 fields
183
184     myReference    : InteractiveObject from AIS is protected;
185         ---Purpose: To have the time to Disconnect below, the old is kept for a while. 
186     myOldReference : InteractiveObject from AIS is protected; 
187
188 end ConnectedInteractive;
189
190