#ifndef __ToolBezier_h
#define __ToolBezier_h

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

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS FCToolBasePolyCreate


class FCToolBezier : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;

public:
	//----- _xZkqqHx_iDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
	virtual void	Select (CDC* pDC);
	virtual void	Unselect (CDC* pDC);
// 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);

protected:
//----- 05.04.24 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	//----- FCToolBaseFDA_xZkqqHx_iMmFjHeM_xHqqkZx_ -----
	virtual HCURSOR	GetDefaultIdleCursor () const;
//----- 05.04.24 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeM_xHqqkZx_ -----
// 05.04.25 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual void	CalcEditLine (long lBeginIndex, long lJointCount);
	virtual void	DrawEditLine (CDC* pDC, long lCount);

//----- 05.04.24 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	//----- 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);
//----- 05.04.24 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

	//----- _xZkqqHx_jBeKiInKiPpDjBnEiPiIjHjN_xHqqkZx_ -----
// 05.04.24 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	virtual void	StateBeforeStart (CDC* pDC);
	virtual void	StateStartJoint (CDC* pDC);
	virtual void	StateSetJoint (CDC* pDC);
// 05.04.25 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	virtual void	StateUnsetJoint (CDC* pDC);
// 05.04.25 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	virtual void	StateEraseJoint (CDC* pDC);
	virtual void	StateDrawJoint (CDC* pDC);
	virtual void	StateCreateObject (CDC* pDC);
	virtual void	StateTerminateJoint (CDC* pDC);
	virtual void	StateAbortJointByButton (CDC* pDC);
//----- 05.04.25 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	virtual void	StateStartFreehand (CDC* pDC);
	virtual void	StateDrawFreehand (CDC* pDC);
	virtual void	StateCreateFreehand (CDC* pDC);
	virtual void	StateTerminateFreehand (CDC* pDC);
//----- 05.04.25 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

protected:
// _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMjCoIiLgAiBeC_xHqqkZx_
enum
{
	STATE_BEGIN = BASE_CLASS::STATE_END,	// _xZkqqHx_iPpDjBnEiKeKiOgOiBeC_xHqqkZx_
	STATE_BEFORE_START,			// _xZkqqHx_iKeKiOgOjBePiPiIjHjNiBeC_xHqqkZx_
	STATE_START_FREEHAND,		// _xZkqqHx_iOkJjHfCiLmIjApMiKeKiOgOiBeC_xHqqkZx_
	STATE_DRAW_FREEHAND,		// _xZkqqHx_iOkJjHfCiLmIjApMjFgAiJoGiBeC_xHqqkZx_
	STATE_CREATE_FREEHAND,		// _xZkqqHx_iOkJjHfCiLmIjApMiNoMjAkMiBeC_xHqqkZx_
	STATE_TERMINATE_FREEHAND,	// _xZkqqHx_iOkJjHfCiLmIjApMiPeJjHlJiBeC_xHqqkZx_
	STATE_END,					// _xZkqqHx_iPpDjBnEiPeJjHlJiBeC_xHqqkZx_
};

protected:
	DBLPoint m_mmptMscStart;		// _xZkqqHx_iNlGiDhLiDfOiDjDiCpAiJjPiClFiClNiCmGiCkLiCmMiNmAjFfHiBeC_xHqqkZx_
	DBLPointVector m_vmmptPoly;		// _xZkqqHx_iOkJjHfCiLmIjApMiCmMjClIjDfPjEhKjHpBiBeC_xHqqkZx_
// 05.04.25 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	CPointVector m_vmmptPoly1;		// _xZkqqHx_iMlLiNnNiCmMiJlMjApMiNmAjFfHiBgJiMoDjElMiJlMjApMiBgKiBeC_xHqqkZx_
}; // class FCToolBezier.

#endif//__ToolBezier_h
