#ifndef __ObjRoundRect_h
#define __ObjRoundRect_h

/**********************************************************
 *                 _xZkqqHx_iBhJiDgOiDjDiDeLiDiKiBfLiLeMjGeAiBhK_xHqqkZx_
 *      a               _xZkqqHx_jEhKjHpB_xHqqkZx_(Array)
 *      b               _xZkqqHx_jIfPjHjNiMfO_xHqqkZx_(Bool)
 *      by              unsigned char(BYte)
 *      c               char(Char)
 *      cb              _xZkqqHx_jFlGiOjKjAjE_xHqqkZx_(Count of Byte)
 *      cr              _xZkqqHx_jAeG_xHqqkZx_(Color Reference value)
 *      cx,cy   short_xZkqqHx_iMfO_xHqqkZx_[_xZkqqHx_iNmAjFfH_xHqqkZx_(x,y)_xZkqqHx_iCmMiDeKiDeFiDjDiDfO_xHqqkZx_](Count of X,Y)
 *      dw              unsigned long_xZkqqHx_iMfO_xHqqkZx_(Double Word)
 *      fn              _xZkqqHx_iKnGjAjE_xHqqkZx_(FuNction)
 *      h               _xZkqqHx_iDgOiDjDiDgIiDiL_xHqqkZx_(Handle)
 *      i               int(Integer)
 *      l               long(Long)
 *      m               _xZkqqHx_iDeOiDiJiDfIiDiBiDjDiDgP_xHqqkZx_(data Member of a class)
 *      n               short_xZkqqHx_iIlNiCkCiCmN_xHqqkZx_int
 *      p               _xZkqqHx_iDhMiDeDiDjDiDfOiMfO_xHqqkZx_(Pointer)
 *      s               _xZkqqHx_jFlGiOjKjHpB_xHqqkZx_(String)
 *      sz              0_xZkqqHx_iCmFiPeJiCoNiCoJjFlGiOjKjHpB_xHqqkZx_(String terminated with Zero)
 *      tm              _xZkqqHx_iDgFiDeMiDfIiDgHjAkBjGeA_xHqqkZx_(Text Metric)
 *      w               unsigned short(Word)
 *      x,y             short_xZkqqHx_iMfOiNmAjFfHjCgM_xHqqkZx_
 ********************************************************/

#include "ObjRect.h"	// SuperClass.

//;----- <EXPORT TO SDK> -----;

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS FCObjRect

//----- m_nRoundType _xZkqqHx_iCmMiDfOiDeDiDhG_xHqqkZx_ -----
enum
{
	FDOR_NONE = 0,
	FDOR_SAME_RATIO,	// _xZkqqHx_jDkPiClGjEoEjHkGiCmFiDiKiDfEiDeDiDfJiBeC_xHqqkZx_
	FDOR_SAME_SIZE		// _xZkqqHx_jDkPiClGiDfEiDeDiDfJiCmFiDiKiDfEiDeDiDfJiBeC_xHqqkZx_
};

class FCUndoArchive;
class FCToolRoundRectEdit;
class FCHiCommandTable;
class CFCProObjRoundRect;
template<class T> class FCPolyBezier;
typedef FCPolyBezier<DBLPoint> FCMmPolyBezier;

//----- 05.05.02 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
///////////////////////////////////////////////////////////////////////////
//// CommandGate_xZkqqHx_iCmMiDfCiDhNiDjDiDgIiCmJiOgHjHhAiClHiCoJiNfMjBkCjBmMiBeC_xHqqkZx_
//
//struct FCRoundRectRec
//{
//	WORD	wMask;
//	short	nRoundType;
//	mmetol	mmRoundX;
//	mmetol	mmRoundY;
//}; // struct FCRoundRectRec.
//
//#define FDFP_ROUNDTYPE			WORD(1L << 0)
//#define FDFP_ROUNDX				WORD(1L << 1)
//#define FDFP_ROUNDY				WORD(1L << 2)
//----- 05.05.02 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

//;------ </EXPORT TO SDK> -----;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCObjRoundRect
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_iKnLiKhAiLoJiMgAiCmMjFjEjFgJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	00.01.29 Fukushiro M. _xZkqqHx_iDfCiDiBiDjDiDgHiNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCObjRoundRect : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;

public:
	/*----- _xZkqqHx_jBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	FCObjRoundRect ();
	virtual BOOL	IsKindOf (FTObjectType nType) const;

	/*----- _xZkqqHx_iOmAjBmMiJlLiJmCjEfMiCmIiDeOiDiJiDfIiCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	virtual FTObjectType	Type () const;

	/*----- _xZkqqHx_jBkOjAkLiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	virtual BOOL	IsEqual (const FCObjDynabase* objp) const;
// 06.06.23 Fukushiro M. 1_xZkqqHx_iNhDjFmPiNfI_xHqqkZx_ ()
//	virtual void	OutStream (FCUndoArchive& ar);
	virtual void	OutStream (FCUndoArchive& ar, BOOL bIsOutBezier);
	virtual void	InStream (FCUndoArchive& ar);
	virtual void	CreatePropertyPage (CPropertyPageVector& vPropPage,
										const ObjDynabaseVector& vSelect);

	/*----- _xZkqqHx_iKePiMgAiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	virtual void	NewObjPolygonForDraw (	DBLPointVector& vmmptPoly,
											mmetol mmElemLen,
											const DBLRect mmrtaClip[],
											int iClipSize) const;
	virtual void	NewObjPolygonForResize (DBLPointVector& vmmptPoly,
											mmetol mmElemLen,
											const DBLRect mmrtaClip[],
											int iClipSize) const;
	virtual void	NewObjBezierForDraw (FCMmPolyBezier& polyBezier) const;

	//----- _xZkqqHx_jFeLjHhGiCmJiJjOiClGiCmEiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClHiCoKiCmOjHmHiCkC_xHqqkZx_ -----
// 06.12.04 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	virtual double	CalcArea () const;

	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
	virtual short	GetRoundType () const;
	virtual mmetol	GetRoundX () const;
	virtual mmetol	GetRoundY () const;

//----- 06.12.04 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	virtual mmetol	GetRealRoundX () const;
	virtual mmetol	GetRealRoundY () const;
//----- 06.12.04 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

//friend class FCToolRoundRectEdit;
friend class FCHiCommandTable;
friend class CFCProObjRoundRect;
protected:
	/*----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----*/
	virtual void	SetRoundType (short nRoundType);
	virtual void	SetRoundX (mmetol mmX);
	virtual void	SetRoundY (mmetol mmY);

	/*----- _xZkqqHx_jBkOjAkLiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	virtual void	Copy (FCObjDynabase* pObj) const;
	virtual void	CopySelf (FCObjDynabase* pObj) const;

	//----- _xZkqqHx_iClBiCmM_xHqqkZx_FCObjRect_xZkqqHx_iDeOiDiJiDfIiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKjFeLjHhGiCmJiJjOiClGiCmEiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClHiCoKiCmOiCoGiCkC_xHqqkZx_ -----
	virtual void	ResizeNoChangeFrame (const DBLPoint& mmptOrig,
										const DBLPoint& dptMagnif,
										const DBLPoint& mmptOrigNew);

protected:
	short	m_nRoundType;		// _xZkqqHx_iDiKiDfEiDeDiDfJiOjOiCmMiKhAiCmMjFmPiMgAjFpLiOkOiCmMiDfOiDeDiDhGiBeC_xHqqkZx_
	mmetol	m_mmRoundX;			// _xZkqqHx_iKhAiCmMiCfDjFkKiCmMiCfAiJhOiCmMjElMiMgBiBgJiChHjFpLiMpMiBgKiBeC_xHqqkZx_
	mmetol	m_mmRoundY;			// _xZkqqHx_iKhAiCmMiCfDjFkKiCmMiCfAiJhOiCmMjElMiMgBiBgJiChIjFpLiMpMiBgKiBeC_xHqqkZx_
}; // class FCObjRoundRect.

#endif//__ObjRoundRect_h
