/****************/ /* controle.cpp */ /****************/ #include "fctsys.h" #include "common.h" #include "class_drawpanel.h" #include "gerbview.h" void GERBVIEW_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey ) { wxRealPoint gridSize; wxPoint oldpos; wxPoint pos = aPosition; pos = GetScreen()->GetNearestGridPosition( pos ); oldpos = GetScreen()->GetCrossHairPosition(); gridSize = GetScreen()->GetGridSize(); switch( aHotKey ) { case WXK_NUMPAD8: case WXK_UP: pos.y -= wxRound( gridSize.y ); DrawPanel->MoveCursor( pos ); break; case WXK_NUMPAD2: case WXK_DOWN: pos.y += wxRound( gridSize.y ); DrawPanel->MoveCursor( pos ); break; case WXK_NUMPAD4: case WXK_LEFT: pos.x -= wxRound( gridSize.x ); DrawPanel->MoveCursor( pos ); break; case WXK_NUMPAD6: case WXK_RIGHT: pos.x += wxRound( gridSize.x ); DrawPanel->MoveCursor( pos ); break; default: break; } GetScreen()->SetCrossHairPosition( pos ); if( oldpos != GetScreen()->GetCrossHairPosition() ) { pos = GetScreen()->GetCrossHairPosition(); GetScreen()->SetCrossHairPosition( oldpos ); DrawPanel->CrossHairOff( aDC ); GetScreen()->SetCrossHairPosition( pos ); DrawPanel->CrossHairOn( aDC ); if( DrawPanel->IsMouseCaptured() ) { DrawPanel->m_mouseCaptureCallback( DrawPanel, aDC, aPosition, true ); } } if( aHotKey ) { OnHotKey( aDC, aHotKey, NULL ); } UpdateStatusBar(); }