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

#ifndef DSE_GS_WINDOW_APPLICATION_WINDOW_HPP
#define DSE_GS_WINDOW_APPLICATION_WINDOW_HPP

#include <Darkstar/common.hpp>

namespace gs
{
	struct WindowSettings
	{
		unsigned int x, y;
		unsigned int width, height;
		std::string name;
		bool is_fullscreen;

		WindowSettings();
	};

	class ApplicationWindow
	{
	private:
		HWND hwnd;
		HDC hdc;
		HINSTANCE hInstance;
		WindowSettings winset;
		bool is_exist;
	public:
		ApplicationWindow();
		~ApplicationWindow();

		bool createWindow(const unsigned int x, const unsigned int y, const unsigned int width, 
			const unsigned int height, const std::string name);
		bool createWindow(const WindowSettings& ws);
		bool destroyWindow();
		bool activateWindow();
		bool handle();

		bool getIsExist() const;
		unsigned int getWidth() const;
		unsigned int getHeight() const;
		unsigned int getX() const;
		unsigned int getY() const;
		bool getIsFullScreen() const;
		HWND getHWND() const;

		static LRESULT CALLBACK window_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

		void setNewSize(const unsigned int new_width, const unsigned int new_height);
	};
};

#endif