#ifndef __ObjArc_h
#define __ObjArc_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

// _xZkqqHx_iJhOiMmKiCmMjAnKjBlBiMfOiBeC_xHqqkZx_
enum
{
	FDOA_NONE	= 0,	// _xZkqqHx_jGlDiMpIiCmMjCgMiBeC_xHqqkZx_
	FDOA_PIE	= 1,	// _xZkqqHx_iDhAiDeDiCpAjAnIiCmBiClNiCoGiCkEiCmIiMgAiBeC_xHqqkZx_
	FDOA_CHORD	= 2,	// _xZkqqHx_iLhMiCmJiMlHiCpAjCkDiCmBiClNiCoGiCkEiCmIiMgAiBeC_xHqqkZx_
	FDOA_ARC	= 3,	// _xZkqqHx_iKeKiCkCiClNiMgAiBeC_xHqqkZx_
};

class FCUndoArchive;
class FCHiCommandTable;

//----- 05.05.02 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
///////////////////////////////////////////////////////////////////////////
//// CommandGate_xZkqqHx_iCmMiDfCiDhNiDjDiDgIiCmJiOgHjHhAiClHiCoJiNfMjBkCjBmMiBeC_xHqqkZx_
//
//struct FCArcRec
//{
//	WORD	wMask;
//	short	nArcType;
//	double	dArcBgnR;
//	double	dArcEndR;
//}; // struct FCArcRec.
//
//#define FDFP_ARCTYPE	WORD(1L << 0)
//#define FDFP_ARCBGNR	WORD(1L << 1)
//#define FDFP_ARCENDR	WORD(1L << 2)
//----- 05.05.02 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

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

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

public:
	/*----- _xZkqqHx_jBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----*/
	FCObjArc ();
	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 BOOL	IsClosePolygon () const;
	virtual void	NewObjPolygonForDraw (	DBLPointVector& vmmptPoly,
											mmetol mmElemLen,
											const DBLRect mmrtaClip[],
											int iClipSize) const;
	virtual void	NewObjBezierForDraw (FCMmPolyBezier& polyBezier) const;
	virtual void	GetEdgePoint (DBLPoint& mmptF, DBLPoint& mmptB) const;

//----- 01.11.16 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	//----- _xZkqqHx_jFkBjAjEiCmMiDiCiDiKiDhGiCpAiOjNiCmC_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
	virtual long	GetMolipCount () const;
//----- 01.11.16 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

//----- 06.12.04 Fukushiro M. _xZkqqHx_jCmHiJmBiOgO_xHqqkZx_ ()-----
	//----- _xZkqqHx_jFeLjHhGiCmJiJjOiClGiCmEiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClHiCoKiCmOjHmHiCkC_xHqqkZx_ -----
	virtual double	CalcArea () const;
//----- 06.12.04 Fukushiro M. _xZkqqHx_jCmHiJmBiPeJ_xHqqkZx_ ()-----

	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
	virtual short	GetArcType () const;			// _xZkqqHx_iJhOiCmMiDfOiDeDiDhGiBeC_xHqqkZx_
	virtual double	GetArcBgnR () const;			// _xZkqqHx_jAiFjFlNiOlCiCmJjBmOiClHiCoJiJhOiCmMiKeKiOgOiKhAiBeC_xHqqkZx_
	virtual double	GetArcEndR () const;			// _xZkqqHx_jAiFjFlNiOlCiCmJjBmOiClHiCoJiJhOiCmMiPeJjHlJiKhAiBeC_xHqqkZx_

	static void	GetEdgePos (DBLPoint& mmptPos, const FCObjArc* pArc,
							double dEdgeR, double dSinR, double dCosR);

friend class FCHiCommandTable;
protected:
	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
	virtual void	SetArcType (short nArcType);	// _xZkqqHx_iJhOiCmMiDfOiDeDiDhGiBeC_xHqqkZx_
	virtual void	SetArcBgnR (double dBgnR);		// _xZkqqHx_jAiFjFlNiOlCiCmJjBmOiClHiCoJiJhOiCmMiKeKiOgOiKhAiBeC_xHqqkZx_
	virtual void	SetArcEndR (double dEndR);		// _xZkqqHx_jAiFjFlNiOlCiCmJjBmOiClHiCoJiJhOiCmMiPeJjHlJiKhAiBeC_xHqqkZx_

	//----- _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_nArcType;		// _xZkqqHx_iJhOiCmMiDfOiDeDiDhGiBeC_xHqqkZx_
	double	m_dBgnR;		// _xZkqqHx_iJhOiCmMiKeKiOgOiKhAiBeC_xHqqkZx_
	double	m_dEndR;		// _xZkqqHx_iJhOiCmMiPeJjHlJiKhAiBeC_xHqqkZx_
}; // class FCObjArc.

#endif//__ObjArc_h

