///////////////////////////////////////////////////////////////////////////// // Name: wxnormroi.cpp // Purpose: // Author: Cesar Mauri Loba (cesar at crea-si dot com) // Modified by: // Created: // Copyright: (C) 2008 Cesar Mauri Loba - CREA Software Systems // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . ///////////////////////////////////////////////////////////////////////////// #include "wxnormroi.h" #include #include "visiblenormroi.h" CWXNormROI::CWXNormROI(CVisibleNormROI* pVisibleNormROI, wxWindow* pWindow) { assert (pVisibleNormROI); m_pVisibleNormROI= pVisibleNormROI; assert (pWindow); m_pWindow= pWindow; } CWXNormROI::~CWXNormROI(void) { } // Window events bool CWXNormROI::OnEvtMotion ( wxMouseEvent& event, wxPoint prevCursor ) { cv::Size winSize; bool processed; m_pWindow->GetClientSize (&winSize.width, &winSize.height); if (!event.LeftIsDown()) { processed= true; int retval= m_pVisibleNormROI->OnMouseMovedNoClick (winSize, cvPoint (event.GetX(), event.GetY())); switch (retval) { case CVisibleNormROI::OVER_NONE: m_pWindow->SetCursor (wxNullCursor); processed= false; break; case CVisibleNormROI::OVER_LEFT_LINE: case CVisibleNormROI::OVER_RIGHT_LINE: { wxCursor cur (wxCURSOR_SIZEWE); m_pWindow->SetCursor (cur); } break; case CVisibleNormROI::OVER_BOTTOM_LINE: case CVisibleNormROI::OVER_UPPER_LINE: { wxCursor cur (wxCURSOR_SIZENS); m_pWindow->SetCursor (cur); } break; case CVisibleNormROI::OVER_ORIENTER: case CVisibleNormROI::OVER_UL_CORNER: case CVisibleNormROI::OVER_BR_CORNER: { wxCursor cur (wxCURSOR_HAND); m_pWindow->SetCursor (cur); } break; } } else { processed= m_pVisibleNormROI->OnMouseMovedClick (winSize, cvPoint (event.GetX(), event.GetY()), cvPoint (prevCursor.x, prevCursor.y)); } return processed; } bool CWXNormROI::OnEvtLeftDClick ( wxMouseEvent& WXUNUSED(event) ) { //m_pVisibleNormROI->SetCenterWindow (m_pWindow->GetClientSize(), event.GetX(), event.GetY()); return true; } void CWXNormROI::OnPaint (CIplImage *pImg) { cv::Size winSize; m_pWindow->GetClientSize(&winSize.width, &winSize.height); m_pVisibleNormROI->OnPaint (winSize, pImg); }