mitk::WheelEvent QmitkEventAdapter::AdaptWheelEvent(mitk::BaseRenderer* sender, QWheelEvent* wheelEvent) { mitk::Point2D p; p[0] = wheelEvent->x(); p[1] = wheelEvent->y(); int modifiers = wheelEvent->modifiers(); int state = 0; state = wheelEvent->buttons(); if (modifiers & Qt::ShiftModifier) state |= mitk::BS_ShiftButton; if (modifiers & Qt::ControlModifier) state |= mitk::BS_ControlButton; if (modifiers & Qt::AltModifier) state |= mitk::BS_AltButton; if (modifiers & Qt::MetaModifier) state |= mitk::BS_MetaButton; if (modifiers & Qt::KeypadModifier) state |= mitk::BS_Keypad; mitk::WheelEvent mitkEvent(sender, wheelEvent->type(), wheelEvent->buttons(), state, mitk::Key_none, p, wheelEvent->delta()); return mitkEvent; }
mitk::WheelEvent //mitk::VtkEventAdapter::AdaptWheelEvent(mitk::BaseRenderer* sender, QWheelEvent* wheelEvent) mitk::VtkEventAdapter::AdaptWheelEvent(mitk::BaseRenderer* sender, unsigned long vtkCommandEventId,vtkRenderWindowInteractor* rwi) { mitk::Point2D p; p[0] = rwi->GetEventPosition()[0]; p[1] = rwi->GetEventPosition()[1]; // http://doc.trolltech.com/4.6/qt.html#MouseButton-enum int button = 0; int type = 0; int state = 0; int delta = 0; switch(vtkCommandEventId) { case vtkCommand::MouseWheelForwardEvent: type = 31; // wheel event, // see qcoreevent enum "type" button = 0x00000000; delta = +120; //http://doc.trolltech.com/3.3/qwheelevent.html#delta break; case vtkCommand::MouseWheelBackwardEvent: type = 31; // wheel event, // see qcoreevent enum "type" button = 0x00000000; delta = -120; //http://doc.trolltech.com/3.3/qwheelevent.html#delta break; } if(rwi->GetShiftKey()) state |= mitk::BS_ShiftButton; if(rwi->GetControlKey()) state |= mitk::BS_ControlButton; if(rwi->GetAltKey()) state |= mitk::BS_AltButton; mitk::WheelEvent mitkEvent(sender, type, button,state, mitk::Key_none, p, delta); return mitkEvent; }
mitk::MouseEvent QmitkEventAdapter::AdaptMouseEvent(mitk::BaseRenderer* sender, QMouseEvent* mouseEvent) { mitk::Point2D p; p[0] = mouseEvent->x(); p[1] = mouseEvent->y(); int modifiers = mouseEvent->modifiers(); int state = 0; switch (mouseEvent->type()) { case QEvent::MouseButtonRelease: state |= mouseEvent->button(); break; case QEvent::MouseMove: state |= mouseEvent->buttons(); break; default: break; } if (modifiers & Qt::ShiftModifier) state |= mitk::BS_ShiftButton; if (modifiers & Qt::ControlModifier) state |= mitk::BS_ControlButton; if (modifiers & Qt::AltModifier) state |= mitk::BS_AltButton; if (modifiers & Qt::MetaModifier) state |= mitk::BS_MetaButton; if (modifiers & Qt::KeypadModifier) state |= mitk::BS_Keypad; mitk::MouseEvent mitkEvent(sender, mouseEvent->type(), mouseEvent->button(), state, mitk::Key_none, p); return mitkEvent; }
mitk::MouseEvent mitk::VtkEventAdapter::AdaptMouseEvent(mitk::BaseRenderer* sender, unsigned long vtkCommandEventId,vtkRenderWindowInteractor* rwi) { mitk::Point2D p; p[0] = rwi->GetEventPosition()[0]; p[1] = rwi->GetEventPosition()[1]; p[1] = rwi->GetSize()[1] - p[1]; // flip y axis // http://doc.trolltech.com/4.6/qt.html#MouseButton-enum int button = 0; int type = 0; int state = 0; // vtkRenderWindowInteractor does not provide information about mouse buttons during // mouse move events... // some button action might be going on during mouse move events // that needs to be temp. saved in our buttonStateMap int tmpstate = 0; if(buttonStateMap.find(sender) != buttonStateMap.end()) tmpstate = buttonStateMap.find(sender)->second; if(tmpstate != 0 && vtkCommandEventId != vtkCommand::MouseMoveEvent) buttonStateMap.erase(buttonStateMap.find(sender)); //press or release event with active map caching switch(vtkCommandEventId) { case vtkCommand::MouseMoveEvent: type = 5; button = mitk::BS_NoButton; if(tmpstate != 0) { state = tmpstate; /* // debug output static char tmp; sprintf(&tmp,"%d",tmpstate); std::cout << tmp << std::endl; */ } break; case vtkCommand::LeftButtonReleaseEvent: type = 3; button = mitk::BS_LeftButton; state = tmpstate; buttonStateMap[sender] = (tmpstate - button); break; case vtkCommand::MiddleButtonReleaseEvent: type = 3; button = mitk::BS_MidButton; state = tmpstate; buttonStateMap[sender] = (tmpstate - button); break; case vtkCommand::RightButtonReleaseEvent: type = 3; button = mitk::BS_RightButton; state = tmpstate; buttonStateMap[sender] = (tmpstate - button); break; case vtkCommand::LeftButtonPressEvent: type = 2; button = mitk::BS_LeftButton; tmpstate |= button; buttonStateMap[sender] = tmpstate; break; case vtkCommand::MiddleButtonPressEvent: type = 2; button = mitk::BS_MidButton; tmpstate |= button; buttonStateMap[sender] = tmpstate; break; case vtkCommand::RightButtonPressEvent: type = 2; button = mitk::BS_RightButton; tmpstate |= button; buttonStateMap[sender] = tmpstate; break; } if(rwi->GetShiftKey()) { state |= mitk::BS_ShiftButton; } if(rwi->GetControlKey()) { state |= mitk::BS_ControlButton; } if(rwi->GetAltKey()) { state |= mitk::BS_AltButton; } mitk::MouseEvent mitkEvent(sender, type, button, state, mitk::Key_none, p); return mitkEvent; }