VTK  9.0.1
vtkProp3DAxisFollower.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkProp3DAxisFollower.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 =========================================================================*/
29 #ifndef vtkProp3DAxisFollower_h
30 #define vtkProp3DAxisFollower_h
31 
32 #include "vtkProp3DFollower.h"
33 #include "vtkRenderingAnnotationModule.h" // For export macro
34 #include "vtkWeakPointer.h" // For vtkWeakPointer
35 
36 class vtkAxisActor;
37 class vtkViewport;
38 
39 class VTKRENDERINGANNOTATION_EXPORT vtkProp3DAxisFollower : public vtkProp3DFollower
40 {
41 public:
45  static vtkProp3DAxisFollower* New();
46 
48 
52  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
56 
59  virtual void SetAxis(vtkAxisActor*);
60  virtual vtkAxisActor* GetAxis();
62 
64 
69  vtkSetMacro(AutoCenter, vtkTypeBool);
70  vtkGetMacro(AutoCenter, vtkTypeBool);
71  vtkBooleanMacro(AutoCenter, vtkTypeBool);
73 
75 
80  vtkSetMacro(EnableDistanceLOD, int);
81  vtkGetMacro(EnableDistanceLOD, int);
83 
85 
90  vtkSetClampMacro(DistanceLODThreshold, double, 0.0, 1.0);
91  vtkGetMacro(DistanceLODThreshold, double);
93 
95 
100  vtkSetMacro(EnableViewAngleLOD, int);
101  vtkGetMacro(EnableViewAngleLOD, int);
103 
105 
110  vtkSetClampMacro(ViewAngleLODThreshold, double, 0.0, 1.0);
111  vtkGetMacro(ViewAngleLODThreshold, double);
113 
115 
119  double GetScreenOffset();
120  void SetScreenOffset(double offset);
122 
124 
127  vtkSetVector2Macro(ScreenOffsetVector, double);
128  vtkGetVector2Macro(ScreenOffsetVector, double);
130 
135  void ComputeMatrix() override;
136 
140  void ShallowCopy(vtkProp* prop) override;
141 
146  static double AutoScale(
147  vtkViewport* viewport, vtkCamera* camera, double screenSize, double position[3]);
148 
150 
155  int RenderOpaqueGeometry(vtkViewport* viewport) override;
156  int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
157  int RenderVolumetricGeometry(vtkViewport* viewport) override;
159 
160  virtual void SetViewport(vtkViewport* viewport);
161  virtual vtkViewport* GetViewport();
162 
163 protected:
165  ~vtkProp3DAxisFollower() override;
166 
167  void CalculateOrthogonalVectors(
168  double Rx[3], double Ry[3], double Rz[3], vtkAxisActor* axis1, double* dop, vtkViewport* ren);
169 
170  void ComputeRotationAndTranlation(vtkViewport* ren, double translation[3], double Rx[3],
171  double Ry[3], double Rz[3], vtkAxisActor* axis);
172 
173  // \NOTE: Not used as of now.
174  void ComputerAutoCenterTranslation(const double& autoScaleFactor, double translation[3]);
175 
176  int TestDistanceVisibility();
177  void ExecuteViewAngleVisibility(double normal[3]);
178 
179  bool IsTextUpsideDown(double* a, double* b);
180 
182 
185 
188 
189  double ScreenOffsetVector[2];
190 
193 
194 private:
196  void operator=(const vtkProp3DAxisFollower&) = delete;
197 
198  int TextUpsideDown;
199  int VisibleAtCurrentViewAngle;
200 };
201 
202 #endif
vtkProp3DAxisFollower::EnableViewAngleLOD
int EnableViewAngleLOD
Definition: vtkProp3DAxisFollower.h:186
vtkProp3DAxisFollower::Viewport
vtkWeakPointer< vtkViewport > Viewport
Definition: vtkProp3DAxisFollower.h:192
vtkProp3DFollower::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAxisActor
Create an axis with tick marks and labels.
Definition: vtkAxisActor.h:71
vtkProp3DFollower::RenderTranslucentPolygonalGeometry
int RenderTranslucentPolygonalGeometry(vtkViewport *viewport) override
vtkProp3DAxisFollower::DistanceLODThreshold
double DistanceLODThreshold
Definition: vtkProp3DAxisFollower.h:184
vtkProp3DAxisFollower::AutoCenter
vtkTypeBool AutoCenter
Definition: vtkProp3DAxisFollower.h:181
vtkProp3DFollower::RenderVolumetricGeometry
int RenderVolumetricGeometry(vtkViewport *viewport) override
vtkProp3DFollower
a vtkProp3D that always faces the camera
Definition: vtkProp3DFollower.h:43
vtkProp3DFollower.h
vtkProp3DAxisFollower::Axis
vtkWeakPointer< vtkAxisActor > Axis
Definition: vtkProp3DAxisFollower.h:191
vtkX3D::position
@ position
Definition: vtkX3D.h:267
vtkX3D::offset
@ offset
Definition: vtkX3D.h:444
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:45
vtkProp3DFollower::New
static vtkProp3DFollower * New()
Creates a follower with no camera set.
vtkWeakPointer.h
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:44
vtkProp3DAxisFollower::EnableDistanceLOD
int EnableDistanceLOD
Definition: vtkProp3DAxisFollower.h:183
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
vtkProp3DFollower::ComputeMatrix
void ComputeMatrix() override
Generate the matrix based on ivars.
vtkProp3DFollower::RenderOpaqueGeometry
int RenderOpaqueGeometry(vtkViewport *viewport) override
This causes the actor to be rendered.
vtkX3D::translation
@ translation
Definition: vtkX3D.h:238
vtkProp3DAxisFollower::ViewAngleLODThreshold
double ViewAngleLODThreshold
Definition: vtkProp3DAxisFollower.h:187
vtkProp3DAxisFollower
a subclass of vtkProp3DFollower that ensures that data is always parallel to the axis defined by a vt...
Definition: vtkProp3DAxisFollower.h:39
vtkProp3DFollower::ShallowCopy
void ShallowCopy(vtkProp *prop) override
Shallow copy of a follower.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkWeakPointer< vtkAxisActor >