#pragma once

//! @file "Mix/Graphics/Utility/ITargetTextureChain.h"
//! @brief ターゲットテクスチャチェインインターフェースインクルードファイル

#include "Mix/Reference.h"

namespace Mix{ namespace Graphics{ namespace Utility{

	//! @class ITargetTextureChain
	//! @brief ターゲットテクスチャチェインインターフェース
	class ITargetTextureChain : public Mix::Reference
	{
	protected:
		//! @brief デストラクタ
		virtual ~ITargetTextureChain( void ){}

	public:
		//! @brief 現在のターゲットテクスチャのポインタを取得します
		//! @return 現在のターゲットテクスチャを表す Mix::Graphics::ITexture インターフェースのポインタ
		virtual Mix::Graphics::ITexture* GetCurrentPtr( void ) const = 0;
		//! @brief 次のターゲットテクスチャのポインタを取得します
		//! @return 次のターゲットテクスチャを表す Mix::Graphics::ITexture インターフェースのポインタ
		virtual Mix::Graphics::ITexture* GetNextPtr( void ) const = 0;
		//! @brief 次のターゲットテクスチャのポインタを取得し、現在と次のターゲットテクスチャを入れ替えます
		//! @return 次のターゲットテクスチャを表す Mix::Graphics::ITexture インターフェースのポインタ
		virtual Mix::Graphics::ITexture* GetNextPtrAndFlip( void ) = 0;
		//! @brief 現在と次のターゲットテクスチャを入れ替えます
		virtual void Flip( void ) = 0;

		//! @brief ターゲットテクスチャの幅を取得します
		//! @return ターゲットテクスチャの幅を返します
		virtual UInt32 GetWidth( void ) const = 0;
		//! @brief ターゲットテクスチャの高さを取得します
		//! @return ターゲットテクスチャの高さを返します
		virtual UInt32 GetHeight( void ) const = 0;
	};

}}}
