VTK  9.1.0
vtkViewport.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkViewport.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
32#ifndef vtkViewport_h
33#define vtkViewport_h
34
35#include "vtkObject.h"
36#include "vtkRenderingCoreModule.h" // For export macro
37
38#include <array> // To store matrices
39
41class vtkAssemblyPath;
42class vtkProp;
44class vtkWindow;
45
46class VTKRENDERINGCORE_EXPORT vtkViewport : public vtkObject
47{
48public:
49 vtkTypeMacro(vtkViewport, vtkObject);
50 void PrintSelf(ostream& os, vtkIndent indent) override;
51
58
62 vtkPropCollection* GetViewProps() { return this->Props; }
63
68
74
79
81
90
92
96 vtkSetVector3Macro(Background, double);
97 vtkGetVector3Macro(Background, double);
99
101
105 vtkSetVector3Macro(Background2, double);
106 vtkGetVector3Macro(Background2, double);
108 //
109
111
115 vtkSetClampMacro(BackgroundAlpha, double, 0.0, 1.0);
116 vtkGetMacro(BackgroundAlpha, double);
118
120
125 vtkSetMacro(GradientBackground, bool);
126 vtkGetMacro(GradientBackground, bool);
127 vtkBooleanMacro(GradientBackground, bool);
129
131
135 vtkSetVector2Macro(Aspect, double);
136 vtkGetVectorMacro(Aspect, double, 2);
137 virtual void ComputeAspect();
139
141
146 vtkSetVector2Macro(PixelAspect, double);
147 vtkGetVectorMacro(PixelAspect, double, 2);
149
151
156 vtkSetVector4Macro(Viewport, double);
157 vtkGetVectorMacro(Viewport, double, 4);
159
161
166 vtkSetVector3Macro(DisplayPoint, double);
167 vtkGetVectorMacro(DisplayPoint, double, 3);
169
171
176 vtkSetVector3Macro(ViewPoint, double);
177 vtkGetVectorMacro(ViewPoint, double, 3);
179
181
185 vtkSetVector4Macro(WorldPoint, double);
186 vtkGetVectorMacro(WorldPoint, double, 4);
188
192 virtual double* GetCenter() VTK_SIZEHINT(2);
193
197 virtual int IsInViewport(int x, int y);
198
202 virtual vtkWindow* GetVTKWindow() = 0;
203
207 virtual void DisplayToView(); // these get modified in subclasses
208
212 virtual void ViewToDisplay(); // to handle stereo rendering
213
217 virtual void WorldToView();
218
222 virtual void ViewToWorld();
223
227 void DisplayToWorld()
228 {
229 this->DisplayToView();
230 this->ViewToWorld();
231 }
232
237 {
238 this->WorldToView();
239 this->ViewToDisplay();
240 }
241
245 inline void WorldToDisplay(double& x, double& y, double& z)
246 {
247 this->WorldToView(x, y, z);
248 this->ViewToDisplay(x, y, z);
249 }
250
252
259 virtual void LocalDisplayToDisplay(double& x, double& y);
260 virtual void DisplayToNormalizedDisplay(double& u, double& v);
261 virtual void NormalizedDisplayToViewport(double& x, double& y);
262 virtual void ViewportToNormalizedViewport(double& u, double& v);
263 virtual void NormalizedViewportToView(double& x, double& y, double& z);
264 virtual void ViewToPose(double&, double&, double&) {}
265 virtual void PoseToWorld(double&, double&, double&) {}
266 virtual void DisplayToLocalDisplay(double& x, double& y);
267 virtual void NormalizedDisplayToDisplay(double& u, double& v);
268 virtual void ViewportToNormalizedDisplay(double& x, double& y);
269 virtual void NormalizedViewportToViewport(double& u, double& v);
270 virtual void ViewToNormalizedViewport(double& x, double& y, double& z);
271 virtual void PoseToView(double&, double&, double&) {}
272 virtual void WorldToPose(double&, double&, double&) {}
273 virtual void ViewToWorld(double&, double&, double&) {}
274 virtual void WorldToView(double&, double&, double&) {}
275 virtual void ViewToDisplay(double& x, double& y, double& z);
277
279
284 virtual int* GetSize() VTK_SIZEHINT(2);
285 virtual int* GetOrigin() VTK_SIZEHINT(2);
286 void GetTiledSize(int* width, int* height);
287 virtual void GetTiledSizeAndOrigin(int* width, int* height, int* lowerLeftX, int* lowerLeftY);
289
290 // The following methods describe the public pick interface for picking
291 // Props in a viewport.
292
299 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY) = 0;
300
308 virtual vtkAssemblyPath* PickProp(
309 double selectionX1, double selectionY1, double selectionX2, double selectionY2) = 0;
310
316 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY, vtkPropCollection*);
317
323 vtkAssemblyPath* PickPropFrom(double selectionX1, double selectionY1, double selectionX2,
324 double selectionY2, vtkPropCollection*);
325
327
331 double GetPickX() const { return (this->PickX1 + this->PickX2) * 0.5; }
332 double GetPickY() const { return (this->PickY1 + this->PickY2) * 0.5; }
333 double GetPickWidth() const { return this->PickX2 - this->PickX1 + 1; }
334 double GetPickHeight() const { return this->PickY2 - this->PickY1 + 1; }
335 double GetPickX1() const { return this->PickX1; }
336 double GetPickY1() const { return this->PickY1; }
337 double GetPickX2() const { return this->PickX2; }
338 double GetPickY2() const { return this->PickY2; }
339 vtkGetObjectMacro(PickResultProps, vtkPropCollection);
341
345 virtual double GetPickedZ() { return this->PickedZ; }
346
348
352 vtkSetVector3Macro(EnvironmentalBG, double);
353 vtkGetVector3Macro(EnvironmentalBG, double);
355
357
361 vtkSetVector3Macro(EnvironmentalBG2, double);
362 vtkGetVector3Macro(EnvironmentalBG2, double);
365
371 vtkSetMacro(GradientEnvironmentalBG, bool);
372 vtkGetMacro(GradientEnvironmentalBG, bool);
373 vtkBooleanMacro(GradientEnvironmentalBG, bool);
375
376protected:
377 // Create a vtkViewport with a black background, a white ambient light,
378 // two-sided lighting turned on, a viewport of (0,0,1,1), and back face
379 // culling turned off.
381 ~vtkViewport() override;
382
383 // Ivars for picking
384 // Store a picked Prop (contained in an assembly path)
388 double PickX1;
389 double PickY1;
390 double PickX2;
391 double PickY2;
392 double PickedZ;
393 // End Ivars for picking
394
398 double Background[3];
399 double Background2[3];
401 double Viewport[4];
402 double Aspect[2];
403 double PixelAspect[2];
404 double Center[2];
406
407 double EnvironmentalBG[3];
408 double EnvironmentalBG2[3];
410
411 int Size[2];
412 int Origin[2];
413 double DisplayPoint[3];
414 double ViewPoint[3];
415 double WorldPoint[4];
416
417private:
418 std::array<int, 2> LastComputeAspectSize;
419 std::array<double, 4> LastComputeAspectVPort;
420 std::array<double, 2> LastComputeAspectPixelAspect;
421
422 vtkViewport(const vtkViewport&) = delete;
423 void operator=(const vtkViewport&) = delete;
424};
425
426#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:34
abstract base class for most VTK objects
Definition vtkObject.h:54
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:48
abstract specification for Viewports
Definition vtkViewport.h:47
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
void WorldToDisplay(double &x, double &y, double &z)
Convert world point coordinates to display (or screen) 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:62
double PickX2
bool GradientBackground
virtual void ViewToPose(double &, double &, double &)
These methods map from one coordinate system to another.
double GetPickX2() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
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)
Add/Remove different types of props to the renderer.
virtual void PoseToWorld(double &, double &, double &)
These methods map from one coordinate system to another.
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.
void AddActor2D(vtkProp *p)
Add/Remove different types of props to the renderer.
virtual void ViewportToNormalizedDisplay(double &x, double &y)
These methods map from one coordinate system to another.
double PickX1
vtkActor2DCollection * GetActors2D()
Add/Remove different types of props to the renderer.
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.
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.
double GetPickWidth() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
double PickY1
double GetPickY() const
Methods used to return the pick (x,y) in local display coordinates (i.e., it's that same as selection...
void RemoveAllViewProps(void)
Remove all props from the list of props.
virtual void DisplayToNormalizedDisplay(double &u, double &v)
These methods map from one coordinate system to another.
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 PoseToView(double &, double &, double &)
These methods map from one coordinate system to another.
double PickY2
virtual void ViewportToNormalizedViewport(double &u, double &v)
These methods map from one coordinate system to another.
int HasViewProp(vtkProp *)
Query if a prop is in the list of props.
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:36
#define VTK_SIZEHINT(...)