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 | |
240 | //! Return an iterator for active views. |
241 | V3d_ListOfViewIterator ActiveViewIterator() const { return V3d_ListOfViewIterator (myActiveViews); } |
242 | |
243 | //! Initializes an internal iterator on the active views. |
244 | void InitActiveViews() { myActiveViewsIterator.Initialize (myActiveViews); } |
245 | |
246 | //! Returns true if there are more active view(s) to return. |
247 | Standard_Boolean MoreActiveViews() const { return myActiveViewsIterator.More(); } |
248 | |
249 | //! Go to the next active view (if there is not, ActiveView will raise an exception) |
250 | void NextActiveViews() { if (!myActiveViews.IsEmpty()) myActiveViewsIterator.Next(); } |
42cf5bc1 |
251 | |
6a24c6de |
252 | const Handle(V3d_View)& ActiveView() const { return myActiveViewsIterator.Value(); } |
42cf5bc1 |
253 | |
6a24c6de |
254 | //! returns true if there is only one active view. |
255 | Standard_Boolean LastActiveView() const { return myActiveViews.Extent() == 1; } |
256 | |
257 | public: |
258 | |
259 | //! Return an iterator for defined views. |
260 | V3d_ListOfViewIterator DefinedViewIterator() const { return V3d_ListOfViewIterator (myDefinedViews); } |
261 | |
262 | //! Initializes an internal iterator on the Defined views. |
263 | void InitDefinedViews() { myDefinedViewsIterator.Initialize (myDefinedViews); } |
264 | |
265 | //! returns true if there are more Defined view(s) to return. |
266 | Standard_Boolean MoreDefinedViews() const { return myDefinedViewsIterator.More(); } |
267 | |
268 | //! Go to the next Defined view (if there is not, DefinedView will raise an exception) |
269 | void NextDefinedViews() { if (!myDefinedViews.IsEmpty()) myDefinedViewsIterator.Next(); } |
270 | |
271 | const Handle(V3d_View)& DefinedView() const { return myDefinedViewsIterator.Value(); } |
272 | |
273 | public: //! @name lights management |
274 | |
275 | //! Defines default lights: |
276 | //! positional-light 0.3 0. 0. |
277 | //! directional-light V3d_XnegYposZpos |
278 | //! directional-light V3d_XnegYneg |
279 | //! ambient-light |
280 | Standard_EXPORT void SetDefaultLights(); |
281 | |
42cf5bc1 |
282 | //! Activates MyLight in the viewer. |
6a24c6de |
283 | Standard_EXPORT void SetLightOn (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
284 | |
285 | //! Activates all the lights defined in this viewer. |
286 | Standard_EXPORT void SetLightOn(); |
287 | |
c357e426 |
288 | //! Deactivates MyLight in this viewer. |
6a24c6de |
289 | Standard_EXPORT void SetLightOff (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
290 | |
291 | //! Deactivate all the Lights defined in this viewer. |
292 | Standard_EXPORT void SetLightOff(); |
992ed6b3 |
293 | |
294 | //! Adds Light in Sequence Of Lights. |
295 | Standard_EXPORT void AddLight (const Handle(V3d_Light)& theLight); |
296 | |
42cf5bc1 |
297 | //! Delete Light in Sequence Of Lights. |
6a24c6de |
298 | Standard_EXPORT void DelLight (const Handle(V3d_Light)& theLight); |
42cf5bc1 |
299 | |
6a24c6de |
300 | //! Updates the lights of all the views of a viewer. |
301 | Standard_EXPORT void UpdateLights(); |
302 | |
42cf5bc1 |
303 | Standard_EXPORT Standard_Boolean IsGlobalLight (const Handle(V3d_Light)& TheLight) const; |
6a24c6de |
304 | |
305 | //! Return an iterator for defined lights. |
306 | V3d_ListOfLightIterator ActiveLightIterator() const { return V3d_ListOfLightIterator (myActiveLights); } |
307 | |
308 | //! Initializes an internal iteratator on the active Lights. |
309 | void InitActiveLights() { myActiveLightsIterator.Initialize (myActiveLights); } |
310 | |
311 | //! returns true if there are more active Light(s) to return. |
312 | Standard_Boolean MoreActiveLights() const { return myActiveLightsIterator.More(); } |
313 | |
314 | //! Go to the next active Light (if there is not, ActiveLight() will raise an exception) |
315 | void NextActiveLights() { myActiveLightsIterator.Next(); } |
316 | |
317 | const Handle(V3d_Light)& ActiveLight() const { return myActiveLightsIterator.Value(); } |
318 | |
319 | public: |
320 | |
321 | //! Return an iterator for defined lights. |
322 | V3d_ListOfLightIterator DefinedLightIterator() const { return V3d_ListOfLightIterator (myDefinedLights); } |
323 | |
324 | //! Initializes an internal iterattor on the Defined Lights. |
325 | void InitDefinedLights() { myDefinedLightsIterator.Initialize (myDefinedLights); } |
42cf5bc1 |
326 | |
6a24c6de |
327 | //! Returns true if there are more Defined Light(s) to return. |
328 | Standard_Boolean MoreDefinedLights() const { return myDefinedLightsIterator.More(); } |
329 | |
330 | //! Go to the next Defined Light (if there is not, DefinedLight() will raise an exception) |
331 | void NextDefinedLights() { if (!myDefinedLights.IsEmpty()) myDefinedLightsIterator.Next(); } |
332 | |
333 | const Handle(V3d_Light)& DefinedLight() const { return myDefinedLightsIterator.Value(); } |
334 | |
335 | public: //! @name objects management |
336 | |
337 | //! Erase all Objects in All the views. |
338 | Standard_EXPORT void Erase() const; |
339 | |
340 | //! UnHighlight all Objects in All the views. |
341 | Standard_EXPORT void UnHighlight() const; |
342 | |
343 | public: |
344 | |
42cf5bc1 |
345 | //! returns true if the computed mode can be used. |
6a24c6de |
346 | Standard_Boolean ComputedMode() const { return myComputedMode; } |
347 | |
348 | //! Set if the computed mode can be used. |
349 | void SetComputedMode (const Standard_Boolean theMode) { myComputedMode = theMode; } |
350 | |
42cf5bc1 |
351 | //! returns true if by default the computed mode must be used. |
6a24c6de |
352 | Standard_Boolean DefaultComputedMode() const { return myDefaultComputedMode; } |
353 | |
354 | //! Set if by default the computed mode must be used. |
355 | void SetDefaultComputedMode (const Standard_Boolean theMode) { myDefaultComputedMode = theMode; } |
356 | |
357 | public: //! @name privileged plane management |
358 | |
67b3d2a8 |
359 | const gp_Ax3& PrivilegedPlane() const { return myPrivilegedPlane; } |
6a24c6de |
360 | |
361 | Standard_EXPORT void SetPrivilegedPlane (const gp_Ax3& thePlane); |
362 | |
ee2be2a8 |
363 | Standard_EXPORT void DisplayPrivilegedPlane (const Standard_Boolean theOnOff, const Standard_Real theSize = 1); |
6a24c6de |
364 | |
365 | public: //! @name grid management |
366 | |
42cf5bc1 |
367 | //! Activates the grid in all views of <me>. |
368 | Standard_EXPORT void ActivateGrid (const Aspect_GridType aGridType, const Aspect_GridDrawMode aGridDrawMode); |
369 | |
370 | //! Deactivates the grid in all views of <me>. |
371 | Standard_EXPORT void DeactivateGrid(); |
372 | |
373 | //! Show/Don't show grid echo to the hit point. |
374 | //! If TRUE,the grid echo will be shown at ConvertToGrid() time. |
375 | Standard_EXPORT void SetGridEcho (const Standard_Boolean showGrid = Standard_True); |
376 | |
377 | //! Show grid echo <aMarker> to the hit point. |
378 | //! Warning: When the grid echo marker is not set, |
379 | //! a default marker is build with the attributes: |
380 | //! marker type : Aspect_TOM_STAR |
381 | //! marker color : Quantity_NOC_GRAY90 |
382 | //! marker size : 3.0 |
383 | Standard_EXPORT void SetGridEcho (const Handle(Graphic3d_AspectMarker3d)& aMarker); |
384 | |
67b3d2a8 |
385 | //! Returns TRUE when grid echo must be displayed at hit point. |
386 | Standard_Boolean GridEcho() const { return myGridEcho; } |
42cf5bc1 |
387 | |
388 | //! Returns Standard_True if a grid is activated in <me>. |
389 | Standard_EXPORT Standard_Boolean IsActive() const; |
390 | |
391 | //! Returns the defined grid in <me>. |
392 | Standard_EXPORT Handle(Aspect_Grid) Grid() const; |
67b3d2a8 |
393 | |
42cf5bc1 |
394 | //! Returns the current grid type defined in <me>. |
67b3d2a8 |
395 | Aspect_GridType GridType() const { return myGridType; } |
42cf5bc1 |
396 | |
397 | //! Returns the current grid draw mode defined in <me>. |
398 | Standard_EXPORT Aspect_GridDrawMode GridDrawMode() const; |
399 | |
400 | //! Returns the definition of the rectangular grid. |
ee2be2a8 |
401 | Standard_EXPORT void RectangularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& XStep, Standard_Real& YStep, Standard_Real& RotationAngle) const; |
42cf5bc1 |
402 | |
403 | //! Sets the definition of the rectangular grid. |
404 | //! <XOrigin>, <YOrigin> defines the origin of the grid. |
405 | //! <XStep> defines the interval between 2 vertical lines. |
406 | //! <YStep> defines the interval between 2 horizontal lines. |
407 | //! <RotationAngle> defines the rotation angle of the grid. |
ee2be2a8 |
408 | 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 |
409 | |
410 | //! Returns the definition of the circular grid. |
ee2be2a8 |
411 | Standard_EXPORT void CircularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& RadiusStep, Standard_Integer& DivisionNumber, Standard_Real& RotationAngle) const; |
42cf5bc1 |
412 | |
413 | //! Sets the definition of the circular grid. |
414 | //! <XOrigin>, <YOrigin> defines the origin of the grid. |
415 | //! <RadiusStep> defines the interval between 2 circles. |
416 | //! <DivisionNumber> defines the section number of one half circle. |
417 | //! <RotationAngle> defines the rotation angle of the grid. |
ee2be2a8 |
418 | 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 |
419 | |
420 | //! Returns the location and the size of the grid. |
ee2be2a8 |
421 | Standard_EXPORT void CircularGridGraphicValues (Standard_Real& Radius, Standard_Real& OffSet) const; |
42cf5bc1 |
422 | |
423 | //! Sets the location and the size of the grid. |
424 | //! <XSize> defines the width of the grid. |
425 | //! <YSize> defines the height of the grid. |
426 | //! <OffSet> defines the displacement along the plane normal. |
ee2be2a8 |
427 | Standard_EXPORT void SetCircularGridGraphicValues (const Standard_Real Radius, const Standard_Real OffSet); |
42cf5bc1 |
428 | |
429 | //! Returns the location and the size of the grid. |
ee2be2a8 |
430 | Standard_EXPORT void RectangularGridGraphicValues (Standard_Real& XSize, Standard_Real& YSize, Standard_Real& OffSet) const; |
42cf5bc1 |
431 | |
432 | //! Sets the location and the size of the grid. |
433 | //! <XSize> defines the width of the grid. |
434 | //! <YSize> defines the height of the grid. |
435 | //! <OffSet> defines the displacement along the plane normal. |
ee2be2a8 |
436 | Standard_EXPORT void SetRectangularGridGraphicValues (const Standard_Real XSize, const Standard_Real YSize, const Standard_Real OffSet); |
42cf5bc1 |
437 | |
42cf5bc1 |
438 | //! Display grid echo at requested point in the view. |
439 | Standard_EXPORT void ShowGridEcho (const Handle(V3d_View)& theView, const Graphic3d_Vertex& thePoint); |
42cf5bc1 |
440 | |
441 | //! Temporarly hide grid echo. |
442 | Standard_EXPORT void HideGridEcho (const Handle(V3d_View)& theView); |
c357e426 |
443 | |
6a24c6de |
444 | public: //! @name deprecated methods |
445 | |
446 | Standard_DEPRECATED("This constructor is deprecated") |
447 | Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver, |
448 | const Standard_ExtString theName, |
449 | const Standard_CString theDomain = "", |
ee2be2a8 |
450 | const Standard_Real theViewSize = 1000.0, |
6a24c6de |
451 | const V3d_TypeOfOrientation theViewProj = V3d_XposYnegZpos, |
87432b82 |
452 | const Quantity_Color& theViewBackground = Quantity_NOC_GRAY30, |
6a24c6de |
453 | const V3d_TypeOfVisualization theVisualization = V3d_ZBUFFER, |
dc89236f |
454 | const Graphic3d_TypeOfShadingModel theShadingModel = Graphic3d_TOSM_VERTEX, |
6a24c6de |
455 | const Standard_Boolean theComputedMode = Standard_True, |
456 | const Standard_Boolean theDefaultComputedMode = Standard_True); |
42cf5bc1 |
457 | |
6a24c6de |
458 | //! Defines the default base colour of views attached |
459 | //! to the Viewer by supplying the type of colour |
460 | //! definition and the three component values. |
461 | Standard_DEPRECATED("This method is deprecated - SetDefaultBackgroundColor() taking Quantity_Color should be used instead") |
462 | void SetDefaultBackgroundColor (const Quantity_TypeOfColor theType, |
ee2be2a8 |
463 | const Standard_Real theV1, |
464 | const Standard_Real theV2, |
465 | const Standard_Real theV3) |
6a24c6de |
466 | { |
467 | Standard_Real aV1 = theV1; |
468 | Standard_Real aV2 = theV2; |
469 | Standard_Real aV3 = theV3; |
470 | if (aV1 < 0.0) aV1 = 0.0; else if (aV1 > 1.0) aV1 = 1.0; |
471 | if (aV2 < 0.0) aV2 = 0.0; else if (aV2 > 1.0) aV2 = 1.0; |
472 | if (aV3 < 0.0) aV3 = 0.0; else if (aV3 > 1.0) aV3 = 1.0; |
473 | SetDefaultBackgroundColor (Quantity_Color (aV1, aV2, aV3, theType)); |
474 | } |
475 | |
476 | Standard_DEPRECATED("This method is deprecated - DefaultBackgroundColor() without arguments should be used instead") |
ee2be2a8 |
477 | void DefaultBackgroundColor (const Quantity_TypeOfColor theType, Standard_Real& theV1, Standard_Real& theV2, Standard_Real& theV3) const |
6a24c6de |
478 | { |
479 | Quantity_Color aColor = DefaultBackgroundColor(); |
480 | aColor.Values (theV1, theV2, theV3, theType) ; |
481 | } |
42cf5bc1 |
482 | |
42cf5bc1 |
483 | private: |
484 | |
42cf5bc1 |
485 | //! Returns the default background colour. |
6a24c6de |
486 | const Aspect_Background& GetBackgroundColor() const { return myBackground; } |
487 | |
42cf5bc1 |
488 | //! Adds View in Sequence Of Views. |
6a24c6de |
489 | Standard_EXPORT void AddView (const Handle(V3d_View)& theView); |
42cf5bc1 |
490 | |
491 | //! Delete View in Sequence Of Views. |
6a24c6de |
492 | Standard_EXPORT void DelView (const Handle(V3d_View)& theView); |
42cf5bc1 |
493 | |
c357e426 |
494 | private: |
495 | |
42cf5bc1 |
496 | Handle(Graphic3d_GraphicDriver) myDriver; |
c357e426 |
497 | Handle(Graphic3d_StructureManager) myStructureManager; |
6a24c6de |
498 | TColStd_MapOfInteger myLayerIds; |
499 | Aspect_GenId myZLayerGenId; |
500 | |
501 | V3d_ListOfView myDefinedViews; |
502 | V3d_ListOfView myActiveViews; |
503 | V3d_ListOfLight myDefinedLights; |
504 | V3d_ListOfLight myActiveLights; |
505 | |
506 | Aspect_Background myBackground; |
507 | Aspect_GradientBackground myGradientBackground; |
508 | Standard_Real myViewSize; |
509 | V3d_TypeOfOrientation myViewProj; |
510 | V3d_TypeOfVisualization myVisualization; |
dc89236f |
511 | Graphic3d_TypeOfShadingModel myShadingModel; |
6a24c6de |
512 | V3d_TypeOfView myDefaultTypeOfView; |
832ae82d |
513 | Graphic3d_RenderingParams myDefaultRenderingParams; |
6a24c6de |
514 | |
515 | V3d_ListOfView::Iterator myActiveViewsIterator; |
516 | V3d_ListOfView::Iterator myDefinedViewsIterator; |
517 | V3d_ListOfLight::Iterator myActiveLightsIterator; |
518 | V3d_ListOfLight::Iterator myDefinedLightsIterator; |
519 | |
42cf5bc1 |
520 | Standard_Boolean myComputedMode; |
521 | Standard_Boolean myDefaultComputedMode; |
6a24c6de |
522 | |
42cf5bc1 |
523 | gp_Ax3 myPrivilegedPlane; |
524 | Handle(Graphic3d_Structure) myPlaneStructure; |
525 | Standard_Boolean myDisplayPlane; |
ee2be2a8 |
526 | Standard_Real myDisplayPlaneLength; |
6a24c6de |
527 | |
42cf5bc1 |
528 | Handle(V3d_RectangularGrid) myRGrid; |
529 | Handle(V3d_CircularGrid) myCGrid; |
530 | Aspect_GridType myGridType; |
531 | Standard_Boolean myGridEcho; |
532 | Handle(Graphic3d_Structure) myGridEchoStructure; |
533 | Handle(Graphic3d_Group) myGridEchoGroup; |
534 | Handle(Graphic3d_AspectMarker3d) myGridEchoAspect; |
535 | Graphic3d_Vertex myGridEchoLastVert; |
6a24c6de |
536 | |
42cf5bc1 |
537 | }; |
538 | |
6a24c6de |
539 | DEFINE_STANDARD_HANDLE(V3d_Viewer, Standard_Transient) |
540 | |
42cf5bc1 |
541 | #endif // _V3d_Viewer_HeaderFile |