25 #include "WGEZoomTrackballManipulator.h"
26 #include "WGraphicsEngine.h"
29 TrackballManipulator(),
31 m_allowThrow( false ),
34 setTrackballSize( .3 );
39 m_zoom = 1.0 / matrix.getScale()[0];
42 TrackballManipulator::setByMatrix( osg::Matrixd::inverse( osg::Matrixd::scale( 1.0 /
m_zoom, 1.0 /
m_zoom, 1.0 /
m_zoom ) ) * matrix );
47 return osg::Matrixd::scale( 1.0 /
m_zoom, 1.0 /
m_zoom, 1.0 /
m_zoom ) * TrackballManipulator::getMatrix();
52 return TrackballManipulator::getMatrix();
57 return TrackballManipulator::getInverseMatrix() * osg::Matrixd::scale(
m_zoom,
m_zoom,
m_zoom );
63 TrackballManipulator::home( 0 );
68 double zoomDelta = 0.0;
70 if( ea.getKey() && ea.getEventType() == osgGA::GUIEventAdapter::KEYDOWN )
72 if( ea.getKey() == 45 )
76 if( ea.getKey() == 43 )
80 if( zoomDelta != 0.0 )
93 switch( ea.getScrollingMotion() )
95 case osgGA::GUIEventAdapter::SCROLL_UP:
98 case osgGA::GUIEventAdapter::SCROLL_DOWN:
101 case osgGA::GUIEventAdapter::SCROLL_2D:
102 zoomDelta = 0.05 / 120.0 * ea.getScrollingDeltaY();
114 if( zoomDelta != 0.0 )
116 m_zoom *= 1.0 + zoomDelta;
120 us.requestContinuousUpdate(
false );
135 else if( ea.getEventType() == osgGA::GUIEventAdapter::SCROLL || ea.getKey() == 45 || ea.getKey() == 43 )
137 return zoom( ea, us );
141 else if( ( ea.getEventType() == osgGA::GUIEventAdapter::DRAG ) || ( ea.getEventType() == osgGA::GUIEventAdapter::PUSH ) )
143 if( ea.getButtonMask() == osgGA::GUIEventAdapter::RIGHT_MOUSE_BUTTON )
147 else if( ( ea.getButtonMask() == osgGA::GUIEventAdapter::LEFT_MOUSE_BUTTON ) && (
m_paintMode == 1 ) )
153 return TrackballManipulator::handle( ea, us );
158 return TrackballManipulator::handle( ea, us );