//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: blend_render_state.hpp
//      Краткое описание: Blend render states
//

#ifndef DSE_GS_RENDER_STATE_BLEND_HPP
#define DSE_GS_RENDER_STATE_BLEND_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Render State/common_render_state.hpp>

namespace gs
{
	class BlendRenderState
	{
	private:
		DBLEND dst_blend, src_blend;
		bool blend_enable[render_target_num];
		DBLENDOP blend_op;
		DBLENDOP blend_op_alpha;
		DBLEND dst_blend_alpha, src_blend_alpha;
	public:
		BlendRenderState();
		BlendRenderState(const BlendRenderState& blend);
		~BlendRenderState();

		bool operator==(const BlendRenderState& state) const;

		void setDstBlend(const DBLEND& dstBlend);
		void setSrcBlend(const DBLEND& srcBlend);
		void setBlendEnable(const unsigned int render_target_index, const bool is_enable);
		void setBlendOp(const DBLENDOP& op);
		void setBlendOpAlpha(const DBLENDOP& op);
		void setDstBlendAlpha(const DBLEND& dstBlend);
		void setSrcBlendAlpha(const DBLEND& srcBlend);

		const DBLEND& getDstBlend() const;
		const DBLEND& getSrcBlend() const;
		bool getBlendEnable(const unsigned int render_target_index) const;
		const DBLENDOP& getBlendOp() const;
		const DBLENDOP& getBlendOpAlpha() const;
		const DBLEND& getDstBlendAlpha() const;
		const DBLEND& getSrcBlendAlpha() const;

		void set();
	};
};

#endif


