VTK  9.6.20260221
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_7_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
106 VTK_DEPRECATED_IN_9_7_0("Use GetViewProps() instead.")
109
111
115 vtkSetVector3Macro(Background, double);
116 vtkGetVector3Macro(Background, double);
118
120
124 vtkSetVector3Macro(Background2, double);
125 vtkGetVector3Macro(Background2, double);
127 //
128
130
134 vtkSetClampMacro(BackgroundAlpha, double, 0.0, 1.0);
135 vtkGetMacro(BackgroundAlpha, double);
137
139
144 vtkSetMacro(GradientBackground, bool);
145 vtkGetMacro(GradientBackground, bool);
146 vtkBooleanMacro(GradientBackground, bool);
148
150
155 vtkSetMacro(DitherGradient, bool);
156 vtkGetMacro(DitherGradient, bool);
157 vtkBooleanMacro(DitherGradient, bool);
159
160 enum class GradientModes : int
161 {
162 // Background color is used at the bottom, Background2 color is used at the top.
164 // Background color on the left, Background2 color on the right.
166 // Background color in the center, Background2 color on and beyond the ellipse edge.
167 // Ellipse touches all sides of the viewport. The ellipse is a circle for viewports with equal
168 // width and height.
170 // Background color in the center, Background2 color on and beyond the ellipse edge.
171 // Ellipse touches all corners of the viewport. The ellipse is a circle for viewports with equal
172 // width and height.
174 };
175
177
185
187
191 vtkSetVector2Macro(Aspect, double);
192 vtkGetVectorMacro(Aspect, double, 2);
193 virtual void ComputeAspect();
195
197
202 vtkSetVector2Macro(PixelAspect, double);
203 vtkGetVectorMacro(PixelAspect, double, 2);
205
207
212 vtkSetVector4Macro(Viewport, double);
213 vtkGetVectorMacro(Viewport, double, 4);
215
217
222 vtkSetVector3Macro(DisplayPoint, double);
223 vtkGetVectorMacro(DisplayPoint, double, 3);
225
227
232 vtkSetVector3Macro(ViewPoint, double);
233 vtkGetVectorMacro(ViewPoint, double, 3);
235
237
241 vtkSetVector4Macro(WorldPoint, double);
242 vtkGetVectorMacro(WorldPoint, double, 4);
244
248 virtual double* GetCenter() VTK_SIZEHINT(2);
249
253 virtual vtkTypeBool IsInViewport(int x, int y);
254
258 virtual vtkWindow* GetVTKWindow() = 0;
259
263 virtual void DisplayToView(); // these get modified in subclasses
264
268 virtual void ViewToDisplay(); // to handle stereo rendering
269
273 virtual void WorldToView();
274
278 virtual void ViewToWorld();
279
284 {
285 this->DisplayToView();
286 this->ViewToWorld();
287 }
288
293 {
294 this->WorldToView();
295 this->ViewToDisplay();
296 }
297
301 void WorldToDisplay(double& x, double& y, double& z)
302 {
303 this->WorldToView(x, y, z);
304 this->ViewToDisplay(x, y, z);
305 }
306
308
315 virtual void LocalDisplayToDisplay(double& x, double& y);
316 virtual void DisplayToNormalizedDisplay(double& u, double& v);
317 virtual void NormalizedDisplayToViewport(double& x, double& y);
318 virtual void ViewportToNormalizedViewport(double& u, double& v);
319 virtual void NormalizedViewportToView(double& x, double& y, double& z);
320 virtual void ViewToPose(double&, double&, double&) {}
321 virtual void PoseToWorld(double&, double&, double&) {}
322 virtual void DisplayToLocalDisplay(double& x, double& y);
323 virtual void NormalizedDisplayToDisplay(double& u, double& v);
324 virtual void ViewportToNormalizedDisplay(double& x, double& y);
325 virtual void NormalizedViewportToViewport(double& u, double& v);
326 virtual void ViewToNormalizedViewport(double& x, double& y, double& z);
327 virtual void PoseToView(double&, double&, double&) {}
328 virtual void WorldToPose(double&, double&, double&) {}
329 virtual void ViewToWorld(double&, double&, double&) {}
330 virtual void WorldToView(double&, double&, double&) {}
331 virtual void ViewToDisplay(double& x, double& y, double& z);
333
335
340 virtual int* GetSize() VTK_SIZEHINT(2);
341 virtual int* GetOrigin() VTK_SIZEHINT(2);
342 void GetTiledSize(int* width, int* height);
343 virtual void GetTiledSizeAndOrigin(int* width, int* height, int* lowerLeftX, int* lowerLeftY);
345
346 // The following methods describe the public pick interface for picking
347 // Props in a viewport without/with setting fieldAssociation and selection.
348
355 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY) = 0;
356
365 double selectionX1, double selectionY1, double selectionX2, double selectionY2) = 0;
366
372 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY, vtkPropCollection*);
373
379 vtkAssemblyPath* PickPropFrom(double selectionX1, double selectionY1, double selectionX2,
380 double selectionY2, vtkPropCollection*);
381
390 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY, int fieldAssociation,
391 vtkSmartPointer<vtkSelection> selection) = 0;
392
402 virtual vtkAssemblyPath* PickProp(double selectionX1, double selectionY1, double selectionX2,
403 double selectionY2, int fieldAssociation, vtkSmartPointer<vtkSelection> selection) = 0;
404
412 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY, vtkPropCollection*,
413 int fieldAssociation, vtkSmartPointer<vtkSelection> selection);
414
422 vtkAssemblyPath* PickPropFrom(double selectionX1, double selectionY1, double selectionX2,
423 double selectionY2, vtkPropCollection*, int fieldAssociation,
424 vtkSmartPointer<vtkSelection> selection);
425
427
431 double GetPickX() const { return (this->PickX1 + this->PickX2) * 0.5; }
432 double GetPickY() const { return (this->PickY1 + this->PickY2) * 0.5; }
433 double GetPickWidth() const { return this->PickX2 - this->PickX1 + 1; }
434 double GetPickHeight() const { return this->PickY2 - this->PickY1 + 1; }
435 double GetPickX1() const { return this->PickX1; }
436 double GetPickY1() const { return this->PickY1; }
437 double GetPickX2() const { return this->PickX2; }
438 double GetPickY2() const { return this->PickY2; }
442
446 virtual double GetPickedZ() { return this->PickedZ; }
447
449
453 vtkSetVector3Macro(EnvironmentalBG, double);
454 vtkGetVector3Macro(EnvironmentalBG, double);
456
458
462 vtkSetVector3Macro(EnvironmentalBG2, double);
463 vtkGetVector3Macro(EnvironmentalBG2, double);
466
472 vtkSetMacro(GradientEnvironmentalBG, bool);
473 vtkGetMacro(GradientEnvironmentalBG, bool);
474 vtkBooleanMacro(GradientEnvironmentalBG, bool);
476
477protected:
478 // Create a vtkViewport with a black background, a white ambient light,
479 // two-sided lighting turned on, a viewport of (0,0,1,1), and back face
480 // culling turned off.
482 ~vtkViewport() override;
483
484 // Ivars for picking
485 // Store a picked Prop (contained in an assembly path)
489 double PickX1;
490 double PickY1;
491 double PickX2;
492 double PickY2;
493 double PickedZ;
494 // End Ivars for picking
495
497
498 // VTK_DEPRECATED_IN_9_7_0
500
502 double Background[3];
503 double Background2[3];
505 double Viewport[4];
506 double Aspect[2];
507 double PixelAspect[2];
508 double Center[2];
512
516
517 int Size[2];
518 int Origin[2];
519 double DisplayPoint[3];
520 double ViewPoint[3];
521 double WorldPoint[4];
522
523private:
524 std::array<int, 2> LastComputeAspectSize;
525 std::array<double, 4> LastComputeAspectVPort;
526 std::array<double, 2> LastComputeAspectPixelAspect;
527
528 vtkViewport(const vtkViewport&) = delete;
529 void operator=(const vtkViewport&) = delete;
530};
531
532VTK_ABI_NAMESPACE_END
533#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.
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.
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:61
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_DEPRECATED_IN_9_7_0(reason)
#define VTK_SIZEHINT(...)
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)