VTK  9.2.6
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 =========================================================================*/
177 #ifndef vtkInteractorStyleImage_h
178 #define vtkInteractorStyleImage_h
179 
180 #include "vtkInteractionStyleModule.h" // For export macro
182 
183 // Motion flags
184 
185 #define VTKIS_WINDOW_LEVEL 1024
186 #define VTKIS_SLICE 1025
187 
188 // Style flags
189 
190 #define VTKIS_IMAGE2D 2
191 #define VTKIS_IMAGE3D 3
192 #define VTKIS_IMAGE_SLICING 4
193 
194 class vtkImageProperty;
195 
196 class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleImage : public vtkInteractorStyleTrackballCamera
197 {
198 public:
201  void PrintSelf(ostream& os, vtkIndent indent) override;
202 
204 
207  vtkGetVector2Macro(WindowLevelStartPosition, int);
208  vtkGetVector2Macro(WindowLevelCurrentPosition, int);
210 
212 
216  void OnMouseMove() override;
217  void OnLeftButtonDown() override;
218  void OnLeftButtonUp() override;
219  void OnMiddleButtonDown() override;
220  void OnMiddleButtonUp() override;
221  void OnRightButtonDown() override;
222  void OnRightButtonUp() override;
224 
228  void OnChar() override;
229 
230  // These methods for the different interactions in different modes
231  // are overridden in subclasses to perform the correct motion. Since
232  // they might be called from OnTimer, they do not have mouse coord parameters
233  // (use interactor's GetEventPosition and GetLastEventPosition)
234  virtual void WindowLevel();
235  virtual void Pick();
236  virtual void Slice();
237 
238  // Interaction mode entry points used internally.
239  virtual void StartWindowLevel();
240  virtual void EndWindowLevel();
241  virtual void StartPick();
242  virtual void EndPick();
243  virtual void StartSlice();
244  virtual void EndSlice();
245 
247 
253  vtkSetClampMacro(InteractionMode, int, VTKIS_IMAGE2D, VTKIS_IMAGE_SLICING);
254  vtkGetMacro(InteractionMode, int);
255  void SetInteractionModeToImage2D() { this->SetInteractionMode(VTKIS_IMAGE2D); }
256  void SetInteractionModeToImage3D() { this->SetInteractionMode(VTKIS_IMAGE3D); }
257  void SetInteractionModeToImageSlicing() { this->SetInteractionMode(VTKIS_IMAGE_SLICING); }
259 
261 
265  vtkSetVector3Macro(XViewRightVector, double);
266  vtkGetVector3Macro(XViewRightVector, double);
267  vtkSetVector3Macro(XViewUpVector, double);
268  vtkGetVector3Macro(XViewUpVector, double);
269  vtkSetVector3Macro(YViewRightVector, double);
270  vtkGetVector3Macro(YViewRightVector, double);
271  vtkSetVector3Macro(YViewUpVector, double);
272  vtkGetVector3Macro(YViewUpVector, double);
273  vtkSetVector3Macro(ZViewRightVector, double);
274  vtkGetVector3Macro(ZViewRightVector, double);
275  vtkSetVector3Macro(ZViewUpVector, double);
276  vtkGetVector3Macro(ZViewUpVector, double);
278 
288  void SetImageOrientation(const double leftToRight[3], const double bottomToTop[3]);
289 
300  virtual void SetCurrentImageNumber(int i);
301  int GetCurrentImageNumber() { return this->CurrentImageNumber; }
302 
309  vtkImageProperty* GetCurrentImageProperty() { return this->CurrentImageProperty; }
310 
311 protected:
314 
315  int WindowLevelStartPosition[2];
316  int WindowLevelCurrentPosition[2];
317  double WindowLevelInitial[2];
320 
322  double XViewRightVector[3];
323  double XViewUpVector[3];
324  double YViewRightVector[3];
325  double YViewUpVector[3];
326  double ZViewRightVector[3];
327  double ZViewUpVector[3];
328 
329 private:
331  void operator=(const vtkInteractorStyleImage&) = delete;
332 };
333 
334 #endif
image display properties
a simple class to control print indentation
Definition: vtkIndent.h:119
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.
static vtkInteractorStyleImage * New()
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.
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
@ leftToRight
Definition: vtkX3D.h:397
#define VTKIS_IMAGE2D
#define VTKIS_IMAGE3D
#define VTKIS_IMAGE_SLICING