#ifndef __ToolArcEdit_h
#define __ToolArcEdit_h

#include "ToolBaseEdit.h"	// Super class.

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS FCToolBaseEdit


class FCObjArc;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCToolArcEdit
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	FCObjArc_xZkqqHx_iCpAjFnCiPfHiClHiCoJiClNiCnPiCmMiDgDiBfLiDiLiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	99.01.22 Fukushiro M. _xZkqqHx_iDfCiDiBiDjDiDgHiNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCToolArcEdit : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;

public:
	//----- _xZkqqHx_iDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
// 06.12.09 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual void	OnDraw (CDC* pDC);
// 05.07.25 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual void	OnDraw (CDC* pDC, const DBLRect* pmmrtRgn = NULL, long lRgnSize = 0);
	virtual void	Select (CDC* pDC);
	virtual void	DrawSelectMark (CDC* pDC, FCObjDynabase* pObj);
	virtual BOOL	CanHandle (const FCObjDynabase* pObj) const;

protected:
	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeM_xHqqkZx_ -----
	virtual BOOL	CheckHitEdge ();

	//----- FCToolBaseFDA_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjFeLjHhGiCmJiJjOiClGiCmE_xHqqkZx_ -----
// 06.12.09 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	virtual void	OnDrawState (CDC* pDC, int iState);
	virtual int		TransFDA (int iState, int iEvent);
	virtual void	StateFDA (int iState, CDC* pDC);

	//----- _xZkqqHx_jBeKiInKiPpDjBnEiPiIjHjNiBgJiDeJiBfLiDgPiBfLiDiJiDeDiDgIiBgK_xHqqkZx_ -----
	virtual void	StateIdle (CDC* pDC);

	//----- _xZkqqHx_jBeKiInKiPpDjBnEiPiIjHjN_xHqqkZx_ -----
	virtual void	StateEnterMoveEdge (CDC* pDC);
	virtual void	StateStartMoveEdge (CDC* pDC);
	virtual void	StateMovingEdge (CDC* pDC);
	virtual void	StateStopMoveEdge (CDC* pDC);
	virtual void	StateExitMoveEdge (CDC* pDC);

	//----- FCToolBaseEdit_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjFeLjAhL_xHqqkZx_ -----
	virtual void	ResetEditHandleList ();

protected:
// _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMjCoIiLgAiBeC_xHqqkZx_
enum
{
	STATE_BEGIN = BASE_CLASS::STATE_END,	// _xZkqqHx_iPpDjBnEiKeKiOgOiBeC_xHqqkZx_
	STATE_ENTER_MOVE_EDGE,	// _xZkqqHx_jCfLjDfPiInKjDkOjDpMiMpLiBeC_xHqqkZx_
	STATE_START_MOVE_EDGE,	// _xZkqqHx_jCfLjDfPiInKjDkOiKeKiOgOiBeC_xHqqkZx_
	STATE_MOVING_EDGE,		// _xZkqqHx_jCfLjDfPiInKjDkOjCiGiBeC_xHqqkZx_
	STATE_STOP_MOVE_EDGE,	// _xZkqqHx_jCfLjDfPiInKjDkOiPeJjHlJiBeC_xHqqkZx_
	STATE_EXIT_MOVE_EDGE,	// _xZkqqHx_jCfLjDfPiInKjDkOiPgPiMpLiBeC_xHqqkZx_
	STATE_END,				// _xZkqqHx_iPpDjBnEiPeJjHlJiBeC_xHqqkZx_
};

// _xZkqqHx_iJhOiMmKiCmMjCfLjDfPiCmMiOoNjHnOiCpAjCoIiLgAiBeC_xHqqkZx_
enum FTArcEdgeKind
{
	FDEK_NONE = 0,
	FDEK_BEGIN,
	FDEK_END,
};

	FCObjArc*		m_pHitObj;	// _xZkqqHx_iDhBiDgCiDgHiClFiClNjFjEjFgJiBeC_xHqqkZx_
	FTArcEdgeKind	m_iHitEdge;	// _xZkqqHx_iDhBiDgCiDgHiClFiClNjCfLjDfPiBeC_xHqqkZx_

	double			m_dR;		// _xZkqqHx_iMlLiNnNiCmMiKhAjDhIiCpAiLeMjIfOiBeC_xHqqkZx_
	CPointVector	m_vlgptArcP;// _xZkqqHx_iMmDiCkCiPeDjAlDjApMiCpAiLeMjIfOiBeC_xHqqkZx_
}; // class FCToolArcEdit.

#endif//__ToolArcEdit_h
