#ifndef __ObjFigure_h
#define __ObjFigure_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 "2ObjBase.h"	// Super class.

class MCARCHIVE;
class MC2RichText;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	MC2ObjFigure
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_jFjEjFgJiCmMjHnGiKhDjApMiCmMjFgAiJoGiBeBjDgIiCoIiCmCiCnEiClFjDjJiCmMiLeAjEfMiCpAiOmAiMlLiClHiCoJiBeCjFfMiOkGiClDiCoKiCoJ_xHqqkZx_
 *			_xZkqqHx_iDeDiDiBiBfLiDfHiCpAiOjNiCmCjFjEjFgJiCmNiBeBiClBiCmMiDeOiDiJiDfIiCmMiDfEiDhFiDeOiDiJiDfIiCmFiDeDiDjDiDhGiDiKiDiBiDjDiDgH_xHqqkZx_
 *			_xZkqqHx_iClDiCoKiCoJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	99.05.03 Fukushiro M. _xZkqqHx_iDfCiDiBiDjDiDgHiNoMjAkM_xHqqkZx_
 *************************************************************************/
class MC2ObjFigure : public MC2ObjBase
{
public:
	//----- _xZkqqHx_jBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
	MC2ObjFigure ();
	virtual void	OutStreamV3 (MCARCHIVE& ar);
	virtual void	InStreamV12 (MCARCHIVE& ar);
	virtual void	TerminateInStream ();
	virtual ~MC2ObjFigure ();

	virtual MC2RichText*	GetRichText () const;
	virtual void		SetRichText (MC2RichText* pText);

	//----- _xZkqqHx_iKePiMgAiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
	virtual BOOL	IsClosePolygon () const;

protected:

	//----- _xZkqqHx_iClLiCmMjBlMiKgFiOoNiCmMiDiBiDjDiDgPjFmPjAjE_xHqqkZx_ -----
	struct V1_2
	{
		PenStyleIDV12		m_psidPenStyle;			// _xZkqqHx_iDhJiDjDiCmMiDfIiDfOiDeDiDiL_xHqqkZx_._xZkqqHx_jClMjApM_xHqqkZx_,_xZkqqHx_jDfPjApM_xHqqkZx_,etc.
		union {
			BYTE			m_byPenPatternForStream;// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			PatternIDV12	m_ptidPenPattern;		// _xZkqqHx_iDhJiDjDiCmMiDhAiDfOiBfLiDjD_xHqqkZx_.
		};
		union {
			BYTE			m_byBrushPatternForStream;// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			PatternIDV12	m_ptidBrushPattern;		// _xZkqqHx_iDhFiDiJiDfGiCmMiDhAiDfOiBfLiDjD_xHqqkZx_.
		};
		union {
			BYTE		m_byTypeForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
			  BYTE		m_byPenType		: 4;	// _xZkqqHx_iDhJiDjDiCmMiMfO_xHqqkZx_._xZkqqHx_iPiDjAeG_xHqqkZx_,_xZkqqHx_jDkHjGlO_xHqqkZx_,_xZkqqHx_iDhAiDfOiBfLiDjD_xHqqkZx_,etc.
			  BYTE		m_byBrushType	: 4;	// _xZkqqHx_iDhFiDiJiDfGiCmMiMfO_xHqqkZx_._xZkqqHx_iPiDjAeG_xHqqkZx_,_xZkqqHx_jDkHjGlO_xHqqkZx_,_xZkqqHx_iDhAiDfOiBfLiDjD_xHqqkZx_,etc.
			};
		};
		fmmetol			m_mmfPenWeight;			// _xZkqqHx_iDhJiDjDiCmMjFjN_xHqqkZx_.
		SColorID		m_scidPenForeSColor;	// _xZkqqHx_iDhJiDjDiCmMjBePiMgJjAeG_xHqqkZx_.
		union {
			WORD			m_wPenColorForStream;	// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			SColorID		m_scidPenBackSColor;	// _xZkqqHx_iDhJiDjDiCmMjEhHiMgJjAeG_xHqqkZx_.
		};
		union {
			WORD			m_wBrsForeColForStream;	// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			SColorID		m_scidBrushForeSColor;	// _xZkqqHx_iDhFiDiJiDfGiCmMjBePiMgJjAeG_xHqqkZx_.
		};
		union {
			WORD			m_wBrsBackColForStream;	// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			SColorID		m_scidBrushBackSColor;	// _xZkqqHx_iDhFiDiJiDfGiCmMjEhHiMgJjAeG_xHqqkZx_.
		};
		SColorID			m_scidShadowSColor;		// _xZkqqHx_iJgFiCmMjAeGiBeC_xHqqkZx_
		union {
			WORD		m_wEMFInfoForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
				WORD	m_byEMFHorzMap		: 2;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjAiFjFlNjFpLiMpMiCmMiDhNiDgCiDhGjFpLjGeAiBeC_xHqqkZx_
				WORD	m_byEMFVertMap		: 2;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjAiCjClMjFpLiMpMiCmMiDhNiDgCiDhGjFpLjGeAiBeC_xHqqkZx_
				WORD	m_emidEMFImage		: 12;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjDgPjIfOjGlM_xHqqkZx_.
			};
		};
		union {
			WORD		m_wArrowFForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
				WORD	m_byArrowFType		: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_byArrowFParam0	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCePiBeC_xHqqkZx_
				WORD	m_byArrowFParam1	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfAiBeC_xHqqkZx_
				WORD	m_byArrowFParam2	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfBiBeC_xHqqkZx_
			};
		};
		union {
			WORD		m_wArrowBForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
				WORD	m_byArrowBType		: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_byArrowBParam0	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCePiBeC_xHqqkZx_
				WORD	m_byArrowBParam1	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfAiBeC_xHqqkZx_
				WORD	m_byArrowBParam2	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfBiBeC_xHqqkZx_
			};
		};
	} m_V1_2;
	struct V3
	{
		PenRegisterID	m_pridPenRegister;		// _xZkqqHx_iDhJiDjDiCmMjDgPjIfOjGlMiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		SColorID		m_scidPenBackSColor;	// _xZkqqHx_iDhJiDjDiCmMjBePiMgJjAeGiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		fmmetol			m_mmfPenWeight;			// _xZkqqHx_iDhJiDjDiCmMjFjNiBeC_xHqqkZx_4Byte_xZkqqHx_iBeC_xHqqkZx_
		PenStyleID		m_psidPenStyle;			// _xZkqqHx_iDhJiDjDiCmMiDfIiDfOiDeDiDiLiBeCjClMjApM_xHqqkZx_,_xZkqqHx_jDfPjApM_xHqqkZx_,etc_xZkqqHx_iBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_

		SColorID		m_scidShadowSColor;		// _xZkqqHx_iJgFiCmMjAeGiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_

		BrushRegisterID	m_bridBrushRegister;	// _xZkqqHx_iDhFiDiJiDfGiCmMjDgPjIfOjGlMiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		SColorID		m_scidBrushForeSColor;	// _xZkqqHx_iDhFiDiJiDfGiCmMjBePiMgJjAeGiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		SColorID		m_scidBrushBackSColor;	// _xZkqqHx_iDhFiDiJiDfGiCmMjEhHiMgJjAeGiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		PatternID		m_ptidBrushPattern;		// _xZkqqHx_iDhFiDiJiDfGiCmMiDhAiDfOiBfLiDjDiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_

		struct {
			BYTE		m_byEMFHorzMap;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjAiFjFlNjFpLiMpMiCmMiDhNiDgCiDhGjFpLjGeAiBeC_xHqqkZx_1Byte_xZkqqHx_iBeC_xHqqkZx_
			BYTE		m_byEMFVertMap;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjAiCjClMjFpLiMpMiCmMiDhNiDgCiDhGjFpLjGeAiBeC_xHqqkZx_1Byte_xZkqqHx_iBeC_xHqqkZx_
			EmfImageID	m_emidEmfImage;	// _xZkqqHx_iDiBiDfOiDhEiDeAiDeDiDiLiCmMjDgPjIfOjGlMiBeC_xHqqkZx_2Byte_xZkqqHx_iBeC_xHqqkZx_
		};
		union {
			WORD		m_wArrowFForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
				WORD	m_byArrowFType		: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_byArrowFParam0	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCePiBeC_xHqqkZx_
				WORD	m_byArrowFParam1	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfAiBeC_xHqqkZx_
				WORD	m_byArrowFParam2	: 4;	// _xZkqqHx_iKeKiOgOjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfBiBeC_xHqqkZx_
			};
			struct {
				WORD	m_byDummyF			: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_wPictArrowF		: 12;	// _xZkqqHx_iDhDiDeOiDgAiDiDjGoOiIpDiCmM_xHqqkZx_ID_xZkqqHx_iBeC_xHqqkZx_
			};
		};
		union {
			WORD		m_wArrowBForStream;		// _xZkqqHx_iDfIiDgHiDiKiBfLiDiAjHhAiBeC_xHqqkZx_
			struct {
				WORD	m_byArrowBType		: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_byArrowBParam0	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCePiBeC_xHqqkZx_
				WORD	m_byArrowBParam1	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfAiBeC_xHqqkZx_
				WORD	m_byArrowBParam2	: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiDhAiDiJiDiBiBfLiDfOiCfBiBeC_xHqqkZx_
			};
			struct {
				WORD	m_byDummyB			: 4;	// _xZkqqHx_iPeJjHlJjGoOiIpDiCmMiMfOiBeC_xHqqkZx_
				WORD	m_wPictArrowB		: 12;	// _xZkqqHx_iDhDiDeOiDgAiDiDjGoOiIpDiCmM_xHqqkZx_ID_xZkqqHx_iBeC_xHqqkZx_
			};
		};
	} m_V3;

	MC2RichText*	m_pRichText;

}; // class MC2ObjFigure.

#endif//__ObjFigure_h
