// ★コメント未記入
// FloatingSelection.h: CFloatingSelection クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FLOATINGSELECTION_H__80B8EF52_DE9F_482C_AD48_F8DCB1645517__INCLUDED_)
#define AFX_FLOATINGSELECTION_H__80B8EF52_DE9F_482C_AD48_F8DCB1645517__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <afxtempl.h>
#include "BoxSelection.h"
#include "CommandMultiEdit.h"
class CShitarabianDoc;

class CFloatingSelection : public CBoxSelection  
{
public:
	CFloatingSelection();
	virtual ~CFloatingSelection();

	void SetPosition( CPoint ptTopLeft );
	CPoint GetPosition(){ return( m_ptTopLeft ); };

	// 選択文字列設定
	BOOL	SetLinez(
		CStringArray&	astrLinez
	);

	// 選択文字列群の反映・取り消し
	BOOL		DoReflect();
	BOOL		UnDoReflect();

	// 決定。コマンドの登録
	BOOL		Confirm();

	long		GetFloatBoundMinColumn(){ return(m_LeftColumn); };
	long		GetFloatBoundMinRow(){ return(m_LeftRow); };
	long		GetFloatBoundMaxColumn(){ return(m_RightColumn); };
	long		GetFloatBoundMaxRow(){ return(m_RightRow); };

protected:
	CPoint				m_ptTopLeft;		// 挿入位置 [-] (-)
	CStringArray		m_astrLinez;		// 選択文字列群 [-] (-)
	CCommandMultiEdit	m_cmdEdit;
	long				m_LeftColumn;		// フロートバウンド範囲 [-] (-)
	long				m_LeftRow;
	long				m_RightColumn;
	long				m_RightRow;

	// 挿入文字情報作成
	int BuildInsertInfo(
		CArray< int, int >*		paStartXz,
		CArray< int, int >*		paEndXz,
		CStringArray*			pastrLinez
	);

	// 挿入前半位置確定
	BOOL	BuildLeftInfo(
		int					iRow,
		int					iStartInsertX,
		int*				piStartInsertColumn,
		int*				piStartBlankX,
		int*				piStartBlankColumn
	);

	// 挿入後半位置確定
	BOOL	BuildRightInfo(
		int					idxRow,
		int					iEndInsertX,
		int*				piEndInsertColumn,
		int*				piEndBlankX,
		int*				piEndBlankColumn
	);

};

#endif // !defined(AFX_FLOATINGSELECTION_H__80B8EF52_DE9F_482C_AD48_F8DCB1645517__INCLUDED_)
