VTK  9.0.1
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 =========================================================================*/
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 
79 class vtkImageProperty;
80 
81 class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleImage : public vtkInteractorStyleTrackballCamera
82 {
83 public:
84  static vtkInteractorStyleImage* New();
86  void PrintSelf(ostream& os, vtkIndent indent) override;
87 
89 
92  vtkGetVector2Macro(WindowLevelStartPosition, int);
93  vtkGetVector2Macro(WindowLevelCurrentPosition, int);
95 
97 
101  void OnMouseMove() override;
102  void OnLeftButtonDown() override;
103  void OnLeftButtonUp() override;
104  void OnMiddleButtonDown() override;
105  void OnMiddleButtonUp() override;
106  void OnRightButtonDown() override;
107  void OnRightButtonUp() override;
109 
113  void OnChar() override;
114 
115  // These methods for the different interactions in different modes
116  // are overridden in subclasses to perform the correct motion. Since
117  // they might be called from OnTimer, they do not have mouse coord parameters
118  // (use interactor's GetEventPosition and GetLastEventPosition)
119  virtual void WindowLevel();
120  virtual void Pick();
121  virtual void Slice();
122 
123  // Interaction mode entry points used internally.
124  virtual void StartWindowLevel();
125  virtual void EndWindowLevel();
126  virtual void StartPick();
127  virtual void EndPick();
128  virtual void StartSlice();
129  virtual void EndSlice();
130 
132 
138  vtkSetClampMacro(InteractionMode, int, VTKIS_IMAGE2D, VTKIS_IMAGE_SLICING);
139  vtkGetMacro(InteractionMode, int);
140  void SetInteractionModeToImage2D() { this->SetInteractionMode(VTKIS_IMAGE2D); }
141  void SetInteractionModeToImage3D() { this->SetInteractionMode(VTKIS_IMAGE3D); }
142  void SetInteractionModeToImageSlicing() { this->SetInteractionMode(VTKIS_IMAGE_SLICING); }
144 
146 
150  vtkSetVector3Macro(XViewRightVector, double);
151  vtkGetVector3Macro(XViewRightVector, double);
152  vtkSetVector3Macro(XViewUpVector, double);
153  vtkGetVector3Macro(XViewUpVector, double);
154  vtkSetVector3Macro(YViewRightVector, double);
155  vtkGetVector3Macro(YViewRightVector, double);
156  vtkSetVector3Macro(YViewUpVector, double);
157  vtkGetVector3Macro(YViewUpVector, double);
158  vtkSetVector3Macro(ZViewRightVector, double);
159  vtkGetVector3Macro(ZViewRightVector, double);
160  vtkSetVector3Macro(ZViewUpVector, double);
161  vtkGetVector3Macro(ZViewUpVector, double);
163 
173  void SetImageOrientation(const double leftToRight[3], const double bottomToTop[3]);
174 
185  virtual void SetCurrentImageNumber(int i);
186  int GetCurrentImageNumber() { return this->CurrentImageNumber; }
187 
194  vtkImageProperty* GetCurrentImageProperty() { return this->CurrentImageProperty; }
195 
196 protected:
198  ~vtkInteractorStyleImage() override;
199 
200  int WindowLevelStartPosition[2];
201  int WindowLevelCurrentPosition[2];
202  double WindowLevelInitial[2];
205 
207  double XViewRightVector[3];
208  double XViewUpVector[3];
209  double YViewRightVector[3];
210  double YViewUpVector[3];
211  double ZViewRightVector[3];
212  double ZViewUpVector[3];
213 
214 private:
216  void operator=(const vtkInteractorStyleImage&) = delete;
217 };
218 
219 #endif
#define VTKIS_IMAGE2D
void OnMiddleButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void OnChar() override
OnChar is triggered when an ASCII key is pressed.
vtkImageProperty * GetCurrentImageProperty()
Get the current image property, which is set when StartWindowLevel is called immediately before Start...
void SetInteractionModeToImage3D()
Set/Get current mode to 2D or 3D.
image display properties
static vtkInteractorStyleTrackballCamera * New()
interactive manipulation of the camera specialized for images
void SetInteractionModeToImage2D()
Set/Get current mode to 2D or 3D.
#define VTKIS_IMAGE3D
vtkImageProperty * CurrentImageProperty
a simple class to control print indentation
Definition: vtkIndent.h:33
void OnMouseMove() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void OnMiddleButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
#define VTKIS_IMAGE_SLICING
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.
void OnRightButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
interactive manipulation of the camera
void OnLeftButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
void SetInteractionModeToImageSlicing()
Set/Get current mode to 2D or 3D.
void OnLeftButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.