VTK
vtkGeoInteractorStyle.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGeoInteractorStyle.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 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright 2008 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19 -------------------------------------------------------------------------*/
33 #ifndef vtkGeoInteractorStyle_h
34 #define vtkGeoInteractorStyle_h
35 
36 #include "vtkGeovisCoreModule.h" // For export macro
38 #include "vtkSmartPointer.h" // for SP
39 
40 class vtkCamera;
41 class vtkCommand;
42 class vtkCompassWidget;
43 class vtkGeoCamera;
45 
46 #if !defined(VTK_LEGACY_REMOVE)
47 class VTKGEOVISCORE_EXPORT vtkGeoInteractorStyle :
49 {
50 public:
51  static vtkGeoInteractorStyle *New();
52  vtkTypeMacro(vtkGeoInteractorStyle,
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
57 
60  void OnEnter() override;
61  void OnLeave() override;
62  void OnMouseMove() override;
63  void OnLeftButtonUp() override;
64  void OnMiddleButtonUp() override;
65  void OnRightButtonUp() override;
66  void OnLeftButtonDown() override;
67  void OnMiddleButtonDown() override;
68  void OnRightButtonDown() override;
69  void OnChar() override;
71 
72  virtual void RubberBandZoom();
73  void Pan() override;
74  void Dolly() override;
75 
76  // Public for render callback.
77  void RedrawRectangle();
78 
79  // See cxx for description of why we need this method.
80  void StartState(int newstate) override;
81 
82  // Used for updating the terrain.
83  vtkGeoCamera* GetGeoCamera();
84 
88  void ResetCamera();
89 
91  void WidgetInteraction(vtkObject *caller);
92 
97  void SetInteractor(vtkRenderWindowInteractor *interactor) override;
98 
99  int ViewportToWorld(double x, double y,
100  double &wx, double &wy, double &wz);
101  void WorldToLongLat(double wx, double wy, double wz,
102  double &lon, double &lat);
103  void ViewportToLongLat(double x, double y,
104  double &lon, double &lat);
105  int GetRayIntersection(double origin[3],
106  double direction[3],
107  double intersection[3]);
108 
112  void SetCurrentRenderer(vtkRenderer*) override;
113 
115 
118  vtkGetMacro(LockHeading, bool);
119  vtkSetMacro(LockHeading, bool);
120  vtkBooleanMacro(LockHeading, bool);
122 
126  void ResetCameraClippingRange();
127 
128 protected:
130  ~vtkGeoInteractorStyle() override;
131 
132  // To avoid a warning.
133  // We should really inherit directly from vtkInteractorStyle
134  void Dolly(double) override;
135 
136  void OnTimer() override;
137  // Used to get a constant speed regardless of frame rate.
138  double LastTime;
139 
140  // Rubberband zoom has a verification stage.
141  int RubberBandExtent[4];
144  void EnableRubberBandRedraw();
145  void DisableRubberBandRedraw();
146  bool InRubberBandRectangle(int x, int y);
147  void DrawRectangle();
148 
149  void KeepCameraAboveGround(vtkCamera* camera);
150  void UpdateLights();
151  void GetPanCenter(double &px, double &py);
152 
153  int StartPosition[2];
154  int EndPosition[2];
157  int PixelDims[2];
159 
161 
162  // widget handling members
165 
166 private:
168  void operator=(const vtkGeoInteractorStyle&) = delete;
169 };
170 
171 #endif //VTK_LEGACY_REMOVE
172 #endif
void OnMiddleButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
abstract base class for most VTK objects
Definition: vtkObject.h:59
Interaction for a globe.
void OnChar() override
OnChar is triggered when an ASCII key is pressed.
void SetInteractor(vtkRenderWindowInteractor *interactor) override
Set/Get the Interactor wrapper being controlled by this object.
abstract specification for renderers
Definition: vtkRenderer.h:63
static vtkInteractorStyleTrackballCamera * New()
vtkSmartPointer< vtkCompassWidget > CompassWidget
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
virtual void OnEnter()
platform-independent render window interaction including picking and frame rate control.
vtkSmartPointer< vtkGeoCamera > GeoCamera
superclass for callback/observer methods
Definition: vtkCommand.h:370
a simple class to control print indentation
Definition: vtkIndent.h:39
a virtual camera for 3D rendering
Definition: vtkCamera.h:50
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.
vtkUnsignedCharArray * PixelArray
virtual void SetCurrentRenderer(vtkRenderer *)
Set/Get the current renderer.
dynamic, self-adjusting array of unsigned char
virtual void StartState(int newstate)
utility routines used by state changes
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.
vtkSmartPointer< vtkCommand > EventCommand
void OnRightButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
interactive manipulation of the camera
virtual void OnLeave()
void OnLeftButtonDown() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
set a value by manipulating something
Geo interface to a camera.
Definition: vtkGeoCamera.h:84
void OnLeftButtonUp() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.