//--------------------------------------------------------- void CPoints_View_Extent::On_Mouse_Motion(wxMouseEvent &event) { if( HasCapture() && event.Dragging() ) { if( event.LeftIsDown() ) { _Draw_Inverse(m_Mouse_Down, m_Mouse_Move); _Draw_Inverse(m_Mouse_Down, event.GetPosition()); } } m_Mouse_Move = event.GetPosition(); }
//--------------------------------------------------------- void CPoints_View_Extent::On_Mouse_LUp(wxMouseEvent &event) { if( HasCapture() ) { ReleaseMouse(); } _Draw_Inverse(m_Mouse_Down, m_Mouse_Move); wxPoint p; p.x = event.GetX() < 0 ? 0 : event.GetX() >= GetClientSize().x ? GetClientSize().x - 1 : event.GetX(); p.y = event.GetY() < 0 ? 0 : event.GetY() >= GetClientSize().y ? GetClientSize().y - 1 : event.GetY(); if( m_Mouse_Down.x != p.x || m_Mouse_Down.y != p.y ) { m_Select = wxRect(wxPoint(m_Mouse_Down.x, m_Mouse_Down.y), p); } else { m_Select.SetX(p.x - m_Select.GetWidth () / 2); m_Select.SetY(p.y - m_Select.GetHeight() / 2); } Refresh(false); ((CPoints_View_Dialog *)GetParent())->Update_Extent(); }
//--------------------------------------------------------- void CVIEW_Map_Control::On_Mouse_MUp(wxMouseEvent &event) { if( HasCapture() ) { ReleaseMouse(); } _Draw_Inverse(m_Mouse_Down, event.GetPosition()); m_Drag_Mode = TOOL_INTERACTIVE_DRAG_NONE; switch( m_Mode ) { //----------------------------------------------------- case MAP_MODE_SELECT: break; //----------------------------------------------------- case MAP_MODE_DISTANCE: break; //----------------------------------------------------- case MAP_MODE_ZOOM: break; //----------------------------------------------------- case MAP_MODE_PAN: break; //----------------------------------------------------- case MAP_MODE_PAN_DOWN: Set_Mode(MAP_MODE_ZOOM); _Move(m_Mouse_Down, event.GetPosition()); break; } }
//--------------------------------------------------------- void CVIEW_Map_Control::On_Mouse_RDown(wxMouseEvent &event) { m_pParent->Activate(); m_Mouse_Down = m_Mouse_Move = event.GetPosition(); _Draw_Inverse(m_Mouse_Down, event.GetPosition()); m_Drag_Mode = TOOL_INTERACTIVE_DRAG_NONE; switch( m_Mode ) { //----------------------------------------------------- case MAP_MODE_SELECT: if( g_pTool ) { g_pTool->Execute(_Get_Client2World(event.GetPosition()), TOOL_INTERACTIVE_RDOWN, GET_KEYS(event)); } else if( m_pMap->Find_Layer(Get_Active_Layer()) ) { Get_Active_Layer()->Edit_On_Mouse_Down(_Get_Client2World(event.GetPosition()), _Get_Client2World(1.0), GET_KEYS(event)); } break; //----------------------------------------------------- default: break; } }
//--------------------------------------------------------- void CVIEW_Map_Control::On_Mouse_LUp(wxMouseEvent &event) { if( HasCapture() ) { ReleaseMouse(); } //----------------------------------------------------- if( m_Mode != MAP_MODE_SELECT && (event.ControlDown() || event.AltDown()) ) // clipboard copy ? { return; } //----------------------------------------------------- _Draw_Inverse(m_Mouse_Down, event.GetPosition()); m_Drag_Mode = TOOL_INTERACTIVE_DRAG_NONE; switch( m_Mode ) { //----------------------------------------------------- case MAP_MODE_SELECT: if( g_pTool ) { g_pTool->Execute(_Get_Client2World(event.GetPosition()), TOOL_INTERACTIVE_LUP, GET_KEYS(event)); } else if( m_pMap->Find_Layer(Get_Active_Layer()) ) { Get_Active_Layer()->Edit_On_Mouse_Up(_Get_Client2World(event.GetPosition()), _Get_Client2World(1.0), GET_KEYS(event)|TOOL_INTERACTIVE_KEY_LEFT); } break; //----------------------------------------------------- case MAP_MODE_DISTANCE: _Distance_Add(event.GetPosition()); break; //----------------------------------------------------- case MAP_MODE_ZOOM: _Zoom(m_Mouse_Down, event.GetPosition()); break; //----------------------------------------------------- case MAP_MODE_PAN: break; //----------------------------------------------------- case MAP_MODE_PAN_DOWN: Set_Mode(MAP_MODE_PAN); _Move(m_Mouse_Down, event.GetPosition()); break; } }
//--------------------------------------------------------- void CVIEW_Map_Control::_Draw_Inverse(const wxPoint &A, const wxPoint &B_Old, const wxPoint &B_New) { _Draw_Inverse(A, B_Old); _Draw_Inverse(A, B_New); }
//--------------------------------------------------------- void CVIEW_Map_Control::On_Mouse_Motion(wxMouseEvent &event) { wxPoint Point = event.GetPosition(); switch( m_Mode ) { //----------------------------------------------------- case MAP_MODE_SELECT: if( g_pTool ) { TSG_Tool_Interactive_Mode iMode = event.LeftIsDown () ? TOOL_INTERACTIVE_MOVE_LDOWN : event.MiddleIsDown() ? TOOL_INTERACTIVE_MOVE_MDOWN : event.RightIsDown () ? TOOL_INTERACTIVE_MOVE_RDOWN : TOOL_INTERACTIVE_MOVE; g_pTool->Execute(_Get_Client2World(Point), iMode, GET_KEYS(event)); } else if( m_pMap->Find_Layer(Get_Active_Layer()) ) { Get_Active_Layer()->Edit_On_Mouse_Move( this, m_pMap->Get_World(GetClientSize()), Point, m_Mouse_Move, GET_KEYS(event) ); } break; //----------------------------------------------------- case MAP_MODE_DISTANCE: if( m_Distance_Pts.Get_Count() > 0 ) { int n = m_Distance_Pts.Get_Count(); wxClientDC dc(this); wxPoint Last(_Get_World2Client(m_Distance_Pts[n - 1])); dc.SetLogicalFunction(wxINVERT); dc.DrawLine(Last.x, Last.y, m_Mouse_Move.x, m_Mouse_Move.y); dc.DrawLine(Last.x, Last.y, Point.x, Point.y); m_Distance_Move = SG_Get_Distance(m_Distance_Pts[n - 1], _Get_Client2World(Point)); } break; //----------------------------------------------------- case MAP_MODE_ZOOM: break; //----------------------------------------------------- case MAP_MODE_PAN: break; //----------------------------------------------------- case MAP_MODE_PAN_DOWN: // _Move(m_Mouse_Down, Point); _Pan(m_Mouse_Down, Point); break; } //----------------------------------------------------- if( m_Mode != MAP_MODE_PAN_DOWN ) { m_pParent->Ruler_Set_Position(Point.x, Point.y); m_pMap->Set_Mouse_Position(_Get_Client2World(Point)); _Set_StatusBar(_Get_Client2World(Point)); } //----------------------------------------------------- _Draw_Inverse(m_Mouse_Down, m_Mouse_Move, Point); m_Mouse_Move = Point; }