29fcb98fabc78cdab79f25dc70b9e5913190d318
[occt.git] / src / V3d / V3d_Viewer.hxx
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
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>
29 #include <Graphic3d_Vertex.hxx>
30 #include <Graphic3d_ZLayerSettings.hxx>
31
32 #include <MMgt_TShared.hxx>
33
34 #include <Standard.hxx>
35 #include <Standard_Boolean.hxx>
36 #include <Standard_CString.hxx>
37 #include <Standard_ExtString.hxx>
38 #include <Standard_Integer.hxx>
39 #include <Standard_Real.hxx>
40 #include <Standard_Type.hxx>
41
42 #include <TColStd_MapOfInteger.hxx>
43 #include <TColStd_ListIteratorOfListOfTransient.hxx>
44 #include <TColStd_SequenceOfInteger.hxx>
45 #include <TCollection_AsciiString.hxx>
46 #include <TCollection_ExtendedString.hxx>
47
48 #include <V3d_ListOfTransient.hxx>
49 #include <V3d_TypeOfOrientation.hxx>
50 #include <V3d_TypeOfShadingModel.hxx>
51 #include <V3d_TypeOfSurfaceDetail.hxx>
52 #include <V3d_TypeOfUpdate.hxx>
53 #include <V3d_TypeOfView.hxx>
54 #include <V3d_TypeOfVisualization.hxx>
55
56 #include <Quantity_NameOfColor.hxx>
57 #include <Quantity_Length.hxx>
58 #include <Quantity_Parameter.hxx>
59 #include <Quantity_PlaneAngle.hxx>
60 #include <Quantity_TypeOfColor.hxx>
61
62 class Aspect_Grid;
63 class Graphic3d_AspectMarker3d;
64 class Graphic3d_GraphicDriver;
65 class Graphic3d_Group;
66 class Graphic3d_Structure;
67 class V3d_BadValue;
68 class V3d_CircularGrid;
69 class V3d_Light;
70 class V3d_RectangularGrid;
71 class V3d_View;
72 class Quantity_Color;
73
74 class V3d_Viewer;
75 DEFINE_STANDARD_HANDLE(V3d_Viewer, MMgt_TShared)
76
77 //! Defines services on Viewer type objects.
78 //! The methods of this class allow editing and
79 //! interrogation of the parameters linked to the viewer
80 //! its friend classes (View,light,plane).
81 class V3d_Viewer : public MMgt_TShared
82 {
83
84 public:
85
86   
87   //! Create a Viewer with the given graphic driver and the given parameters  or
88   //! with their default values.
89   //! Currently creating of more than 100 viewer instances
90   //! is not supported and leads to an exception.
91   //! This limitation might be addressed in some future OCCT releases.
92   //! If the size of the view is <= 0
93   //! Warning: Client must creates a graphic driver
94   Standard_EXPORT V3d_Viewer(const Handle(Graphic3d_GraphicDriver)& theDriver, const Standard_ExtString theName, const Standard_CString theDomain = "", const Quantity_Length theViewSize = 1000.0, const V3d_TypeOfOrientation theViewProj = V3d_XposYnegZpos, const Quantity_NameOfColor theViewBackground = Quantity_NOC_GRAY30, const V3d_TypeOfVisualization theVisualization = V3d_ZBUFFER, const V3d_TypeOfShadingModel theShadingModel = V3d_GOURAUD, const V3d_TypeOfUpdate theUpdateMode = V3d_WAIT, const Standard_Boolean theComputedMode = Standard_True, const Standard_Boolean theDefaultComputedMode = Standard_True, const V3d_TypeOfSurfaceDetail theSurfaceDetail = V3d_TEX_NONE);
95   
96   //! creates a view in the viewer according to its
97   //! default parameters.
98   Standard_EXPORT Handle(V3d_View) CreateView();
99   
100   //! Activates all of the views of a viewer attached
101   //! to a window.
102   Standard_EXPORT void SetViewOn();
103   
104   //! Activates a particular view in the Viewer .
105   //! Must be call if the Window attached to the view
106   //! has been Deiconified .
107   Standard_EXPORT void SetViewOn (const Handle(V3d_View)& View);
108   
109   //! Deactivates all the views of a Viewer
110   //! attached to a window.
111   Standard_EXPORT void SetViewOff();
112   
113   //! Deactivates a particular view in the Viewer.
114   //! Must be call if the Window attached to the view
115   //! has been Iconified .
116   Standard_EXPORT void SetViewOff (const Handle(V3d_View)& View);
117   
118   //! Deprecated, Redraw() should be used instead.
119   Standard_EXPORT void Update();
120   
121   //! Updates the lights of all the views of a viewer.
122   Standard_EXPORT void UpdateLights();
123   
124   //! Redraws all the views of the Viewer even if no
125   //! modification has taken place. Must be called if
126   //! all the views of the Viewer are exposed, as for
127   //! example in a global DeIconification.
128   Standard_EXPORT void Redraw() const;
129   
130   //! Updates layer of immediate presentations.
131   Standard_EXPORT void RedrawImmediate() const;
132   
133   //! Invalidates viewer content but does not redraw it.
134   Standard_EXPORT void Invalidate() const;
135   
136   //! Suppresses the Viewer.
137   Standard_EXPORT void Remove();
138   
139   //! Erase all Objects in All the views.
140   Standard_EXPORT void Erase() const;
141   
142   //! UnHighlight all Objects in All the views.
143   Standard_EXPORT void UnHighlight() const;
144   
145   //! Defines the default base colour of views attached
146   //! to the Viewer by supplying the type of colour
147   //! definition and the three component values..
148   Standard_EXPORT void SetDefaultBackgroundColor (const Quantity_TypeOfColor Type, const Quantity_Parameter V1, const Quantity_Parameter V2, const Quantity_Parameter V3);
149   
150   //! Defines the default background colour of views
151   //! attached to the viewer by supplying the name of the
152   //! colour under the form Quantity_NOC_xxxx .
153   Standard_EXPORT void SetDefaultBackgroundColor (const Quantity_NameOfColor Name);
154   
155   //! Defines the default background colour of views
156   //! attached to the viewer by supplying the color object
157   Standard_EXPORT void SetDefaultBackgroundColor (const Quantity_Color& Color);
158   
159   //! Defines the default gradient background colours of view
160   //! attached to the viewer by supplying the name of the
161   //! colours under the form Quantity_NOC_xxxx .
162   Standard_EXPORT void SetDefaultBgGradientColors (const Quantity_NameOfColor Name1, const Quantity_NameOfColor Name2, const Aspect_GradientFillMethod FillStyle = Aspect_GFM_HOR);
163   
164   //! Defines the default gradient background colours of views
165   //! attached to the viewer by supplying the colour objects
166   Standard_EXPORT void SetDefaultBgGradientColors (const Quantity_Color& Color1, const Quantity_Color& Color2, const Aspect_GradientFillMethod FillStyle = Aspect_GFM_HOR);
167   
168   //! Gives a default size for the creation of views of
169   //! the viewer.
170   Standard_EXPORT void SetDefaultViewSize (const Quantity_Length Size);
171   
172   //! Gives the default projection for creating views
173   //! in the viewer.
174   Standard_EXPORT void SetDefaultViewProj (const V3d_TypeOfOrientation Orientation);
175   
176   //! Gives the default visualization mode..
177   Standard_EXPORT void SetDefaultVisualization (const V3d_TypeOfVisualization Type);
178
179   //! Gives the default type of SHADING.
180   Standard_EXPORT void SetDefaultShadingModel (const V3d_TypeOfShadingModel Type);
181   
182   //! Gives the default type of texture mapping.
183   Standard_EXPORT void SetDefaultSurfaceDetail (const V3d_TypeOfSurfaceDetail Type);
184   
185   Standard_EXPORT void SetDefaultAngle (const Quantity_PlaneAngle Angle);
186   
187   //! Defines the mode of regenerating the views making
188   //! up the viewer. This can be immediate <ASAP> or
189   //! deferred <WAIT>. In this latter case, the views are
190   //! updated when the method Update(me) is called.
191   Standard_EXPORT void SetUpdateMode (const V3d_TypeOfUpdate theMode);
192   
193   Standard_EXPORT void SetDefaultTypeOfView (const V3d_TypeOfView Type);
194   
195   Standard_EXPORT void SetPrivilegedPlane (const gp_Ax3& aPlane);
196   
197   Standard_EXPORT gp_Ax3 PrivilegedPlane() const;
198   
199   Standard_EXPORT void DisplayPrivilegedPlane (const Standard_Boolean OnOff, const Quantity_Length aSize = 1);
200   
201   //! Activates MyLight in the viewer.
202   Standard_EXPORT void SetLightOn (const Handle(V3d_Light)& MyLight);
203   
204   //! Activates all the lights defined in this viewer.
205   Standard_EXPORT void SetLightOn();
206   
207   //! Deactivates MyLight in this viewer.
208   Standard_EXPORT void SetLightOff (const Handle(V3d_Light)& MyLight);
209   
210   //! Deactivate all the Lights defined in this viewer.
211   Standard_EXPORT void SetLightOff();
212   
213   //! Delete Light in Sequence Of Lights.
214   Standard_EXPORT void DelLight (const Handle(V3d_Light)& MyLight);
215   
216   //! Defines the selected light.
217   Standard_EXPORT void SetCurrentSelectedLight (const Handle(V3d_Light)& TheLight);
218   
219   //! Defines the selected light at NULL.
220   Standard_EXPORT void ClearCurrentSelectedLight();
221   
222   //! Returns the default background colour depending of the type.
223   Standard_EXPORT void DefaultBackgroundColor (const Quantity_TypeOfColor Type, Quantity_Parameter& V1, Quantity_Parameter& V2, Quantity_Parameter& V3) const;
224   
225   //! Returns the default background colour object.
226   Standard_EXPORT Quantity_Color DefaultBackgroundColor() const;
227   
228   //! Returns the gradient background colour objects of the view.
229   Standard_EXPORT void DefaultBgGradientColors (Quantity_Color& Color1, Quantity_Color& Color2) const;
230   
231   //! Returns the default size of the view.
232   Standard_EXPORT Quantity_Length DefaultViewSize() const;
233   
234   //! Returns the default Projection.
235   Standard_EXPORT V3d_TypeOfOrientation DefaultViewProj() const;
236   
237   //! Returns the default type of Visualization.
238   Standard_EXPORT V3d_TypeOfVisualization DefaultVisualization() const;
239   
240   //! Returns the default type of Shading
241   Standard_EXPORT V3d_TypeOfShadingModel DefaultShadingModel() const;
242   
243   //! Returns the default type of texture mapping
244   Standard_EXPORT V3d_TypeOfSurfaceDetail DefaultSurfaceDetail() const;
245   
246   Standard_EXPORT Quantity_PlaneAngle DefaultAngle() const;
247   
248   //! Returns the regeneration mode of views in the viewer.
249   Standard_EXPORT V3d_TypeOfUpdate UpdateMode() const;
250   
251   //! Returns True if One View more can be
252   //! activated in this Viewer.
253   Standard_EXPORT Standard_Boolean IfMoreViews() const;
254   
255   //! initializes an iteration on the active views.
256   Standard_EXPORT void InitActiveViews();
257   
258   //! returns true if there are more active view(s) to return.
259   Standard_EXPORT Standard_Boolean MoreActiveViews() const;
260   
261   //! Go to the next active view
262   //! (if there is not, ActiveView will raise an exception)
263   Standard_EXPORT void NextActiveViews();
264   
265   Standard_EXPORT Handle(V3d_View) ActiveView() const;
266   
267   //! returns true if there is only
268   //! one active view.
269   Standard_EXPORT Standard_Boolean LastActiveView() const;
270   
271   //! initializes an iteration on the Defined views.
272   Standard_EXPORT void InitDefinedViews();
273   
274   //! returns true if there are more Defined view(s) to return.
275   Standard_EXPORT Standard_Boolean MoreDefinedViews() const;
276   
277   //! Go to the next Defined view
278   //! (if there is not, DefinedView will raise an exception)
279   Standard_EXPORT void NextDefinedViews();
280   
281   Standard_EXPORT Handle(V3d_View) DefinedView() const;
282   
283   //! initializes an iteration on the active Lights.
284   Standard_EXPORT void InitActiveLights();
285   
286   //! returns true if there are more active Light(s) to return.
287   Standard_EXPORT Standard_Boolean MoreActiveLights() const;
288   
289   //! Go to the next active Light
290   //! (if there is not, ActiveLight will raise an exception)
291   Standard_EXPORT void NextActiveLights();
292   
293   Standard_EXPORT Handle(V3d_Light) ActiveLight() const;
294   
295   //! initializes an iteration on the Defined Lights.
296   Standard_EXPORT void InitDefinedLights();
297   
298   //! returns true if there are more Defined Light(s) to return.
299   Standard_EXPORT Standard_Boolean MoreDefinedLights() const;
300   
301   //! Go to the next Defined Light
302   //! (if there is not, DefinedLight will raise an exception)
303   Standard_EXPORT void NextDefinedLights();
304   
305   Standard_EXPORT Handle(V3d_Light) DefinedLight() const;
306   
307   //! Returns the structure manager associated to this viewer.
308   Standard_EXPORT Handle(Graphic3d_StructureManager) StructureManager() const;
309   
310   //! Returns the Selected Light.
311   Standard_EXPORT Handle(V3d_Light) CurrentSelectedLight() const;
312   
313   Standard_EXPORT Standard_Boolean IsGlobalLight (const Handle(V3d_Light)& TheLight) const;
314   
315   //! returns true if the computed mode can be used.
316   Standard_EXPORT Standard_Boolean ComputedMode() const;
317   
318   //! returns true if by default the computed mode must be used.
319   Standard_EXPORT Standard_Boolean DefaultComputedMode() const;
320   
321   //! Activates the grid in all views of <me>.
322   Standard_EXPORT void ActivateGrid (const Aspect_GridType aGridType, const Aspect_GridDrawMode aGridDrawMode);
323   
324   //! Deactivates the grid in all views of <me>.
325   Standard_EXPORT void DeactivateGrid();
326   
327   //! Show/Don't show grid echo to the hit point.
328   //! If TRUE,the grid echo will be shown at ConvertToGrid() time.
329   Standard_EXPORT void SetGridEcho (const Standard_Boolean showGrid = Standard_True);
330   
331   //! Show grid echo <aMarker> to the hit point.
332   //! Warning: When the grid echo marker is not set,
333   //! a default marker is build with the attributes:
334   //! marker type : Aspect_TOM_STAR
335   //! marker color : Quantity_NOC_GRAY90
336   //! marker size : 3.0
337   Standard_EXPORT void SetGridEcho (const Handle(Graphic3d_AspectMarker3d)& aMarker);
338   
339   //! Returns TRUE when grid echo must be displayed
340   //! at hit point.
341   Standard_EXPORT Standard_Boolean GridEcho() const;
342   
343   //! Returns Standard_True if a grid is activated in <me>.
344   Standard_EXPORT Standard_Boolean IsActive() const;
345   
346   //! Returns the defined grid in <me>.
347   Standard_EXPORT Handle(Aspect_Grid) Grid() const;
348   
349   //! Returns the current grid type defined in <me>.
350   Standard_EXPORT Aspect_GridType GridType() const;
351   
352   //! Returns the current grid draw mode defined in <me>.
353   Standard_EXPORT Aspect_GridDrawMode GridDrawMode() const;
354   
355   //! Returns the definition of the rectangular grid.
356   Standard_EXPORT void RectangularGridValues (Quantity_Length& XOrigin, Quantity_Length& YOrigin, Quantity_Length& XStep, Quantity_Length& YStep, Quantity_PlaneAngle& RotationAngle) const;
357   
358   //! Sets the definition of the rectangular grid.
359   //! <XOrigin>, <YOrigin> defines the origin of the grid.
360   //! <XStep> defines the interval between 2 vertical lines.
361   //! <YStep> defines the interval between 2 horizontal lines.
362   //! <RotationAngle> defines the rotation angle of the grid.
363   Standard_EXPORT void SetRectangularGridValues (const Quantity_Length XOrigin, const Quantity_Length YOrigin, const Quantity_Length XStep, const Quantity_Length YStep, const Quantity_PlaneAngle RotationAngle);
364   
365   //! Returns the definition of the circular grid.
366   Standard_EXPORT void CircularGridValues (Quantity_Length& XOrigin, Quantity_Length& YOrigin, Quantity_Length& RadiusStep, Standard_Integer& DivisionNumber, Quantity_PlaneAngle& RotationAngle) const;
367   
368   //! Sets the definition of the circular grid.
369   //! <XOrigin>, <YOrigin> defines the origin of the grid.
370   //! <RadiusStep> defines the interval between 2 circles.
371   //! <DivisionNumber> defines the section number of one half circle.
372   //! <RotationAngle> defines the rotation angle of the grid.
373   Standard_EXPORT void SetCircularGridValues (const Quantity_Length XOrigin, const Quantity_Length YOrigin, const Quantity_Length RadiusStep, const Standard_Integer DivisionNumber, const Quantity_PlaneAngle RotationAngle);
374   
375   //! Returns the location and the size of the grid.
376   Standard_EXPORT void CircularGridGraphicValues (Quantity_Length& Radius, Quantity_Length& OffSet) const;
377   
378   //! Sets the location and the size of the grid.
379   //! <XSize> defines the width of the grid.
380   //! <YSize> defines the height of the grid.
381   //! <OffSet> defines the displacement along the plane normal.
382   Standard_EXPORT void SetCircularGridGraphicValues (const Quantity_Length Radius, const Quantity_Length OffSet);
383   
384   //! Returns the location and the size of the grid.
385   Standard_EXPORT void RectangularGridGraphicValues (Quantity_Length& XSize, Quantity_Length& YSize, Quantity_Length& OffSet) const;
386   
387   //! Sets the location and the size of the grid.
388   //! <XSize> defines the width of the grid.
389   //! <YSize> defines the height of the grid.
390   //! <OffSet> defines the displacement along the plane normal.
391   Standard_EXPORT void SetRectangularGridGraphicValues (const Quantity_Length XSize, const Quantity_Length YSize, const Quantity_Length OffSet);
392   
393   //! Returns the gradient background of the view.
394   Standard_EXPORT Aspect_GradientBackground GetGradientBackground() const;
395   
396   //! defines default lights  -
397   //! positional-light 0.3 0. 0.
398   //! directional-light V3d_XnegYposZpos
399   //! directional-light V3d_XnegYneg
400   //! ambient-light
401   Standard_EXPORT void SetDefaultLights();
402   
403
404   //! Display grid echo at requested point in the view.
405   Standard_EXPORT void ShowGridEcho (const Handle(V3d_View)& theView, const Graphic3d_Vertex& thePoint);
406   
407
408   //! Temporarly hide grid echo.
409   Standard_EXPORT void HideGridEcho (const Handle(V3d_View)& theView);
410
411   //! Add a new top-level Z layer to all managed views and get
412   //! its ID as <theLayerId> value. The Z layers are controlled entirely
413   //! by viewer, it is not possible to add a layer to a
414   //! particular view. The method returns Standard_False if the layer can
415   //! not be created. The layer mechanism allows to display structures
416   //! in higher layers in overlay of structures in lower layers.
417   Standard_EXPORT Standard_Boolean AddZLayer (Standard_Integer& theLayerId);
418
419   //! Remove Z layer with ID <theLayerId>. Method returns
420   //! Standard_False if the layer can not be removed or doesn't exists.
421   //! By default, there are always default bottom-level layer that can't
422   //! be removed.
423   Standard_EXPORT Standard_Boolean RemoveZLayer (const Standard_Integer theLayerId);
424
425   //! Return all Z layer ids in sequence ordered by overlay level
426   //! from lowest layer to highest ( foreground ). The first layer ID
427   //! in sequence is the default layer that can't be removed.
428   Standard_EXPORT void GetAllZLayers (TColStd_SequenceOfInteger& theLayerSeq) const;
429
430   //! Sets the settings for a single Z layer.
431   Standard_EXPORT void SetZLayerSettings (const Standard_Integer theLayerId, const Graphic3d_ZLayerSettings& theSettings);
432
433   //! Returns the settings of a single Z layer.
434   Standard_EXPORT Graphic3d_ZLayerSettings ZLayerSettings (const Standard_Integer theLayerId);
435
436   Standard_EXPORT const Handle(Graphic3d_GraphicDriver)& Driver() const;
437
438   Standard_EXPORT Standard_ExtString NextName() const;
439
440   Standard_EXPORT Standard_CString Domain() const;
441
442 friend class V3d_View;
443 friend class V3d_Light;
444
445   DEFINE_STANDARD_RTTI(V3d_Viewer,MMgt_TShared)
446
447 protected:
448
449   Standard_EXPORT void IncrCount();
450
451 private:
452
453   //! Returns the default background colour.
454   Standard_EXPORT Aspect_Background GetBackgroundColor() const;
455   
456   //! Adds View in Sequence Of Views.
457   Standard_EXPORT void AddView (const Handle(V3d_View)& MyView);
458   
459   //! Delete View in Sequence Of Views.
460   Standard_EXPORT void DelView (const Handle(V3d_View)& MyView);
461   
462   //! Adds Light in Sequence Of Lights.
463   Standard_EXPORT void AddLight (const Handle(V3d_Light)& MyLight);
464   
465   Standard_EXPORT Standard_Boolean IsActive (const Handle(V3d_View)& aView) const;
466
467 private:
468
469   Standard_Integer myNextCount;
470   Handle(Graphic3d_GraphicDriver) myDriver;
471   TCollection_ExtendedString myName;
472   TCollection_AsciiString myDomain;
473   Handle(Graphic3d_StructureManager) myStructureManager;
474   V3d_ListOfTransient MyDefinedViews;
475   V3d_ListOfTransient MyActiveViews;
476   V3d_ListOfTransient MyDefinedLights;
477   V3d_ListOfTransient MyActiveLights;
478   Aspect_Background MyBackground;
479   Aspect_GradientBackground MyGradientBackground;
480   Standard_Real MyViewSize;
481   V3d_TypeOfOrientation MyViewProj;
482   V3d_TypeOfVisualization MyVisualization;
483   V3d_TypeOfShadingModel MyShadingModel;
484   V3d_TypeOfSurfaceDetail MySurfaceDetail;
485   Quantity_PlaneAngle MyDefaultAngle;
486   V3d_TypeOfView MyDefaultTypeOfView;
487   Handle(V3d_Light) MyCurrentSelectedLight;
488   TColStd_ListIteratorOfListOfTransient myActiveViewsIterator;
489   TColStd_ListIteratorOfListOfTransient myDefinedViewsIterator;
490   TColStd_ListIteratorOfListOfTransient myActiveLightsIterator;
491   TColStd_ListIteratorOfListOfTransient myDefinedLightsIterator;
492   Standard_Boolean myComputedMode;
493   Standard_Boolean myDefaultComputedMode;
494   gp_Ax3 myPrivilegedPlane;
495   Handle(Graphic3d_Structure) myPlaneStructure;
496   Standard_Boolean myDisplayPlane;
497   Quantity_Length myDisplayPlaneLength;
498   Handle(V3d_RectangularGrid) myRGrid;
499   Handle(V3d_CircularGrid) myCGrid;
500   Aspect_GridType myGridType;
501   Standard_Boolean myGridEcho;
502   Handle(Graphic3d_Structure) myGridEchoStructure;
503   Handle(Graphic3d_Group) myGridEchoGroup;
504   Handle(Graphic3d_AspectMarker3d) myGridEchoAspect;
505   Graphic3d_Vertex myGridEchoLastVert;
506   TColStd_MapOfInteger myLayerIds;
507   Aspect_GenId myZLayerGenId;
508 };
509
510 #endif // _V3d_Viewer_HeaderFile