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.
38class vtkAxisActor;
39class vtkRenderer;
40
41class VTKRENDERINGANNOTATION_EXPORT vtkAxisFollower : public vtkFollower
42{
43public:
45 void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
46
51
53
56 virtual void SetAxis(vtkAxisActor*);
59
61
66 vtkSetMacro(AutoCenter, int);
67 vtkGetMacro(AutoCenter, int);
68 vtkBooleanMacro(AutoCenter, int);
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
119
121
125 vtkSetVector2Macro(ScreenOffsetVector, double);
126 vtkGetVector2Macro(ScreenOffsetVector, double);
128
130
135 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
137 virtual void Render(vtkRenderer *ren);
139
145
149 void ShallowCopy(vtkProp *prop);
150
155 static double AutoScale(vtkViewport *viewport, vtkCamera * camera,
156 double screenSize, double position[3]);
157
158protected:
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
191private:
192
193 int TextUpsideDown;
194 int VisibleAtCurrentViewAngle;
195
196 vtkAxisFollower(const vtkAxisFollower&) VTK_DELETE_FUNCTION;
197 void operator =(const vtkAxisFollower&) VTK_DELETE_FUNCTION;
198
199 // hide the two parameter Render() method from the user and the compiler.
200 virtual void Render(vtkRenderer *, vtkMapper *) {}
201
202 //Internal matrices to avoid New/Delete for performance reasons
203 vtkMatrix4x4 *InternalMatrix;
204
205};
206
207#endif // vtkAxisFollower_h
Create an axis with tick marks and labels.
Definition: vtkAxisActor.h:75
a subclass of vtkFollower that ensures that data is always parallel to the axis defined by a vtkAxisA...
void SetScreenOffset(double offset)
void ComputeRotationAndTranlation(vtkRenderer *ren, double translation[3], double Rx[3], double Ry[3], double Rz[3], vtkAxisActor *axis)
static vtkAxisFollower * New()
Creates a follower with no camera set.
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.
void ShallowCopy(vtkProp *prop)
Shallow copy of a follower.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport)
double GetScreenOffset()
Set/Get the desired screen offset from the axis.
void ExecuteViewAngleVisibility(double normal[3])
virtual void Render(vtkRenderer *ren)
bool IsTextUpsideDown(double *a, double *b)
virtual int RenderOpaqueGeometry(vtkViewport *viewport)
This causes the actor to be rendered.
void ComputerAutoCenterTranslation(const double &autoScaleFactor, double translation[3])
virtual void SetAxis(vtkAxisActor *)
Set axis that needs to be followed.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual vtkAxisActor * GetAxis()
int TestDistanceVisibility()
double DistanceLODThreshold
vtkWeakPointer< vtkAxisActor > Axis
void CalculateOrthogonalVectors(double Rx[3], double Ry[3], double Rz[3], vtkAxisActor *axis1, double *dop, vtkRenderer *ren)
double ViewAngleLODThreshold
virtual void ComputeTransformMatrix(vtkRenderer *ren)
Generate the matrix based on ivars.
a virtual camera for 3D rendering
Definition: vtkCamera.h:51
a subclass of actor that always faces the camera
Definition: vtkFollower.h:47
virtual void Render(vtkRenderer *ren)
a simple class to control print indentation
Definition: vtkIndent.h:40
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:92
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:42
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:48
abstract specification for renderers
Definition: vtkRenderer.h:64
abstract specification for Viewports
Definition: vtkViewport.h:48
@ translation
Definition: vtkX3D.h:232
@ position
Definition: vtkX3D.h:261
@ offset
Definition: vtkX3D.h:438
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.