////////////////////////////////////////////////////////////////////////////
// CTxtColorMgr_java クラスのインタフェース宣言
//
////////////////////////////////////////////////////////////////////////////

#if !defined( TXTCOLORMGR_JAVA_H_INCLUDED_ )
#define TXTCOLORMGR_JAVA_H_INCLUDED_

#include "KeywordList_java.h"
#include "../cpp/HighlightMgr_cpp.h"
#include "../TxtColorMgr.h"
#include "../LinePseudoPtr.h"

namespace NLangExt {

namespace NLangExt_java {

class CTxtColorMgr_java : public CTxtColorMgr
{
public:
	CTxtColorMgr_java();
	virtual ~CTxtColorMgr_java();

	// 初期化
	bool Initialize( VClsPtr< CConfigInfo > pConf );

	// 使用する色の数を取得
	int GetColorCount() const;

	// 色を取得
	Pixel GetColor( int idx ) const;

	// 色情報から色のインデックスへ変換
	int TranseToIdx( unsigned char c ) const;

	// 初期状態で更新
	void InitiUpdate( T_LineData &rData ) const;

	// 文字列の更新に伴う色の更新
	void Update( T_LineData &rData, const T_SelRange &range ) const;

	// 言語種類コードを取得
	enumLANGTYPE GetLangType() const
	{
		return LANGTYPE_JAVA;
	}

protected:
	NLangExt_cpp::CHighlightMgr_cpp< wchar_t, CLinePseudoPtr_txt, CLinePseudoPtr_clr, CKeywordList_java > m_HM;
	Pixel vColor[4]; 	// 色

	// 色情報バッファの値を色のインデックスへ変換するためのテーブル
	unsigned char IndexTable[78];
};

} // namespace NLangExt_java

} // namespace NLangExt;

#endif // TXTCOLORMGR_CPP_H_INCLUDED_

