VTK  9.1.0
vtkInteractorStyleImage.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkInteractorStyleImage.h
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=========================================================================*/
59#ifndef vtkInteractorStyleImage_h
60#define vtkInteractorStyleImage_h
61
62#include "vtkInteractionStyleModule.h" // For export macro
64
65// Motion flags
66
67#define VTKIS_WINDOW_LEVEL 1024
68#define VTKIS_SLICE 1025
69
70// Style flags
71
72#define VTKIS_IMAGE2D 2
73#define VTKIS_IMAGE3D 3
74#define VTKIS_IMAGE_SLICING 4
75
77
78class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleImage : public vtkInteractorStyleTrackballCamera
79{
80public:
83 void PrintSelf(ostream& os, vtkIndent indent) override;
84
86
89 vtkGetVector2Macro(WindowLevelStartPosition, int);
90 vtkGetVector2Macro(WindowLevelCurrentPosition, int);
92
94
98 void OnMouseMove() override;
99 void OnLeftButtonDown() override;
100 void OnLeftButtonUp() override;
101 void OnMiddleButtonDown() override;
102 void OnMiddleButtonUp() override;
103 void OnRightButtonDown() override;
104 void OnRightButtonUp() override;
106
110 void OnChar() override;
111
112 // These methods for the different interactions in different modes
113 // are overridden in subclasses to perform the correct motion. Since
114 // they might be called from OnTimer, they do not have mouse coord parameters
115 // (use interactor's GetEventPosition and GetLastEventPosition)
116 virtual void WindowLevel();
117 virtual void Pick();
118 virtual void Slice();
119
120 // Interaction mode entry points used internally.
121 virtual void StartWindowLevel();
122 virtual void EndWindowLevel();
123 virtual void StartPick();
124 virtual void EndPick();
125 virtual void StartSlice();
126 virtual void EndSlice();
127
129
135 vtkSetClampMacro(InteractionMode, int, VTKIS_IMAGE2D, VTKIS_IMAGE_SLICING);
136 vtkGetMacro(InteractionMode, int);
137 void SetInteractionModeToImage2D() { this->SetInteractionMode(VTKIS_IMAGE2D); }
138 void SetInteractionModeToImage3D() { this->SetInteractionMode(VTKIS_IMAGE3D); }
139 void SetInteractionModeToImageSlicing() { this->SetInteractionMode(VTKIS_IMAGE_SLICING); }
141
143
147 vtkSetVector3Macro(XViewRightVector, double);
148 vtkGetVector3Macro(XViewRightVector, double);
149 vtkSetVector3Macro(XViewUpVector, double);
150 vtkGetVector3Macro(XViewUpVector, double);
151 vtkSetVector3Macro(YViewRightVector, double);
152 vtkGetVector3Macro(YViewRightVector, double);
153 vtkSetVector3Macro(YViewUpVector, double);
154 vtkGetVector3Macro(YViewUpVector, double);
155 vtkSetVector3Macro(ZViewRightVector, double);
156 vtkGetVector3Macro(ZViewRightVector, double);
157 vtkSetVector3Macro(ZViewUpVector, double);
158 vtkGetVector3Macro(ZViewUpVector, double);
160
170 void SetImageOrientation(const double leftToRight[3], const double bottomToTop[3]);
171
182 virtual void SetCurrentImageNumber(int i);
183 int GetCurrentImageNumber() { return this->CurrentImageNumber; }
184
191 vtkImageProperty* GetCurrentImageProperty() { return this->CurrentImageProperty; }
192
193protected:
196
197 int WindowLevelStartPosition[2];
198 int WindowLevelCurrentPosition[2];
199 double WindowLevelInitial[2];
202
204 double XViewRightVector[3];
205 double XViewUpVector[3];
206 double YViewRightVector[3];
207 double YViewUpVector[3];
208 double ZViewRightVector[3];
209 double ZViewUpVector[3];
210
211private:
213 void operator=(const vtkInteractorStyleImage&) = delete;
214};
215
216#endif
image display properties
a simple class to control print indentation
Definition vtkIndent.h:34
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