VTK  9.5.20251213
vtkViewport.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
44
45#ifndef vtkViewport_h
46#define vtkViewport_h
47
48#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_5_0
49#include "vtkObject.h"
50#include "vtkRenderingCoreModule.h" // For export macro
51#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
52
53#include "vtkSelection.h" // Needed for selection
54#include "vtkSmartPointer.h" // Needed for assigning default nullptr value
55
56#include <array> // To store matrices
57
58VTK_ABI_NAMESPACE_BEGIN
60class vtkAssemblyPath;
61class vtkProp;
63class vtkWindow;
64
65class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkViewport : public vtkObject
66{
67public:
68 vtkTypeMacro(vtkViewport, vtkObject);
69 void PrintSelf(ostream& os, vtkIndent indent) override;
70
78
83
88
95
101
103
106 VTK_DEPRECATED_IN_9_5_0("Use AddViewProp() instead.")
109
113 VTK_DEPRECATED_IN_9_5_0("Use RemoveViewProp() instead.")
116
124
126
130 vtkSetVector3Macro(Background, double);
131 vtkGetVector3Macro(Background, double);
133
135
139 vtkSetVector3Macro(Background2, double);
140 vtkGetVector3Macro(Background2, double);
142 //
143
145
149 vtkSetClampMacro(BackgroundAlpha, double, 0.0, 1.0);
150 vtkGetMacro(BackgroundAlpha, double);
152
154
159 vtkSetMacro(GradientBackground, bool);
160 vtkGetMacro(GradientBackground, bool);
161 vtkBooleanMacro(GradientBackground, bool);
163
165
170 vtkSetMacro(DitherGradient, bool);
171 vtkGetMacro(DitherGradient, bool);
172 vtkBooleanMacro(DitherGradient, bool);
174
175 enum class GradientModes : int
176 {
177 // Background color is used at the bottom, Background2 color is used at the top.
179 // Background color on the left, Background2 color on the right.
181 // Background color in the center, Background2 color on and beyond the ellipse edge.
182 // Ellipse touches all sides of the viewport. The ellipse is a circle for viewports with equal
183 // width and height.
185 // Background color in the center, Background2 color on and beyond the ellipse edge.
186 // Ellipse touches all corners of the viewport. The ellipse is a circle for viewports with equal
187 // width and height.
189 };
190
192
200
202
206 vtkSetVector2Macro(Aspect, double);
207 vtkGetVectorMacro(Aspect, double, 2);
208 virtual void ComputeAspect();
210
212
217 vtkSetVector2Macro(PixelAspect, double);
218 vtkGetVectorMacro(PixelAspect, double, 2);
220
222
227 vtkSetVector4Macro(Viewport, double);
228 vtkGetVectorMacro(Viewport, double, 4);
230
232
237 vtkSetVector3Macro(DisplayPoint, double);
238 vtkGetVectorMacro(DisplayPoint, double, 3);
240
242
247 vtkSetVector3Macro(ViewPoint, double);
248 vtkGetVectorMacro(ViewPoint, double, 3);
250
252
256 vtkSetVector4Macro(WorldPoint, double);
257 vtkGetVectorMacro(WorldPoint, double, 4);
259
263 virtual double* GetCenter() VTK_SIZEHINT(2);
264
268 virtual vtkTypeBool IsInViewport(int x, int y);
269
273 virtual vtkWindow* GetVTKWindow() = 0;
274
278 virtual void DisplayToView(); // these get modified in subclasses
279
283 virtual void ViewToDisplay(); // to handle stereo rendering
284
288 virtual void WorldToView();
289
293 virtual void ViewToWorld();
294
299 {
300 this->DisplayToView();
301 this->ViewToWorld();
302 }
303
308 {
309 this->WorldToView();
310 this->ViewToDisplay();
311 }
312
316 void WorldToDisplay(double& x, double& y, double& z)
317 {
318 this->WorldToView(x, y, z);
319 this->ViewToDisplay(x, y, z);
320 }
321
323
330 virtual void LocalDisplayToDisplay(double& x, double& y);
331 virtual void DisplayToNormalizedDisplay(double& u, double& v);
332 virtual void NormalizedDisplayToViewport(double& x, double& y);
333 virtual void ViewportToNormalizedViewport(double& u, double& v);
334 virtual void NormalizedViewportToView(double& x, double& y, double& z);
335 virtual void ViewToPose(double&, double&, double&) {}
336 virtual void PoseToWorld(double&, double&, double&) {}
337 virtual void DisplayToLocalDisplay(double& x, double& y);
338 virtual void NormalizedDisplayToDisplay(double& u, double& v);
339 virtual void ViewportToNormalizedDisplay(double& x, double& y);
340 virtual void NormalizedViewportToViewport(double& u, double& v);
341 virtual void ViewToNormalizedViewport(double& x, double& y, double& z);
342 virtual void PoseToView(double&, double&, double&) {}
343 virtual void WorldToPose(double&, double&, double&) {}
344 virtual void ViewToWorld(double&, double&, double&) {}
345 virtual void WorldToView(double&, double&, double&) {}
346 virtual void ViewToDisplay(double& x, double& y, double& z);
348
350
355 virtual int* GetSize() VTK_SIZEHINT(2);
356 virtual int* GetOrigin() VTK_SIZEHINT(2);
357 void GetTiledSize(int* width, int* height);
358 virtual void GetTiledSizeAndOrigin(int* width, int* height, int* lowerLeftX, int* lowerLeftY);
360
361 // The following methods describe the public pick interface for picking
362 // Props in a viewport without/with setting fieldAssociation and selection.
363
370 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY) = 0;
371
380 double selectionX1, double selectionY1, double selectionX2, double selectionY2) = 0;
381
387 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY, vtkPropCollection*);
388
394 vtkAssemblyPath* PickPropFrom(double selectionX1, double selectionY1, double selectionX2,
395 double selectionY2, vtkPropCollection*);
396
405 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY, int fieldAssociation,
406 vtkSmartPointer<vtkSelection> selection) = 0;
407
417 virtual vtkAssemblyPath* PickProp(double selectionX1, double selectionY1, double selectionX2,
418 double selectionY2, int fieldAssociation, vtkSmartPointer<vtkSelection> selection) = 0;
419
427 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY, vtkPropCollection*,
428 int fieldAssociation, vtkSmartPointer<vtkSelection> selection);
429
437 vtkAssemblyPath* PickPropFrom(double selectionX1, double selectionY1, double selectionX2,
438 double selectionY2, vtkPropCollection*, int fieldAssociation,
439 vtkSmartPointer<vtkSelection> selection);
440
442
446 double GetPickX() const { return (this->PickX1 + this->PickX2) * 0.5; }
447 double GetPickY() const { return (this->PickY1 + this->PickY2) * 0.5; }
448 double GetPickWidth() const { return this->PickX2 - this->PickX1 + 1; }
449 double GetPickHeight() const { return this->PickY2 - this->PickY1 + 1; }
450 double GetPickX1() const { return this->PickX1; }
451 double GetPickY1() const { return this->PickY1; }
452 double GetPickX2() const { return this->PickX2; }
453 double GetPickY2() const { return this->PickY2; }
457
461 virtual double GetPickedZ() { return this->PickedZ; }
462
464
468 vtkSetVector3Macro(EnvironmentalBG, double);
469 vtkGetVector3Macro(EnvironmentalBG, double);
471
473
477 vtkSetVector3Macro(EnvironmentalBG2, double);
478 vtkGetVector3Macro(EnvironmentalBG2, double);
481
487 vtkSetMacro(GradientEnvironmentalBG, bool);
488 vtkGetMacro(GradientEnvironmentalBG, bool);
489 vtkBooleanMacro(GradientEnvironmentalBG, bool);
491
492protected:
493 // Create a vtkViewport with a black background, a white ambient light,
494 // two-sided lighting turned on, a viewport of (0,0,1,1), and back face
495 // culling turned off.
497 ~vtkViewport() override;
498
499 // Ivars for picking
500 // Store a picked Prop (contained in an assembly path)
504 double PickX1;
505 double PickY1;
506 double PickX2;
507 double PickY2;
508 double PickedZ;
509 // End Ivars for picking
510
514 double Background[3];
515 double Background2[3];
517 double Viewport[4];
518 double Aspect[2];
519 double PixelAspect[2];
520 double Center[2];
524
528
529 int Size[2];
530 int Origin[2];
531 double DisplayPoint[3];
532 double ViewPoint[3];
533 double WorldPoint[4];
534
535private:
536 std::array<int, 2> LastComputeAspectSize;
537 std::array<double, 4> LastComputeAspectVPort;
538 std::array<double, 2> LastComputeAspectPixelAspect;
539
540 vtkViewport(const vtkViewport&) = delete;
541 void operator=(const vtkViewport&) = delete;
542};
543
544VTK_ABI_NAMESPACE_END
545#endif
a list of 2D actors
a list of nodes that form an assembly path
a simple class to control print indentation
Definition vtkIndent.h:108
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:69
data object that represents a "selection" in VTK.
Hold a reference to a vtkObjectBase instance.
virtual vtkWindow * GetVTKWindow()=0
Return the vtkWindow that owns this vtkViewport.
double GetPickY2() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
virtual void ViewToWorld(double &, double &, double &)
These methods map from one coordinate system to another.
double GetPickX1() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
vtkPropCollection * Props
double GetPickX() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
double WorldPoint[4]
void WorldToDisplay(double &x, double &y, double &z)
Convert world point coordinates to display (or screen) coordinates.
vtkTypeBool HasViewProp(vtkProp *)
Query if a prop is in the list of props.
double Aspect[2]
virtual void WorldToView()
Convert world point coordinates to view coordinates.
virtual void DisplayToLocalDisplay(double &x, double &y)
These methods map from one coordinate system to another.
virtual void WorldToPose(double &, double &, double &)
These methods map from one coordinate system to another.
void WorldToDisplay()
Convert world point coordinates to display (or screen) coordinates.
~vtkViewport() override
vtkAssemblyPath * PickedProp
virtual void ViewToNormalizedViewport(double &x, double &y, double &z)
These methods map from one coordinate system to another.
virtual double * GetCenter()
Return the center of this viewport in display coordinates.
vtkPropCollection * GetViewProps()
Return any props in this viewport.
Definition vtkViewport.h:82
double PickX2
vtkGetEnumMacro(GradientMode, GradientModes)
Specify the direction of the gradient background.
virtual void DisplayToView()
Convert display coordinates to view coordinates.
double EnvironmentalBG2[3]
bool GradientBackground
double DisplayPoint[3]
double Background2[3]
virtual void ViewToPose(double &, double &, double &)
These methods map from one coordinate system to another.
double Background[3]
double GetPickX2() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
void DisplayToWorld()
Convert display (or screen) coordinates to world coordinates.
vtkActor2DCollection * Actors2D
double GetPickHeight() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
virtual void NormalizedDisplayToViewport(double &x, double &y)
These methods map from one coordinate system to another.
void RemoveActor2D(vtkProp *p)
Remove the given prop from the renderer.
virtual void PoseToWorld(double &, double &, double &)
These methods map from one coordinate system to another.
double ViewPoint[3]
vtkWindow * VTKWindow
virtual void ComputeAspect()
Set the aspect ratio of the rendered image.
vtkPropCollection * PickResultProps
virtual int * GetSize()
Get the size and origin of the viewport in display coordinates.
double BackgroundAlpha
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void NormalizedViewportToView(double &x, double &y, double &z)
These methods map from one coordinate system to another.
virtual vtkTypeBool IsInViewport(int x, int y)
Is a given display point in this Viewport's viewport.
double EnvironmentalBG[3]
virtual int * GetOrigin()
Get the size and origin of the viewport in display coordinates.
void AddActor2D(vtkProp *p)
Add the given prop to the renderer.
double Viewport[4]
vtkAssemblyPath * PickPropFrom(double selectionX, double selectionY, vtkPropCollection *)
Same as PickProp with two arguments, but selects from the given collection of Props instead of the Re...
virtual void ViewportToNormalizedDisplay(double &x, double &y)
These methods map from one coordinate system to another.
double PickX1
vtkSetEnumMacro(GradientMode, GradientModes)
Specify the direction of the gradient background.
vtkActor2DCollection * GetActors2D()
Loops through the props and returns a collection of those that are vtkActor2D (or one of its subclass...
virtual void LocalDisplayToDisplay(double &x, double &y)
These methods map from one coordinate system to another.
void AddViewProp(vtkProp *)
Add a prop to the list of props.
GradientModes GradientMode
vtkPropCollection * PickFromProps
virtual void NormalizedDisplayToDisplay(double &u, double &v)
These methods map from one coordinate system to another.
bool GradientEnvironmentalBG
virtual double GetPickedZ()
Return the Z value for the last picked Prop.
virtual void GetTiledSizeAndOrigin(int *width, int *height, int *lowerLeftX, int *lowerLeftY)
Get the size and origin of the viewport in display coordinates.
double GetPickWidth() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
int Origin[2]
double PickY1
void RemoveAllViewProps()
Remove all props from the list of props.
double GetPickY() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
double PixelAspect[2]
virtual void DisplayToNormalizedDisplay(double &u, double &v)
These methods map from one coordinate system to another.
virtual vtkAssemblyPath * PickProp(double selectionX, double selectionY)=0
Return the Prop that has the highest z value at the given x, y position in the viewport.
virtual void ViewToDisplay(double &x, double &y, double &z)
These methods map from one coordinate system to another.
virtual void NormalizedViewportToViewport(double &u, double &v)
These methods map from one coordinate system to another.
void RemoveViewProp(vtkProp *)
Remove a prop from the list of props.
virtual void ViewToWorld()
Convert view point coordinates to world coordinates.
bool DitherGradient
void GetTiledSize(int *width, int *height)
Get the size and origin of the viewport in display coordinates.
virtual void PoseToView(double &, double &, double &)
These methods map from one coordinate system to another.
double PickY2
double Center[2]
virtual void ViewToDisplay()
Convert view coordinates to display coordinates.
virtual void ViewportToNormalizedViewport(double &u, double &v)
These methods map from one coordinate system to another.
double GetPickY1() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
virtual void WorldToView(double &, double &, double &)
These methods map from one coordinate system to another.
double PickedZ
window superclass for vtkRenderWindow
Definition vtkWindow.h:48
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_DEPRECATED_IN_9_5_0(reason)
#define VTK_SIZEHINT(...)
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)