using System;
using System.Collections.Generic;
using System.Text;

namespace Vortex.Drawing {

	/// <summary>
	/// Enumerates level of texture size support
	/// </summary>
	public enum TextureSizeOptions {
		/// <summary>Only textures with size equal to pow of 2 are supported</summary>
		Pow2Only,
		/// <summary>Textures with size non-pow 2 are supported but has a lot of restrictions. Read MSDN for more info</summary>
		NonPow2Conditional,
		/// <summary>Best option. Textures of any size are supported</summary>
		NonPow2
	}
	
	/// <summary>
	/// Encapsulated information about drawing device and its constraints
	/// </summary>
	public class DrawingDeviceInfo {
		internal DrawingDeviceInfo() {
		}

		/// <summary>
		/// Gets the name of the drawing device adapter.
		/// </summary>
		/// <value>The name of the adapter.</value>
		public string AdapterName { get; internal set; }
		
		/// <summary>
		/// Gets the name of the adapter driver.
		/// </summary>
		/// <value>The name of the adapter driver.</value>
		public string DriverName { get; internal set; }

		/// <summary>
		/// Gets a value indicating whether pure device mode supported by hardware.
		/// </summary>
		/// <value><c>true</c> if pure device is supported by hardware; otherwise, <c>false</c>.</value>
		public bool PureDeviceSupported { get; internal set;}

		/// <summary>
		/// Gets the maximal width of the texture.
		/// </summary>
		/// <value>The maximal width of the texture.</value>
		public int MaxTextureWidth { get; internal set; }

		/// <summary>
		/// Gets the maximal height of the texture.
		/// </summary>
		/// <value>The maximal height of the texture.</value>	
		public int MaxTextureHeight { get; internal set; }

		/// <summary>
		/// Gets the maximum texture repeat.
		/// </summary>
		/// <value>The maximum texture repeat.</value>
		public int MaxTextureRepeat { get; internal set; }

		/// <summary>
		/// Gets the max texture aspect ratio supported by device.
		/// </summary>
		/// <value>The max texture aspect ratio supported by device.</value>
		public int MaxTextureAspectRatio { get; internal set; }

		/// <summary>
		/// Gets the max draw primitive count.
		/// </summary>
		/// <value>The max draw primitive count.</value>
		public int MaxDrawPrimitiveCount { get; internal set; }

		/// <summary>
		/// Gets the texture size options.
		/// </summary>
		/// <value>The texture size options.</value>
		public TextureSizeOptions TextureSizeOptions  { get; internal set; }

		/// <summary>
		/// Gets a value indicating whether device supports square textures only.
		/// </summary>
		/// <value><c>true</c> if device supports only square textures; otherwise, <c>false</c>.</value>
		public bool SquareTexturesOnly { get; internal set; }
	}
}
