#pragma once

//! @file Utility/UI/Color.h
//! @brief カラークラスインクルードファイル

#include "Utility/UI/Control.h"

namespace Utility{ namespace UI {

	//! @class Color
	//! @brief カラークラス
	class Color : public UI::Control
	{
	private:
		Mix::RectangleF m_Rect;
		Mix::RectangleF m_BackgroundRect;

		Mix::StringW m_Text;
		Mix::Vector2 m_TextPos;
		Mix::RectangleF m_TextRect;

		Boolean m_bAlphaEnabled;
		Mix::Vector4 m_Value;

	public:
		//! @brief コンストラクタ
		Color( void );
		//! @brief デストラクタ
		virtual ~Color( void );

		//! @brief テキストを設定します
		//! @param[in] pText テキスト
		void SetText( const wchar_t* pText );
		//! @brief テキストを取得します
		//! @return テキストを返します
		const wchar_t* GetText( void ) const;

		//! @brief アルファ値を有効にするかどうかを設定します
		//! @param[in] state アルファ値を有効にする場合は True
		void SetAlphaEnabled( Boolean state );
		//! @brief アルファ値が有効かどうかを取得します
		//! @return アルファ値が有効な場合は True を返します
		Boolean GetAlphaEnabled( void ) const;

		//! @brief 色を設定します
		//! @param[in] value 色
		void SetValue( const Mix::Vector4& value );
		//! @brief 色を取得します
		//! @return 色を返します
		const Mix::Vector4& GetValue( void ) const;

	protected:
		virtual void Update( const Control::UPDATE_EVENT_ARGS& args );
		virtual const Mix::RectangleF& GetRectangle( void ) const;

		virtual void OnDraw( const Control::DRAW_EVENT_ARGS& args );

	private:
		static const Float32 TILE_SIZE;
	};
}}
