
#ifndef SPECTRE_DISPLAY_DISPLAYMODE_H
#define SPECTRE_DISPLAY_DISPLAYMODE_H

#include <vector>

namespace sp {

class DisplayMode
{
public :
	DisplayMode();
	DisplayMode(unsigned int width, unsigned int height, unsigned int bpp = 32);

	static std::vector<DisplayMode> getFullscreenModes();

	static DisplayMode getDesktopMode();

	// Returns true if width hight and bpp are not set (eg. zero)
	// useful to determine if a DisplayMode object is set or not.
	// this is equal to:
	//   DisplayMode a;
	//   if (a == DisplayMode()) {
	//		// empty
	//   }
	bool empty() const;

	inline bool operator==(const DisplayMode& other)
	{
		return width == other.width
			&& height == other.height
			&& bpp == other.bpp;
	}

	inline bool operator!=(const DisplayMode& other)
	{
		return !(*this == other);
	}

public :
	unsigned int	width;
	unsigned int	height;
	unsigned int	bpp;	/* Bits per pixel. */
};

} // namespace sp

#endif /* SPECTRE_DISPLAY_DISPLAYMODE_H */
