From ddd482b584f91d0b02faa34c50fd7d52a4ec5423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Thu, 19 Sep 2013 12:20:16 -0300 Subject: [PATCH] Replaced GetPossibleResolutions for GetDisplayModes. --- include/eepp/window/cwindow.hpp | 20 +++++++++++++++++++- projects/linux/ee.creator.user | 2 +- src/eepp/window/backend/SDL/cwindowsdl.cpp | 6 +++--- src/eepp/window/backend/SDL/cwindowsdl.hpp | 2 +- src/eepp/window/backend/SDL2/cwindowsdl2.cpp | 18 ++++++++++++------ src/eepp/window/backend/SDL2/cwindowsdl2.hpp | 2 +- src/eepp/window/backend/SFML/cwindowsfml.cpp | 14 ++++++++++++-- src/eepp/window/backend/SFML/cwindowsfml.hpp | 2 +- src/eepp/window/backend/null/cwindownull.cpp | 4 ++-- src/eepp/window/backend/null/cwindownull.hpp | 2 +- 10 files changed, 53 insertions(+), 19 deletions(-) diff --git a/include/eepp/window/cwindow.hpp b/include/eepp/window/cwindow.hpp index f159bdf2c..4cb109a91 100644 --- a/include/eepp/window/cwindow.hpp +++ b/include/eepp/window/cwindow.hpp @@ -121,6 +121,24 @@ class WindowInfo { eeWindowContex Context; }; +/** @brief DisplayMode contains a display mode available to use */ +class DisplayMode { + public: + + inline DisplayMode( int width, int height, int refreshRate, int screenIndex ) : + Width( width ), + Height( height ), + RefreshRate( refreshRate ), + ScreenIndex( screenIndex ) + { + } + + Uint32 Width; + Uint32 Height; + Uint32 RefreshRate; + Uint32 ScreenIndex; +}; + /* See the official Android developer guide for more information: http://developer.android.com/guide/topics/data/data-storage.html @@ -195,7 +213,7 @@ class EE_API cWindow { virtual void Size( Uint32 Width, Uint32 Height, bool Windowed ) = 0; /** @return The resolutions that support the video card */ - virtual std::vector< std::pair > GetPossibleResolutions() const = 0; + virtual std::vector GetDisplayModes() const = 0; /** Set the Screen Gamma. Default is (1,1,1). Accept values between 0.1 and 10. */ virtual void SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ) = 0; diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index 368c69c32..53d6b38e1 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/src/eepp/window/backend/SDL/cwindowsdl.cpp b/src/eepp/window/backend/SDL/cwindowsdl.cpp index 3c4f113e0..d93215372 100644 --- a/src/eepp/window/backend/SDL/cwindowsdl.cpp +++ b/src/eepp/window/backend/SDL/cwindowsdl.cpp @@ -374,16 +374,16 @@ void cWindowSDL::SwapBuffers() { SDL_GL_SwapBuffers(); } -std::vector< std::pair > cWindowSDL::GetPossibleResolutions() const { +std::vector cWindowSDL::GetDisplayModes() const { SDL_Rect **modes = SDL_ListModes( NULL, SDL_OPENGL | SDL_HWPALETTE | SDL_HWACCEL | SDL_FULLSCREEN ); if(modes == (SDL_Rect **)0) cLog::instance()->Write("No VideoMode Found"); - std::vector< std::pair > result; + std::vector result; if( modes != (SDL_Rect **)-1 ) for(unsigned int i = 0; modes[i]; ++i) - result.push_back( std::pair(modes[i]->w, modes[i]->h) ); + result.push_back( DisplayMode(modes[i]->w, modes[i]->h,60,0) ); return result; } diff --git a/src/eepp/window/backend/SDL/cwindowsdl.hpp b/src/eepp/window/backend/SDL/cwindowsdl.hpp index b20bc8d0d..866d7771c 100644 --- a/src/eepp/window/backend/SDL/cwindowsdl.hpp +++ b/src/eepp/window/backend/SDL/cwindowsdl.hpp @@ -33,7 +33,7 @@ class EE_API cWindowSDL : public cWindow { void Size( Uint32 Width, Uint32 Height, bool Windowed ); - std::vector< std::pair > GetPossibleResolutions() const; + std::vector GetDisplayModes() const; void SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ); diff --git a/src/eepp/window/backend/SDL2/cwindowsdl2.cpp b/src/eepp/window/backend/SDL2/cwindowsdl2.cpp index 3d4467eda..5b207d2da 100644 --- a/src/eepp/window/backend/SDL2/cwindowsdl2.cpp +++ b/src/eepp/window/backend/SDL2/cwindowsdl2.cpp @@ -479,14 +479,20 @@ void cWindowSDL::SwapBuffers() { SDL_GL_SwapWindow( mSDLWindow ); } -std::vector< std::pair > cWindowSDL::GetPossibleResolutions() const { - std::vector< std::pair > result; +std::vector cWindowSDL::GetDisplayModes() const { + std::vector result; - for ( Int32 i = 0; i < SDL_GetNumDisplayModes(0); i++ ) { - SDL_DisplayMode mode; - SDL_GetDisplayMode( 0, i, &mode ); + int displays = SDL_GetNumVideoDisplays(); - result.push_back( std::pair( mode.w, mode.h ) ); + for ( int x = 0; x < displays; x++ ) { + int displayModes = SDL_GetNumDisplayModes(x); + + for ( int i = 0; i < displayModes; i++ ) { + SDL_DisplayMode mode; + SDL_GetDisplayMode( x, i, &mode ); + + result.push_back( DisplayMode( mode.w, mode.h, mode.refresh_rate, x ) ); + } } return result; diff --git a/src/eepp/window/backend/SDL2/cwindowsdl2.hpp b/src/eepp/window/backend/SDL2/cwindowsdl2.hpp index de4222f63..a83cca0c0 100644 --- a/src/eepp/window/backend/SDL2/cwindowsdl2.hpp +++ b/src/eepp/window/backend/SDL2/cwindowsdl2.hpp @@ -38,7 +38,7 @@ class EE_API cWindowSDL : public cWindow { void Size( Uint32 Width, Uint32 Height, bool Windowed ); - std::vector< std::pair > GetPossibleResolutions() const; + std::vector GetDisplayModes() const; void SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ); diff --git a/src/eepp/window/backend/SFML/cwindowsfml.cpp b/src/eepp/window/backend/SFML/cwindowsfml.cpp index be1ebfcc1..f0cdd70c6 100644 --- a/src/eepp/window/backend/SFML/cwindowsfml.cpp +++ b/src/eepp/window/backend/SFML/cwindowsfml.cpp @@ -189,8 +189,18 @@ void cWindowSFML::SwapBuffers() { mSFMLWindow.display(); } -std::vector< std::pair > cWindowSFML::GetPossibleResolutions() const { - return std::vector< std::pair >(); +std::vector cWindowSFML::GetDisplayModes() const { + std::vector result; + + std::vector modes = sf::VideoMode::getFullscreenModes(); + + for (std::size_t i = 0; i < modes.size(); ++i) { + sf::VideoMode mode = modes[i]; + + result.push_back( DisplayMode( mode.width, mode.height, 60, x ) ); + } + + return result; } void cWindowSFML::SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ) { diff --git a/src/eepp/window/backend/SFML/cwindowsfml.hpp b/src/eepp/window/backend/SFML/cwindowsfml.hpp index 355c31160..11cb03eec 100644 --- a/src/eepp/window/backend/SFML/cwindowsfml.hpp +++ b/src/eepp/window/backend/SFML/cwindowsfml.hpp @@ -40,7 +40,7 @@ class EE_API cWindowSFML : public cWindow { void Size( Uint32 Width, Uint32 Height, bool Windowed ); - std::vector< std::pair > GetPossibleResolutions() const; + std::vector GetDisplayModes() const; void SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ); diff --git a/src/eepp/window/backend/null/cwindownull.cpp b/src/eepp/window/backend/null/cwindownull.cpp index 678b54702..2b36c7ae3 100644 --- a/src/eepp/window/backend/null/cwindownull.cpp +++ b/src/eepp/window/backend/null/cwindownull.cpp @@ -68,8 +68,8 @@ void cWindowNull::Size( Uint32 Width, Uint32 Height, bool Windowed ) { void cWindowNull::SwapBuffers() { } -std::vector< std::pair > cWindowNull::GetPossibleResolutions() const { - return std::vector< std::pair >(); +std::vector cWindowNull::GetDisplayModes() const { + return std::vector(); } void cWindowNull::SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue ) { diff --git a/src/eepp/window/backend/null/cwindownull.hpp b/src/eepp/window/backend/null/cwindownull.hpp index f05d0f93d..c1e06ed05 100644 --- a/src/eepp/window/backend/null/cwindownull.hpp +++ b/src/eepp/window/backend/null/cwindownull.hpp @@ -41,7 +41,7 @@ class EE_API cWindowNull : public cWindow { void Size( Uint32 Width, Uint32 Height, bool Windowed ); - std::vector< std::pair > GetPossibleResolutions() const; + std::vector GetDisplayModes() const; void SetGamma( eeFloat Red, eeFloat Green, eeFloat Blue );