void WX_VIEW_CONTROLS::onMagnify( wxMouseEvent& aEvent ) { // Scale based on the magnification from our underlying magnification event. VECTOR2D anchor = m_view->ToWorld( VECTOR2D( aEvent.GetX(), aEvent.GetY() ) ); m_view->SetScale( m_view->GetScale() * ( aEvent.GetMagnification() + 1.0f ), anchor ); aEvent.Skip(); }
void EDA_3D_CANVAS::OnMagnify( wxMouseEvent& event ) { double magnification = ( event.GetMagnification() + 1.0f ); GetPrm3DVisu().m_Zoom /= magnification; if( GetPrm3DVisu().m_Zoom <= 0.01 ) GetPrm3DVisu().m_Zoom = 0.01; DisplayStatus(); Refresh( false ); }
void EDA_DRAW_PANEL::OnMagnify( wxMouseEvent& event ) { // Scale the panel around our cursor position. bool warpCursor = false; wxPoint cursorPosition = GetParent()->GetCursorPosition( false ); wxPoint centerPosition = GetParent()->GetScrollCenterPosition(); wxPoint vector = centerPosition - cursorPosition; double magnification = ( event.GetMagnification() + 1.0f ); double scaleFactor = GetZoom() / magnification; // Scale the vector between the cursor and center point vector.x /= magnification; vector.y /= magnification; SetZoom(scaleFactor); // Recenter the window along our scaled vector such that the // cursor becomes our scale axis, remaining fixed on screen GetParent()->RedrawScreen( cursorPosition + vector, warpCursor ); event.Skip(); }