#ifndef __ObjTable_h
#define __ObjTable_h

#include "3ObjGroup.h"	// Superclass.

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS MC3ObjGroup


//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//class FCUndoArchive;
//class FCObjTextRect;
//class FCObjLine;
//class FCCommandGate;
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

class MCARCHIVE;

//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//#define FD_OBJ_TABLE_MIN_CELL_WIDTH		mmetol(0.1)
//#define FD_OBJ_TABLE_MIN_CELL_HEIGHT	mmetol(0.1)
//
//// _xZkqqHx_iNhDiBeBjHpBiCmMiNfMjBkCjBmMiBeC_xHqqkZx_
//struct FCLineColumn : public pair<long, long>
//{
//	FCLineColumn (long lLine = -1, long lColumn = -1) : pair<long, long>(lLine, lColumn) {}
//	long GetLineIndex () const { return first; }
//	long GetColumnIndex () const { return second; }
//	void Set (long lLine, long lColumn) { first = lLine; second = lColumn; }
//	void SetLineIndex (long lLine) { first = lLine; }
//	void SetColumnIndex (long lColumn) { second = lColumn; }
//
//}; // struct FCLineColumn.
//
//// _xZkqqHx_iMhCjApMiCpAiBeBjAlDjGmKiBgJiOlCjFpLiMpMiBgKiCkJiCoHiCnNiClNiPoKiNiHiCmMiNmAjFfHiBeBiJkBiCkJiCoHiCnNiClNiPoKiNiHiCmMiNmAjFfHiBeC_xHqqkZx_
//struct FCFrontSide : public pair<long, long>
//{
//	FCFrontSide (long lFrontIndex = -1, long lSideIndex = -1) : pair<long, long>(lFrontIndex, lSideIndex) {}
//	long GetFrontIndex () const { return first; }
//	long GetSideIndex () const { return second; }
//	void Set (long lFrontIndex, long lSideIndex) { first = lFrontIndex; second = lSideIndex; }
//	void SetFrontIndex (long lFront) { first = lFront; }
//	void SetSideIndex (long lSide) { second = lSide; }
//}; // struct FCFrontSide.
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

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

public:
	//----- _xZkqqHx_jBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
	MC4ObjTable ();
// 05.06.13 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual BOOL	IsKindOf (FTObjectType nType) const;

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

//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	//----- Subclass_xZkqqHx_iCmMiCkCiClIiCoKiCkJiCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
//	virtual void	OnDraw (CDC* pDC, BOOL bIsMono);
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

	//----- _xZkqqHx_jBkOjAkLiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
// 05.06.13 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual BOOL	IsEqual (const FCObjBase* objp) const;
	virtual void	OutStream (MCARCHIVE& ar);
	virtual void	InStream (MCARCHIVE& ar);

	//----- _xZkqqHx_jFkBjAjEiCmMiDiCiDiKiDhGiCpAiOjNiCmC_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----

	//----- _xZkqqHx_jFeLjHhGiCmJiJjOiClGiCmEiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClHiCoKiCmOjHmHiCkC_xHqqkZx_ -----

//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	virtual WORD	GetMemberFixResizeByText (const FCObjBase* pObj) const;
//	virtual BOOL	GetIsMemberShortenByText (const FCObjBase* pObj) const;
//	virtual void	AdjustObjectSize (	FCObjBase* pTextObj,
//										double dRatioHorz,
//										double dRatioVert,
//										const DBLPoint& mmptFixPoint);
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

	virtual ~MC4ObjTable ();

public:
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
//	virtual void	InitTable ();
//	virtual void	DuplicateLine (	ObjBaseVector& vNewCell,
//									ObjBaseVector& vNewHorzRuled,
//									ObjBaseVector& vNewVertRuled,
//									long lLineIndex,
//									BOOL bRegisterObjId) const;
//	virtual void	DuplicateColumn (	ObjBaseVector& vNewCell,
//										ObjBaseVector& vNewVertRuled,
//										ObjBaseVector& vNewHorzRuled,
//										long lColumnIndex,
//										BOOL bRegisterObjId) const;
//
//	virtual mmetol	InsertLine (const ObjBaseVector& vAppendCell,
//								const ObjBaseVector& vAppendHorzRuled,
//								const ObjBaseVector& vAppendVertRuled,
//								long lLineIndex,
//								mmetol mmHeight);
//
//	virtual mmetol	InsertColumn (	const ObjBaseVector& vAppendCell,
//									const ObjBaseVector& vAppendVertRuled,
//									const ObjBaseVector& vAppendHorzRuled,
//									long lColumnIndex,
//									mmetol mmWidth);
//
//	virtual void	DeleteLine (ObjBaseVector& vRemoveCell,
//								ObjBaseVector& vRemoveHorzRuled,
//								ObjBaseVector& vRemoveVertRuled,
//								long lLineIndex);
//	virtual void	DeleteColumn (	ObjBaseVector& vRemoveCell,
//									ObjBaseVector& vRemoveVertRuled,
//									ObjBaseVector& vRemoveHorzRuled,
//									long lColumnIndex);
//
//
//	virtual long	GetLineCount () const;
//	virtual long	GetColumnCount () const;
//	virtual mmetol	GetLineHeight (long lLineIndex) const;
//	virtual mmetol	GetColumnWidth (long lColumnIndex) const;
//	virtual void	SetLineHeight (long lLineIndex, mmetol mmWidth);
//	virtual void	SetColumnWidth (long lColumnIndex, mmetol mmWidth);
//
//	virtual mmetol	GetCellTopCoord (long lLineIndex) const;
//	virtual mmetol	GetCellLeftCoord (long lColumnIndex) const;
//
//	virtual BOOL	GetHorzRuledY (mmetol& mmY, long lFrontIndex) const;
//	virtual BOOL	GetVertRuledX (mmetol& mmX, long lFrontIndex) const;
//
//	virtual void	CalcLineTopBottomArray (vector< pair<mmetol, mmetol> >& vTopBottom) const;
//	virtual void	CalcColumnLeftRightArray (vector< pair<mmetol, mmetol> >& vLeftRight) const;
//	virtual void	GetCellFrameRuled (	set<FCFrontSide>* stLeftRuledIndex,
//										set<FCFrontSide>* stTopRuledIndex,
//										set<FCFrontSide>* stRightRuledIndex,
//										set<FCFrontSide>* stBottomRuledIndex,
//										const FCLineColumn& cellIndex) const;
//
//	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
//	virtual FCObjTextRect*			GetCell (const FCLineColumn& cellIndex);
//	virtual const FCObjTextRect*	GetCell (const FCLineColumn& cellIndex) const;
//	virtual FCObjLine*				GetRuled (BOOL bIsHorz, const FCFrontSide& ruledIndex);
//	virtual const FCObjLine*		GetRuled (BOOL bIsHorz, const FCFrontSide& ruledIndex) const;
//
//	virtual void 	SetCell (const FCLineColumn& cellIndex, FCObjTextRect* pCell);
//	virtual void 	SetRuled (BOOL bIsHorz, const FCFrontSide& ruledIndex, FCObjLine* pRuled);
//
//	virtual void	GetIncludedRuled (	set<FCFrontSide> &stHorzRuled,
//										set<FCFrontSide>& stVertRuled,
//										const FCLineColumn& cellIndexFrom,
//										const FCLineColumn& cellIndexUntil) const;
//	virtual long	GetCellBlock (	const FCLineColumn& cellIndex,
//									FCLineColumn* pCellIndexFrom = NULL,
//									FCLineColumn* pCellIndexUntil = NULL) const;
//	virtual void	GetFinalCellBlock (	FCLineColumn& cellIndexFrom,
//										FCLineColumn& cellIndexUntil,
//										const FCLineColumn& cellIndexFromFirst,
//										const FCLineColumn& cellIndexUntilFirst) const;
//	virtual void	GetIncludedCell (	set<FCLineColumn>& stCellIndex,
//										const FCLineColumn& cellIndexFrom,
//										const FCLineColumn& cellIndexUntil) const;
//	virtual void	GetRealCell (set<FCLineColumn>& stRealCellIndex,
//								 set<FCLineColumn> stVirtualCellIndex) const;
//
//	virtual BOOL	GetCellIndex (FCLineColumn& cellIndex, const FCObjBase* pCell) const;
//
//friend class FCCommandGate;
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----
protected:
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	//----- _xZkqqHx_jBkOjAkLiCpAiOjNiCmCjBfDiCmEiCmM_xHqqkZx_Subclass_xZkqqHx_iCkKiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClFiCmIiCkPiCoKiCmOiCmIiCoHiCmIiCkC_xHqqkZx_ -----
//	virtual void	Copy (FCObjBase* pObj) const;
//
//	//----- _xZkqqHx_jFeLjHhGiCmJiJjOiClGiCmEiDeDiDjDiDhGiDiKiDiBiDjDiDgHiClHiCoKiCmOjHmHiCkC_xHqqkZx_ -----
//	virtual void	Move (mmetol mmDX, mmetol mmDY);
//	virtual void	Resize (BOOL bXPosi, BOOL bYPosi, const DBLRect& mmrtNew, const DBLRect& mmrtOld);
//	virtual void	Rotate (double dR, const DBLPoint& mmptCenter);
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	//----- _xZkqqHx_iClBiCmMiDeOiDiJiDfIiMmFjHeMiCmMiKnGjAjE_xHqqkZx_ -----
//	virtual void	LayoutCellRuled ();
//	virtual void	MemberArrayToObjArray (vector<ObjBaseVector>& vvObj, const vector<longVector>& vvMemberIndex) const;
//	virtual void	ObjArrayToMemberArray (vector<longVector>& vvMemberIndex, const vector<ObjBaseVector>& vvObj) const;
//	virtual mmetol	GetCellWidthMin (const FCLineColumn& cellIndex) const;
//	virtual mmetol	GetCellHeightMin (const FCLineColumn& cellIndex) const;
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----

protected:
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiOgO_xHqqkZx_ ()-----
//	DBLPoint	m_mmptLeftTop;			// _xZkqqHx_iNlGiPoDiNmAjFfHiBeCjAgFiCmMiDePiDiLiBfLiDhGjFjEjFgJiCmMiDiKiDfEiDeDiDfJiDhEiDiMiBfLiDiAiCkK_xHqqkZx_
//										// _xZkqqHx_iOhBjFjEjFgJiCmJiImLjBlGiClFiCmEjFmPiJlLiClHiCoJiCmMiCmFiBeBiClBiClBiCmFiLeMiJkPiBeC_xHqqkZx_
//	//----- _xZkqqHx_jGhLjHiIiCmN_xHqqkZx_vector_xZkqqHx_iCpAiOgHiCoNiClIjEhKjHpBiCmFiNoMiCoIiClNiCkCiCkK_xHqqkZx_ -----
//	//		_xZkqqHx_jEhKjHpBiCpAiOgHiCkEiCmGjBoFjFmPiCmIiCmMiCmFiBeB_xHqqkZx_vector _xZkqqHx_iCmFjBoDjHhA_xHqqkZx_ -----
//	mmetolVector			m_vLineHeight;	// _xZkqqHx_iNhDiCmMiNiCiClDjEhKjHpBiBeC_xHqqkZx_
//	mmetolVector			m_vColumnWidth;	// _xZkqqHx_jHpBiCmMjFjNjEhKjHpBiBeC_xHqqkZx_
//	vector<ObjBaseVector>	m_vvCell;		// _xZkqqHx_iDfKiDiLiCmMjFjEjFgJjEhKjHpBiBeC_xHqqkZx_
//	vector<ObjBaseVector>	m_vvHorzRuled;	// _xZkqqHx_jAiFjFlNiMhCjApMiCmMjFjEjFgJjEhKjHpBiBeC_xHqqkZx_
//	vector<ObjBaseVector>	m_vvVertRuled;	// _xZkqqHx_jAiCjClMiMhCjApMiCmMjFjEjFgJjEhKjHpBiBeC_xHqqkZx_
//----- 05.06.13 Fukushiro M. _xZkqqHx_iNoNiPjMiPeJ_xHqqkZx_ ()-----
}; // class MC4ObjTable.

#endif//__ObjTable_h
