//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: display_mode.hpp
//      Краткое описание: this class is used to describe one mode of graphic adapter
//

#ifndef DSE_GS_DIRECT3D_DISPLAY_MODE_HPP
#define DSE_GS_DIRECT3D_DISPLAY_MODE_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Direct3D/direct3d_include.hpp>

namespace gs
{
	enum DISPLAY_PIXEL_FORMAT
	{
		DPF_R8G8B8A8_UNORM = 28,
	};

	enum DISPLAY_MODE
	{
		DDM_FULLSCREEN = 0, 
		DDM_WINDOWED = 1,
		DDM_WITHOUT_CHANGE = 2,
		DDM_MAKE_CHANGE = 3,
	};

	class DisplayMode
	{
	private:
		unsigned int width, height;
		DISPLAY_PIXEL_FORMAT pixel_format;
		unsigned int refresh_rate;
	public:
		DisplayMode(const unsigned int width, const unsigned int height, 
			const DISPLAY_PIXEL_FORMAT& pixel_format, const unsigned int refresh_rate);
		~DisplayMode();

		unsigned int getWidth() const;
		unsigned int getHeight() const;
		unsigned int getRefreshRate() const;
		const DISPLAY_PIXEL_FORMAT& getPixelFormat() const;
		// return format for specific platform
		RTFORMAT getSpecPixelFormat() const;

		bool operator ==(const DisplayMode& mode2);
	};
};

#include <Darkstar/Graphic System/Direct3D/display_mode.inl>

#endif