\feff0025129: Visualization - add interactive object for Points Cloud objects
[occt.git] / src / AIS / AIS_Shape.cdl
1 -- Created on: 1996-12-20
2 -- Created by: Robert COUBLANC
3 -- Copyright (c) 1996-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 --   GG  :  GER61351 17/11/1999 Change SetColor() with a compatible Quantity_Color instead
18 --                                     the restricted NameOfColor.
19 --           Redefines the Color(),Material(),Transparency() methods 
20 --           for taking in acount the current facing model.
21 --   GG :   BUC60536 The compute methods must be defined "protected" 
22 --      and no more "private"
23
24
25
26 class Shape from AIS inherits InteractiveObject from AIS
27
28         ---Purpose: A framework to manage presentation and selection of shapes.
29         -- AIS_Shape is the interactive object which is used the
30         -- most by   applications. There are standard functions
31         -- available which allow you to prepare selection
32         -- operations on the constituent elements of shapes -
33         -- vertices, edges, faces etc - in an open local context.
34         -- The selection modes specific to "Shape" type objects
35         -- are referred to as Standard Activation Mode. These
36         -- modes are only taken into account in open local
37         -- context and only act on Interactive Objects which
38         -- have redefined the virtual method
39         -- AcceptShapeDecomposition so that it returns true.
40         -- Several advanced functions are also available. These
41         -- include functions to manage deviation angle and
42         -- deviation coefficient - both HLR and non-HLR - of
43         -- an inheriting shape class. These services allow you to
44         -- select one type of shape interactive object for higher
45         -- precision drawing. When you do this, the
46         -- AIS_Drawer::IsOwn... functions corresponding to the
47         -- above deviation angle and coefficient functions return
48         -- true indicating that there is a local setting available
49         -- for the specific object.
50         
51 uses
52     NameOfColor           from Quantity,
53     Color                         from Quantity,
54     Box                   from Bnd,
55     ShapeEnum             from TopAbs,
56     Shape                 from TopoDS,
57     NameOfMaterial        from Graphic3d ,
58     ---NameOfPhysicalMaterial  from Graphic3d ,
59     MaterialAspect        from Graphic3d, 
60     Presentation          from Prs3d,
61     Projector             from Prs3d,
62     PresentationManager3d from PrsMgr,
63     Selection             from SelectMgr,
64     Drawer                from AIS,
65     KindOfInteractive     from AIS,
66     Transformation        from Geom,
67     Drawer                from Prs3d,
68     TypeOfHLR             from Prs3d
69  is
70
71     Create(shap: Shape from TopoDS) 
72     returns Shape from AIS;
73         ---Purpose: Initializes construction of the shape shap from wires,
74         -- edges and vertices.
75         
76     Signature(me) returns Integer from Standard is redefined virtual ;
77         ---Purpose: Returns index 0. This value refers to SHAPE from TopAbs_ShapeEnum
78         
79     Type(me) returns KindOfInteractive from AIS is redefined virtual;
80         ---Purpose: Returns Object as the type of Interactive Object.
81
82     AcceptShapeDecomposition(me) returns Boolean from Standard is redefined virtual;
83         ---Purpose: Returns true if the Interactive Object accepts shape decomposition.
84     
85     Set(me:mutable;ashap : Shape from TopoDS) is static;
86         ---Purpose: Constructs an instance of the shape object ashape.
87         ---C++: inline
88
89     Shape(me)  returns Shape from TopoDS ;
90         ---Purpose: Returns this shape object.
91         ---C++: inline
92         ---C++: return const&
93
94     
95     --------------------------------------------------------------------- 
96     SetOwnDeviationCoefficient(me: mutable) returns Boolean from Standard ;
97         ---Purpose: Sets a local value for deviation coefficient for this specific shape.                                                                                  
98     SetOwnHLRDeviationCoefficient(me: mutable) returns Boolean from Standard ;
99         ---Purpose: Sets a local value for HLR deviation coefficient for this specific shape.                                                             
100     SetOwnDeviationAngle(me: mutable) returns Boolean from Standard ;
101         ---Purpose: Sets a local value for deviation angle for this specific shape.
102         
103     SetOwnHLRDeviationAngle(me: mutable) returns Boolean from Standard ;
104         ---Purpose: Sets a local value for HLR deviation angle for this specific shape.
105     
106
107     SetOwnDeviationCoefficient(me: mutable; aCoefficient: Real from Standard) ;  
108         ---Purpose: Sets a local value for deviation coefficient for this specific shape.
109
110     SetOwnHLRDeviationCoefficient(me: mutable; aCoefficient : Real from Standard) ;  
111         ---Purpose: sets myOwnHLRDeviationCoefficient field in AIS_Drawer &
112         --          recomputes presentation 
113         
114     SetAngleAndDeviation(me:     mutable; anAngle: Real from Standard) ;  
115         ---Purpose: this compute a new angle and Deviation from the value anAngle               
116         --   and set the values stored in myDrawer with these that become local to the shape
117
118     UserAngle(me) returns Real from Standard;
119         ---Purpose: gives back the angle initial value put by the User.
120     
121     SetOwnDeviationAngle(me: mutable; anAngle: Real from Standard) ;  
122         ---Purpose: sets myOwnDeviationAngle field in AIS_Drawer & recomputes presentation
123     
124     
125     SetHLRAngleAndDeviation(me:     mutable; anAngle: Real from Standard) ;  
126         ---Purpose: this compute a new Angle and Deviation from the value anAngle for HLR               
127         --   and set the values stored in myDrawer for with these that become local to the shape
128
129     SetOwnHLRDeviationAngle(me: mutable; anAngle: Real from Standard) ;  
130         ---Purpose: sets myOwnHLRDeviationAngle field in AIS_Drawer & recomputes presentation
131     
132
133     OwnDeviationCoefficient(me; aCoefficient : out Real from Standard ;
134                                 aPreviousCoefficient : out Real from Standard ) returns Boolean from Standard;
135         ---Purpose:   Returns true and the values of the deviation
136         -- coefficient aCoefficient and the previous deviation
137         -- coefficient aPreviousCoefficient. If these values are
138         -- not already set, false is returned.
139     
140     OwnHLRDeviationCoefficient(me; aCoefficient : out Real from Standard;
141                                    aPreviousCoefficient : out Real from Standard ) returns Boolean from Standard;
142         ---Purpose:  Returns   true and the values of the HLR deviation
143         -- coefficient aCoefficient and the previous HLR
144         -- deviation coefficient aPreviousCoefficient. If these
145         -- values are not already set, false is returned.
146                    
147     OwnDeviationAngle(me; anAngle: out Real from Standard;
148                           aPreviousAngle : out Real from Standard ) returns Boolean from Standard;
149         ---Purpose: Returns true and the values of the deviation angle
150         -- anAngle and the previous deviation angle aPreviousAngle.
151         -- If these values are not already set, false is returned.
152     
153
154     OwnHLRDeviationAngle(me; anAngle : out Real from Standard ;
155                              aPreviousAngle : out Real from Standard ) returns Boolean from Standard;
156         ---Purpose: Returns true and the values   of the HLR deviation
157         -- angle anAngle and of the previous HLR deviation
158         -- angle aPreviousAngle. If these values are not
159         -- already set, false is returned.
160
161
162     SetTypeOfHLR(me: mutable; theTypeOfHLR: TypeOfHLR from Prs3d);
163     ---Purpose: Sets the type of HLR algorithm used by the shape
164     ---C++: inline
165     
166     TypeOfHLR(me) returns TypeOfHLR from Prs3d;
167     ---Purpose: Gets the type of HLR algorithm
168     ---C++: inline
169
170
171                     ---Category: Redefine Compute Methods...
172
173     Compute(me                   : mutable;
174             aPresentationManager : PresentationManager3d from PrsMgr;
175             aPresentation        : Presentation from Prs3d;
176             aMode                : Integer from Standard = 0) 
177     is redefined virtual protected;
178
179     Compute(me                   : mutable;
180             aProjector           : Projector from Prs3d;
181             aPresentation        : Presentation from Prs3d)
182     is redefined virtual protected;
183
184     Compute(me                   : mutable;
185             aProjector           : Projector from Prs3d;
186             aTrsf                : Transformation from Geom;
187             aPresentation        : Presentation from Prs3d)
188     is redefined virtual protected;
189     
190
191
192     ComputeSelection(me          : mutable;
193                      aSelection  : Selection from SelectMgr;
194                      aMode       : Integer from Standard)
195     is redefined virtual protected; 
196                                 
197
198             ---Category: The Attributes to be redefined
199
200     
201     SetColor(me:mutable;aColor:NameOfColor from Quantity) 
202     is redefined virtual;
203         ---Purpose: Sets the color aColor in the reconstructed
204         -- compound shape. Acts via the Drawer methods below on the appearance of:
205         -- -   free boundaries:
206         --   AIS_Drawer_FreeBoundaryAspect,
207         -- -   isos: AIS_Drawer_UIsoAspect,
208         --   AIS_Drawer_VIsoAspect,
209         -- -   shared boundaries:
210         --   AIS_Drawer_UnFreeBoundaryAspect,
211         -- -   shading: AIS_Drawer_ShadingAspect,
212         -- -   visible line color in hidden line mode:
213         --   AIS_Drawer_SeenLineAspect
214         -- -   hidden line color in hidden line mode:
215         --   AIS_Drawer_HiddenLineAspect.
216         
217     SetColor(me:mutable;aColor:Color from Quantity) 
218     is redefined virtual;
219
220     UnsetColor(me:mutable) is redefined virtual;
221         ---Purpose: Removes settings for color in the reconstructed compound shape.
222         
223     SetWidth(me:mutable; aValue:Real from Standard) is  redefined virtual;
224         ---Purpose: Sets the value aValue for line width in the reconstructed compound shape.
225     UnsetWidth(me:mutable) is redefined virtual;
226         ---Purpose: Removes the setting for line width in the reconstructed compound shape.
227
228    SetMaterial(me:mutable;aName:NameOfMaterial from Graphic3d) is redefined virtual;
229
230     SetMaterial(me:mutable;aName:MaterialAspect from Graphic3d) is redefined virtual;
231         ---Purpose: Allows you to provide settings for the material aName
232         -- in the reconstructed compound shape.
233         
234     UnsetMaterial(me:mutable) is redefined virtual;
235         --- Purpose: Removes settings for material in the reconstructed compound shape.
236         
237     SetTransparency(me:mutable;aValue : Real from Standard=0.6) is redefined virtual;  
238         ---Purpose: Sets the value aValue for transparency in the reconstructed compound shape.
239     
240     UnsetTransparency(me:mutable) is redefined virtual;
241         ---Purpose: Removes the setting for transparency in the reconstructed compound shape.
242  
243     BoundingBox(me:mutable) returns Box from Bnd is virtual;
244         ---Purpose: Constructs a bounding box with which to reconstruct
245         -- compound topological shapes for presentation.
246         ---C++: return const &
247
248     Color(me) returns NameOfColor from Quantity is redefined;
249         ---Purpose: Returns the NameOfColor attributes of the shape accordingly to
250         --  the current facing model;
251
252     Color(me; aColor: out Color from Quantity) is redefined;
253         ---Purpose: Returns the Color attributes of the shape accordingly to
254         --  the current facing model;
255
256     Material(me) returns NameOfMaterial from Graphic3d is redefined;
257         ---Purpose: Returns the NameOfMaterial attributes of the shape accordingly to
258         --  the current facing model;
259     
260     Transparency(me) returns Real from Standard is redefined;
261         ---Purpose: Returns the transparency attributes of the shape accordingly to
262         --  the current facing model;
263
264
265                     ---Category: 
266
267
268     SelectionType(myclass; aDecompositionMode : Integer from Standard) 
269     returns ShapeEnum from TopAbs;
270         ---Purpose: Activates the same TopAbs shape enumerations as
271         -- those used by SelectionMode assigning a type to the mode aDecompositionMode. 
272
273     SelectionMode(myclass; aShapeType : ShapeEnum from TopAbs) 
274     returns Integer from Standard;
275         ---Purpose: Establishes an equivalence between a mode and the
276         -- type, aShapeType,   of selection. The correspondences are as follows:
277         -- -   mode 0 - Shape
278         -- -   mode 1 - Vertex
279         -- -   mode 2 - Edge
280         -- -   mode 3 - Wire
281         -- -   mode 4 - Face
282         -- -   mode 5 - Shell
283         -- -   mode 6 - Solid
284         -- -   mode 7 - Compsolid
285         -- -   mode 8 - Compound
286
287    LoadRecomputable(me:mutable;TheMode : Integer from Standard) is static protected;
288
289     Compute(me                   : mutable;
290             aProjector           : Projector from Prs3d;
291             aPresentation        : Presentation from Prs3d;
292             ashape               : Shape from TopoDS) is static private;
293
294     setColor (me;
295               theDrawer : Drawer from AIS;
296               theColor  : Color  from Quantity)
297     is protected;
298
299     setWidth (me;
300               theDrawer : Drawer from AIS;
301               theWidth  : Real   from Standard)
302     is protected;
303
304     setTransparency (me;
305                      theDrawer : Drawer from AIS;
306                      theValue  : Real   from Standard)
307     is protected;
308
309 fields
310     myshape            : Shape   from TopoDS   is protected;
311     myBB               : Box     from Bnd      is protected;
312     myCompBB           : Boolean from Standard is protected;
313     myInitAng          : Real    from Standard;
314 end Shape;