forked from Kitware/VTK
/
vtkResliceImageViewerMeasurements.h
149 lines (125 loc) · 4.37 KB
/
vtkResliceImageViewerMeasurements.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
/*=========================================================================
Program: Visualization Toolkit
Module: vtkResliceImageViewerMeasurements.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 vtkResliceImageViewerMeasurements
* @brief Manage measurements on a resliced image
*
* This class manages measurements on the resliced image. It toggles the
* the visibility of the measurements based on whether the resliced image
* is the same orientation as when the measurement was initially placed.
* @sa
* vtkResliceCursor vtkResliceCursorWidget vtkResliceCursorRepresentation
*/
#ifndef vtkResliceImageViewerMeasurements_h
#define vtkResliceImageViewerMeasurements_h
#include "vtkInteractionImageModule.h" // For export macro
#include "vtkObject.h"
class vtkResliceImageViewer;
class vtkAbstractWidget;
class vtkCallbackCommand;
class vtkCollection;
class vtkDistanceWidget;
class vtkAngleWidget;
class vtkBiDimensionalWidget;
class vtkHandleRepresentation;
class vtkHandleWidget;
class vtkCaptionWidget;
class vtkContourWidget;
class vtkSeedWidget;
class VTKINTERACTIONIMAGE_EXPORT vtkResliceImageViewerMeasurements : public vtkObject
{
public:
//@{
/**
* Standard VTK methods.
*/
static vtkResliceImageViewerMeasurements *New();
vtkTypeMacro(vtkResliceImageViewerMeasurements,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
/**
* Render the measurements.
*/
virtual void Render();
//@{
/**
* Add / remove a measurement widget
*/
virtual void AddItem(vtkAbstractWidget *);
virtual void RemoveItem(vtkAbstractWidget *);
virtual void RemoveAllItems();
//@}
//@{
/**
* Methods to change whether the widget responds to interaction.
* Set this to Off to disable interaction. On by default.
* Subclasses must override SetProcessEvents() to make sure
* that they pass on the flag to all component widgets.
*/
vtkSetClampMacro(ProcessEvents, int, 0, 1);
vtkGetMacro(ProcessEvents, int);
vtkBooleanMacro(ProcessEvents, int);
//@}
//@{
/**
* Tolerance for Point-in-Plane check
*/
vtkSetMacro( Tolerance, double );
vtkGetMacro( Tolerance, double );
//@}
//@{
/**
* Set the reslice image viewer. This is automatically done in the class
* vtkResliceImageViewer
*/
virtual void SetResliceImageViewer( vtkResliceImageViewer * );
vtkGetObjectMacro( ResliceImageViewer, vtkResliceImageViewer );
//@}
/**
* Update the measurements. This is automatically called when the reslice
* cursor's axes are change.
*/
virtual void Update();
protected:
vtkResliceImageViewerMeasurements();
~vtkResliceImageViewerMeasurements() override;
//@{
/**
* Check if a measurement widget is on the resliced plane.
*/
bool IsItemOnReslicedPlane( vtkAbstractWidget * w );
bool IsWidgetOnReslicedPlane( vtkDistanceWidget * w );
bool IsWidgetOnReslicedPlane( vtkAngleWidget * w );
bool IsWidgetOnReslicedPlane( vtkBiDimensionalWidget * w );
bool IsWidgetOnReslicedPlane( vtkCaptionWidget * w );
bool IsWidgetOnReslicedPlane( vtkContourWidget * w );
bool IsWidgetOnReslicedPlane( vtkSeedWidget * w );
bool IsWidgetOnReslicedPlane( vtkHandleWidget * w );
bool IsPointOnReslicedPlane( vtkHandleRepresentation * h );
bool IsPositionOnReslicedPlane( double p[3] );
//@}
// Handles the events; centralized here for all widgets.
static void ProcessEventsHandler(vtkObject* object, unsigned long event,
void* clientdata, void* calldata);
vtkResliceImageViewer * ResliceImageViewer;
vtkCollection * WidgetCollection;
// Handle the visibility of the measurements.
vtkCallbackCommand * EventCallbackCommand; //
// Flag indicating if we should handle events.
// On by default.
int ProcessEvents;
// Tolerance for Point-in-plane computation
double Tolerance;
private:
vtkResliceImageViewerMeasurements(const vtkResliceImageViewerMeasurements&) = delete;
void operator=(const vtkResliceImageViewerMeasurements&) = delete;
};
#endif