#ifndef XNA_PLATFORM_GDEVICEINFOR_DX_HPP
#define XNA_PLATFORM_GDEVICEINFOR_DX_HPP

#include "../game/gdeviceinfo.hpp"
#include "window-dx.hpp"
#include "presentparameters-dx.hpp"

namespace xna {
	class GraphicsDeviceInformation : public IGraphicsDeviceInformation {
	public:
		virtual ~GraphicsDeviceInformation() override {}

		inline virtual sptr<GraphicsAdapter> Adapter() const override {
			return _adapter;
		};

		inline virtual void Adapter(sptr<GraphicsAdapter> const& value) override {
			_adapter = value;
		}

		virtual xna::PresentationParameters PresentationParameters() const override{
			return _parameters;
		};

		virtual void PresentationParameters(xna::PresentationParameters const& value) override{
			_parameters = value;
		};

		virtual xna::GraphicsProfile GraphicsProfile() const override {
			return _profile;
		};

		virtual void GraphicsProfile(xna::GraphicsProfile value) override {
			_profile = value;
		};

		inline virtual sptr<GameWindow> Window() const override {
			return _window;
		}

		inline virtual void Window(sptr<GameWindow> const& window) override {
			_window = window;
		}

	public:
		sptr<GraphicsAdapter> _adapter{ nullptr };
		xna::GraphicsProfile _profile{xna::GraphicsProfile::Reach};
		xna::PresentationParameters _parameters{};
		sptr<GameWindow> _window{ nullptr };
	};
}

#endif