1
1
forked from 0ad/0ad
0ad/source/ps/VideoMode.h
Ykkrosh 0f611042b1 # Support alt+enter to toggle fullscreen mode. Make game window resizable.
Refactor the video mode setting logic to cope better with dynamic
changes.

This was SVN commit r7606.
2010-06-03 19:07:59 +00:00

93 lines
2.3 KiB
C++

/* Copyright (C) 2010 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 0 A.D. is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INCLUDED_VIDEOMODE
#define INCLUDED_VIDEOMODE
class CVideoMode
{
public:
CVideoMode();
/**
* Initialise the video mode, for use in an SDL-using application.
*/
bool InitSDL();
/**
* Resize the SDL window and associated graphics stuff to the new size.
*/
bool ResizeWindow(int w, int h);
/**
* Switch to fullscreen or windowed mode.
*/
bool SetFullscreen(bool fullscreen);
/**
* Switch between fullscreen and windowed mode.
*/
bool ToggleFullscreen();
/**
* Update the graphics code to start drawing to the new size.
* This should be called after the GL context has been resized.
* This can also be used when the GL context is managed externally, not via SDL.
*/
static void UpdateRenderer(int w, int h);
int GetXRes();
int GetYRes();
int GetBPP();
private:
void ReadConfig();
int GetBestBPP();
bool SetVideoMode(int w, int h, int bpp, bool fullscreen);
bool m_IsInitialised;
// Initial desktop settings
int m_PreferredW;
int m_PreferredH;
int m_PreferredBPP;
int m_PreferredFreq;
// Config file settings (0 if unspecified)
int m_ConfigW;
int m_ConfigH;
int m_ConfigBPP;
bool m_ConfigFullscreen;
// If we're fullscreen, size of window when we were last windowed (or the default window size
// if we started fullscreen), to support switching back to the old window size
int m_WindowedW;
int m_WindowedH;
// Whether we're currently being displayed fullscreen
bool m_IsFullscreen;
// The last mode selected
int m_CurrentW;
int m_CurrentH;
int m_CurrentBPP;
};
extern CVideoMode g_VideoMode;
#endif // INCLUDED_VIDEOMODE