VTK  9.3.0
vtkInteractorStyleImage.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
62#ifndef vtkInteractorStyleImage_h
63#define vtkInteractorStyleImage_h
64
65#include "vtkInteractionStyleModule.h" // For export macro
67
68// Motion flags
69
70#define VTKIS_WINDOW_LEVEL 1024
71#define VTKIS_SLICE 1025
72
73// Style flags
74
75#define VTKIS_IMAGE2D 2
76#define VTKIS_IMAGE3D 3
77#define VTKIS_IMAGE_SLICING 4
78
79VTK_ABI_NAMESPACE_BEGIN
81
82class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleImage : public vtkInteractorStyleTrackballCamera
83{
84public:
87 void PrintSelf(ostream& os, vtkIndent indent) override;
88
90
93 vtkGetVector2Macro(WindowLevelStartPosition, int);
94 vtkGetVector2Macro(WindowLevelCurrentPosition, int);
96
98
102 void OnMouseMove() override;
103 void OnLeftButtonDown() override;
104 void OnLeftButtonUp() override;
105 void OnMiddleButtonDown() override;
106 void OnMiddleButtonUp() override;
107 void OnRightButtonDown() override;
108 void OnRightButtonUp() override;
110
114 void OnChar() override;
115
116 // These methods for the different interactions in different modes
117 // are overridden in subclasses to perform the correct motion. Since
118 // they might be called from OnTimer, they do not have mouse coord parameters
119 // (use interactor's GetEventPosition and GetLastEventPosition)
120 virtual void WindowLevel();
121 virtual void Pick();
122 virtual void Slice();
123
124 // Interaction mode entry points used internally.
125 virtual void StartWindowLevel();
126 virtual void EndWindowLevel();
127 virtual void StartPick();
128 virtual void EndPick();
129 virtual void StartSlice();
130 virtual void EndSlice();
131
133
139 vtkSetClampMacro(InteractionMode, int, VTKIS_IMAGE2D, VTKIS_IMAGE_SLICING);
140 vtkGetMacro(InteractionMode, int);
141 void SetInteractionModeToImage2D() { this->SetInteractionMode(VTKIS_IMAGE2D); }
142 void SetInteractionModeToImage3D() { this->SetInteractionMode(VTKIS_IMAGE3D); }
143 void SetInteractionModeToImageSlicing() { this->SetInteractionMode(VTKIS_IMAGE_SLICING); }
145
147
151 vtkSetVector3Macro(XViewRightVector, double);
152 vtkGetVector3Macro(XViewRightVector, double);
153 vtkSetVector3Macro(XViewUpVector, double);
154 vtkGetVector3Macro(XViewUpVector, double);
155 vtkSetVector3Macro(YViewRightVector, double);
156 vtkGetVector3Macro(YViewRightVector, double);
157 vtkSetVector3Macro(YViewUpVector, double);
158 vtkGetVector3Macro(YViewUpVector, double);
159 vtkSetVector3Macro(ZViewRightVector, double);
160 vtkGetVector3Macro(ZViewRightVector, double);
161 vtkSetVector3Macro(ZViewUpVector, double);
162 vtkGetVector3Macro(ZViewUpVector, double);
164
174 void SetImageOrientation(const double leftToRight[3], const double bottomToTop[3]);
175
186 virtual void SetCurrentImageNumber(int i);
187 int GetCurrentImageNumber() { return this->CurrentImageNumber; }
188
195 vtkImageProperty* GetCurrentImageProperty() { return this->CurrentImageProperty; }
196
197protected:
200
201 int WindowLevelStartPosition[2];
202 int WindowLevelCurrentPosition[2];
203 double WindowLevelInitial[2];
206
208 double XViewRightVector[3];
209 double XViewUpVector[3];
210 double YViewRightVector[3];
211 double YViewUpVector[3];
212 double ZViewRightVector[3];
213 double ZViewUpVector[3];
214
215private:
217 void operator=(const vtkInteractorStyleImage&) = delete;
218};
219
220VTK_ABI_NAMESPACE_END
221#endif
image display properties
a simple class to control print indentation
Definition vtkIndent.h:38
interactive manipulation of the camera specialized for images
virtual void StartWindowLevel()
void OnRightButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void SetInteractionModeToImage2D()
Set/Get current mode to 2D or 3D.
void SetInteractionModeToImageSlicing()
Set/Get current mode to 2D or 3D.
virtual void Slice()
void OnMiddleButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
~vtkInteractorStyleImage() override
virtual void StartSlice()
void OnLeftButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void OnRightButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
virtual void StartPick()
virtual void EndSlice()
void OnLeftButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void OnMiddleButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
virtual void SetCurrentImageNumber(int i)
Set the image to use for WindowLevel interaction.
vtkImageProperty * CurrentImageProperty
void SetInteractionModeToImage3D()
Set/Get current mode to 2D or 3D.
static vtkInteractorStyleImage * New()
vtkImageProperty * GetCurrentImageProperty()
Get the current image property, which is set when StartWindowLevel is called immediately before Start...
virtual void EndPick()
void OnMouseMove() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void SetImageOrientation(const double leftToRight[3], const double bottomToTop[3])
Set the view orientation, in terms of the horizontal and vertical directions of the computer screen.
virtual void EndWindowLevel()
void OnChar() override
Override the "fly-to" (f keypress) for images.
virtual void WindowLevel()
interactive manipulation of the camera
#define VTKIS_IMAGE2D
#define VTKIS_IMAGE3D
#define VTKIS_IMAGE_SLICING