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.
135 lines
4.4 KiB
C
135 lines
4.4 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkWidgetEventTranslator.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 vtkWidgetEventTranslator
|
||
|
* @brief map VTK events into widget events
|
||
|
*
|
||
|
* vtkWidgetEventTranslator maps VTK events (defined on vtkCommand) into
|
||
|
* widget events (defined in vtkWidgetEvent.h). This class is typically used
|
||
|
* in combination with vtkWidgetCallbackMapper, which is responsible for
|
||
|
* translating widget events into method callbacks, and then invoking the
|
||
|
* callbacks.
|
||
|
*
|
||
|
* This class can be used to define different mappings of VTK events into
|
||
|
* the widget events. Thus widgets can be reconfigured to use different
|
||
|
* event bindings.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkWidgetEvent vtkCommand vtkInteractorObserver
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkWidgetEventTranslator_h
|
||
|
#define vtkWidgetEventTranslator_h
|
||
|
|
||
|
#include "vtkInteractionWidgetsModule.h" // For export macro
|
||
|
#include "vtkObject.h"
|
||
|
|
||
|
// Support PIMPL encapsulation of internal STL map
|
||
|
class vtkEventMap;
|
||
|
class vtkRenderWindowInteractor;
|
||
|
class vtkCallbackCommand;
|
||
|
class vtkEvent;
|
||
|
class vtkAbstractWidget;
|
||
|
class vtkEventData;
|
||
|
|
||
|
// This is a lightweight class that should be used internally by the widgets
|
||
|
class VTKINTERACTIONWIDGETS_EXPORT vtkWidgetEventTranslator : public vtkObject
|
||
|
{
|
||
|
public:
|
||
|
/**
|
||
|
* Instantiate the object.
|
||
|
*/
|
||
|
static vtkWidgetEventTranslator* New();
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Standard macros.
|
||
|
*/
|
||
|
vtkTypeMacro(vtkWidgetEventTranslator, vtkObject);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Use these methods to create the translation from a VTK event to a widget
|
||
|
* event. Specifying vtkWidgetEvent::NoEvent or an empty
|
||
|
* string for the (toEvent) erases the mapping for the event.
|
||
|
*/
|
||
|
void SetTranslation(unsigned long VTKEvent, unsigned long widgetEvent);
|
||
|
void SetTranslation(const char* VTKEvent, const char* widgetEvent);
|
||
|
void SetTranslation(unsigned long VTKEvent, int modifier, char keyCode, int repeatCount,
|
||
|
const char* keySym, unsigned long widgetEvent);
|
||
|
void SetTranslation(vtkEvent* VTKevent, unsigned long widgetEvent);
|
||
|
void SetTranslation(unsigned long VTKEvent, vtkEventData* edata, unsigned long widgetEvent);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Translate a VTK event into a widget event. If no event mapping is found,
|
||
|
* then the methods return vtkWidgetEvent::NoEvent or a nullptr string.
|
||
|
*/
|
||
|
unsigned long GetTranslation(unsigned long VTKEvent);
|
||
|
const char* GetTranslation(const char* VTKEvent);
|
||
|
unsigned long GetTranslation(
|
||
|
unsigned long VTKEvent, int modifier, char keyCode, int repeatCount, const char* keySym);
|
||
|
unsigned long GetTranslation(unsigned long VTKEvent, vtkEventData* edata);
|
||
|
unsigned long GetTranslation(vtkEvent* VTKEvent);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Remove translations for a binding.
|
||
|
* Returns the number of translations removed.
|
||
|
*/
|
||
|
int RemoveTranslation(
|
||
|
unsigned long VTKEvent, int modifier, char keyCode, int repeatCount, const char* keySym);
|
||
|
int RemoveTranslation(vtkEvent* e);
|
||
|
int RemoveTranslation(vtkEventData* e);
|
||
|
int RemoveTranslation(unsigned long VTKEvent);
|
||
|
int RemoveTranslation(const char* VTKEvent);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Clear all events from the translator (i.e., no events will be
|
||
|
* translated).
|
||
|
*/
|
||
|
void ClearEvents();
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Add the events in the current translation table to the interactor.
|
||
|
*/
|
||
|
void AddEventsToParent(vtkAbstractWidget*, vtkCallbackCommand*, float priority);
|
||
|
void AddEventsToInteractor(vtkRenderWindowInteractor*, vtkCallbackCommand*, float priority);
|
||
|
//@}
|
||
|
|
||
|
protected:
|
||
|
// Constructors/destructors made public for widgets to use
|
||
|
vtkWidgetEventTranslator();
|
||
|
~vtkWidgetEventTranslator() override;
|
||
|
|
||
|
// Map VTK events to widget events
|
||
|
vtkEventMap* EventMap;
|
||
|
|
||
|
// Used for performance reasons to avoid object construction/deletion
|
||
|
vtkEvent* Event;
|
||
|
|
||
|
private:
|
||
|
vtkWidgetEventTranslator(const vtkWidgetEventTranslator&) = delete;
|
||
|
void operator=(const vtkWidgetEventTranslator&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif /* vtkWidgetEventTranslator_h */
|