forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkAngleRepresentation3D.h
150 lines (131 loc) · 4.47 KB
/
vtkAngleRepresentation3D.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/*=========================================================================
Program: Visualization Toolkit
Module: vtkAngleRepresentation3D.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkAngleRepresentation3D
* @brief represent the vtkAngleWidget
*
* The vtkAngleRepresentation3D is a representation for the
* vtkAngleWidget. This representation consists of two rays and three
* vtkHandleRepresentations to place and manipulate the three points defining
* the angle representation. (Note: the three points are referred to as Point1,
* Center, and Point2, at the two end points (Point1 and Point2) and Center
* (around which the angle is measured). This particular implementation is a
* 3D representation, meaning that it draws in the overlay plane.
*
* @sa
* vtkAngleWidget vtkHandleRepresentation
*/
#ifndef vtkAngleRepresentation3D_h
#define vtkAngleRepresentation3D_h
#include "vtkInteractionWidgetsModule.h" // For export macro
#include "vtkAngleRepresentation.h"
class vtkActor;
class vtkProperty;
class vtkPolyDataMapper;
class vtkLineSource;
class vtkArcSource;
class vtkFollower;
class vtkVectorText;
class vtkPolyDataMapper;
class vtkTextProperty;
class VTKINTERACTIONWIDGETS_EXPORT vtkAngleRepresentation3D : public vtkAngleRepresentation
{
public:
/**
* Instantiate class.
*/
static vtkAngleRepresentation3D *New();
//@{
/**
* Standard VTK methods.
*/
vtkTypeMacro(vtkAngleRepresentation3D,vtkAngleRepresentation);
void PrintSelf(ostream& os, vtkIndent indent);
//@}
/**
* Satisfy the superclasses API. Angle returned is in radians.
*/
virtual double GetAngle();
//@{
/**
* Methods to Set/Get the coordinates of the two points defining
* this representation. Note that methods are available for both
* display and world coordinates.
*/
virtual void GetPoint1WorldPosition(double pos[3]);
virtual void GetCenterWorldPosition(double pos[3]);
virtual void GetPoint2WorldPosition(double pos[3]);
virtual void SetPoint1WorldPosition(double pos[3]);
virtual void SetPoint1DisplayPosition(double pos[3]);
virtual void SetCenterWorldPosition(double pos[3]);
virtual void SetCenterDisplayPosition(double pos[3]);
virtual void SetPoint2WorldPosition(double pos[3]);
virtual void SetPoint2DisplayPosition(double pos[3]);
virtual void GetPoint1DisplayPosition(double pos[3]);
virtual void GetCenterDisplayPosition(double pos[3]);
virtual void GetPoint2DisplayPosition(double pos[3]);
//@}
//@{
/**
* Set/Get the three leaders used to create this representation.
* By obtaining these leaders the user can set the appropriate
* properties, etc.
*/
vtkGetObjectMacro(Ray1,vtkActor);
vtkGetObjectMacro(Ray2,vtkActor);
vtkGetObjectMacro(Arc,vtkActor);
vtkGetObjectMacro(TextActor,vtkFollower);
//@}
//@{
/**
* Scale text.
*/
virtual void SetTextActorScale( double scale[3] );
virtual double * GetTextActorScale();
//@}
/**
* Method defined by vtkWidgetRepresentation superclass and
* needed here.
*/
void BuildRepresentation();
//@{
/**
* Methods required by vtkProp superclass.
*/
virtual void ReleaseGraphicsResources(vtkWindow *w);
virtual int RenderOpaqueGeometry(vtkViewport*);
virtual int RenderTranslucentPolygonalGeometry(vtkViewport*);
virtual int HasTranslucentPolygonalGeometry();
//@}
protected:
vtkAngleRepresentation3D();
~vtkAngleRepresentation3D();
// The pieces that make up the angle representations
vtkLineSource *Line1Source;
vtkLineSource *Line2Source;
vtkArcSource *ArcSource;
vtkPolyDataMapper *Line1Mapper;
vtkPolyDataMapper *Line2Mapper;
vtkPolyDataMapper *ArcMapper;
vtkActor *Ray1;
vtkActor *Ray2;
vtkActor *Arc;
vtkFollower *TextActor;
vtkPolyDataMapper *TextMapper;
vtkVectorText *TextInput;
double Angle;
bool ScaleInitialized;
double TextPosition[3];
private:
vtkAngleRepresentation3D(const vtkAngleRepresentation3D&) VTK_DELETE_FUNCTION;
void operator=(const vtkAngleRepresentation3D&) VTK_DELETE_FUNCTION;
};
#endif