This project is a demonstrator tool, made by the MOISE project, that translates timed Altarica models into Fiacre models. Such translation allows to use model checkers such as Tina to prove properties. The project contains the translator tool.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

199 lines
5.0 KiB

/***************************************************************
* Name: ShapeHandle.h
* Purpose: Defines shape handle class
* Author: Michal Bližňák (michal.bliznak@tiscali.cz)
* Created: 2007-07-22
* Copyright: Michal Bližňák
* License: wxWidgets license (www.wxwidgets.org)
* Notes:
**************************************************************/
#ifndef _WXSFSHAPEHANDLE_H
#define _WXSFSHAPEHANDLE_H
#include <wx/list.h>
#include <wx/wxsf/ScaledDC.h>
class WXDLLIMPEXP_SF wxSFShapeBase;
/*! \brief Class encapsulates shape's handle. The class shouldn't be used separately; see
* wxSFShapeBase class for more detailed information about functions used for managing of shape
* handles and handling their events */
class wxSFShapeHandle : public wxObject
{
public:
friend class wxSFShapeBase;
friend class wxSFShapeCanvas;
DECLARE_DYNAMIC_CLASS(wxSFShapeHandle);
/*! \brief Handle type */
enum HANDLETYPE
{
hndLEFTTOP,
hndTOP,
hndRIGHTTOP,
hndRIGHT,
hndRIGHTBOTTOM,
hndBOTTOM,
hndLEFTBOTTOM,
hndLEFT,
hndLINECTRL,
hndLINESTART,
hndLINEEND,
hndUNDEF
};
/*! \brief Default constructor */
wxSFShapeHandle(void);
/*!
* \brief User constructor
* \param parent Parent shape
* \param type Handle type
* \param id Handle ID (usefull only for line controls handles)
*/
wxSFShapeHandle(wxSFShapeBase* parent, HANDLETYPE type, long id = -1);
/*!
* \brief Copy constructor
* \param obj Source object
*/
wxSFShapeHandle(const wxSFShapeHandle& obj);
/*! \brief Destructor */
virtual ~wxSFShapeHandle(void);
// public members accessors
/*!
* \brief Get current handle position.
* \return Handle position
*/
wxPoint GetPosition() const {return m_nCurrPos;}
/*!
* \brief Get current handle delta (difference between current and previous position).
* \return Handle delta
*/
wxPoint GetDelta() const {return m_nCurrPos - m_nPrevPos;}
/*!
* \brief Get current total handle delta (difference between current and starting position
* stored at the begining of the dragging process).
* \return Total handle delta
*/
wxPoint GetTotalDelta() const {return m_nCurrPos - m_nStartPos;}
/*!
* \brief Set handle type.
* \param type Handle type
* \sa HANDLETYPE
*/
void SetType(HANDLETYPE type){m_nType = type;}
/*!
* \brief Get handle type.
* \return Handle type
* \sa HANDLETYPE
*/
HANDLETYPE GetType(){return m_nType;}
/*!
* \brief Show/hide handle
* \param show TRUE if the handle should be visible (active), otherwise FALSE
*/
void Show(bool show){m_fVisible = show;}
/*! \brief Function returns TRUE if the handle is visible, otherwise FALSE */
bool IsVisible(){return m_fVisible;}
/*!
* \brief Get parent shape.
* \return Pointer to parent shape
*/
wxSFShapeBase* GetParentShape(){return m_pParentShape;}
/*!
* \brief Set handle's ID.
* \param id Handle's ID
*/
void SetId(long id){m_nId = id;}
/*!
* \brief Get handle's ID.
* \return id Handle's ID
*/
long GetId(){return m_nId;}
// public functions
/*! \brief Refresh (repaint) the handle */
void Refresh();
/*!
* \brief Find out whether given point is inside the handle.
* \param pos Examined point
* \return TRUE if the point is inside the handle, otherwise FALSE
*/
bool Contains(const wxPoint& pos);
protected:
// protected data members
HANDLETYPE m_nType;
wxSFShapeBase *m_pParentShape;
bool m_fVisible;
bool m_fMouseOver;
// protected functions
/*!
* \brief Draw handle.
* \param dc Device context where the handle will be drawn
*/
void Draw(wxDC& dc);
/*!
* \brief Draw handle in the normal way.
* \param dc Device context where the handle will be drawn
*/
void DrawNormal(wxDC& dc);
/*!
* \brief Draw handle in the "hover" way (the mouse pointer is above the handle area).
* \param dc Device context where the handle will be drawn
*/
void DrawHover(wxDC& dc);
/*!
* \brief Set parent shape.
* \param parent Pointer to parent shape
*/
void SetParentShape(wxSFShapeBase *parent){m_pParentShape = parent;}
/*!
* \brief Get handle rectangle.
* \return Handle rectangle
*/
wxRect GetHandleRect() const;
private:
// private data memders
wxPoint m_nStartPos;
wxPoint m_nPrevPos;
wxPoint m_nCurrPos;
long m_nId;
/*!
* \brief Event handler called when the mouse pointer is moving above shape canvas.
* \param pos Current mouse position
*/
void _OnMouseMove(const wxPoint& pos);
/*!
* \brief Event handler called when the handle is started to be dragged.
* \param pos Current mouse position
*/
void _OnBeginDrag(const wxPoint& pos);
/*!
* \brief Event handler called when the handle is dragged.
* \param pos Current mouse position
*/
void _OnDragging(const wxPoint& pos);
/*!
* \brief Event handler called when the handle is released.
* \param pos Current mouse position
*/
void _OnEndDrag(const wxPoint& pos);
};
WX_DECLARE_LIST(wxSFShapeHandle, HandleList);
#endif //_WXSFSHAPEHANDLE_H