void OCDial::mouseReleaseEvent(QMouseEvent* e) { if (button && e->button() == button) { updateMouse(e->x(), e->y()); button = 0; setTrackMouse(false); } }
void OCDial::mousePressEvent(QMouseEvent* e) { if (e->button() != LeftButton || isTest() || isEdit() || isReadOnly()) return; double w = face.width(); double h = face.height(); double radius = (w < h ? w : h) * 0.45; double ptr_w = radius / 5; double dx = e->x() - w / 2; double dy = h / 2 - e->y(); double s = sin(angle); double c = cos(angle); double d_par = s * dy + c * dx; double d_per = fabs(s * dx - c * dy); if (!button && d_per < ptr_w/2 && d_par > -ptr_w) { button = e->button(); setTrackMouse(true); updateMouse(e->x(), e->y()); } }
bool MovieEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa, osg::Object*, osg::NodeVisitor* nv) { switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::FRAME): { double t = ea.getTime(); bool printed(false); ImageStreamPlayBackSpeedList::iterator fps_itr = _imageStreamPlayBackSpeedList.begin(); for(ImageStreamList::iterator itr=_imageStreamList.begin(); itr!=_imageStreamList.end(); ++itr, ++fps_itr) { if (((*itr)->getStatus()==osg::ImageStream::PLAYING) && ((*itr)->data() != (*fps_itr).lastData)) { ImageStreamPlaybackSpeedData& data(*fps_itr); double dt = (data.timeStamp > 0) ? t - data.timeStamp : 1/60.0; data.lastData = (*itr)->data(); data.fps = (*fps_itr).fps * 0.8 + 0.2 * (1/dt); data.timeStamp = t; if (t-data.lastOutput > 1) { std::cout << data.fps << " "; data.lastOutput = t; printed = true; } } } if (printed) std::cout << std::endl; } break; case(osgGA::GUIEventAdapter::MOVE): { if (_trackMouse) { for(ImageStreamList::iterator itr=_imageStreamList.begin(); itr!=_imageStreamList.end(); ++itr) { double dt = (*itr)->getLength() * ((1.0+ea.getXnormalized()) / 2.0); (*itr)->seek(dt); std::cout << "seeking to " << dt << " length: " <<(*itr)->getLength() << std::endl; } } return false; } case(osgGA::GUIEventAdapter::KEYDOWN): { if (ea.getKey()=='p') { for(ImageStreamList::iterator itr=_imageStreamList.begin(); itr!=_imageStreamList.end(); ++itr) { if ((*itr)->getStatus()==osg::ImageStream::PLAYING) { // playing, so pause std::cout<<"Pause"<<std::endl; (*itr)->pause(); } else { // playing, so pause std::cout<<"Play"<<std::endl; (*itr)->play(); } } return true; } else if (ea.getKey()=='r') { for(ImageStreamList::iterator itr=_imageStreamList.begin(); itr!=_imageStreamList.end(); ++itr) { std::cout<<"Restart"<<std::endl; (*itr)->rewind(); } return true; } else if (ea.getKey()=='L') { for(ImageStreamList::iterator itr=_imageStreamList.begin(); itr!=_imageStreamList.end(); ++itr) { if ( (*itr)->getLoopingMode() == osg::ImageStream::LOOPING) { std::cout<<"Toggle Looping Off"<<std::endl; (*itr)->setLoopingMode( osg::ImageStream::NO_LOOPING ); } else { std::cout<<"Toggle Looping On"<<std::endl; (*itr)->setLoopingMode( osg::ImageStream::LOOPING ); } } return true; } else if (ea.getKey() == 'i') { setTrackMouse(!_trackMouse); } return false; } default: return false; } return false; }