VTK  9.3.0
vtkResliceCursorRepresentation.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
18#ifndef vtkResliceCursorRepresentation_h
19#define vtkResliceCursorRepresentation_h
20
21#include "vtkInteractionWidgetsModule.h" // For export macro
23
24VTK_ABI_NAMESPACE_BEGIN
25class vtkTextProperty;
26class vtkActor2D;
27class vtkTextMapper;
28class vtkImageData;
29class vtkImageReslice;
30class vtkPlane;
31class vtkPlaneSource;
34class vtkMatrix4x4;
37class vtkActor;
38class vtkImageActor;
39class vtkTexture;
40class vtkTextActor;
42
43// Private.
44#define VTK_RESLICE_CURSOR_REPRESENTATION_MAX_TEXTBUFF 128
45
46class VTKINTERACTIONWIDGETS_EXPORT vtkResliceCursorRepresentation : public vtkWidgetRepresentation
47{
48public:
50
54 void PrintSelf(ostream& os, vtkIndent indent) override;
56
58
63 vtkSetClampMacro(Tolerance, int, 1, 100);
64 vtkGetMacro(Tolerance, int);
66
68
71 vtkSetMacro(ShowReslicedImage, vtkTypeBool);
72 vtkGetMacro(ShowReslicedImage, vtkTypeBool);
73 vtkBooleanMacro(ShowReslicedImage, vtkTypeBool);
75
77
81 vtkSetMacro(RestrictPlaneToVolume, vtkTypeBool);
82 vtkGetMacro(RestrictPlaneToVolume, vtkTypeBool);
83 vtkBooleanMacro(RestrictPlaneToVolume, vtkTypeBool);
85
87
92 vtkSetStringMacro(ThicknessLabelFormat);
93 vtkGetStringMacro(ThicknessLabelFormat);
95
96 // Used to communicate about the state of the representation
97 enum
98 {
99 Outside = 0,
105 OnAxis2
106 };
107 enum
108 {
109 None = 0,
114 TranslateSingleAxis
115 };
116
120 virtual char* GetThicknessLabelText();
121
123
126 virtual double* GetThicknessLabelPosition();
127 virtual void GetThicknessLabelPosition(double pos[3]);
128 virtual void GetWorldThicknessLabelPosition(double pos[3]);
130
134 void BuildRepresentation() override;
135
137
140 vtkGetObjectMacro(ResliceAxes, vtkMatrix4x4);
141 vtkGetObjectMacro(Reslice, vtkImageAlgorithm);
143
145
148 vtkGetObjectMacro(ImageActor, vtkImageActor);
150
152
160 vtkGetObjectMacro(LookupTable, vtkScalarsToColors);
162
164
170 vtkGetObjectMacro(ColorMap, vtkImageMapToColors);
173
175
181 void SetWindowLevel(double window, double level, int copy = 0);
182 void GetWindowLevel(double wl[2]);
183 double GetWindow() { return this->CurrentWindow; }
184 double GetLevel() { return this->CurrentLevel; }
186
188
190
194 vtkSetMacro(DisplayText, vtkTypeBool);
195 vtkGetMacro(DisplayText, vtkTypeBool);
196 vtkBooleanMacro(DisplayText, vtkTypeBool);
198
200
206
208
212 vtkSetMacro(UseImageActor, vtkTypeBool);
213 vtkGetMacro(UseImageActor, vtkTypeBool);
214 vtkBooleanMacro(UseImageActor, vtkTypeBool);
216
218
223 vtkGetMacro(ManipulationMode, int);
225
227
232 void ActivateText(int);
235
237
242 virtual void ResetCamera();
244
249
251
255 vtkGetObjectMacro(PlaneSource, vtkPlaneSource);
257
263 static int BoundPlane(double bounds[6], double origin[3], double p1[3], double p2[3]);
270 static void TransformPlane(vtkPlaneSource* planeToTransform, double targetCenter[3],
271 double targetNormal[3], double targetViewUp[3]);
272
273protected:
276
278
284 double outputSpacingX, double outputSpacingY, int extentX, int extentY);
286
290 virtual void WindowLevel(double x, double y);
291
295 virtual void UpdateReslicePlane();
296
301
302 // for negative window values.
304
305 // recompute origin to make the location of the reslice cursor consistent
306 // with its physical location
308
310 void GetVector1(double d[3]);
311 void GetVector2(double d[3]);
313
319
320 // Keep track if modifier is set
322
323 // Selection tolerance for the handles
325
326 // Format for printing the distance
328
350 double LastEventPosition[2];
354
357
358private:
360 void operator=(const vtkResliceCursorRepresentation&) = delete;
361};
362
363VTK_ABI_NAMESPACE_END
364#endif
a actor that draws 2D data
Definition vtkActor2D.h:35
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:41
draw an image in a rendered 3D scene
Generic algorithm superclass for image algs.
topologically and geometrically regular array of data
map the input image through a lookup table
Reslices a volume along a new set of axes.
a simple class to control print indentation
Definition vtkIndent.h:29
represent and manipulate 4x4 transformation matrices
create an array of quadrilaterals located in a plane
perform various plane computations
Definition vtkPlane.h:26
generates a 2D reslice cursor polydata
represent the vtkResliceCursorWidget
int ManipulationMode
The widget sets the manipulation mode.
virtual void InitializeReslicePlane()
Initialize the reslice planes and the camera center.
virtual char * GetThicknessLabelText()
Get the text shown in the widget's label.
double GetLevel()
Set/Get the current window and level values.
~vtkResliceCursorRepresentation() override
double GetWindow()
Set/Get the current window and level values.
virtual void UpdateReslicePlane()
Update the reslice plane.
void GetVector1(double d[3])
virtual double * GetThicknessLabelPosition()
Get the position of the widget's label in display coordinates.
void GetVector2(double d[3])
void PrintSelf(ostream &os, vtkIndent indent) override
Standard VTK methods.
virtual void WindowLevel(double x, double y)
Process window level.
virtual vtkResliceCursorPolyDataAlgorithm * GetCursorAlgorithm()=0
Get the underlying cursor source.
void ManageTextDisplay()
INTERNAL - Do not use.
static void TransformPlane(vtkPlaneSource *planeToTransform, double targetCenter[3], double targetNormal[3], double targetViewUp[3])
First rotate planeToTransform to match targetPlane normal.
virtual vtkResliceCursor * GetResliceCursor()=0
static int BoundPlane(double bounds[6], double origin[3], double p1[3], double p2[3])
Fit the plane defined by origin, p1, p2 onto the bounds.
virtual void ComputeOrigin(vtkMatrix4x4 *)
void SetManipulationMode(int m)
INTERNAL - Do not use Set the manipulation mode.
void SetWindowLevel(double window, double level, int copy=0)
Set/Get the current window and level values.
virtual void CreateDefaultResliceAlgorithm()
Create New Reslice plane.
void GetWindowLevel(double wl[2])
Set/Get the current window and level values.
virtual void ResetCamera()
Initialize the reslice planes and the camera center.
virtual void SetColorMap(vtkImageMapToColors *)
Convenience method to get the vtkImageMapToColors filter used by this widget.
vtkTextProperty * GetTextProperty()
Set/Get the text property for the image data and window-level annotation.
virtual void ComputeReslicePlaneOrigin()
Compute the origin of the planes so as to capture the entire image.
void SetTextProperty(vtkTextProperty *tprop)
Set/Get the text property for the image data and window-level annotation.
void ActivateText(int)
INTERNAL - Do not use.
void BuildRepresentation() override
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void SetLookupTable(vtkScalarsToColors *)
Set/Get the internal lookuptable (lut) to one defined by the user, or, alternatively,...
virtual void GetThicknessLabelPosition(double pos[3])
Get the position of the widget's label in display coordinates.
virtual void SetResliceParameters(double outputSpacingX, double outputSpacingY, int extentX, int extentY)
Create New Reslice plane.
virtual void GetWorldThicknessLabelPosition(double pos[3])
Get the position of the widget's label in display coordinates.
vtkScalarsToColors * CreateDefaultLookupTable()
Geometry for a reslice cursor.
Superclass for mapping scalar values to colors.
An actor that displays text.
2D text annotation
represent text properties.
handles properties associated with a texture map
Definition vtkTexture.h:58
abstract class defines interface between the widget and widget representation classes
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_RESLICE_CURSOR_REPRESENTATION_MAX_TEXTBUFF