//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
//**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************//
#pragma once

#include "BsD3D9Prerequisites.h"

namespace BansheeEngine
{
	/** @addtogroup D3D9
	 *  @{
	 */

	class D3D9VideoModeList;
	class D3D9VideoMode;

	/**	Holds data about a DX9 driver (adapter). */
	class BS_D3D9_EXPORT D3D9Driver
	{
	public:
		D3D9Driver();
		D3D9Driver(const D3D9Driver &ob);
		D3D9Driver(UINT32 adapterNumber, const D3DCAPS9& deviceCaps, const D3DADAPTER_IDENTIFIER9& adapterIdentifer);
		~D3D9Driver();

		/**	Returns hardware capabilities for this driver. */
		const D3DCAPS9&	getD3D9DeviceCaps() const { return mD3D9DeviceCaps; }

		/**	Returns name of the driver. */
		String getDriverName() const;

		/**	Returns description of the driver. */
		String getDriverDescription() const;

		/** Returns adapter number which corresponds to adapter number returned by DX9 API. */
		UINT32 getAdapterNumber() const { return mAdapterNumber; }

		/**	Returns DX9 adapter identifier. */
		const D3DADAPTER_IDENTIFIER9& getAdapterIdentifier() const { return mAdapterIdentifier; }

	private:				
		UINT32 mAdapterNumber;
		D3DCAPS9 mD3D9DeviceCaps;		
		D3DADAPTER_IDENTIFIER9 mAdapterIdentifier;
	};

	/** @} */
}