You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.5 KiB
C++
115 lines
3.5 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkInteractorStyleSwitch.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkInteractorStyleSwitch
|
|
* @brief class to swap between interactory styles
|
|
*
|
|
* The class vtkInteractorStyleSwitch allows handles interactively switching
|
|
* between four interactor styles -- joystick actor, joystick camera,
|
|
* trackball actor, and trackball camera. Type 'j' or 't' to select
|
|
* joystick or trackball, and type 'c' or 'a' to select camera or actor.
|
|
* The default interactor style is joystick camera.
|
|
* @sa
|
|
* vtkInteractorStyleJoystickActor vtkInteractorStyleJoystickCamera
|
|
* vtkInteractorStyleTrackballActor vtkInteractorStyleTrackballCamera
|
|
*/
|
|
|
|
#ifndef vtkInteractorStyleSwitch_h
|
|
#define vtkInteractorStyleSwitch_h
|
|
|
|
#include "vtkInteractionStyleModule.h" // For export macro
|
|
#include "vtkInteractorStyleSwitchBase.h"
|
|
|
|
#define VTKIS_JOYSTICK 0
|
|
#define VTKIS_TRACKBALL 1
|
|
|
|
#define VTKIS_CAMERA 0
|
|
#define VTKIS_ACTOR 1
|
|
|
|
class vtkInteractorStyleJoystickActor;
|
|
class vtkInteractorStyleJoystickCamera;
|
|
class vtkInteractorStyleTrackballActor;
|
|
class vtkInteractorStyleTrackballCamera;
|
|
class vtkInteractorStyleMultiTouchCamera;
|
|
|
|
class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleSwitch : public vtkInteractorStyleSwitchBase
|
|
{
|
|
public:
|
|
static vtkInteractorStyleSwitch* New();
|
|
vtkTypeMacro(vtkInteractorStyleSwitch, vtkInteractorStyleSwitchBase);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* The sub styles need the interactor too.
|
|
*/
|
|
void SetInteractor(vtkRenderWindowInteractor* iren) override;
|
|
|
|
/**
|
|
* We must override this method in order to pass the setting down to
|
|
* the underlying styles
|
|
*/
|
|
void SetAutoAdjustCameraClippingRange(vtkTypeBool value) override;
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get current style
|
|
*/
|
|
vtkGetObjectMacro(CurrentStyle, vtkInteractorStyle);
|
|
void SetCurrentStyleToJoystickActor();
|
|
void SetCurrentStyleToJoystickCamera();
|
|
void SetCurrentStyleToTrackballActor();
|
|
void SetCurrentStyleToTrackballCamera();
|
|
void SetCurrentStyleToMultiTouchCamera();
|
|
//@}
|
|
|
|
/**
|
|
* Only care about the char event, which is used to switch between
|
|
* different styles.
|
|
*/
|
|
void OnChar() override;
|
|
|
|
//@{
|
|
/**
|
|
* Overridden from vtkInteractorObserver because the interactor styles
|
|
* used by this class must also be updated.
|
|
*/
|
|
void SetDefaultRenderer(vtkRenderer*) override;
|
|
void SetCurrentRenderer(vtkRenderer*) override;
|
|
//@}
|
|
|
|
protected:
|
|
vtkInteractorStyleSwitch();
|
|
~vtkInteractorStyleSwitch() override;
|
|
|
|
void SetCurrentStyle();
|
|
|
|
vtkInteractorStyleJoystickActor* JoystickActor;
|
|
vtkInteractorStyleJoystickCamera* JoystickCamera;
|
|
vtkInteractorStyleTrackballActor* TrackballActor;
|
|
vtkInteractorStyleTrackballCamera* TrackballCamera;
|
|
vtkInteractorStyleMultiTouchCamera* MultiTouchCamera;
|
|
vtkInteractorStyle* CurrentStyle;
|
|
|
|
int JoystickOrTrackball;
|
|
int CameraOrActor;
|
|
bool MultiTouch;
|
|
|
|
private:
|
|
vtkInteractorStyleSwitch(const vtkInteractorStyleSwitch&) = delete;
|
|
void operator=(const vtkInteractorStyleSwitch&) = delete;
|
|
};
|
|
|
|
#endif
|