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
40class vtkCamera;
41class vtkCommand;
43class vtkGeoCamera;
45
46class VTKGEOVISCORE_EXPORT vtkGeoInteractorStyle :
48{
49public:
51 vtkTypeMacro(vtkGeoInteractorStyle,
53 void PrintSelf(ostream& os, vtkIndent indent);
54
56
59 virtual void OnEnter();
60 virtual void OnLeave();
61 virtual void OnMouseMove();
62 virtual void OnLeftButtonUp();
63 virtual void OnMiddleButtonUp();
64 virtual void OnRightButtonUp();
65 virtual void OnLeftButtonDown();
66 virtual void OnMiddleButtonDown();
67 virtual void OnRightButtonDown();
68 virtual void OnChar();
70
71 virtual void RubberBandZoom();
72 virtual void Pan();
73 virtual void Dolly();
74
75 // Public for render callback.
77
78 // See cxx for description of why we need this method.
79 void StartState(int newstate);
80
81 // Used for updating the terrain.
83
88
91
96 virtual void SetInteractor(vtkRenderWindowInteractor *interactor);
97
98 int ViewportToWorld(double x, double y,
99 double &wx, double &wy, double &wz);
100 void WorldToLongLat(double wx, double wy, double wz,
101 double &lon, double &lat);
102 void ViewportToLongLat(double x, double y,
103 double &lon, double &lat);
104 int GetRayIntersection(double origin[3],
105 double direction[3],
106 double intersection[3]);
107
112
114
117 vtkGetMacro(LockHeading, bool);
118 vtkSetMacro(LockHeading, bool);
119 vtkBooleanMacro(LockHeading, bool);
121
126
127protected:
130
131 // To avoid a warning.
132 // We should really inherit directy from vtkInteractorStyle
133 virtual void Dolly(double);
134
135 void OnTimer();
136 // Used to get a constant speed regardless of frame rate.
137 double LastTime;
138
139 // Rubberband zoom has a verification stage.
140 int RubberBandExtent[4];
145 bool InRubberBandRectangle(int x, int y);
147
150 void GetPanCenter(double &px, double &py);
151
152 int StartPosition[2];
153 int EndPosition[2];
157 int PixelDims[2];
159
161
162 // widget handling members
165
166private:
167 vtkGeoInteractorStyle(const vtkGeoInteractorStyle&) VTK_DELETE_FUNCTION;
168 void operator=(const vtkGeoInteractorStyle&) VTK_DELETE_FUNCTION;
169};
170
171#endif
a virtual camera for 3D rendering
Definition: vtkCamera.h:51
superclass for callback/observer methods
Definition: vtkCommand.h:342
set a value by manipulating something
Geo interface to a camera.
Definition: vtkGeoCamera.h:84
Interaction for a globe.
virtual void OnMiddleButtonUp()
virtual void OnLeave()
virtual void RubberBandZoom()
virtual void Pan()
void GetPanCenter(double &px, double &py)
vtkUnsignedCharArray * PixelArray
int GetRayIntersection(double origin[3], double direction[3], double intersection[3])
virtual void Dolly(double)
void WidgetInteraction(vtkObject *caller)
Called when the sub widgets have an interaction.
void ResetCameraClippingRange()
Called after camera properties are modified.
void StartState(int newstate)
utility routines used by state changes
virtual void OnLeftButtonUp()
virtual void OnMouseMove()
Event bindings controlling the effects of pressing mouse buttons or moving the mouse.
int ViewportToWorld(double x, double y, double &wx, double &wy, double &wz)
vtkGeoCamera * GetGeoCamera()
void KeepCameraAboveGround(vtkCamera *camera)
void WorldToLongLat(double wx, double wy, double wz, double &lon, double &lat)
virtual void OnLeftButtonDown()
virtual void OnRightButtonDown()
virtual void OnEnter()
Event bindings.
virtual void OnChar()
OnChar is triggered when an ASCII key is pressed.
virtual void OnMiddleButtonDown()
virtual void SetInteractor(vtkRenderWindowInteractor *interactor)
Set/Get the Interactor wrapper being controlled by this object.
virtual void OnRightButtonUp()
void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
bool InRubberBandRectangle(int x, int y)
vtkSmartPointer< vtkCommand > EventCommand
static vtkGeoInteractorStyle * New()
void ResetCamera()
This can be used to set the camera to the standard view of the earth.
vtkSmartPointer< vtkCompassWidget > CompassWidget
virtual void Dolly()
void ViewportToLongLat(double x, double y, double &lon, double &lat)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkGeoCamera > GeoCamera
virtual void SetCurrentRenderer(vtkRenderer *)
Override to make the renderer use this camera subclass.
a simple class to control print indentation
Definition: vtkIndent.h:40
interactive manipulation of the camera
abstract base class for most VTK objects
Definition: vtkObject.h:60
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition: vtkRenderer.h:64
dynamic, self-adjusting array of unsigned char
@ direction
Definition: vtkX3D.h:260
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.