VTK
vtkAxisFollower.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAxisFollower.cxx
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 vtkAxisFollower_h
30 #define vtkAxisFollower_h
31 
32 #include "vtkRenderingAnnotationModule.h" // For export macro
33 #include "vtkFollower.h"
34 
35 #include "vtkWeakPointer.h" // For vtkWeakPointer
36 
37 // Forward declarations.
38 class vtkAxisActor;
39 class vtkRenderer;
40 
41 class VTKRENDERINGANNOTATION_EXPORT vtkAxisFollower : public vtkFollower
42 {
43 public:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
50  static vtkAxisFollower *New();
51 
53 
56  virtual void SetAxis(vtkAxisActor*);
57  virtual vtkAxisActor* GetAxis();
59 
61 
66  vtkSetMacro(AutoCenter, vtkTypeBool);
67  vtkGetMacro(AutoCenter, vtkTypeBool);
68  vtkBooleanMacro(AutoCenter, vtkTypeBool);
70 
72 
77  vtkSetMacro(EnableDistanceLOD, int);
78  vtkGetMacro(EnableDistanceLOD, int);
80 
82 
87  vtkSetClampMacro(DistanceLODThreshold, double, 0.0, 1.0);
88  vtkGetMacro(DistanceLODThreshold, double);
90 
92 
97  vtkSetMacro(EnableViewAngleLOD, int);
98  vtkGetMacro(EnableViewAngleLOD, int);
100 
102 
107  vtkSetClampMacro(ViewAngleLODThreshold, double, 0.0, 1.0);
108  vtkGetMacro(ViewAngleLODThreshold, double);
110 
112 
116  double GetScreenOffset();
117  void SetScreenOffset(double offset);
119 
121 
125  vtkSetVector2Macro(ScreenOffsetVector, double);
126  vtkGetVector2Macro(ScreenOffsetVector, double);
128 
130 
135  int RenderOpaqueGeometry(vtkViewport *viewport) override;
137  void Render(vtkRenderer *ren) override;
139 
145 
149  void ShallowCopy(vtkProp *prop) override;
150 
155  static double AutoScale(vtkViewport *viewport, vtkCamera * camera,
156  double screenSize, double position[3]);
157 
158 protected:
160  ~vtkAxisFollower() override;
161 
162  void CalculateOrthogonalVectors(double Rx[3], double Ry[3], double Rz[3],
163  vtkAxisActor *axis1, double *dop,
164  vtkRenderer *ren);
165 
167  double Rx[3], double Ry[3], double Rz[3],
168  vtkAxisActor *axis);
169 
170  // \NOTE: Not used as of now.
171  void ComputerAutoCenterTranslation(const double& autoScaleFactor,
172  double translation[3]);
173 
175  void ExecuteViewAngleVisibility(double normal[3]);
176 
177  bool IsTextUpsideDown(double* a, double* b);
178 
180 
183 
186 
187  double ScreenOffsetVector[2];
188 
190 
191 private:
192 
193  int TextUpsideDown;
194  int VisibleAtCurrentViewAngle;
195 
196  vtkAxisFollower(const vtkAxisFollower&) = delete;
197  void operator =(const vtkAxisFollower&) = delete;
198 
199  // hide the two parameter Render() method from the user and the compiler.
200  void Render(vtkRenderer *, vtkMapper *) override {}
201 };
202 
203 #endif // vtkAxisFollower_h
vtkAxisFollower::Render
void Render(vtkRenderer *ren) override
vtkFollower
a subclass of actor that always faces the camera
Definition: vtkFollower.h:47
vtkAxisFollower::IsTextUpsideDown
bool IsTextUpsideDown(double *a, double *b)
vtkAxisFollower::AutoCenter
vtkTypeBool AutoCenter
Definition: vtkAxisFollower.h:179
vtkAxisFollower::Axis
vtkWeakPointer< vtkAxisActor > Axis
Definition: vtkAxisFollower.h:189
vtkAxisActor
Create an axis with tick marks and labels.
Definition: vtkAxisActor.h:75
vtkAxisFollower::RenderOpaqueGeometry
int RenderOpaqueGeometry(vtkViewport *viewport) override
This causes the actor to be rendered.
vtkAxisFollower::ExecuteViewAngleVisibility
void ExecuteViewAngleVisibility(double normal[3])
vtkAxisFollower::EnableViewAngleLOD
int EnableViewAngleLOD
Definition: vtkAxisFollower.h:184
vtkFollower::Render
virtual void Render(vtkRenderer *ren)
vtkAxisFollower::ShallowCopy
void ShallowCopy(vtkProp *prop) override
Shallow copy of a follower.
vtkAxisFollower::DistanceLODThreshold
double DistanceLODThreshold
Definition: vtkAxisFollower.h:182
vtkFollower.h
vtkAxisFollower::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAxisFollower::ViewAngleLODThreshold
double ViewAngleLODThreshold
Definition: vtkAxisFollower.h:185
vtkAxisFollower::ComputerAutoCenterTranslation
void ComputerAutoCenterTranslation(const double &autoScaleFactor, double translation[3])
vtkAxisFollower::AutoScale
static double AutoScale(vtkViewport *viewport, vtkCamera *camera, double screenSize, double position[3])
Calculate scale factor to maintain same size of a object on the screen.
vtkAxisFollower::SetScreenOffset
void SetScreenOffset(double offset)
vtkX3D::position
@ position
Definition: vtkX3D.h:261
vtkAxisFollower::CalculateOrthogonalVectors
void CalculateOrthogonalVectors(double Rx[3], double Ry[3], double Rz[3], vtkAxisActor *axis1, double *dop, vtkRenderer *ren)
vtkX3D::offset
@ offset
Definition: vtkX3D.h:438
vtkMapper
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:87
vtkAxisFollower
a subclass of vtkFollower that ensures that data is always parallel to the axis defined by a vtkAxisA...
Definition: vtkAxisFollower.h:42
vtkAxisFollower::ComputeRotationAndTranlation
void ComputeRotationAndTranlation(vtkRenderer *ren, double translation[3], double Rx[3], double Ry[3], double Rz[3], vtkAxisActor *axis)
vtkAxisFollower::New
static vtkAxisFollower * New()
Creates a follower with no camera set.
vtkAxisFollower::RenderTranslucentPolygonalGeometry
int RenderTranslucentPolygonalGeometry(vtkViewport *viewport) override
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:51
vtkWeakPointer.h
vtkAxisFollower::GetScreenOffset
double GetScreenOffset()
Set/Get the desired screen offset from the axis.
vtkAxisFollower::ComputeTransformMatrix
virtual void ComputeTransformMatrix(vtkRenderer *ren)
Generate the matrix based on ivars.
vtkAxisFollower::TestDistanceVisibility
int TestDistanceVisibility()
vtkAxisFollower::SetAxis
virtual void SetAxis(vtkAxisActor *)
Set axis that needs to be followed.
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:48
vtkAxisFollower::vtkAxisFollower
vtkAxisFollower()
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkAxisFollower::~vtkAxisFollower
~vtkAxisFollower() override
vtkAxisFollower::EnableDistanceLOD
int EnableDistanceLOD
Definition: vtkAxisFollower.h:181
vtkAxisFollower::GetAxis
virtual vtkAxisActor * GetAxis()
vtkX3D::translation
@ translation
Definition: vtkX3D.h:232
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkWeakPointer< vtkAxisActor >