void GlobePlugin::setupControls() { std::string imgDir = QDir::cleanPath( QgsApplication::pkgDataPath() + "/globe/gui" ).toStdString(); osgEarth::Util::EarthManipulator* manip = dynamic_cast<osgEarth::Util::EarthManipulator*>( mOsgViewer->getCameraManipulator() ); osg::Image* yawPitchWheelImg = osgDB::readImageFile( imgDir + "/YawPitchWheel.png" ); ImageControl* yawPitchWheel = new ImageControl( yawPitchWheelImg ); int imgLeft = 16; int imgTop = 20; yawPitchWheel->setPosition( imgLeft, imgTop ); mControlCanvas->addControl( yawPitchWheel ); //ROTATE CONTROLS Control* rotateCCW = new NavigationControl(); rotateCCW->setHeight( 22 ); rotateCCW->setWidth( 20 ); rotateCCW->setPosition( imgLeft + 0, imgTop + 18 ); rotateCCW->addEventHandler( new RotateControlHandler( manip, MOVE_OFFSET, 0 ) ); mControlCanvas->addControl( rotateCCW ); Control* rotateCW = new NavigationControl(); rotateCW->setHeight( 22 ); rotateCW->setWidth( 20 ); rotateCW->setPosition( imgLeft + 36, imgTop + 18 ); rotateCW->addEventHandler( new RotateControlHandler( manip, -MOVE_OFFSET , 0 ) ); mControlCanvas->addControl( rotateCW ); //Rotate Reset Control* rotateReset = new NavigationControl(); rotateReset->setHeight( 22 ); rotateReset->setWidth( 16 ); rotateReset->setPosition( imgLeft + 20, imgTop + 18 ); rotateReset->addEventHandler( new RotateControlHandler( manip, 0, 0 ) ); mControlCanvas->addControl( rotateReset ); //TILT CONTROLS Control* tiltUp = new NavigationControl(); tiltUp->setHeight( 19 ); tiltUp->setWidth( 24 ); tiltUp->setPosition( imgLeft + 20, imgTop + 0 ); tiltUp->addEventHandler( new RotateControlHandler( manip, 0, MOVE_OFFSET ) ); mControlCanvas->addControl( tiltUp ); Control* tiltDown = new NavigationControl(); tiltDown->setHeight( 19 ); tiltDown->setWidth( 24 ); tiltDown->setPosition( imgLeft + 16, imgTop + 36 ); tiltDown->addEventHandler( new RotateControlHandler( manip, 0, -MOVE_OFFSET ) ); mControlCanvas->addControl( tiltDown ); // ------- osg::Image* moveWheelImg = osgDB::readImageFile( imgDir + "/MoveWheel.png" ); ImageControl* moveWheel = new ImageControl( moveWheelImg ); imgTop = 80; moveWheel->setPosition( imgLeft, imgTop ); mControlCanvas->addControl( moveWheel ); //MOVE CONTROLS Control* moveLeft = new NavigationControl(); moveLeft->setHeight( 22 ); moveLeft->setWidth( 20 ); moveLeft->setPosition( imgLeft + 0, imgTop + 18 ); moveLeft->addEventHandler( new PanControlHandler( manip, -MOVE_OFFSET, 0 ) ); mControlCanvas->addControl( moveLeft ); Control* moveRight = new NavigationControl(); moveRight->setHeight( 22 ); moveRight->setWidth( 20 ); moveRight->setPosition( imgLeft + 36, imgTop + 18 ); moveRight->addEventHandler( new PanControlHandler( manip, MOVE_OFFSET, 0 ) ); mControlCanvas->addControl( moveRight ); Control* moveUp = new NavigationControl(); moveUp->setHeight( 19 ); moveUp->setWidth( 24 ); moveUp->setPosition( imgLeft + 20, imgTop + 0 ); moveUp->addEventHandler( new PanControlHandler( manip, 0, MOVE_OFFSET ) ); mControlCanvas->addControl( moveUp ); Control* moveDown = new NavigationControl(); moveDown->setHeight( 19 ); moveDown->setWidth( 24 ); moveDown->setPosition( imgLeft + 16, imgTop + 36 ); moveDown->addEventHandler( new PanControlHandler( manip, 0, -MOVE_OFFSET ) ); mControlCanvas->addControl( moveDown ); //Zoom Reset Control* zoomHome = new NavigationControl(); zoomHome->setHeight( 22 ); zoomHome->setWidth( 16 ); zoomHome->setPosition( imgLeft + 20, imgTop + 18 ); zoomHome->addEventHandler( new HomeControlHandler( manip ) ); mControlCanvas->addControl( zoomHome ); // ------- osg::Image* backgroundImg = osgDB::readImageFile( imgDir + "/button-background.png" ); ImageControl* backgroundGrp1 = new ImageControl( backgroundImg ); imgTop = imgTop + 62; backgroundGrp1->setPosition( imgLeft + 12, imgTop ); mControlCanvas->addControl( backgroundGrp1 ); osg::Image* plusImg = osgDB::readImageFile( imgDir + "/zoom-in.png" ); ImageControl* zoomIn = new NavigationControl( plusImg ); zoomIn->setPosition( imgLeft + 12 + 3, imgTop + 3 ); zoomIn->addEventHandler( new ZoomControlHandler( manip, 0, -MOVE_OFFSET ) ); mControlCanvas->addControl( zoomIn ); osg::Image* minusImg = osgDB::readImageFile( imgDir + "/zoom-out.png" ); ImageControl* zoomOut = new NavigationControl( minusImg ); zoomOut->setPosition( imgLeft + 12 + 3, imgTop + 3 + 23 + 2 ); zoomOut->addEventHandler( new ZoomControlHandler( manip, 0, MOVE_OFFSET ) ); mControlCanvas->addControl( zoomOut ); // ------- ImageControl* backgroundGrp2 = new ImageControl( backgroundImg ); imgTop = imgTop + 60; backgroundGrp2->setPosition( imgLeft + 12, imgTop ); mControlCanvas->addControl( backgroundGrp2 ); //Zoom Reset osg::Image* homeImg = osgDB::readImageFile( imgDir + "/zoom-home.png" ); ImageControl* home = new NavigationControl( homeImg ); home->setPosition( imgLeft + 12 + 3, imgTop + 2 ); home->addEventHandler( new HomeControlHandler( manip ) ); mControlCanvas->addControl( home ); //refresh layers osg::Image* refreshImg = osgDB::readImageFile( imgDir + "/refresh-view.png" ); ImageControl* refresh = new NavigationControl( refreshImg ); refresh->setPosition( imgLeft + 12 + 3, imgTop + 2 + 23 + 2 ); refresh->addEventHandler( new RefreshControlHandler( this ) ); mControlCanvas->addControl( refresh ); //Sync Extent #if ENABLE_SYNC_BUTTON osg::Image* syncImg = osgDB::readImageFile( imgDir + "/sync-extent.png" ); ImageControl* sync = new NavigationControl( syncImg ); sync->addEventHandler( new SyncExtentControlHandler( this ) ); mControlCanvas->addControl( sync ); #endif }