0026272: Visualization - provide a possibility to activate selection modes without...
[occt.git] / src / Visual3d / Visual3d_View.hxx
CommitLineData
42cf5bc1 1// Created on: 1991-09-17
2// Created by: NW,JPB,CAL
3// Copyright (c) 1991-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 _Visual3d_View_HeaderFile
18#define _Visual3d_View_HeaderFile
19
20#include <Standard.hxx>
21#include <Standard_Type.hxx>
22
23#include <Visual3d_ViewManagerPtr.hxx>
24#include <Graphic3d_CView.hxx>
25#include <Visual3d_ContextView.hxx>
26#include <Graphic3d_SequenceOfStructure.hxx>
27#include <Standard_Boolean.hxx>
28#include <Aspect_Background.hxx>
29#include <Aspect_GradientBackground.hxx>
30#include <Graphic3d_MapOfStructure.hxx>
31#include <Graphic3d_GraduatedTrihedron.hxx>
32#include <Graphic3d_Camera.hxx>
33#include <Standard_Real.hxx>
34#include <Graphic3d_NMapOfTransient.hxx>
35#include <Graphic3d_DataStructureManager.hxx>
36#include <Standard_Integer.hxx>
37#include <Standard_CString.hxx>
38#include <Aspect_FillMethod.hxx>
39#include <Aspect_GradientFillMethod.hxx>
40#include <Visual3d_TypeOfBackfacingModel.hxx>
41#include <Aspect_RenderingContext.hxx>
42#include <Aspect_GraphicCallbackProc.hxx>
43#include <Standard_Address.hxx>
44#include <Aspect_TypeOfUpdate.hxx>
45#include <Quantity_NameOfColor.hxx>
46#include <Aspect_TypeOfTriedronPosition.hxx>
47#include <Aspect_TypeOfTriedronEcho.hxx>
48#include <Visual3d_TypeOfAnswer.hxx>
49#include <Graphic3d_TypeOfStructure.hxx>
50#include <Graphic3d_ZLayerId.hxx>
51#include <Graphic3d_ZLayerSettings.hxx>
52#include <Aspect_TypeOfHighlightMethod.hxx>
53#include <TColStd_Array2OfReal.hxx>
54#include <Aspect_Handle.hxx>
55#include <Aspect_PrintAlgo.hxx>
56#include <Graphic3d_PtrFrameBuffer.hxx>
57#include <Image_PixMap.hxx>
58#include <Graphic3d_BufferType.hxx>
59#include <Graphic3d_ExportFormat.hxx>
60#include <Graphic3d_SortType.hxx>
61class Aspect_Window;
62class Graphic3d_GraphicDriver;
63class Visual3d_TransformError;
64class Visual3d_ViewDefinitionError;
65class Visual3d_ViewManager;
66class Visual3d_Layer;
67class Aspect_Background;
68class Aspect_GradientBackground;
69class Visual3d_ContextView;
70class Bnd_Box;
71class Graphic3d_Structure;
72
73
74class Visual3d_View;
75DEFINE_STANDARD_HANDLE(Visual3d_View, Graphic3d_DataStructureManager)
76
77//! Creation and edition of a view in a 3D visualiser.
78//! A 3D view is composed of an "orientation" part defined
79//! by the position of the observer, the direction of view,
80//! and a "mapping" part defined by the type of projection
81//! (parallel or perspective) and by the window-viewport
82//! couple which allows passage from the projected coordinate
83//! space into the screen space.
84//! Summary of 3D Viewing
85//! To define a view, you must define:
86//! - The view orientation transformation
87//! - The view mapping transformation
88//! - The view representation.
89//! To activate a view, you must define:
90//! - The associated window.
91class Visual3d_View : public Graphic3d_DataStructureManager
92{
93
94public:
95
96
97 //! Creates a view in the viewer <AManager> with a default
98 //! orientation and a default mapping.
99 Standard_EXPORT Visual3d_View(const Handle(Visual3d_ViewManager)& AManager);
100
101 //! Activates the view <me>.
102 //! Map the associated window on the screen and
103 //! post the view in this window.
104 //! Category: Methods to modify the class definition
105 //! Warning: Raises ViewDefinitionError if the associated
106 //! window isn't defined.
107 Standard_EXPORT void Activate();
108
109 //! Deactivates the view <me>.
110 //! Unmap the associated window on the screen and
111 //! unpost the view in this window.
112 //! Category: Methods to modify the class definition
113 //! Warning: Raises ViewDefinitionError if the associated
114 //! window isn't defined.
115 Standard_EXPORT void Deactivate();
116
117 //! Deletes and erases the view <me>.
118 Standard_EXPORT virtual void Destroy() Standard_OVERRIDE;
119~Visual3d_View()
120{
121 Destroy();
122}
123
124 //! Updates screen in all cases.
125 Standard_EXPORT void Redraw();
126
127 //! Updates layer of immediate presentations.
128 Standard_EXPORT void RedrawImmediate();
129
130 //! Updates screen area in all cases.
131 //! area is given by his xy min corner and size in pixel coordinates
132 Standard_EXPORT void Redraw (const Standard_Integer x, const Standard_Integer y, const Standard_Integer width, const Standard_Integer height);
133
134 //! Updates screen in all cases.
135 Standard_EXPORT void Redraw (const Handle(Visual3d_Layer)& AnUnderLayer, const Handle(Visual3d_Layer)& AnOverLayer);
136
137 //! Updates layer of immediate presentations.
138 Standard_EXPORT void RedrawImmediate (const Handle(Visual3d_Layer)& theUnderLayer, const Handle(Visual3d_Layer)& theOverLayer);
139
140 //! Invalidates view content but does not redraw it.
141 Standard_EXPORT void Invalidate();
62e1beed 142
143 //! Returns true if cached view content has been invalidated.
144 Standard_EXPORT Standard_Boolean IsInvalidated() const;
145
42cf5bc1 146 //! Updates screen area in all cases.
147 //! area is given by his xy min corner and size in pixel coordinates
148 Standard_EXPORT void Redraw (const Handle(Visual3d_Layer)& AnUnderLayer, const Handle(Visual3d_Layer)& AnOverLayer, const Standard_Integer x, const Standard_Integer y, const Standard_Integer width, const Standard_Integer height);
149
150 //! Deletes and erases the view <me>.
151 //! Warning: No more graphic operations in <me> after this call.
152 Standard_EXPORT void Remove();
153
154 //! Updates the view <me> after the modification
155 //! of the associated window.
156 //! Category: Methods to modify the class definition
157 //! Warning: Raises ViewDefinitionError if the associated
158 //! window isn't defined.
159 Standard_EXPORT void Resized();
160
161 //! Modifies the default window background.
162 //! Category: Methods to modify the class definition
163 //! Warning: Raises ViewDefinitionError if the associated
164 //! window isn't defined.
165 Standard_EXPORT void SetBackground (const Aspect_Background& ABack);
166
167
168 //! Category: Methods to modify the class definition
169 //! Warning: Raises ViewDefinitionError if the associated
170 //! window isn't defined.
171 Standard_EXPORT void SetBackgroundImage (const Standard_CString FileName, const Aspect_FillMethod FillStyle, const Standard_Boolean update);
172
173
174 //! Category: Methods to modify the class definition
175 //! Warning: Raises ViewDefinitionError if the associated
176 //! window isn't defined.
177 Standard_EXPORT void SetBgImageStyle (const Aspect_FillMethod FillStyle, const Standard_Boolean update);
178
179 //! Modifies the gradient window background.
180 //! Category: Methods to modify the class definition
181 //! Warning: Raises ViewDefinitionError if the associated
182 //! window isn't defined.
183 Standard_EXPORT void SetGradientBackground (const Aspect_GradientBackground& ABack, const Standard_Boolean update);
184
185
186 //! Category: Methods to modify the class definition
187 //! Warning: Raises ViewDefinitionError if the associated
188 //! window isn't defined.
189 Standard_EXPORT void SetBgGradientStyle (const Aspect_GradientFillMethod FillStyle, const Standard_Boolean update);
190
191 //! Manages display of the back faces
192 Standard_EXPORT void SetBackFacingModel (const Visual3d_TypeOfBackfacingModel aModel);
193
194 //! Returns current state of the back faces display
195 Standard_EXPORT Visual3d_TypeOfBackfacingModel BackFacingModel() const;
196
197 //! Sets the context <CTX> in the view <me>.
198 Standard_EXPORT void SetContext (const Visual3d_ContextView& CTX);
199
200 //! Saves the current mapping which will be the
201 //! reference value for the reset of the mapping
202 //! done by the ViewmappingReset method.
203 Standard_EXPORT void SetViewMappingDefault();
204
205 //! Saves the current orientation which will be the
206 //! reference value for the reset of the orientation
207 //! done by the ViewOrientationReset method.
208 Standard_EXPORT void SetViewOrientationDefault();
209
210 //! Associates the window <AWindow> to the view <me>.
211 //! No new association if the window is already defined.
212 //! Category: Methods to modify the class definition
213 //! Warning: Raises ViewDefinitionError if it is impossible
214 //! to associate a view and a window.
215 //! (association already done or another problem)
216 //! Modifies the viewmapping of the associated view
217 //! when it calls the SetRatio method.
218 //!
219 //! After this call, each view is mapped in an unique window.
220 //!
221 //! Programming example :
222 //!
223 //! An example when we have 1 view and 1 window
224 //! -------------------------------------------
225 //!
226 //! Handle(Aspect_DisplayConnection) aDisplayConnection;
227 //!
228 //! // Display connection initialization only needed on Linux platform
229 //! // and on Mac OS X, in cases when you use Xlib for windows drawing.
230 //! aDisplayConnection = new Aspect_DisplayConnection();
231 //!
232 //! // Graphic driver initialization
233 //! Handle(Graphic3d_GraphicDriver) aGraphicDriver =
234 //! Graphic3d::InitGraphicDriver (aDisplayConnection);
235 //!
236 //! // Define a view manager
237 //! Handle(Visual3d_ViewManager) aVisualManager = new Visual3d_ViewManager (aGraphicDriver);
238 //!
239 //! // Define a view
240 //! Handle(Visual3d_View) aView = new Visual3d_View (aVisaulManager);
241 //!
242 //! // Define a window
243 //! Handle(Xw_Window) aWindow = new Xw_Window
244 //! (aDisplayConnection, "Graphic View 1", 0.695, 0.695, 0.600, 0.600, Quantity_NOC_MATRAGRAY);
245 //!
246 //! // Associate the view and the window
247 //! aView->SetWindow (aWindow);
248 //!
249 //! // Map the window
250 //! aWindow->Map ();
251 //!
252 //! // Activate the view
253 //! aView->Activate ();
254 Standard_EXPORT void SetWindow (const Handle(Aspect_Window)& AWindow);
255
256 //! Associates the window <AWindow> and context <AContext>
257 //! to the view <me>.
258 //! If <AContext> is not NULL the graphic context is used
259 //! directly to draw something in this view.
260 //! Otherwise an internal context is created.
261 //! If <ADisplayCB> is not NULL then a user display CB is
262 //! call at the end of the OCC graphic traversal and just
263 //! before the swap of buffers. The <aClientData> is pass
264 //! to this call back.
265 //! No new association if the window is already defined.
266 //! Category: Methods to modify the class definition
267 //! Warning: Raises ViewDefinitionError if it is impossible
268 //! to associate a view and a window.
269 //! (association already done or another problem)
270 //! Modifies the viewmapping of the associated view
271 //! when it calls the SetRatio method.
272 //!
273 //! After this call, each view is mapped in an unique window.
274 Standard_EXPORT void SetWindow (const Handle(Aspect_Window)& AWindow, const Aspect_RenderingContext AContext, const Aspect_GraphicCallbackProc& ADisplayCB, const Standard_Address AClientData);
275
276 //! Updates screen in function of modifications of
277 //! the structures.
278 Standard_EXPORT void Update (const Aspect_TypeOfUpdate theUpdateMode);
279
280 //! Updates screen in function of modifications of
281 //! the structures.
282 Standard_EXPORT void Update (const Handle(Visual3d_Layer)& AnUnderLayer, const Handle(Visual3d_Layer)& AnOverLayer);
283
284 //! Sets the automatic z-fit mode and its parameters.
285 //! The auto z-fit has extra parameters which can controlled from application level
286 //! to ensure that the size of viewing volume will be sufficiently large to cover
287 //! the depth of unmanaged objects, for example, transformation persistent ones.
288 //! @param theScaleFactor [in] the scale factor for Z-range.
289 //! The range between Z-min, Z-max projection volume planes
290 //! evaluated by z fitting method will be scaled using this coefficient.
291 //! Program error exception is thrown if negative or zero value
292 //! is passed.
293 Standard_EXPORT void SetAutoZFitMode (const Standard_Boolean theIsOn, const Standard_Real theScaleFactor = 1.0);
294
295 //! returns TRUE if automatic z-fit mode is turned on.
296 Standard_EXPORT Standard_Boolean AutoZFitMode() const;
297
298 //! returns scale factor parameter of automatic z-fit mode.
299 Standard_EXPORT Standard_Real AutoZFitScaleFactor() const;
300
301 //! If automatic z-range fitting is turned on, adjusts Z-min and Z-max
302 //! projection volume planes with call to ZFitAll.
303 Standard_EXPORT void AutoZFit();
304
305 //! Change Z-min and Z-max planes of projection volume to match the
306 //! displayed objects.
307 Standard_EXPORT void ZFitAll (const Standard_Real theScaleFactor = 1.0);
308
309 //! Sets the value of the mapping to be the same as
310 //! the mapping saved by the SetViewMappingDefaut method.
311 Standard_EXPORT void ViewMappingReset();
312
313 //! Sets the value of the orientation to be the same as the
314 //! orientation saved by the SetViewOrientationDefaut method.
315 Standard_EXPORT void ViewOrientationReset();
316
317 //! Switches computed HLR mode in the view
318 Standard_EXPORT void SetComputedMode (const Standard_Boolean aMode);
319
320 //! Returns the computed HLR mode state
321 Standard_EXPORT Standard_Boolean ComputedMode() const;
322
323 //! Customization of the ZBUFFER Triedron.
324 //! Initializes Colors of X Y and axis
325 //! Scale ratio defines decreasing of trihedron size when
326 //! its position is out of a View
327 Standard_EXPORT void ZBufferTriedronSetup (const Quantity_NameOfColor XColor = Quantity_NOC_RED, const Quantity_NameOfColor YColor = Quantity_NOC_GREEN, const Quantity_NameOfColor ZColor = Quantity_NOC_BLUE1, const Standard_Real SizeRatio = 0.8, const Standard_Real AxisDiametr = 0.05, const Standard_Integer NbFacettes = 12);
328
329 //! Display of the Triedron.
330 //! Initialize position, color and length of Triedron axes.
331 //! The scale is a percent of the window width.
332 //! If AsWireframe is FALSE triedron is shown in shaded mode
333 //! AColor is not considered for ZBUFFER mode
334 Standard_EXPORT void TriedronDisplay (const Aspect_TypeOfTriedronPosition APosition = Aspect_TOTP_CENTER, const Quantity_NameOfColor AColor = Quantity_NOC_WHITE, const Standard_Real AScale = 0.02, const Standard_Boolean AsWireframe = Standard_True);
335
336 //! Erases the Triedron.
337 Standard_EXPORT void TriedronErase();
338
339 //! Highlights the echo zone of the Triedron.
340 Standard_EXPORT void TriedronEcho (const Aspect_TypeOfTriedronEcho AType = Aspect_TOTE_NONE);
341
342 //! Returns data of a graduated trihedron
343 Standard_EXPORT const Graphic3d_GraduatedTrihedron& GetGraduatedTrihedron() const;
344
345 //! Displays a graduated trihedron.
346 Standard_EXPORT void GraduatedTrihedronDisplay (const Graphic3d_GraduatedTrihedron& theTrigedronData);
347
348 //! Erases a graduated trihedron from the view.
349 Standard_EXPORT void GraduatedTrihedronErase();
350
351 //! Returns the value of the default window background.
352 Standard_EXPORT Aspect_Background Background() const;
353
354 //! Returns the value of the window background.
355 Standard_EXPORT Aspect_GradientBackground GradientBackground() const;
356
357 //! Returns Standard_True if one of the structures
358 //! displayed in the view <me> contains Polygons,
359 //! Triangles or Quadrangles.
360 Standard_EXPORT Standard_Boolean ContainsFacet() const;
361
362 //! Returns Standard_True if one of the structures
363 //! in the set <ASet> contains Polygons, Triangles
364 //! or Quadrangles.
365 Standard_EXPORT Standard_Boolean ContainsFacet (const Graphic3d_MapOfStructure& ASet) const;
366
367 //! Returns the current context of the view <me>.
368 Standard_EXPORT const Visual3d_ContextView& Context() const;
369
370 //! Returns the set of structures displayed in
371 //! the view <me>.
372 Standard_EXPORT void DisplayedStructures (Graphic3d_MapOfStructure& SG) const;
373
374 //! Returns the activity flag of the view <me>.
375 Standard_EXPORT Standard_Boolean IsActive() const;
376
377 //! Returns True if the window associated to the view
378 //! <me> is defined.
379 Standard_EXPORT Standard_Boolean IsDefined() const;
380
381 //! Returns Standard_True is the view <me> is deleted.
382 //! <me> is deleted after the call Remove (me).
383 Standard_EXPORT Standard_Boolean IsDeleted() const;
384
385 //! Returns the coordinates of the boundary box of all
386 //! structures displayed in the view <me>.
387 //! If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
388 //! also includes minimum and maximum limits of graphical elements
389 //! forming parts of infinite structures.
390 Standard_EXPORT Bnd_Box MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False) const;
391
392 //! Returns the coordinates of the boundary box of all
393 //! structures in the set <theSet>.
394 //! If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
395 //! also includes minimum and maximum limits of graphical elements
396 //! forming parts of infinite structures.
397 Standard_EXPORT Bnd_Box MinMaxValues (const Graphic3d_MapOfStructure& theSet, const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False) const;
398
399 //! Returns number of displayed structures in
400 //! the view <me>.
401 Standard_EXPORT Standard_Integer NumberOfDisplayedStructures() const;
402
403 //! Returns the coordinates of the projection of the
404 //! 3d coordinates <AX>, <AY>, <AZ>.
405 Standard_EXPORT void Projects (const Standard_Real AX, const Standard_Real AY, const Standard_Real AZ, Standard_Real& APX, Standard_Real& APY, Standard_Real& APZ) const;
406
407 //! @return the default camera of <me>.
408 Standard_EXPORT const Handle(Graphic3d_Camera)& DefaultCamera() const;
409
410 //! @return the camera of <me>.
411 Standard_EXPORT const Handle(Graphic3d_Camera)& Camera() const;
412
413 //! Set camera object to provide orientation and projection matrices
414 //! for graphic driver.
415 Standard_EXPORT void SetCamera (const Handle(Graphic3d_Camera)& theCamera);
416
417 //! Returns the window associated to the view <me>.
418 //! Warning: Raises ViewDefinitionError if the associated
419 //! window isn't defined.
420 Standard_EXPORT Handle(Aspect_Window) Window() const;
421
422 //! Returns the MAX number of light associated to the view <me>.
423 Standard_EXPORT Standard_Integer LightLimit() const;
424
425 //! Returns the MAX number of clipping planes
426 //! associated to the view <me>.
427 Standard_EXPORT Standard_Integer PlaneLimit() const;
428
429 //! Returns the view manager handle which manage this view
430 Standard_EXPORT Handle(Visual3d_ViewManager) ViewManager() const;
431
432 //! Computes the new presentation of the
433 //! structure <AStructure> displayed in <me>
434 //! with the type Graphic3d_TOS_COMPUTED.
435 Standard_EXPORT void ReCompute (const Handle(Graphic3d_Structure)& AStructure);
c3282ec1 436
42cf5bc1 437 //! Returns the identification number of the view <me>.
438 Standard_EXPORT Standard_Integer Identification() const;
439
440 //! Returns the c structure associated to <me>.
441 Standard_EXPORT Standard_Address CView() const;
442
443 //! Returns the associated GraphicDriver.
444 Standard_EXPORT const Handle(Graphic3d_GraphicDriver)& GraphicDriver() const;
445
446 //! print the contents of all layers of the view to the printer.
447 //! <hPrnDC> : Pass the PrinterDeviceContext (HDC),
448 //! <showBackground> : When set to FALSE then print the view without background color
449 //! (background is white)
450 //! else set to TRUE for printing with current background color.
451 //! <filename>: If != NULL, then the view will be printed to a file.
452 //! <printAlgo>: Select print algorithm: stretch, tile.
453 //! <theScaleFactor>: Scaling coefficient, used internally to scale the
454 //! printings accordingly to the scale factor selected in the printer
455 //! properties dialog.
456 //! Returns Standard_True if the data is passed to the printer, otherwise
457 //! Standard_False if the print operation failed due to printer error
458 //! or insufficient memory.
459 //! Warning: Works only under Windows.
460 Standard_EXPORT Standard_Boolean Print (const Handle(Visual3d_Layer)& AnUnderLayer, const Handle(Visual3d_Layer)& AnOverLayer, const Aspect_Handle hPrnDC, const Standard_Boolean showBackground, const Standard_CString filename, const Aspect_PrintAlgo printAlgorithm = Aspect_PA_STRETCH, const Standard_Real theScaleFactor = 1.0) const;
461
462 //! print the contents of the view to printer.
463 //! <hPrnDC> : Pass the PrinterDeviceContext (HDC),
464 //! <showBackground> : When set to FALSE then print the view without background color
465 //! (background is white)
466 //! else set to TRUE for printing with current background color.
467 //! <filename>: If != NULL, then the view will be printed to a file.
468 //! <printAlgo>: Select print algorithm: stretch, tile.
469 //! <theScaleFactor>: Scaling coefficient, used internally to scale the
470 //! printings accordingly to the scale factor selected in the printer
471 //! properties dialog.
472 //! Returns Standard_True if the data is passed to the printer, otherwise
473 //! Standard_False if the print operation failed due to printer error
474 //! or insufficient memory.
475 //! Warning: Works only under Windows.
476 Standard_EXPORT Standard_Boolean Print (const Aspect_Handle hPrnDC, const Standard_Boolean showBackground, const Standard_CString filename, const Aspect_PrintAlgo printAlgorithm = Aspect_PA_STRETCH, const Standard_Real theScaleFactor = 1.0) const;
477
478 //! Returns the underlay of the view <me>.
479 Standard_EXPORT const Handle(Visual3d_Layer)& UnderLayer() const;
480
481 //! Returns the underlay of the view <me>.
482 Standard_EXPORT const Handle(Visual3d_Layer)& OverLayer() const;
483
484 //! Reads depths of shown pixels of the given rectangle
485 Standard_EXPORT void ReadDepths (const Standard_Integer x, const Standard_Integer y, const Standard_Integer width, const Standard_Integer height, const Standard_Address buffer) const;
486
487 //! Generate offscreen FBO in the graphic library
488 Standard_EXPORT Graphic3d_PtrFrameBuffer FBOCreate (const Standard_Integer width, const Standard_Integer height);
489
490 //! Remove offscreen FBO from the graphic library
491 Standard_EXPORT void FBORelease (Graphic3d_PtrFrameBuffer& fboPtr);
492
493 //! Read offscreen FBO configuration.
494 Standard_EXPORT void FBOGetDimensions (const Graphic3d_PtrFrameBuffer fboPtr, Standard_Integer& width, Standard_Integer& height, Standard_Integer& widthMax, Standard_Integer& heightMax);
495
496 //! Change offscreen FBO viewport.
497 Standard_EXPORT void FBOChangeViewport (Graphic3d_PtrFrameBuffer& fboPtr, const Standard_Integer width, const Standard_Integer height);
498
499 //! Dump active rendering buffer into specified memory buffer.
500 Standard_EXPORT Standard_Boolean BufferDump (Image_PixMap& theImage, const Graphic3d_BufferType& theBufferType);
501
502 //! turns on/off opengl lighting, currently used in triedron displaying
503 Standard_EXPORT void EnableGLLight (const Standard_Boolean enable) const;
504
505 //! returns the current state of the gl lighting
506 //! currently used in triedron displaying
507 Standard_EXPORT Standard_Boolean IsGLLightEnabled() const;
508
509
510 //! Export scene into the one of the Vector graphics formats (SVG, PS, PDF...).
511 //! In contrast to Bitmaps, Vector graphics is scalable (so you may got quality benefits on printing to laser printer).
512 //! Notice however that results may differ a lot and do not contain some elements.
513 Standard_EXPORT Standard_Boolean Export (const Standard_CString theFileName, const Graphic3d_ExportFormat theFormat, const Graphic3d_SortType theSortType = Graphic3d_ST_BSP_Tree, const Standard_Real thePrecision = 0.005, const Standard_Address theProgressBarFunc = NULL, const Standard_Address theProgressObject = NULL) const;
514
515 //! Returns map of objects hidden within this specific view (not viewer-wise).
516 Standard_EXPORT const Handle(Graphic3d_NMapOfTransient)& HiddenObjects() const;
517
518 //! Returns map of objects hidden within this specific view (not viewer-wise).
519 Standard_EXPORT Handle(Graphic3d_NMapOfTransient)& ChangeHiddenObjects();
520
c3282ec1 521 //! Returns Standard_True in case if the structure with the given <theStructId> is
522 //! in list of structures to be computed and stores computed struct to <theComputedStruct>.
523 Standard_EXPORT Standard_Boolean IsComputed (const Standard_Integer theStructId,
524 Handle(Graphic3d_Structure)& theComputedStruct) const;
525
42cf5bc1 526friend class Visual3d_ViewManager;
527
528
529 DEFINE_STANDARD_RTTI(Visual3d_View,Graphic3d_DataStructureManager)
530
531protected:
532
533
534
535
536private:
537
538
539 //! Is it possible to display the structure in the view?
540 Standard_EXPORT Visual3d_TypeOfAnswer acceptDisplay (const Graphic3d_TypeOfStructure theStructType) const;
541
542 //! Computes the new presentation of the
543 //! Structures displayed in <me> with the type
544 //! Graphic3d_TOS_COMPUTED.
545 Standard_EXPORT void Compute();
546
547 //! Changes the display priority of the structure <AStructure>.
548 Standard_EXPORT void ChangeDisplayPriority (const Handle(Graphic3d_Structure)& AStructure, const Standard_Integer OldPriority, const Standard_Integer NewPriority);
549
550 //! Sets the settings for a single Z layer of specified view.
551 Standard_EXPORT void SetZLayerSettings (const Graphic3d_ZLayerId theLayerId, const Graphic3d_ZLayerSettings& theSettings);
552
553 //! Add a new top-level Z layer to the view with ID
554 //! <theLayerId>. The z layer mechanism allows to display
555 //! structures in higher layers in overlay of structures in lower layers.
556 //! The layers in a particular view should be managed centrally
557 //! by its view manager so to avoid IDs mismatching and provide correct
558 //! display of graphics in all views.
559 Standard_EXPORT void AddZLayer (const Graphic3d_ZLayerId theLayerId);
560
561 //! Remove z layer from the view by its ID.
562 Standard_EXPORT void RemoveZLayer (const Graphic3d_ZLayerId theLayerId);
563
564 //! Change Z layer of already displayed structure in the view.
565 Standard_EXPORT void ChangeZLayer (const Handle(Graphic3d_Structure)& theStructure, const Graphic3d_ZLayerId theLayerId);
566
567 //! Clears the structure <AStructure> to the view <me>.
568 Standard_EXPORT void Clear (const Handle(Graphic3d_Structure)& AStructure, const Standard_Boolean WithDestruction);
569
570 //! Connects the structures <AMother> and <ADaughter>.
571 Standard_EXPORT void Connect (const Handle(Graphic3d_Structure)& AMother, const Handle(Graphic3d_Structure)& ADaughter);
572
573 //! Disconnects the structures <AMother> and <ADaughter>.
574 Standard_EXPORT void Disconnect (const Handle(Graphic3d_Structure)& AMother, const Handle(Graphic3d_Structure)& ADaughter);
575
576 //! Display the structure <AStructure> to the view <me>.
577 Standard_EXPORT void Display (const Handle(Graphic3d_Structure)& AStructure);
578
579 //! Display the structure <AStructure> to the view <me>.
580 Standard_EXPORT void Display (const Handle(Graphic3d_Structure)& AStructure, const Aspect_TypeOfUpdate AnUpdateMode);
581
582 //! Erases the structure <AStructure> from the view <me>.
583 Standard_EXPORT void Erase (const Handle(Graphic3d_Structure)& AStructure);
584
585 //! Erases the structure <AStructure> from the view <me>.
586 Standard_EXPORT void Erase (const Handle(Graphic3d_Structure)& AStructure, const Aspect_TypeOfUpdate AnUpdateMode);
587
588 //! Highlights the structure <AStructure> in the view <me>.
589 Standard_EXPORT void Highlight (const Handle(Graphic3d_Structure)& AStructure, const Aspect_TypeOfHighlightMethod AMethod);
590
591 //! Transforms the structure <AStructure> in the view <me>.
592 Standard_EXPORT void SetTransform (const Handle(Graphic3d_Structure)& AStructure, const TColStd_Array2OfReal& ATrsf);
593
594 //! Suppress the highlighting on the structure <AStructure>
595 //! in the view <me>.
596 Standard_EXPORT void UnHighlight (const Handle(Graphic3d_Structure)& AStructure);
597
598 //! Returns an index != 0 if the structure <AStructure>
599 //! have another structure computed for the view <me>.
600 Standard_EXPORT Standard_Integer IsComputed (const Handle(Graphic3d_Structure)& AStructure) const;
601
602 //! Returns true if the structure <AStructure> is
603 //! displayed in the view <me>.
604 Standard_EXPORT Standard_Boolean IsDisplayed (const Handle(Graphic3d_Structure)& AStructure) const;
605
606 //! Modifies the aspect ratio of the view <me> when the
607 //! associated window is defined or resized.
608 Standard_EXPORT void SetRatio();
609
610 //! Updates the lights when the associated window is defined
611 //! and when the view is activated.
612 Standard_EXPORT void UpdateLights();
613
614 //! Updates the planes when the associated window is defined
615 //! and when the view is activated.
616 Standard_EXPORT void UpdatePlanes();
617
618 //! Updates the associated c structure before a call to the
619 //! graphic library.
620 Standard_EXPORT void UpdateView();
621
622 //! Returns an index != 0 if the structure <AStructure>
623 //! have the same owner than another structure in the
624 //! sequence of the computed structures.
625 Standard_EXPORT Standard_Integer HaveTheSameOwner (const Handle(Graphic3d_Structure)& AStructure) const;
626
627 Visual3d_ViewManagerPtr myViewManager;
628 Graphic3d_CView MyCView;
629 Visual3d_ContextView MyContext;
630 Handle(Aspect_Window) MyWindow;
631 Graphic3d_SequenceOfStructure myStructsToCompute;
632 Graphic3d_SequenceOfStructure myStructsComputed;
633 Standard_Boolean myIsInComputedMode;
634 Handle(Graphic3d_GraphicDriver) myGraphicDriver;
635 Aspect_Background MyBackground;
636 Aspect_GradientBackground MyGradientBackground;
637 Graphic3d_MapOfStructure myStructsDisplayed;
42cf5bc1 638 Graphic3d_GraduatedTrihedron myGTrihedron;
639 Handle(Graphic3d_Camera) myDefaultCamera;
640 Standard_Boolean myAutoZFitIsOn;
641 Standard_Real myAutoZFitScaleFactor;
642 Standard_Boolean myStructuresUpdated;
643 Handle(Graphic3d_NMapOfTransient) myHiddenObjects;
644
645
646};
647
648
649
650
651
652
653
654#endif // _Visual3d_View_HeaderFile