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
vtkCommand
superclass for callback/observer methods
Definition: vtkCommand.h:370
vtkGeoInteractorStyle::LastTime
double LastTime
Definition: vtkGeoInteractorStyle.h:138
vtkGeoInteractorStyle::GeoCamera
vtkSmartPointer< vtkGeoCamera > GeoCamera
Definition: vtkGeoInteractorStyle.h:160
vtkGeoInteractorStyle::RubberBandExtentEnabled
int RubberBandExtentEnabled
Definition: vtkGeoInteractorStyle.h:142
vtkX3D::direction
Definition: vtkX3D.h:260
vtkInteractorStyleTrackballCamera::New
static vtkInteractorStyleTrackballCamera * New()
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:41
vtkSmartPointer< vtkGeoCamera >
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:59
vtkInteractorStyleTrackballCamera::OnLeftButtonUp
void OnLeftButtonUp() override
vtkGeoInteractorStyle::PixelArray
vtkUnsignedCharArray * PixelArray
Definition: vtkGeoInteractorStyle.h:156
vtkInteractorStyle::SetInteractor
void SetInteractor(vtkRenderWindowInteractor *interactor) override
Set/Get the Interactor wrapper being controlled by this object.
vtkInteractorStyle::OnChar
void OnChar() override
OnChar is triggered when an ASCII key is pressed.
vtkGeoInteractorStyle::RenderCallbackTag
int RenderCallbackTag
Definition: vtkGeoInteractorStyle.h:143
vtkCompassWidget
set a value by manipulating something
Definition: vtkCompassWidget.h:74
vtkInteractorStyleTrackballCamera::Dolly
void Dolly() override
vtkInteractorStyleTrackballCamera::OnRightButtonUp
void OnRightButtonUp() override
vtkInteractorStyle::StartState
virtual void StartState(int newstate)
utility routines used by state changes
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:50
vtkSmartPointer.h
vtkGeoCamera
Geo interface to a camera.
Definition: vtkGeoCamera.h:84
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:78
vtkInteractorStyleTrackballCamera::OnRightButtonDown
void OnRightButtonDown() override
vtkGeoInteractorStyle::CompassWidget
vtkSmartPointer< vtkCompassWidget > CompassWidget
Definition: vtkGeoInteractorStyle.h:163
vtkInteractorStyleTrackballCamera::OnMouseMove
void OnMouseMove() override
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
vtkGeoInteractorStyle::EventCommand
vtkSmartPointer< vtkCommand > EventCommand
Definition: vtkGeoInteractorStyle.h:164
vtkGeoInteractorStyle::DraggingRubberBandBoxState
int DraggingRubberBandBoxState
Definition: vtkGeoInteractorStyle.h:155
vtkInteractorStyleTrackballCamera::OnLeftButtonDown
void OnLeftButtonDown() override
vtkInteractorStyleTrackballCamera
interactive manipulation of the camera
Definition: vtkInteractorStyleTrackballCamera.h:47
vtkInteractorStyleTrackballCamera::OnMiddleButtonDown
void OnMiddleButtonDown() override
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:63
vtkInteractorStyleTrackballCamera::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkInteractorStyle::OnEnter
virtual void OnEnter()
Definition: vtkInteractorStyle.h:281
vtkGeoInteractorStyle::LockHeading
bool LockHeading
Definition: vtkGeoInteractorStyle.h:158
vtkInteractorStyleTrackballCamera::OnMiddleButtonUp
void OnMiddleButtonUp() override
vtkInteractorStyle::OnTimer
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
vtkGeoInteractorStyle
Interaction for a globe.
Definition: vtkGeoInteractorStyle.h:47
vtkInteractorStyleTrackballCamera::Pan
void Pan() override
vtkInteractorObserver::SetCurrentRenderer
virtual void SetCurrentRenderer(vtkRenderer *)
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:282
vtkInteractorStyleTrackballCamera.h