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

#if !defined(AFX_DOCUMENTIF_H__A7E9F8EF_6912_43BB_978E_A7FCCF43F314__INCLUDED_)
#define AFX_DOCUMENTIF_H__A7E9F8EF_6912_43BB_978E_A7FCCF43F314__INCLUDED_

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

class CDocumentIF
{
friend	class CShitarabianDoc;

public:
// インタフェース

// 挿入系
	// カーソル移動を伴う挿入
	BOOL		Insert( CString& strInsert );
	// カーソル移動を伴わない挿入
	BOOL		Insertfix( CString& strInsert );

// 削除系
	BOOL		Backspace();
	BOOL		Delete();

// カーソル移動系
	BOOL		Up();
	BOOL		Down();
	BOOL		Left();
	BOOL		Right();
	// 行頭
	BOOL		LineTop();
	// 行末
	BOOL		LineEnd();
	// ﾌｧｲﾙ先頭
	BOOL		FileTop();
	// ﾌｧｲﾙ末尾
	BOOL		FileEnd();
	BOOL		JumpToRow( int iRow );
	BOOL		JumpToColumn( int iColumn );
	// キャレット位置へスクロール
	void		ScrollToCaret();

// 文書情報
	// 行数取得
	int			GetLineCount();
	// 指定行取得
	CString		GetLine( int idxLine );
	// ROI情報
	BOOL		GetROI( CRect* prcROI );
	// 選択状態取得
	BOOL		IsSelected();
	// 選択テキスト取得
	CString		GetSelectedText();
	// 通常選択情報取得
	void		GetSelectInfoNormal(
		int*	piStartRow,
		int*	piStartColumn,
		int*	piEndRow,
		int*	piEndColumn
	);
	// ＢＯＸ選択情報取得
	void		GetSelectInfoBox(
		CDWordArray*	pdwaSelectInfoz
	);

// 描画
	// 全範囲再描画指定
	BOOL		SetAllUpdate();
	// 描画実行
	BOOL		ReDraw();
	// 指定DCへの描画
	BOOL		Draw(
		CDC*	pDstDC,
		int		iDstLeft,
		int		iDstTop,
		CRect	rcSrcROI
	);
	// ウィンドウ矩形取得
	CRect		GetClientRect();

// ユーザインタフェース
	// ツールバーの追加
	BOOL		EntryToolBar( int idResource );
	// ツールボタンのコンボボックス化
	CComboBox*	SpawnComboBox(
		int			idxButton,
		int			iWidth,
		BOOL		bEdit
	);

	// ツールバーの表示
	BOOL		ShowToolBar( BOOL bShow );
	// キー押下エミュレート
	BOOL		KeyDown(
		CString		strChar,
		BOOL		bShift,
		BOOL		bCtrl,
		BOOL		bAlt
	);
	// キー入力エミュレート
	BOOL		KeyInput(
		CString		strChar,
		BOOL		bShift,
		BOOL		bCtrl,
		BOOL		bAlt
	);

//その他編集
	// 選択モード
	BOOL		SetSelectMode( int iMode );
	BOOL		GetSelectMode( int* piMode );
	// 強調表示モード
	void		SetEmphasisEnable( BOOL bEmphasys );
	BOOL		GetEmphasisEnable();
	// 初期化フォルダ取得
	CString		GetIniPath();

public:
	virtual		~CDocumentIF(){};
	void		Attach( HINSTANCE hExe ){ m_hExe = hExe; };

private:
	CDocumentIF()
		: m_hExe( NULL )
	{};
	BOOL ExecuteMacroCommand(
		int				eCommand,
		int				nArg = 0,
		void*			paArg = NULL
	);

	HINSTANCE		m_hExe;
};

#endif // !defined(AFX_DOCUMENTIF_H__A7E9F8EF_6912_43BB_978E_A7FCCF43F314__INCLUDED_)
