////////////////////////////////////////////////////////////////////////////
// CTxtColorMgr_vbs クラスのインプリメンテーション
//
////////////////////////////////////////////////////////////////////////////

#include "TxtColorMgr_vbs.h"

using namespace NLangExt;
using namespace NLangExt_vbs;

////////////////////////////////////////////////////////////////////////////
// 構築/破棄
////////////////////////////////////////////////////////////////////////////

CTxtColorMgr_vbs::CTxtColorMgr_vbs()
{
	int i;
	for ( i = 0; i < 43; i++ ) IndexTable[i] = 0;
	IndexTable[ NLangExt_vbs::VBSCT_ALPHANUMERIC ] = 0;
	IndexTable[ NLangExt_vbs::VBSCT_KEYWORD ] = 1;
	IndexTable[ NLangExt_vbs::VBSCT_COM1_LEFT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_COM1_RIGHT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_COM1_TEXT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_COM2_LEFT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_COM2_RIGHT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_COM2_TEXT ] = 2;
	IndexTable[ NLangExt_vbs::VBSCT_DQUOTE_LEFT ] = 3;
	IndexTable[ NLangExt_vbs::VBSCT_DQUOTE_RIGHT ] = 3;
	IndexTable[ NLangExt_vbs::VBSCT_DQUOTE_TEXT ] = 3;
	IndexTable[ NLangExt_vbs::VBSCT_OTHER ] = 0;
	IndexTable[ NLangExt_vbs::VBSCT_NULL ] = 0;
}

CTxtColorMgr_vbs::~CTxtColorMgr_vbs()
{

}

////////////////////////////////////////////////////////////////////////////
// メソッド
////////////////////////////////////////////////////////////////////////////

// 初期化
bool CTxtColorMgr_vbs::Initialize( VClsPtr< CConfigInfo > pConf )
{
	vColor[0] = pConf->RefVBS_NormalTextF_Color();
	vColor[1] = pConf->RefVBS_KeywordF_Color();
	vColor[2] = pConf->RefVBS_CommentF_Color();
	vColor[3] = pConf->RefVBS_SringF_Color();
	return true;
}

// 使用する色の数を取得
int CTxtColorMgr_vbs::GetColorCount() const
{
	return 4;
}

// 色を取得
Pixel CTxtColorMgr_vbs::GetColor( int idx ) const
{
	assert( idx >= 0 && idx < 4 );
	return vColor[idx];
}

// 色情報から色のインデックスへ変換
int CTxtColorMgr_vbs::TranseToIdx( unsigned char c ) const
{
	assert( c >= 0 && c < 43 );
	return IndexTable[c];
}

// 初期状態で更新
void CTxtColorMgr_vbs::InitiUpdate( T_LineData &rData ) const
{
	InitUpdateColorFunc( m_HM, rData );
}

// 文字列の更新に伴う色の更新
void CTxtColorMgr_vbs::Update( T_LineData &rData, const T_SelRange &range ) const
{
	UpdateColorFunc( m_HM, rData, range );
}
