///////////////////////////////////////////////////////////////////////////// // Name: camwindow.h // Purpose: wxPanel derived class to show live camera image // 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 . ///////////////////////////////////////////////////////////////////////////// #ifndef _CAMWINDOW_H_ #define _CAMWINDOW_H_ // Includes #include #include #include #include using namespace std; // Forward class declarations class CVisibleNormROI; class CWXNormROI; class CCamWindow : public wxPanel { public: //CCamWindow( wxWindow* parent, const wxPoint& pos, const wxSize& size ); CCamWindow(); CCamWindow(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSIMPLE_BORDER); //, const wxString& name = _T("camwindow")); bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSIMPLE_BORDER); //, const wxString& name = _T("camwindow")); virtual ~CCamWindow(void); // Draw method void DrawCam (IplImage* pImg); // True if all ok, false if control already registered bool RegisterControl (CVisibleNormROI* pVisibleNormROI); // True if all ok, false if control wasn't registered bool UnregisterControl (CVisibleNormROI* pVisibleNormROI); private: typedef std::list TWXNormROIList; typedef TWXNormROIList::iterator TWXNormROIListIterator; void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnEvtMotion ( wxMouseEvent& event ); void OnEvtLeftDClick ( wxMouseEvent& event ); void OnRecvRefresh( wxCommandEvent &event ); //TWXNormROIListIterator FindControl (CVisibleNormROI* pVisibleNormROI); bool FindControl (CVisibleNormROI* pVisibleNormROI, TWXNormROIListIterator &it); void ResizeParentClientArea(int width, int height); void Init(); protected: DECLARE_EVENT_TABLE() private: wxCriticalSection m_ImageCopyMutex; wxCriticalSection m_ListMutex; wxBitmap m_Bitmap; volatile bool m_ImageShowed; volatile bool m_AccessingImage; // Previous captured image size int m_nImgWidth; int m_nImgHeight; CIplImage m_SharedImage; CIplImage m_DisplayImage; TWXNormROIList m_ControlList; wxPoint m_prevCursor; }; #endif