/*!
 	@file
 	@brief	フォントのベースクラス
\n			このクラスを継承して各種使えるようにします
*/
#ifndef CFont_h
#define CFont_h

#include"../Setup/CompileMode.h"
#include"../Auxiliary/mstring.h"
#include"../template/Mathematics.h"
#include<boost/smart_ptr.hpp>

namespace Maid
{
	/*!
	 	@brief	フォントクラス
	\n			このクラスを継承して各種使えるようにします
	\n			インスタンスがある場合、すでにフォントは作成されています
	 */
	class IFont
	{
	public:
		virtual ~IFont(){}	//!<	デストラクタ

		//! フォント名の取得
		/*!
		 	@return フォント名
		 */
		virtual mstring GetFontName() const=0;

		//! フォントの縦横幅の取得
		/*!
		 	半角サイズを取得します
		 
		 	@return フォントの横幅
		 */
		virtual SIZE2DI GetSize() const=0;

		//! アンチエイリアスをかけるか？
		/*!
		 	@return かけるならtrue
		 */
		virtual bool IsAntialias() const=0;

		//! 太字か？
		/*!
		 	@return 太字ならtrue
		 */
		virtual bool IsBold() const=0;

		//! 斜体か？
		/*!
		 	@return 斜体ならtrue
		 */
		virtual bool IsItalic() const=0;


		SIZE2DI CalcTextSize( const mstring& text );
	};

	typedef boost::shared_ptr<IFont> SPFONT;
}

#endif
