/* Plot Graphic Library, a C++/MFC charting library. Copyright (C) 2001 de Halleux Jonathan This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: de Halleux Jonathan, pglinfo@patabelgos.org */ // mouse.h: interface for the CPGLMouse class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_PGLMOUSE_H__338966CD_1C93_11D4_8D89_00409503B978__INCLUDED_) #define AFX_PGLMOUSE_H__338966CD_1C93_11D4_8D89_00409503B978__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 /*!\brief A mouse. Takes care of handling the mouse moves or pressed buttons. */ class PGL_EXT_CLASS CPGLMouse { public: /// default constructor CPGLMouse() { m_bLDown=m_bRDown=m_bLMoving=m_bRMoving=FALSE;}; /// destructor ~CPGLMouse() {}; /// the left button has been pressed at position x,y void LeftBtnPressed(int x,int y) { m_iCLBx=m_iLBx=x; m_iCLBy=m_iLBy=y; m_bLDown=TRUE;}; /// the right button has been pressed at position x,y void RightBtnPressed(int x,int y) { m_iCRBx=m_iRBx=x; m_iCRBy=m_iRBy=y; m_bRDown=TRUE;}; /// the left button has been released, returns x,y as the position of the mouse when clicked void LeftBtnReleased(int& x,int& y) { m_bLDown=FALSE; x=m_iCLBx; y=m_iCLBy;}; /// the left button has been released void RightBtnReleased(int& x,int& y) { m_bRDown=FALSE; x=m_iCRBx; y=m_iCRBy;}; /// returns true if left button down. In that case, _x,_y is the last mouse position BOOL IsLeftBtnDown(int& _x,int &_y) { if (m_bLDown) {_x=m_iLBx; _y=m_iLBy;} return m_bLDown;}; /// returns true if right button down. In that case, _x,_y is the last mouse position BOOL IsRightBtnDown(int& _x,int &_y) { if (m_bRDown) {_x=m_iRBx; _y=m_iRBy;} return m_bRDown;}; void GetLeftLastPos(int& _x, int& _y) const { _x=m_iLBx; _y=m_iLBy;}; void GetRightLastPos(int& _x, int& _y) const { _x=m_iRBx; _y=m_iRBy;}; void GetLeftFirstPos(int& _x, int& _y) const { _x=m_iCLBx; _y=m_iCLBy;}; void GetRightFirstPos(int& _x, int& _y) const { _x=m_iCRBx; _y=m_iCRBy;}; void UpdateLeftPos(int _x, int _y) { m_iLBx=_x; m_iLBy=_y;}; void UpdateRightPos(int _x, int _y) { m_iRBx=_x; m_iRBy=_y;}; void LeftMove() { m_bLMoving=TRUE;}; void RightMove() { m_bLMoving=TRUE;}; void Stop() { m_bLMoving=m_bRMoving=FALSE;}; BOOL IsLeftMoving() const {return (m_bLMoving && m_bLDown);}; BOOL IsRightMoving() const {return (m_bLMoving && m_bRDown);}; protected: /// position of the pointer when the left button was clicked int m_iCLBx,m_iCLBy; /// position of the pointer when the right button was clicked int m_iCRBx,m_iCRBy; /// last position of the pointer int m_iLBx,m_iLBy; /// position of the pointer int m_iRBx,m_iRBy; /// true if left button pressed BOOL m_bLDown; /// true if right button pressed BOOL m_bRDown; /// true if mouse moving with left button down BOOL m_bLMoving; /// true if mouse moving with left button down BOOL m_bRMoving; }; #endif // !defined(AFX_MOUSECLASS_H__338966CD_1C93_11D4_8D89_00409503B978__INCLUDED_)