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

#if !defined( GCMGR_H_INCLUDED_ )
#define GCMGR_H_INCLUDED_

#include <Xm/XmAll.h>

#include "TaEdit_std.h"
#include "ConfigInfo.h"
#include "lang/TxtColorMgr.h"
#include "GCStorage.h"

// GCのID（他のID・番号と組み合わせて使用される）
#define GCID_TEXT			0x01000000
#define GCID_FAILED_TEXT	0x02000000
#define GCID_TAB			0x03000000
#define GCID_SELTAB			0x04000000
#define GCID_SELTEXT		0x05000000
#define GCID_CLEAR			0x06000000
#define GCID_CURSOR			0x07000000
#define GCID_INFOCOL		0x08000000
#define GCID_LEFTCOL_SEPA	0x09000000
#define GCID_UNDERBAR		0x0A000000
#define GCID_EDITMARK		0x0B000000

class CGCMgr : public NNabikiVClsPtr::CCPInterface
{
public:
	CGCMgr();
	~CGCMgr();

	// GCの構築
	bool CreateGC(
		Widget argpDraw,
		VClsPtr< CConfigInfo > pConf,
		const NLangExt::CTxtColorMgr *pTCM,
		NNabikiVClsPtr::VClsPtr< CGCStorage > argStorage );

	GC GetTextDrawGC( unsigned char c, bool IsSelected, bool IsTab ) const;
	GC GetTabGC() const;
	GC GetSelTabGC() const;
	GC GetClearGC() const;
	GC GetCursorGC() const;
	GC GetExInfoColumnGC( int idx ) const;
	GC GetLeftColumnSeparatorGC() const;
	GC GetCurLineUnderBarGC() const;
	GC GetEditMarkGC() const;

protected:

	Widget wgtDraw;
	NNabikiVClsPtr::VClsPtr< CGCStorage > pStorage;

	const NLangExt::CTxtColorMgr *pTxtColorMgr;
};

#endif // GCMGR_H_INCLUDED_

