#ifndef XNA_GRAPHICS_RASTERIZER_HPP
#define XNA_GRAPHICS_RASTERIZER_HPP

#include "../default.hpp"
#include "gresource.hpp"

namespace xna {
	class RasterizerState : GraphicsResource {
	public:
		RasterizerState();
		RasterizerState(sptr<GraphicsDevice> const& device);
		~RasterizerState() override;
		bool Initialize(xna_error_nullarg);
		bool Apply(xna_error_nullarg);
		xna::CullMode CullMode() const;
		void CullMode(xna::CullMode value);
		xna::FillMode FillMode() const;
		void FillMode(xna::FillMode value);

		static uptr<RasterizerState> CullNone();
		static uptr<RasterizerState> CullClockwise();
		static uptr<RasterizerState> CullCounterClockwise();

	public:
		struct PlatformImplementation;
		uptr<PlatformImplementation> impl = nullptr;
	};
}

#endif