42cf5bc1 |
1 | // Created on: 1992-01-17 |
2 | // Created by: GG |
3 | // Copyright (c) 1992-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 _V3d_Viewer_HeaderFile |
18 | #define _V3d_Viewer_HeaderFile |
19 | |
c357e426 |
20 | #include <Aspect_Background.hxx> |
21 | #include <Aspect_GenId.hxx> |
22 | #include <Aspect_GradientBackground.hxx> |
23 | #include <Aspect_GradientFillMethod.hxx> |
24 | #include <Aspect_GridDrawMode.hxx> |
25 | #include <Aspect_GridType.hxx> |
26 | |
27 | #include <gp_Ax3.hxx> |
28 | #include <Graphic3d_StructureManager.hxx> |
dc89236f |
29 | #include <Graphic3d_TypeOfShadingModel.hxx> |
c357e426 |
30 | #include <Graphic3d_Vertex.hxx> |
31 | #include <Graphic3d_ZLayerSettings.hxx> |
32 | |
42cf5bc1 |
33 | #include <Standard.hxx> |
c357e426 |
34 | #include <Standard_Boolean.hxx> |
35 | #include <Standard_CString.hxx> |
36 | #include <Standard_ExtString.hxx> |
37 | #include <Standard_Integer.hxx> |
38 | #include <Standard_Real.hxx> |
42cf5bc1 |
39 | #include <Standard_Type.hxx> |
40 | |
c357e426 |
41 | #include <TColStd_MapOfInteger.hxx> |
42 | #include <TColStd_ListIteratorOfListOfTransient.hxx> |
43 | #include <TColStd_SequenceOfInteger.hxx> |
42cf5bc1 |
44 | #include <TCollection_AsciiString.hxx> |
c357e426 |
45 | #include <TCollection_ExtendedString.hxx> |
46 | |
6a24c6de |
47 | #include <V3d_ListOfLight.hxx> |
48 | #include <V3d_ListOfView.hxx> |
42cf5bc1 |
49 | #include <V3d_TypeOfOrientation.hxx> |
42cf5bc1 |
50 | #include <V3d_TypeOfView.hxx> |
c357e426 |
51 | #include <V3d_TypeOfVisualization.hxx> |
52 | |
6a24c6de |
53 | #include <Quantity_Color.hxx> |
c357e426 |
54 | |
55 | class Aspect_Grid; |
56 | class Graphic3d_AspectMarker3d; |
42cf5bc1 |
57 | class Graphic3d_GraphicDriver; |
42cf5bc1 |
58 | class Graphic3d_Group; |
c357e426 |
59 | class Graphic3d_Structure; |
42cf5bc1 |
60 | class V3d_BadValue; |
c357e426 |
61 | class V3d_CircularGrid; |
c357e426 |
62 | class V3d_RectangularGrid; |
42cf5bc1 |
63 | class V3d_View; |
64 | class Quantity_Color; |
42cf5bc1 |
65 | |
42cf5bc1 |
66 | //! Defines services on Viewer type objects. |
67 | //! The methods of this class allow editing and |
68 | //! interrogation of the parameters linked to the viewer |
69 | //! its friend classes (View,light,plane). |
6a24c6de |
70 | class V3d_Viewer : public Standard_Transient |
42cf5bc1 |
71 | { |
6a24c6de |
72 | friend class V3d_View; |
6a24c6de |
73 | DEFINE_STANDARD_RTTIEXT(V3d_Viewer, Standard_Transient) |
42cf5bc1 |
74 | public: |
75 | |
6a24c6de |
76 | //! Create a Viewer with the given graphic driver and with default parameters: |
77 | //! - View orientation: V3d_XposYnegZpos |
78 | //! - View background: Quantity_NOC_GRAY30 |
79 | //! - Shading model: V3d_GOURAUD |
80 | Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver); |
81 | |
82 | //! Returns True if One View more can be defined in this Viewer. |
83 | Standard_EXPORT Standard_Boolean IfMoreViews() const; |
84 | |
85 | //! Creates a view in the viewer according to its default parameters. |
42cf5bc1 |
86 | Standard_EXPORT Handle(V3d_View) CreateView(); |
87 | |
6a24c6de |
88 | //! Activates all of the views of a viewer attached to a window. |
42cf5bc1 |
89 | Standard_EXPORT void SetViewOn(); |
90 | |
6a24c6de |
91 | //! Activates a particular view in the Viewer. |
92 | //! Must be call if the Window attached to the view has been Deiconified. |
93 | Standard_EXPORT void SetViewOn (const Handle(V3d_View)& theView); |
94 | |
42cf5bc1 |
95 | //! Deactivates all the views of a Viewer |
96 | //! attached to a window. |
97 | Standard_EXPORT void SetViewOff(); |
98 | |
99 | //! Deactivates a particular view in the Viewer. |
100 | //! Must be call if the Window attached to the view |
101 | //! has been Iconified . |
6a24c6de |
102 | Standard_EXPORT void SetViewOff (const Handle(V3d_View)& theView); |
42cf5bc1 |
103 | |
104 | //! Deprecated, Redraw() should be used instead. |
6a24c6de |
105 | void Update() { Redraw(); } |
106 | |
42cf5bc1 |
107 | //! Redraws all the views of the Viewer even if no |
108 | //! modification has taken place. Must be called if |
109 | //! all the views of the Viewer are exposed, as for |
110 | //! example in a global DeIconification. |
111 | Standard_EXPORT void Redraw() const; |
112 | |
113 | //! Updates layer of immediate presentations. |
114 | Standard_EXPORT void RedrawImmediate() const; |
115 | |
116 | //! Invalidates viewer content but does not redraw it. |
117 | Standard_EXPORT void Invalidate() const; |
118 | |
119 | //! Suppresses the Viewer. |
120 | Standard_EXPORT void Remove(); |
6a24c6de |
121 | |
122 | //! Return Graphic Driver instance. |
123 | const Handle(Graphic3d_GraphicDriver)& Driver() const { return myDriver; } |
124 | |
125 | //! Returns the structure manager associated to this viewer. |
126 | Handle(Graphic3d_StructureManager) StructureManager() const { return myStructureManager; } |
127 | |
128 | //! Return default Rendering Parameters. |
129 | //! By default these parameters are set in a new V3d_View. |
130 | const Graphic3d_RenderingParams& DefaultRenderingParams() const { return myDefaultRenderingParams; } |
131 | |
132 | //! Set default Rendering Parameters. |
133 | void SetDefaultRenderingParams (const Graphic3d_RenderingParams& theParams) { myDefaultRenderingParams = theParams; } |
134 | |
42cf5bc1 |
135 | //! Defines the default background colour of views |
136 | //! attached to the viewer by supplying the color object |
6a24c6de |
137 | void SetDefaultBackgroundColor (const Quantity_Color& theColor) { myBackground.SetColor (theColor); } |
138 | |
139 | //! Returns the gradient background of the view. |
140 | const Aspect_GradientBackground& GetGradientBackground() const { return myGradientBackground; } |
42cf5bc1 |
141 | |
142 | //! Defines the default gradient background colours of views |
143 | //! attached to the viewer by supplying the colour objects |
6a24c6de |
144 | void SetDefaultBgGradientColors (const Quantity_Color& theColor1, |
145 | const Quantity_Color& theColor2, |
146 | const Aspect_GradientFillMethod theFillStyle = Aspect_GFM_HOR) |
147 | { |
148 | myGradientBackground.SetColors (theColor1, theColor2, theFillStyle); |
149 | } |
150 | |
151 | //! Returns the default size of the view. |
152 | Standard_Real DefaultViewSize() const { return myViewSize; } |
153 | |
154 | //! Gives a default size for the creation of views of the viewer. |
155 | Standard_EXPORT void SetDefaultViewSize (const Standard_Real theSize); |
156 | |
157 | //! Returns the default Projection. |
158 | V3d_TypeOfOrientation DefaultViewProj() const { return myViewProj; } |
159 | |
160 | //! Sets the default projection for creating views in the viewer. |
161 | void SetDefaultViewProj (const V3d_TypeOfOrientation theOrientation) { myViewProj = theOrientation; } |
162 | |
163 | //! Returns the default type of Visualization. |
164 | V3d_TypeOfVisualization DefaultVisualization() const { return myVisualization; } |
165 | |
166 | //! Gives the default visualization mode. |
167 | void SetDefaultVisualization (const V3d_TypeOfVisualization theType) { myVisualization = theType; } |
168 | |
169 | //! Returns the default type of Shading |
dc89236f |
170 | Graphic3d_TypeOfShadingModel DefaultShadingModel() const { return myShadingModel; } |
c357e426 |
171 | |
42cf5bc1 |
172 | //! Gives the default type of SHADING. |
dc89236f |
173 | void SetDefaultShadingModel (const Graphic3d_TypeOfShadingModel theType) { myShadingModel = theType; } |
6a24c6de |
174 | |
9e04ccdc |
175 | //! Returns the default type of View (orthographic or perspective projection) to be returned by CreateView() method. |
176 | V3d_TypeOfView DefaultTypeOfView() const { return myDefaultTypeOfView; } |
177 | |
178 | //! Set the default type of View (orthographic or perspective projection) to be returned by CreateView() method. |
6a24c6de |
179 | void SetDefaultTypeOfView (const V3d_TypeOfView theType) { myDefaultTypeOfView = theType; } |
180 | |
181 | //! Returns the default background colour object. |
182 | Quantity_Color DefaultBackgroundColor() const { return myBackground.Color(); } |
183 | |
184 | //! Returns the gradient background colour objects of the view. |
185 | void DefaultBgGradientColors (Quantity_Color& theColor1, Quantity_Color& theColor2) const { myGradientBackground.Colors (theColor1, theColor2); } |
186 | |
187 | //! Return all Z layer ids in sequence ordered by overlay level from lowest layer to highest ( foreground ). |
188 | //! The first layer ID in sequence is the default layer that can't be removed. |
189 | Standard_EXPORT void GetAllZLayers (TColStd_SequenceOfInteger& theLayerSeq) const; |
190 | |
191 | //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value. |
192 | //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view. |
1c728f2d |
193 | //! Custom layers will be inserted before Graphic3d_ZLayerId_Top (e.g. between Graphic3d_ZLayerId_Default and before Graphic3d_ZLayerId_Top). |
194 | //! @param theLayerId [out] id of created layer |
195 | //! @param theSettings [in] new layer settings |
196 | //! @return FALSE if the layer can not be created |
197 | Standard_Boolean AddZLayer (Graphic3d_ZLayerId& theLayerId, |
198 | const Graphic3d_ZLayerSettings& theSettings = Graphic3d_ZLayerSettings()) |
199 | { |
200 | return InsertLayerBefore (theLayerId, theSettings, Graphic3d_ZLayerId_Top); |
201 | } |
202 | |
203 | //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value. |
204 | //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view. |
205 | //! Layer rendering order is defined by its position in list (altered by theLayerAfter) |
206 | //! and IsImmediate() flag (all layers with IsImmediate() flag are drawn afterwards); |
207 | //! @param theNewLayerId [out] id of created layer; layer id is arbitrary and does not depend on layer position in the list |
208 | //! @param theSettings [in] new layer settings |
209 | //! @param theLayerAfter [in] id of layer to append new layer before |
210 | //! @return FALSE if the layer can not be created |
211 | Standard_EXPORT Standard_Boolean InsertLayerBefore (Graphic3d_ZLayerId& theNewLayerId, |
212 | const Graphic3d_ZLayerSettings& theSettings, |
213 | const Graphic3d_ZLayerId theLayerAfter); |
214 | |
215 | //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value. |
216 | //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view. |
217 | //! Layer rendering order is defined by its position in list (altered by theLayerAfter) |
218 | //! and IsImmediate() flag (all layers with IsImmediate() flag are drawn afterwards); |
219 | //! @param theNewLayerId [out] id of created layer; layer id is arbitrary and does not depend on layer position in the list |
220 | //! @param theSettings [in] new layer settings |
221 | //! @param theLayerBefore [in] id of layer to append new layer after |
222 | //! @return FALSE if the layer can not be created |
223 | Standard_EXPORT Standard_Boolean InsertLayerAfter (Graphic3d_ZLayerId& theNewLayerId, |
224 | const Graphic3d_ZLayerSettings& theSettings, |
225 | const Graphic3d_ZLayerId theLayerBefore); |
6a24c6de |
226 | |
227 | //! Remove Z layer with ID <theLayerId>. |
228 | //! Method returns Standard_False if the layer can not be removed or doesn't exists. |
229 | //! By default, there are always default bottom-level layer that can't be removed. |
8f138407 |
230 | Standard_EXPORT Standard_Boolean RemoveZLayer (const Graphic3d_ZLayerId theLayerId); |
6a24c6de |
231 | |
232 | //! Returns the settings of a single Z layer. |
1c728f2d |
233 | Standard_EXPORT const Graphic3d_ZLayerSettings& ZLayerSettings (const Graphic3d_ZLayerId theLayerId) const; |
6a24c6de |
234 | |
235 | //! Sets the settings for a single Z layer. |
8f138407 |
236 | Standard_EXPORT void SetZLayerSettings (const Graphic3d_ZLayerId theLayerId, const Graphic3d_ZLayerSettings& theSettings); |
6a24c6de |
237 | |
238 | public: |
239 | |
f7fc0c03 |
240 | //! Return a list of active views. |
241 | const V3d_ListOfView& ActiveViews() const { return myActiveViews; } |
242 | |
6a24c6de |
243 | //! Return an iterator for active views. |
244 | V3d_ListOfViewIterator ActiveViewIterator() const { return V3d_ListOfViewIterator (myActiveViews); } |
245 | |
6a24c6de |
246 | //! returns true if there is only one active view. |
247 | Standard_Boolean LastActiveView() const { return myActiveViews.Extent() == 1; } |
248 | |
249 | public: |
250 | |
f7fc0c03 |
251 | //! Return a list of defined views. |
252 | const V3d_ListOfView& DefinedViews() const { return myDefinedViews; } |
253 | |
6a24c6de |
254 | //! Return an iterator for defined views. |
255 | V3d_ListOfViewIterator DefinedViewIterator() const { return V3d_ListOfViewIterator (myDefinedViews); } |
256 | |
6a24c6de |
257 | public: //! @name lights management |
258 | |
259 | //! Defines default lights: |
260 | //! positional-light 0.3 0. 0. |
261 | //! directional-light V3d_XnegYposZpos |
262 | //! directional-light V3d_XnegYneg |
263 | //! ambient-light |
264 | Standard_EXPORT void SetDefaultLights(); |
265 | |
42cf5bc1 |
266 | //! Activates MyLight in the viewer. |
6a24c6de |
267 | Standard_EXPORT void SetLightOn (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
268 | |
269 | //! Activates all the lights defined in this viewer. |
270 | Standard_EXPORT void SetLightOn(); |
271 | |
c357e426 |
272 | //! Deactivates MyLight in this viewer. |
6a24c6de |
273 | Standard_EXPORT void SetLightOff (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
274 | |
275 | //! Deactivate all the Lights defined in this viewer. |
276 | Standard_EXPORT void SetLightOff(); |
992ed6b3 |
277 | |
278 | //! Adds Light in Sequence Of Lights. |
279 | Standard_EXPORT void AddLight (const Handle(V3d_Light)& theLight); |
280 | |
42cf5bc1 |
281 | //! Delete Light in Sequence Of Lights. |
6a24c6de |
282 | Standard_EXPORT void DelLight (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
283 | |
6a24c6de |
284 | //! Updates the lights of all the views of a viewer. |
285 | Standard_EXPORT void UpdateLights(); |
286 | |
42cf5bc1 |
287 | Standard_EXPORT Standard_Boolean IsGlobalLight (const Handle(V3d_Light)& TheLight) const; |
6a24c6de |
288 | |
f7fc0c03 |
289 | //! Return a list of active lights. |
290 | const V3d_ListOfLight& ActiveLights() const { return myActiveLights; } |
291 | |
6a24c6de |
292 | //! Return an iterator for defined lights. |
293 | V3d_ListOfLightIterator ActiveLightIterator() const { return V3d_ListOfLightIterator (myActiveLights); } |
294 | |
6a24c6de |
295 | public: |
296 | |
f7fc0c03 |
297 | //! Return a list of defined lights. |
298 | const V3d_ListOfLight& DefinedLights() const { return myDefinedLights; } |
299 | |
6a24c6de |
300 | //! Return an iterator for defined lights. |
301 | V3d_ListOfLightIterator DefinedLightIterator() const { return V3d_ListOfLightIterator (myDefinedLights); } |
302 | |
6a24c6de |
303 | public: //! @name objects management |
304 | |
305 | //! Erase all Objects in All the views. |
306 | Standard_EXPORT void Erase() const; |
307 | |
308 | //! UnHighlight all Objects in All the views. |
309 | Standard_EXPORT void UnHighlight() const; |
310 | |
311 | public: |
312 | |
42cf5bc1 |
313 | //! returns true if the computed mode can be used. |
6a24c6de |
314 | Standard_Boolean ComputedMode() const { return myComputedMode; } |
315 | |
316 | //! Set if the computed mode can be used. |
317 | void SetComputedMode (const Standard_Boolean theMode) { myComputedMode = theMode; } |
318 | |
42cf5bc1 |
319 | //! returns true if by default the computed mode must be used. |
6a24c6de |
320 | Standard_Boolean DefaultComputedMode() const { return myDefaultComputedMode; } |
321 | |
322 | //! Set if by default the computed mode must be used. |
323 | void SetDefaultComputedMode (const Standard_Boolean theMode) { myDefaultComputedMode = theMode; } |
324 | |
325 | public: //! @name privileged plane management |
326 | |
67b3d2a8 |
327 | const gp_Ax3& PrivilegedPlane() const { return myPrivilegedPlane; } |
6a24c6de |
328 | |
329 | Standard_EXPORT void SetPrivilegedPlane (const gp_Ax3& thePlane); |
330 | |
ee2be2a8 |
331 | Standard_EXPORT void DisplayPrivilegedPlane (const Standard_Boolean theOnOff, const Standard_Real theSize = 1); |
6a24c6de |
332 | |
333 | public: //! @name grid management |
334 | |
42cf5bc1 |
335 | //! Activates the grid in all views of <me>. |
336 | Standard_EXPORT void ActivateGrid (const Aspect_GridType aGridType, const Aspect_GridDrawMode aGridDrawMode); |
337 | |
338 | //! Deactivates the grid in all views of <me>. |
339 | Standard_EXPORT void DeactivateGrid(); |
340 | |
341 | //! Show/Don't show grid echo to the hit point. |
342 | //! If TRUE,the grid echo will be shown at ConvertToGrid() time. |
343 | Standard_EXPORT void SetGridEcho (const Standard_Boolean showGrid = Standard_True); |
344 | |
345 | //! Show grid echo <aMarker> to the hit point. |
346 | //! Warning: When the grid echo marker is not set, |
347 | //! a default marker is build with the attributes: |
348 | //! marker type : Aspect_TOM_STAR |
349 | //! marker color : Quantity_NOC_GRAY90 |
350 | //! marker size : 3.0 |
351 | Standard_EXPORT void SetGridEcho (const Handle(Graphic3d_AspectMarker3d)& aMarker); |
352 | |
67b3d2a8 |
353 | //! Returns TRUE when grid echo must be displayed at hit point. |
354 | Standard_Boolean GridEcho() const { return myGridEcho; } |
42cf5bc1 |
355 | |
356 | //! Returns Standard_True if a grid is activated in <me>. |
357 | Standard_EXPORT Standard_Boolean IsActive() const; |
358 | |
359 | //! Returns the defined grid in <me>. |
360 | Standard_EXPORT Handle(Aspect_Grid) Grid() const; |
67b3d2a8 |
361 | |
42cf5bc1 |
362 | //! Returns the current grid type defined in <me>. |
67b3d2a8 |
363 | Aspect_GridType GridType() const { return myGridType; } |
42cf5bc1 |
364 | |
365 | //! Returns the current grid draw mode defined in <me>. |
366 | Standard_EXPORT Aspect_GridDrawMode GridDrawMode() const; |
367 | |
368 | //! Returns the definition of the rectangular grid. |
ee2be2a8 |
369 | Standard_EXPORT void RectangularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& XStep, Standard_Real& YStep, Standard_Real& RotationAngle) const; |
42cf5bc1 |
370 | |
371 | //! Sets the definition of the rectangular grid. |
372 | //! <XOrigin>, <YOrigin> defines the origin of the grid. |
373 | //! <XStep> defines the interval between 2 vertical lines. |
374 | //! <YStep> defines the interval between 2 horizontal lines. |
375 | //! <RotationAngle> defines the rotation angle of the grid. |
ee2be2a8 |
376 | Standard_EXPORT void SetRectangularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real XStep, const Standard_Real YStep, const Standard_Real RotationAngle); |
42cf5bc1 |
377 | |
378 | //! Returns the definition of the circular grid. |
ee2be2a8 |
379 | Standard_EXPORT void CircularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& RadiusStep, Standard_Integer& DivisionNumber, Standard_Real& RotationAngle) const; |
42cf5bc1 |
380 | |
381 | //! Sets the definition of the circular grid. |
382 | //! <XOrigin>, <YOrigin> defines the origin of the grid. |
383 | //! <RadiusStep> defines the interval between 2 circles. |
384 | //! <DivisionNumber> defines the section number of one half circle. |
385 | //! <RotationAngle> defines the rotation angle of the grid. |
ee2be2a8 |
386 | Standard_EXPORT void SetCircularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real RadiusStep, const Standard_Integer DivisionNumber, const Standard_Real RotationAngle); |
42cf5bc1 |
387 | |
388 | //! Returns the location and the size of the grid. |
ee2be2a8 |
389 | Standard_EXPORT void CircularGridGraphicValues (Standard_Real& Radius, Standard_Real& OffSet) const; |
42cf5bc1 |
390 | |
391 | //! Sets the location and the size of the grid. |
392 | //! <XSize> defines the width of the grid. |
393 | //! <YSize> defines the height of the grid. |
394 | //! <OffSet> defines the displacement along the plane normal. |
ee2be2a8 |
395 | Standard_EXPORT void SetCircularGridGraphicValues (const Standard_Real Radius, const Standard_Real OffSet); |
42cf5bc1 |
396 | |
397 | //! Returns the location and the size of the grid. |
ee2be2a8 |
398 | Standard_EXPORT void RectangularGridGraphicValues (Standard_Real& XSize, Standard_Real& YSize, Standard_Real& OffSet) const; |
42cf5bc1 |
399 | |
400 | //! Sets the location and the size of the grid. |
401 | //! <XSize> defines the width of the grid. |
402 | //! <YSize> defines the height of the grid. |
403 | //! <OffSet> defines the displacement along the plane normal. |
ee2be2a8 |
404 | Standard_EXPORT void SetRectangularGridGraphicValues (const Standard_Real XSize, const Standard_Real YSize, const Standard_Real OffSet); |
42cf5bc1 |
405 | |
42cf5bc1 |
406 | //! Display grid echo at requested point in the view. |
407 | Standard_EXPORT void ShowGridEcho (const Handle(V3d_View)& theView, const Graphic3d_Vertex& thePoint); |
42cf5bc1 |
408 | |
409 | //! Temporarly hide grid echo. |
410 | Standard_EXPORT void HideGridEcho (const Handle(V3d_View)& theView); |
c357e426 |
411 | |
6a24c6de |
412 | public: //! @name deprecated methods |
413 | |
414 | Standard_DEPRECATED("This constructor is deprecated") |
415 | Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver, |
416 | const Standard_ExtString theName, |
417 | const Standard_CString theDomain = "", |
ee2be2a8 |
418 | const Standard_Real theViewSize = 1000.0, |
6a24c6de |
419 | const V3d_TypeOfOrientation theViewProj = V3d_XposYnegZpos, |
87432b82 |
420 | const Quantity_Color& theViewBackground = Quantity_NOC_GRAY30, |
6a24c6de |
421 | const V3d_TypeOfVisualization theVisualization = V3d_ZBUFFER, |
dc89236f |
422 | const Graphic3d_TypeOfShadingModel theShadingModel = Graphic3d_TOSM_VERTEX, |
6a24c6de |
423 | const Standard_Boolean theComputedMode = Standard_True, |
424 | const Standard_Boolean theDefaultComputedMode = Standard_True); |
42cf5bc1 |
425 | |
6a24c6de |
426 | //! Defines the default base colour of views attached |
427 | //! to the Viewer by supplying the type of colour |
428 | //! definition and the three component values. |
429 | Standard_DEPRECATED("This method is deprecated - SetDefaultBackgroundColor() taking Quantity_Color should be used instead") |
430 | void SetDefaultBackgroundColor (const Quantity_TypeOfColor theType, |
ee2be2a8 |
431 | const Standard_Real theV1, |
432 | const Standard_Real theV2, |
433 | const Standard_Real theV3) |
6a24c6de |
434 | { |
435 | Standard_Real aV1 = theV1; |
436 | Standard_Real aV2 = theV2; |
437 | Standard_Real aV3 = theV3; |
438 | if (aV1 < 0.0) aV1 = 0.0; else if (aV1 > 1.0) aV1 = 1.0; |
439 | if (aV2 < 0.0) aV2 = 0.0; else if (aV2 > 1.0) aV2 = 1.0; |
440 | if (aV3 < 0.0) aV3 = 0.0; else if (aV3 > 1.0) aV3 = 1.0; |
441 | SetDefaultBackgroundColor (Quantity_Color (aV1, aV2, aV3, theType)); |
442 | } |
443 | |
444 | Standard_DEPRECATED("This method is deprecated - DefaultBackgroundColor() without arguments should be used instead") |
ee2be2a8 |
445 | void DefaultBackgroundColor (const Quantity_TypeOfColor theType, Standard_Real& theV1, Standard_Real& theV2, Standard_Real& theV3) const |
6a24c6de |
446 | { |
447 | Quantity_Color aColor = DefaultBackgroundColor(); |
448 | aColor.Values (theV1, theV2, theV3, theType) ; |
449 | } |
42cf5bc1 |
450 | |
f7fc0c03 |
451 | //! Initializes an internal iterator on the active views. |
452 | Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead") |
453 | void InitActiveViews() { myActiveViewsIterator.Initialize (myActiveViews); } |
454 | |
455 | //! Returns true if there are more active view(s) to return. |
456 | Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead") |
457 | Standard_Boolean MoreActiveViews() const { return myActiveViewsIterator.More(); } |
458 | |
459 | //! Go to the next active view (if there is not, ActiveView will raise an exception) |
460 | Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead") |
461 | void NextActiveViews() { if (!myActiveViews.IsEmpty()) myActiveViewsIterator.Next(); } |
462 | |
463 | Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead") |
464 | const Handle(V3d_View)& ActiveView() const { return myActiveViewsIterator.Value(); } |
465 | |
466 | //! Initializes an internal iterator on the Defined views. |
467 | Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead") |
468 | void InitDefinedViews() { myDefinedViewsIterator.Initialize (myDefinedViews); } |
469 | |
470 | //! returns true if there are more Defined view(s) to return. |
471 | Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead") |
472 | Standard_Boolean MoreDefinedViews() const { return myDefinedViewsIterator.More(); } |
473 | |
474 | //! Go to the next Defined view (if there is not, DefinedView will raise an exception) |
475 | Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead") |
476 | void NextDefinedViews() { if (!myDefinedViews.IsEmpty()) myDefinedViewsIterator.Next(); } |
477 | |
478 | Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead") |
479 | const Handle(V3d_View)& DefinedView() const { return myDefinedViewsIterator.Value(); } |
480 | |
481 | //! Initializes an internal iteratator on the active Lights. |
482 | Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead") |
483 | void InitActiveLights() { myActiveLightsIterator.Initialize (myActiveLights); } |
484 | |
485 | //! returns true if there are more active Light(s) to return. |
486 | Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead") |
487 | Standard_Boolean MoreActiveLights() const { return myActiveLightsIterator.More(); } |
488 | |
489 | //! Go to the next active Light (if there is not, ActiveLight() will raise an exception) |
490 | Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead") |
491 | void NextActiveLights() { myActiveLightsIterator.Next(); } |
492 | |
493 | Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead") |
494 | const Handle(V3d_Light)& ActiveLight() const { return myActiveLightsIterator.Value(); } |
495 | |
496 | //! Initializes an internal iterattor on the Defined Lights. |
497 | Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead") |
498 | void InitDefinedLights() { myDefinedLightsIterator.Initialize (myDefinedLights); } |
499 | |
500 | //! Returns true if there are more Defined Light(s) to return. |
501 | Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead") |
502 | Standard_Boolean MoreDefinedLights() const { return myDefinedLightsIterator.More(); } |
503 | |
504 | //! Go to the next Defined Light (if there is not, DefinedLight() will raise an exception) |
505 | Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead") |
506 | void NextDefinedLights() { if (!myDefinedLights.IsEmpty()) myDefinedLightsIterator.Next(); } |
507 | |
508 | Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead") |
509 | const Handle(V3d_Light)& DefinedLight() const { return myDefinedLightsIterator.Value(); } |
510 | |
bc73b006 |
511 | //! Dumps the content of me into the stream |
512 | Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const; |
513 | |
42cf5bc1 |
514 | private: |
515 | |
42cf5bc1 |
516 | //! Returns the default background colour. |
6a24c6de |
517 | const Aspect_Background& GetBackgroundColor() const { return myBackground; } |
518 | |
42cf5bc1 |
519 | //! Adds View in Sequence Of Views. |
6a24c6de |
520 | Standard_EXPORT void AddView (const Handle(V3d_View)& theView); |
42cf5bc1 |
521 | |
522 | //! Delete View in Sequence Of Views. |
6a24c6de |
523 | Standard_EXPORT void DelView (const Handle(V3d_View)& theView); |
42cf5bc1 |
524 | |
c357e426 |
525 | private: |
526 | |
42cf5bc1 |
527 | Handle(Graphic3d_GraphicDriver) myDriver; |
c357e426 |
528 | Handle(Graphic3d_StructureManager) myStructureManager; |
6a24c6de |
529 | TColStd_MapOfInteger myLayerIds; |
530 | Aspect_GenId myZLayerGenId; |
531 | |
532 | V3d_ListOfView myDefinedViews; |
533 | V3d_ListOfView myActiveViews; |
534 | V3d_ListOfLight myDefinedLights; |
535 | V3d_ListOfLight myActiveLights; |
536 | |
537 | Aspect_Background myBackground; |
538 | Aspect_GradientBackground myGradientBackground; |
539 | Standard_Real myViewSize; |
540 | V3d_TypeOfOrientation myViewProj; |
541 | V3d_TypeOfVisualization myVisualization; |
dc89236f |
542 | Graphic3d_TypeOfShadingModel myShadingModel; |
6a24c6de |
543 | V3d_TypeOfView myDefaultTypeOfView; |
832ae82d |
544 | Graphic3d_RenderingParams myDefaultRenderingParams; |
6a24c6de |
545 | |
546 | V3d_ListOfView::Iterator myActiveViewsIterator; |
547 | V3d_ListOfView::Iterator myDefinedViewsIterator; |
548 | V3d_ListOfLight::Iterator myActiveLightsIterator; |
549 | V3d_ListOfLight::Iterator myDefinedLightsIterator; |
550 | |
42cf5bc1 |
551 | Standard_Boolean myComputedMode; |
552 | Standard_Boolean myDefaultComputedMode; |
6a24c6de |
553 | |
42cf5bc1 |
554 | gp_Ax3 myPrivilegedPlane; |
555 | Handle(Graphic3d_Structure) myPlaneStructure; |
556 | Standard_Boolean myDisplayPlane; |
ee2be2a8 |
557 | Standard_Real myDisplayPlaneLength; |
6a24c6de |
558 | |
42cf5bc1 |
559 | Handle(V3d_RectangularGrid) myRGrid; |
560 | Handle(V3d_CircularGrid) myCGrid; |
561 | Aspect_GridType myGridType; |
562 | Standard_Boolean myGridEcho; |
563 | Handle(Graphic3d_Structure) myGridEchoStructure; |
564 | Handle(Graphic3d_Group) myGridEchoGroup; |
565 | Handle(Graphic3d_AspectMarker3d) myGridEchoAspect; |
566 | Graphic3d_Vertex myGridEchoLastVert; |
6a24c6de |
567 | |
42cf5bc1 |
568 | }; |
569 | |
6a24c6de |
570 | DEFINE_STANDARD_HANDLE(V3d_Viewer, Standard_Transient) |
571 | |
42cf5bc1 |
572 | #endif // _V3d_Viewer_HeaderFile |