/* ====================================================================
 * 파    일 :	FontAgent.h
 * 목    적 :	생성된 폰트 객체의 관리 및 폰트 화면 출력 처리
 * 작 성 자 :	이법석
 * 작 성 일 :	2006.10.17
 *
 * 추가내용 :
 *		추가날짜 	작업자		추가내용
 *		06.10.17	이법석		생성
 * 
 * 주의사항 :	
 * =================================================================== */
#pragma once

class cFontObject;

class cFontAgent
{
public:
	static cFontAgent*		mpFontAgent;

	cFontAgent();
	~cFontAgent();

	enum eFont
	{
/*
		eFont_Cache = 0,
//		eFont_DX9Font,
		eFont_DepthFont,

		eFont_Max,
*/
		eFont_UI = 0,		/// UI용 폰트 ( UI용, 고정 SystemMsg )
		eFont_UI_BOLD,
		eFont_System,		/// 시스템 폰트 (Tooltip, Name, GameInfo, 유동SystemMsg)
		eFont_Chat,			/// 채팅용
		eFont_Notice,		/// 공지용

		eFont_DepthFont,	/// 깊이가 있는 면에 그려질 폰트용

		eFont_Back,

		eFont_Max,
	};

	/// 초기화
	bool Init();

	/// 종료부
	void Exit();

	/// 장치 소실시 처리부
	void Invalidate();
	void Restore();

	/// DrawText 인터페이스 제공
	void DrawText( unsigned short fontIdx, LPTSTR text, int textLen, POINT* textPos, unsigned long textColor, bool useBack = false, unsigned long backColor = 0xff3c3c3c );
	void DrawText( unsigned short fontIdx, LPTSTR text, int textLen, unsigned int posX, unsigned int posY, unsigned long textColor, bool useBack = false, unsigned long backColor = 0xff3c3c3c );

	/// 문자열 길이 정보
	long GetTextExtent( unsigned short fontIdx, LPCTSTR text, unsigned int textLen );
	long GetTextWidth( unsigned short fontIdx );
	long GetTextHeight( unsigned short fontIdx );

protected:

	/// 윈도우 핸들
	HWND								mhWnd;

	/// FontObject 리스트
//	typedef tArray<cFontObject*>		cFontArray;
	typedef tArray<void*> cFontArray;
	cFontArray	mFontArray;
};

#define FONTAGENT	cFontAgent::mpFontAgent
