42cf5bc1 |
1 | // Created on: 1996-12-11 |
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 | #ifndef _AIS_InteractiveObject_HeaderFile |
18 | #define _AIS_InteractiveObject_HeaderFile |
19 | |
42cf5bc1 |
20 | #include <Aspect_TypeOfFacingModel.hxx> |
42cf5bc1 |
21 | #include <AIS_KindOfInteractive.hxx> |
2ec85268 |
22 | #include <Graphic3d_NameOfMaterial.hxx> |
23 | #include <PrsMgr_TypeOfPresentation3d.hxx> |
24 | #include <SelectMgr_SelectableObject.hxx> |
25 | #include <TColStd_ListOfInteger.hxx> |
26 | #include <TColStd_ListOfTransient.hxx> |
27 | #include <Quantity_Color.hxx> |
28 | |
42cf5bc1 |
29 | class AIS_InteractiveContext; |
42cf5bc1 |
30 | class Graphic3d_MaterialAspect; |
31 | class Prs3d_Presentation; |
32 | class Prs3d_BasicAspect; |
33 | class Bnd_Box; |
34 | |
42cf5bc1 |
35 | //! Defines a class of objects with display and selection services. |
36 | //! Entities which are visualized and selected are |
37 | //! Interactive Objects. You can make use of classes of |
38 | //! standard Interactive Objects for which all necessary |
39 | //! methods have already been programmed, or you can |
40 | //! implement your own classes of Interactive Objects. |
41 | //! Specific attributes of entities such as arrow aspect for |
42 | //! dimensions must be loaded in a Drawer. This Drawer |
43 | //! is then applied to the Interactive Object in view. |
44 | //! There are four types of Interactive Object in AIS: the |
45 | //! construction element or Datum, the Relation, which |
46 | //! includes both dimensions and constraints, the Object, |
47 | //! and finally, when the object is of an unknown type, the None type. |
48 | //! Inside these categories, a signature, or index, |
49 | //! provides the possibility of additional characterization. |
50 | //! By default, the Interactive Object has a None type |
51 | //! and a signature of 0. If you want to give a particular |
52 | //! type and signature to your interactive object, you must |
53 | //! redefine the methods, Signature and Type. |
54 | //! Warning |
55 | //! In the case of attribute methods, methods for |
56 | //! standard attributes are virtual. They must be |
57 | //! redefined by the inheriting classes. Setcolor for a |
58 | //! point and Setcolor for a plane, for example, do not |
59 | //! affect the same attributes in the Drawer. |
60 | class AIS_InteractiveObject : public SelectMgr_SelectableObject |
61 | { |
2ec85268 |
62 | friend class AIS_InteractiveContext; |
63 | DEFINE_STANDARD_RTTIEXT(AIS_InteractiveObject, SelectMgr_SelectableObject) |
42cf5bc1 |
64 | public: |
65 | |
42cf5bc1 |
66 | //! Returns the kind of Interactive Object: |
67 | //! - None |
68 | //! - Datum |
69 | //! - Relation |
70 | //! - Object |
71 | //! By default, the interactive object has a None type. |
72 | //! Because specific shapes entail different behavior |
73 | //! according to their sub-shapes, you may need to |
74 | //! create a Local Context. This will allow you to |
75 | //! specify the additional characteristics which you |
76 | //! need to handle these shapes. |
77 | Standard_EXPORT virtual AIS_KindOfInteractive Type() const; |
78 | |
79 | //! Specifies additional characteristics of Interactive |
80 | //! Objects. A signature is, in fact, an index with integer |
81 | //! values assigned different properties. |
82 | //! This method is frequently used in conjuction with |
83 | //! Type to give a particular type and signature to an |
84 | //! Interactive Object. By default, the Interactive Object |
85 | //! has a None type and a signature of 0. Among the |
86 | //! datums, this signature is attributed to the shape |
87 | //! The remaining datums have the following default signatures: |
88 | //! - Point signature 1 |
89 | //! - Axis signature 2 |
90 | //! - Trihedron signature 3 |
91 | //! - PlaneTrihedron signature 4 |
92 | //! - Line signature 5 |
93 | //! - Circle signature 6 |
94 | //! - Plane signature 7. |
95 | Standard_EXPORT virtual Standard_Integer Signature() const; |
96 | |
97 | //! Informs the graphic context that the interactive Object |
98 | //! may be decomposed into sub-shapes for dynamic selection. |
99 | //! The most used Interactive Object is AIS_Shape. |
100 | //! Activation methods for standard selection modes are |
101 | //! proposed in the Interactive Context. These include |
102 | //! selection by vertex or by edges. For datums with the |
103 | //! same behavior as AIS_Shape, such as vetices and |
104 | //! edges, we must redefine the virtual method so that |
105 | //! AcceptShapeDecomposition returns false. |
106 | //! Rule for selection : |
107 | //! Mode 0 : Selection of the interactive Object itself |
108 | //! Mode 1 : Selection of vertices |
109 | //! Mode 2 : Selection Of Edges |
110 | //! Mode 3 : Selection Of Wires |
111 | //! Mode 4 : Selection Of Faces ... |
2ec85268 |
112 | virtual Standard_Boolean AcceptShapeDecomposition() const { return Standard_False; } |
113 | |
42cf5bc1 |
114 | //! change the current facing model apply on polygons for |
115 | //! SetColor(), SetTransparency(), SetMaterial() methods |
116 | //! default facing model is Aspect_TOFM_TWO_SIDE. This mean that attributes is |
117 | //! applying both on the front and back face. |
118 | Standard_EXPORT void SetCurrentFacingModel (const Aspect_TypeOfFacingModel aModel = Aspect_TOFM_BOTH_SIDE); |
119 | |
120 | //! Returns the current facing model which is in effect. |
121 | Standard_EXPORT Aspect_TypeOfFacingModel CurrentFacingModel() const; |
122 | |
123 | Standard_EXPORT virtual void SetColor (const Quantity_Color& aColor); |
124 | |
125 | //! only the interactive obj knowns which Drawer attribute |
126 | //! is affected by the color (ex: for a wire, it's the |
127 | //! wireaspect field of the drawer, but for a vertex, only |
128 | //! the point aspect field is affected by the color) |
129 | //! WARNING : Do not forget to set the corresponding fields |
130 | //! here (hasOwnColor and myOwnColor) |
131 | Standard_EXPORT virtual void SetColor (const Quantity_NameOfColor aColor); |
132 | |
133 | //! Removes color settings. Only the Interactive Object |
134 | //! knows which Drawer attribute is affected by the color |
135 | //! setting. For a wire, for example, wire aspect is the |
136 | //! attribute affected. For a vertex, however, only point |
137 | //! aspect is affected by the color setting. |
138 | Standard_EXPORT virtual void UnsetColor(); |
139 | |
140 | //! Allows you to provide the setting aValue for width. |
141 | //! Only the Interactive Object knows which Drawer |
142 | //! attribute is affected by the width setting. |
143 | Standard_EXPORT virtual void SetWidth (const Standard_Real aValue); |
144 | |
145 | Standard_EXPORT virtual void UnsetWidth(); |
146 | |
147 | //! Returns true if the class of objects accepts the display mode aMode. |
148 | //! The interactive context can have a default mode of |
149 | //! representation for the set of Interactive Objects. This |
150 | //! mode may not be accepted by a given class of |
151 | //! objects. Consequently, this virtual method allowing us |
152 | //! to get information about the class in question must be implemented. |
153 | Standard_EXPORT virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer aMode) const; |
154 | |
155 | //! Returns the default display mode. This method is to |
156 | //! be implemented when the main mode is not mode 0. |
157 | Standard_EXPORT virtual Standard_Integer DefaultDisplayMode() const; |
158 | |
159 | //! Updates the active presentation; if <AllModes> = Standard_True |
160 | //! all the presentations inside are recomputed. |
161 | //! IMPORTANT: It is preferable to call Redisplay method of |
162 | //! corresponding AIS_InteractiveContext instance for cases when it |
163 | //! is accessible. This method just redirects call to myCTXPtr, |
164 | //! so this class field must be up to date for proper result. |
165 | Standard_EXPORT void Redisplay (const Standard_Boolean AllModes = Standard_False); |
166 | |
167 | //! Sets the infinite state flag aFlage. |
168 | //! if <aFlag> = True , the interactiveObject is |
169 | //! considered as infinite, i.e. its graphic presentations |
170 | //! are not taken in account for View FitAll... |
171 | Standard_EXPORT void SetInfiniteState (const Standard_Boolean aFlag = Standard_True); |
42cf5bc1 |
172 | |
173 | //! Returns true if the interactive object is infinite. In this |
174 | //! case, its graphic presentations are not taken into |
175 | //! account in the fit-all view. |
2ec85268 |
176 | Standard_Boolean IsInfinite() const { return myInfiniteState; } |
177 | |
178 | //! Indicates whether the Interactive Object has a pointer to an interactive context. |
179 | Standard_Boolean HasInteractiveContext() const { return myCTXPtr != NULL; } |
180 | |
42cf5bc1 |
181 | //! Returns the context pointer to the interactive context. |
182 | Standard_EXPORT Handle(AIS_InteractiveContext) GetContext() const; |
183 | |
184 | //! Sets the interactive context aCtx and provides a link |
185 | //! to the default drawing tool or "Drawer" if there is none. |
186 | Standard_EXPORT virtual void SetContext (const Handle(AIS_InteractiveContext)& aCtx); |
187 | |
188 | //! Returns true if the object has an owner attributed to it. |
189 | //! The owner can be a shape for a set of sub-shapes or |
190 | //! a sub-shape for sub-shapes which it is composed of, |
191 | //! and takes the form of a transient. |
192 | Standard_EXPORT Standard_Boolean HasOwner() const; |
193 | |
194 | //! Returns the owner of the Interactive Object. |
195 | //! The owner can be a shape for a set of sub-shapes or |
196 | //! a sub-shape for sub-shapes which it is composed of, |
197 | //! and takes the form of a transient. |
198 | //! There are two types of owners: |
199 | //! - Direct owners, decomposition shapes such as |
200 | //! edges, wires, and faces. |
201 | //! - Users, presentable objects connecting to sensitive |
202 | //! primitives, or a shape which has been decomposed. |
2ec85268 |
203 | const Handle(Standard_Transient)& GetOwner() const { return myOwner; } |
204 | |
205 | //! Allows you to attribute the owner theApplicativeEntity to |
42cf5bc1 |
206 | //! an Interactive Object. This can be a shape for a set of |
207 | //! sub-shapes or a sub-shape for sub-shapes which it |
208 | //! is composed of. The owner takes the form of a transient. |
2ec85268 |
209 | void SetOwner (const Handle(Standard_Transient)& theApplicativeEntity) { myOwner = theApplicativeEntity; } |
210 | |
42cf5bc1 |
211 | //! Each Interactive Object has methods which allow us |
212 | //! to attribute an Owner to it in the form of a Transient. |
213 | //! This method removes the owner from the graphic entity. |
214 | Standard_EXPORT void ClearOwner(); |
42cf5bc1 |
215 | |
216 | //! Returns true if the Interactive Object has a display |
217 | //! mode setting. Otherwise, it is displayed in Neutral Point. |
2ec85268 |
218 | Standard_Boolean HasDisplayMode() const { return myDisplayMode != -1; } |
219 | |
42cf5bc1 |
220 | //! Sets the display mode aMode for the interactive object. |
221 | //! An object can have its own temporary display mode, |
222 | //! which is different from that proposed by the interactive context. |
223 | //! The range of possibilities currently proposed is the following: |
224 | //! - AIS_WireFrame |
225 | //! - AIS_Shaded |
226 | //! This range can, however, be extended through the creation of new display modes. |
227 | Standard_EXPORT void SetDisplayMode (const Standard_Integer aMode); |
2ec85268 |
228 | |
42cf5bc1 |
229 | //! Removes display mode settings from the interactive object. |
2ec85268 |
230 | void UnsetDisplayMode() { myDisplayMode = -1; } |
231 | |
42cf5bc1 |
232 | //! Returns the display mode setting of the Interactive Object. |
233 | //! The range of possibilities is the following: |
234 | //! - AIS_WireFrame |
235 | //! - AIS_Shaded |
236 | //! This range can, however, be extended through the |
237 | //! creation of new display modes. |
2ec85268 |
238 | Standard_Integer DisplayMode() const { return myDisplayMode; } |
c3282ec1 |
239 | |
42cf5bc1 |
240 | //! Returns the selection priority setting. -1 indicates that there is none. |
241 | //! You can modify the selection priority of an owner to |
242 | //! make one entity more selectionable than another one. |
243 | //! The default selection priority for an owner is 5, for |
244 | //! example. To increase selection priority, choose a |
245 | //! setting between 5 and 10. An entity with priority 7 will |
246 | //! take priority over one with a setting of 6 if both |
247 | //! objects are selected at the same time. |
248 | //! You could give vertices priority 8, edges priority 7, |
249 | //! faces priority 6, and shapes priority 5. If a vertex, an |
250 | //! edge and a face are simultaneously detected during |
251 | //! selection, only the vertex will then be highlighted. |
252 | //! For trihedra, for example, the default priorities are the following four: |
253 | //! - priority 1 - a trihedron |
254 | //! - priority 5 - its origin |
255 | //! - priority 3 - its axes |
256 | //! - priority 2 - its planes |
2ec85268 |
257 | Standard_Integer SelectionPriority() const { return mySelPriority; } |
258 | |
259 | //! Allows you to provide a setting thePriority for selection priority. |
42cf5bc1 |
260 | //! You can modify selection priority of an owner to make |
261 | //! one entity more selectionable than another one. The |
262 | //! default selection priority for an owner is 5, for |
263 | //! example. To increase selection priority, choose a |
264 | //! setting between 5 and 10. An entity with priority 7 will |
265 | //! take priority over one with a setting of 6. |
2ec85268 |
266 | void SetSelectionPriority (const Standard_Integer thePriority) { mySelPriority = thePriority; } |
267 | |
42cf5bc1 |
268 | //! Removes the setting for selection priority. SelectionPriority then returns -1. |
2ec85268 |
269 | void UnsetSelectionPriority() { mySelPriority = -1; } |
270 | |
42cf5bc1 |
271 | //! Returns true if there is a setting for selection priority. |
272 | //! You can modify selection priority of an owner to make |
273 | //! one entity more selectionable than another one. The |
274 | //! default selection priority for an owner is 5, for |
275 | //! example. To increase selection priority, choose a |
276 | //! setting between 5 and 10. An entity with priority 7 will |
277 | //! take priority over one with a setting of 6. |
2ec85268 |
278 | Standard_Boolean HasSelectionPriority() const { return mySelPriority != -1; } |
279 | |
42cf5bc1 |
280 | //! Returns true if the Interactive Object is in highlight mode. |
2ec85268 |
281 | Standard_Boolean HasHilightMode() const { return myHilightMode != -1; } |
282 | |
42cf5bc1 |
283 | //! Returns the setting for highlight mode. |
284 | //! At dynamic detection, the presentation echoed by the |
285 | //! Interactive Context, is by default the presentation |
286 | //! already on the screen. You can specify a Highlight |
287 | //! presentation mode which is valid no matter what the |
288 | //! active representation of the object. It makes no |
289 | //! difference whether this choice is temporary or |
290 | //! definitive. To do this, we use the following functions: |
291 | //! - SetHilightMode |
292 | //! - UnSetHilightMode |
293 | //! In the case of a shape, whether it is visualized in |
294 | //! wireframe presentation or with shading, we want to |
295 | //! systematically highlight the wireframe presentation. |
296 | //! Consequently, we set the highlight mode to 0. |
2ec85268 |
297 | Standard_Integer HilightMode() const { return myHilightMode; } |
298 | |
299 | //! Sets the highlight mode theMode for the interactive object. |
42cf5bc1 |
300 | //! If, for example, you want to systematically highlight |
301 | //! the wireframe presentation of a shape - whether |
302 | //! visualized in wireframe presentation or with shading - |
303 | //! you set the highlight mode to 0. |
2ec85268 |
304 | void SetHilightMode (const Standard_Integer theMode) { myHilightMode = theMode; } |
305 | |
42cf5bc1 |
306 | //! Allows the user to take a given Prs for hilight |
307 | //! ex : for a shape which would be displayed in shading mode |
308 | //! the hilight Prs is the wireframe mode. |
309 | //! if No specific hilight mode is defined, the displayed Prs |
310 | //! will be the hilighted one. |
2ec85268 |
311 | void UnsetHilightMode() { myHilightMode = -1; } |
312 | |
42cf5bc1 |
313 | //! Returns true if the Interactive Object has color. |
2ec85268 |
314 | Standard_Boolean HasColor() const { return hasOwnColor; } |
315 | |
42cf5bc1 |
316 | //! Returns the color setting of the Interactive Object. |
2ec85268 |
317 | virtual Quantity_NameOfColor Color() const { return myOwnColor.Name(); } |
318 | |
319 | virtual void Color (Quantity_Color& theColor) const { theColor = myOwnColor; } |
320 | |
42cf5bc1 |
321 | //! Returns true if the Interactive Object has width. |
2ec85268 |
322 | Standard_Boolean HasWidth() const { return myOwnWidth != 0.0; } |
323 | |
42cf5bc1 |
324 | //! Returns the width setting of the Interactive Object. |
2ec85268 |
325 | Standard_Real Width() const { return myOwnWidth; } |
326 | |
42cf5bc1 |
327 | //! Returns true if the Interactive Object has a setting for material. |
2ec85268 |
328 | Standard_Boolean HasMaterial() const { return hasOwnMaterial; } |
329 | |
42cf5bc1 |
330 | //! Returns the current material setting. |
331 | //! This will be on of the following materials: |
332 | //! - Brass |
333 | //! - Bronze |
334 | //! - Gold |
335 | //! - Pewter |
336 | //! - Silver |
337 | //! - Stone. |
2ec85268 |
338 | virtual Graphic3d_NameOfMaterial Material() const { return myOwnMaterial; } |
339 | |
42cf5bc1 |
340 | //! Sets the name aName for material defining this |
341 | //! display attribute for the interactive object. |
342 | //! Material aspect determines shading aspect, color and |
343 | //! transparency of visible entities. |
344 | Standard_EXPORT virtual void SetMaterial (const Graphic3d_NameOfMaterial aName); |
345 | |
346 | //! Sets the material aMat defining this display attribute |
347 | //! for the interactive object. |
348 | //! Material aspect determines shading aspect, color and |
349 | //! transparency of visible entities. |
350 | Standard_EXPORT virtual void SetMaterial (const Graphic3d_MaterialAspect& aName); |
351 | |
352 | //! Removes the setting for material. |
353 | Standard_EXPORT virtual void UnsetMaterial(); |
354 | |
355 | //! Attributes a setting aValue for transparency. |
356 | //! The transparency value should be between 0.0 and 1.0. |
357 | //! At 0.0 an object will be totally opaque, and at 1.0, fully transparent. |
358 | //! Warning At a value of 1.0, there may be nothing visible. |
359 | Standard_EXPORT virtual void SetTransparency (const Standard_Real aValue = 0.6); |
360 | |
361 | //! Returns true if there is a transparency setting. |
2ec85268 |
362 | Standard_Boolean IsTransparent() const { return myTransparency > 0.005; } |
363 | |
42cf5bc1 |
364 | //! Returns the transparency setting. |
365 | //! This will be between 0.0 and 1.0. |
366 | //! At 0.0 an object will be totally opaque, and at 1.0, fully transparent. |
367 | Standard_EXPORT virtual Standard_Real Transparency() const; |
368 | |
369 | //! Removes the transparency setting. The object is opaque by default. |
370 | Standard_EXPORT virtual void UnsetTransparency(); |
371 | |
372 | //! Clears settings provided by the drawing tool aDrawer. |
373 | Standard_EXPORT virtual void UnsetAttributes() Standard_OVERRIDE; |
2ec85268 |
374 | |
42cf5bc1 |
375 | //! Returns TRUE when this object has a presentation |
376 | //! in the current DisplayMode() |
377 | Standard_EXPORT Standard_Boolean HasPresentation() const; |
378 | |
379 | //! Returns the current presentation of this object |
380 | //! according to the current DisplayMode() |
381 | Standard_EXPORT Handle(Prs3d_Presentation) Presentation() const; |
2831708b |
382 | |
42cf5bc1 |
383 | //! Sets the graphic basic aspect to the current presentation. |
2831708b |
384 | Standard_EXPORT void SetAspect (const Handle(Prs3d_BasicAspect)& anAspect); |
42cf5bc1 |
385 | |
386 | //! Sets up polygon offsets for this object. |
387 | //! It modifies all existing presentations of <anObj> (if any), |
388 | //! so it is reasonable to call this method after <anObj> has been displayed. |
389 | //! Otherwise, Compute() method should pass Graphic3d_AspectFillArea3d |
390 | //! aspect from <myDrawer> to Graphic3d_Group to make polygon offsets work. |
391 | //! |
392 | //! <aMode> parameter can contain various combinations of |
393 | //! Aspect_PolygonOffsetMode enumeration elements (Aspect_POM_None means |
394 | //! that polygon offsets are not changed). |
395 | //! If <aMode> is different from Aspect_POM_Off and Aspect_POM_None, then <aFactor> and <aUnits> |
396 | //! arguments are used by graphic renderer to calculate a depth offset value: |
397 | //! |
398 | //! offset = <aFactor> * m + <aUnits> * r, where |
399 | //! m - maximum depth slope for the polygon currently being displayed, |
400 | //! r - minimum window coordinates depth resolution (implementation-specific). |
401 | //! |
402 | //! Deafult settings for OCC 3D viewer: mode = Aspect_POM_Fill, factor = 1., units = 0. |
403 | //! |
404 | //! Negative offset values move polygons closer to the viewport, |
405 | //! while positive values shift polygons away. |
406 | //! Consult OpenGL reference for details (glPolygonOffset function description). |
407 | //! |
408 | //! NOTE: This method has a side effect - it creates own shading aspect |
409 | //! if not yet created, so it is better to set up object material, |
410 | //! color, etc. first. |
411 | Standard_EXPORT virtual void SetPolygonOffsets (const Standard_Integer aMode, const Standard_ShortReal aFactor = 1.0, const Standard_ShortReal aUnits = 0.0); |
412 | |
413 | //! Returns Standard_True if <myDrawer> has non-null shading aspect |
414 | Standard_EXPORT virtual Standard_Boolean HasPolygonOffsets() const; |
415 | |
416 | //! Retrieves current polygon offsets settings from <myDrawer>. |
417 | Standard_EXPORT virtual void PolygonOffsets (Standard_Integer& aMode, Standard_ShortReal& aFactor, Standard_ShortReal& aUnits) const; |
418 | |
419 | //! Returns bounding box of object correspondingly to its current display mode. |
420 | Standard_EXPORT virtual void BoundingBox (Bnd_Box& theBndBox) Standard_OVERRIDE; |
421 | |
5ad8c033 |
422 | //! Enables or disables on-triangulation build of isolines according to the flag given. |
423 | Standard_EXPORT void SetIsoOnTriangulation (const Standard_Boolean theIsEnabled); |
42cf5bc1 |
424 | |
fb66bb28 |
425 | //! Synchronize presentation aspects after their modification. |
426 | //! |
427 | //! This method should be called after modifying primitive aspect properties (material, texture, shader) |
428 | //! so that modifications will take effect on already computed presentation groups (thus avoiding re-displaying the object). |
429 | Standard_EXPORT void SynchronizeAspects(); |
430 | |
2ec85268 |
431 | private: |
42cf5bc1 |
432 | |
2ec85268 |
433 | Standard_EXPORT virtual Standard_Boolean RecomputeEveryPrs() const; |
42cf5bc1 |
434 | |
2ec85268 |
435 | Standard_EXPORT void MustRecomputePrs (const Standard_Integer aMode) const; |
436 | |
437 | Standard_EXPORT const TColStd_ListOfInteger& ListOfRecomputeModes() const; |
438 | |
439 | Standard_EXPORT void SetRecomputeOk(); |
42cf5bc1 |
440 | |
441 | protected: |
442 | |
443 | |
444 | //! The TypeOfPresention3d means that the interactive object |
c3282ec1 |
445 | //! may have a presentation dependant of the view of Display. |
42cf5bc1 |
446 | Standard_EXPORT AIS_InteractiveObject(const PrsMgr_TypeOfPresentation3d aTypeOfPresentation3d = PrsMgr_TOP_AllView); |
447 | |
448 | Standard_Real myTransparency; |
449 | Quantity_Color myOwnColor; |
450 | Graphic3d_NameOfMaterial myOwnMaterial; |
451 | Standard_Integer myHilightMode; |
452 | Standard_Real myOwnWidth; |
453 | Standard_Boolean myInfiniteState; |
454 | Standard_Boolean hasOwnColor; |
455 | Standard_Boolean hasOwnMaterial; |
456 | Aspect_TypeOfFacingModel myCurrentFacingModel; |
457 | Standard_Boolean myRecomputeEveryPrs; |
458 | TColStd_ListOfInteger myToRecomputeModes; |
459 | |
42cf5bc1 |
460 | private: |
461 | |
2ec85268 |
462 | AIS_InteractiveContext* myCTXPtr; |
42cf5bc1 |
463 | Handle(Standard_Transient) myOwner; |
42cf5bc1 |
464 | Standard_Integer mySelPriority; |
465 | Standard_Integer myDisplayMode; |
42cf5bc1 |
466 | |
467 | }; |
468 | |
2ec85268 |
469 | DEFINE_STANDARD_HANDLE(AIS_InteractiveObject, SelectMgr_SelectableObject) |
42cf5bc1 |
470 | |
471 | #endif // _AIS_InteractiveObject_HeaderFile |