#include #include #include namespace sp { struct DisplayModeCmp { inline bool operator() (const DisplayMode& a, const DisplayMode& b) { if (a.bpp == b.bpp) { if (a.width == b.width) { return a.height > b.height; } return a.width > b.width; } return a.bpp > b.bpp; } }; DisplayMode::DisplayMode() : width (0), height (0), bpp (0) { } DisplayMode::DisplayMode(unsigned int width, unsigned int height, unsigned int bpp) : width (width), height (height), bpp (bpp) { } std::vector DisplayMode::getFullscreenModes() { static std::vector modes; if (modes.size() < 1) { PlatformMisc::GetDisplayModes(modes); // Sort. std::sort(modes.begin(), modes.end(), DisplayModeCmp()); // remove duplicates modes.erase(std::unique(modes.begin(), modes.end()), modes.end()); } return modes; } DisplayMode DisplayMode::getDesktopMode() { return PlatformMisc::GetDesktopMode(); } } // namespace sp