17 #include <vtkCallbackCommand.h> 18 #include <vtkInteractorStyle.h> 19 #include <vtkObjectFactory.h> 20 #include <vtkRenderWindowInteractor.h> 24 #define VTKEVENTPROVIDER_INFO MBI_INFO("mitk.core.vtkeventprovider") 25 #define VTKEVENTPROVIDER_WARN MBI_WARN("mitk.core.vtkeventprovider") 26 #define VTKEVENTPROVIDER_ERROR MBI_ERROR("mitk.core.vtkeventprovider") 27 #define VTKEVENTPROVIDER_DEBUG MBI_DEBUG("mitk.core.vtkeventprovider") 37 this->Priority = 99999.99;
46 this->EventCallbackCommand->SetPassiveObserver(1);
49 AddInteractionEvent(vtkCommand::MouseMoveEvent);
51 AddInteractionEvent(vtkCommand::LeftButtonPressEvent);
52 AddInteractionEvent(vtkCommand::MiddleButtonPressEvent);
53 AddInteractionEvent(vtkCommand::RightButtonPressEvent);
55 AddInteractionEvent(vtkCommand::LeftButtonReleaseEvent);
56 AddInteractionEvent(vtkCommand::MiddleButtonReleaseEvent);
57 AddInteractionEvent(vtkCommand::RightButtonReleaseEvent);
59 AddInteractionEvent(vtkCommand::MouseWheelBackwardEvent);
60 AddInteractionEvent(vtkCommand::MouseWheelForwardEvent);
62 AddInteractionEvent(vtkCommand::KeyPressEvent);
67 this->SetInteractor(
nullptr);
72 m_RenderWindow = renWin;
77 return m_RenderWindow;
82 if (!this->Interactor)
100 vtkRenderWindowInteractor *i = this->Interactor;
102 InteractionEventsVectorType::iterator it;
103 for (it = m_InteractionEventsVector.begin(); it != m_InteractionEventsVector.end(); ++it)
106 i->GetInteractorStyle()->AddObserver((vtkCommand::EventIds)(*it), this->EventCallbackCommand, this->Priority);
109 this->InvokeEvent(vtkCommand::EnableEvent,
nullptr);
124 this->Interactor->RemoveObserver(this->EventCallbackCommand);
127 this->InvokeEvent(vtkCommand::DisableEvent,
nullptr);
135 if (i == this->Interactor)
140 if (this->Interactor)
143 this->Interactor = i;
152 void *vtkNotUsed(callData))
155 vtkRenderWindowInteractor *rwi =
static_cast<vtkInteractorStyle *
>(object)->GetInteractor();
162 case vtkCommand::KeyPressEvent:
167 self->GetRenderWindow()->HandleEvent(adaptedEvent.GetPointer());
172 case vtkCommand::MouseMoveEvent:
177 self->GetRenderWindow()->HandleEvent(adaptedEvent.GetPointer());
181 case vtkCommand::LeftButtonPressEvent:
182 case vtkCommand::MiddleButtonPressEvent:
183 case vtkCommand::RightButtonPressEvent:
188 self->GetRenderWindow()->HandleEvent(adaptedEvent.GetPointer());
192 case vtkCommand::LeftButtonReleaseEvent:
193 case vtkCommand::MiddleButtonReleaseEvent:
194 case vtkCommand::RightButtonReleaseEvent:
199 self->GetRenderWindow()->HandleEvent(adaptedEvent.GetPointer());
204 case vtkCommand::MouseWheelForwardEvent:
205 case vtkCommand::MouseWheelBackwardEvent:
210 self->GetRenderWindow()->HandleEvent(adaptedEvent.GetPointer());
222 InteractionEventsVectorType::iterator it;
223 if (m_InteractionEventsVector.size() > 0)
225 it = std::find(m_InteractionEventsVector.begin(), m_InteractionEventsVector.end(), ievent);
226 if (it != m_InteractionEventsVector.end())
228 m_InteractionEventsVector.erase(it);
237 RemoveInteractionEvent(ievent);
239 m_InteractionEventsVector.push_back(ievent);
static BaseRenderer * GetInstance(vtkRenderWindow *renWin)
#define VTKEVENTPROVIDER_ERROR
static mitk::InteractionKeyEvent::Pointer AdaptInteractionKeyEvent(mitk::BaseRenderer *sender, unsigned long vtkCommandEventId, vtkRenderWindowInteractor *rwi)
static mitk::MouseReleaseEvent::Pointer AdaptMouseReleaseEvent(mitk::BaseRenderer *sender, unsigned long vtkCommandEventId, vtkRenderWindowInteractor *rwi)
Organizes the rendering process.
void SetInteractor(vtkRenderWindowInteractor *iren) override
DataCollection - Class to facilitate loading/accessing structured data.
#define VTKEVENTPROVIDER_INFO
static mitk::MousePressEvent::Pointer AdaptMousePressEvent(mitk::BaseRenderer *sender, unsigned long vtkCommandEventId, vtkRenderWindowInteractor *rwi)
void AddInteractionEvent(unsigned long ievent)
Integrates into the VTK event mechanism to generate MITK specific events. This class is NON-QT depend...
void SetEnabled(int) override
void RemoveInteractionEvent(unsigned long ievent)
~vtkEventProvider() override
virtual void SetMitkRenderWindow(mitk::RenderWindow *renWin)
vtkStandardNewMacro(AnatomicalStructureColorPresets)
#define VTKEVENTPROVIDER_DEBUG
mitk::RenderWindow * GetRenderWindow()
static mitk::MouseMoveEvent::Pointer AdaptMouseMoveEvent(mitk::BaseRenderer *sender, unsigned long vtkCommandEventId, vtkRenderWindowInteractor *rwi)
mitkRenderWindow integrates the MITK rendering mechanism into VTK and is NOT QT dependent ...
static mitk::MouseWheelEvent::Pointer AdaptMouseWheelEvent(mitk::BaseRenderer *sender, unsigned long vtkCommandEventId, vtkRenderWindowInteractor *rwi)
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)