/*-----------------------------------------------------------------------------
[名称]	CustomSettingAsciiArtEdit.cpp
[概要]	アスキーアート編集用設定情報の実装
[備考]	システム標準で用意するアスキーアート編集用設定情報クラス。
[履歴]	2003-02-25	NC		コメント付加(moralog)
		2003-12-02	b031130 (3421)初期設定値の改善(dincom)
		2003-05-10	b031228 (3421)初期設定値の改善(moralog)
-----------------------------------------------------------------------------*/

//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "shitarabian.h"
#include "CustomSettingAsciiArtEdit.h"
#include "EmphasisDefine.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


/*-----------------------------------------------------------------------------
[名称]	コンストラクタ
[機能]	インスタンスの生成。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CCustomSettingAsciiArtEdit::CCustomSettingAsciiArtEdit()
{
	m_strSettingName = "アスキーアート製作";
	m_strExt = "aa";

	m_bTabConvert = TRUE;

// ▼ (3421) BGN 2004.05.10 (moralog)
//	m_bFreeCursor = TRUE;
// ▲ (3421) END

	CEmphasisDefine*	pEmphasis = GetEmphasisDefine();
	{
		CEmphasisItem		Item;

		// ダブルスペース
		Item.SetPattern((CString)" {2,}");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(255,255,255) );
		Item.SetBackColor( RGB(255,0,0) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// 行頭スペース
		Item.SetPattern((CString)"^ ");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(255,255,255) );
		Item.SetBackColor( RGB(255,0,0) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// ラムダ
		Item.SetPattern((CString)"Λ");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,0) );
		Item.SetBackColor( RGB(255,200,200) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// Unicode文字
		// ▽ Original BGN
		//Item.SetPattern((CString)"\\&[a-zA-Z]*;");
		// △ Original END

		// ▼ (3421) BGN 2003.12.02 (dincom)
		Item.SetPattern((CString)"\\&(([a-zA-Z]*)|(#[0-9A-Fa-f]*));");
		// ▲ (3421) END
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,0) );
		Item.SetBackColor( RGB(255,255,200) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// ハイパーリンク１
		Item.SetPattern((CString)"www\\.[^\\s\\\"]*");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// ハイパーリンク２
		Item.SetPattern((CString)"\\b(http|ftp|mailto)\\:[^\\s\\\"]*");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// レス番リンク
		Item.SetPattern((CString)"\\>\\>[0-9]+");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// 全角空白文字
		Item.SetPattern((CString)"　");
		Item.SetForeColor( RGB(200,200,200) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// 半角空白文字
		Item.SetPattern((CString)" ");
		Item.SetForeColor( RGB(255,200,200) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );

		// タブ文字
		Item.SetPattern((CString)"\\t");
		Item.SetForeColor( RGB(200,200,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( FALSE );
		pEmphasis->GetItemz().Add( Item );
	}

	{
		m_BoxCharDefine.GetItemz().RemoveAll();
		TBoxChar	Item;
		
		// 全角空白
		Item.strChar = "　";
		Item.bEnable = TRUE;
		m_BoxCharDefine.GetItemz().Add( Item );

		// 半角空白
		Item.strChar = " ";
		Item.bEnable = TRUE;
		m_BoxCharDefine.GetItemz().Add( Item );

		// タブ
		Item.strChar = "\t";
		Item.bEnable = TRUE;
		m_BoxCharDefine.GetItemz().Add( Item );
// ▼ (3421) BGN 2004.06.10 (moralog)
// ▽ oridinal BGN
//		// &nbsp;
//		Item.strChar = "&nbsp;";
//		Item.bEnable = TRUE;
//		m_BoxCharDefine.GetItemz().Add( Item );
// △ oridinal END
// ▲ (3421) END
	}

// ▼ (3421) BGN 2004.06.10 (moralog)
	// 空白文字の設定
	{
		CArray<TWhiteSpace, TWhiteSpace&>*	pCharz;
		pCharz = GetWhitespace()->GetCharz();

		TWhiteSpace	tWhitespace;

		tWhitespace.bEnable = TRUE;
		tWhitespace.strChar = _T("&#8202;");
		tWhitespace.bCanContinuation = TRUE;	// 連続許可
		tWhitespace.bCanHead = TRUE;			// 先頭許可
		tWhitespace.nCount = 0;					// 利用最大個数
		pCharz->Add( tWhitespace );

		tWhitespace.bEnable = TRUE;
		tWhitespace.strChar = _T("&#8198;");
		tWhitespace.bCanContinuation = TRUE;	// 連続許可
		tWhitespace.bCanHead = TRUE;			// 先頭許可
		tWhitespace.nCount = 0;					// 利用最大個数
		pCharz->Add( tWhitespace );

		tWhitespace.bEnable = TRUE;
		tWhitespace.strChar = _T("&#8197;");
		tWhitespace.bCanContinuation = TRUE;	// 連続許可
		tWhitespace.bCanHead = TRUE;			// 先頭許可
		tWhitespace.nCount = 0;					// 利用最大個数
		pCharz->Add( tWhitespace );

		tWhitespace.bEnable = TRUE;
		tWhitespace.strChar = _T("&#8199;");
		tWhitespace.bCanContinuation = TRUE;	// 連続許可
		tWhitespace.bCanHead = TRUE;			// 先頭許可
		tWhitespace.nCount = 0;					// 利用最大個数
		pCharz->Add( tWhitespace );
	}
// ▲ (3421) END

}


/*-----------------------------------------------------------------------------
[名称]	デストラクタ
[機能]	インスタンスの破棄。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CCustomSettingAsciiArtEdit::~CCustomSettingAsciiArtEdit()
{

}
