Merged format initialization into InitSize to allow for backends not supporting gfx transactions.

svn-id: r41801
This commit is contained in:
Jody Northup 2009-06-23 02:02:51 +00:00
parent a937dfde96
commit 7c62242315
5 changed files with 30 additions and 41 deletions

View file

@ -353,23 +353,22 @@ int OSystem_SDL::getGraphicsMode() const {
assert (_transactionMode == kTransactionNone);
return _videoMode.mode;
}
#ifdef ENABLE_RGB_COLOR
void OSystem_SDL::initFormat(Graphics::PixelFormat format) {
void OSystem_SDL::initSize(uint w, uint h, Graphics::PixelFormat format) {
assert(_transactionMode == kTransactionActive);
#ifdef ENABLE_RGB_COLOR
//avoid redundant format changes
if (format == _videoMode.format)
return;
assert(format.bytesPerPixel > 0);
if (format != _videoMode.format)
{
_videoMode.format = format;
_transactionDetails.formatChanged = true;
_screenFormat = format;
}
#endif
void OSystem_SDL::initSize(uint w, uint h) {
assert(_transactionMode == kTransactionActive);
// Avoid redundant res changes
if ((int)w == _videoMode.screenWidth && (int)h == _videoMode.screenHeight)
return;

View file

@ -82,10 +82,6 @@ public:
TransactionError endGFXTransaction(void);
#ifdef ENABLE_RGB_COLOR
// Set the depth and format of the video bitmap
// Typically, CLUT8
virtual void initFormat(Graphics::PixelFormat format);
// Game screen
virtual Graphics::PixelFormat getScreenFormat() const { return _screenFormat; }
@ -108,9 +104,9 @@ public:
}
#endif
// Set the size of the video bitmap.
// Typically, 320x200
virtual void initSize(uint w, uint h); // overloaded by CE backend
// Set the size and format of the video bitmap.
// Typically, 320x200 CLUT8
virtual void initSize(uint w, uint h, Graphics::PixelFormat format); // overloaded by CE backend
virtual int getScreenChangeID() const { return _screenChangeCount; }

View file

@ -226,9 +226,6 @@ static void setupGraphics(OSystem &system) {
// Set the user specified graphics mode (if any).
system.setGraphicsMode(ConfMan.get("gfx_mode").c_str());
#ifdef ENABLE_RGB_COLOR
system.initFormat(Graphics::PixelFormat::createFormatCLUT8());
#endif
system.initSize(320, 200);
if (ConfMan.hasKey("aspect_ratio"))

View file

@ -344,21 +344,6 @@ public:
virtual int getGraphicsMode() const = 0;
#ifdef ENABLE_RGB_COLOR
/**
* Set the color format of the virtual screen. Typical formats include:
* CLUT8 (e.g. 256 color, for most games)
* RGB555 (e.g. 16-bit color, for later SCUMM HE games)
* RGB565 (e.g. 16-bit color, for Urban Runner)
*
* This is the pixel format for which the client code generates data;
* this is not necessarily equal to the hardware pixel format. For example,
* a backend may perform color lookup of 8-bit graphics before pushing
* a screen to hardware, or correct the ARGB color order.
*
* @param format A pixel format that the backend screen will use
*/
virtual void initFormat(Graphics::PixelFormat format) = 0;
/**
* Returns the pixel format of the screen.
* @see Graphics::PixelFormat
@ -373,7 +358,7 @@ public:
#endif
/**
* Set the size of the virtual screen. Typical sizes include:
* Set the size and color format of the virtual screen. Typical sizes include:
* - 320x200 (e.g. for most SCUMM games, and Simon)
* - 320x240 (e.g. for FM-TOWN SCUMM games)
* - 640x480 (e.g. for Curse of Monkey Island)
@ -384,10 +369,21 @@ public:
* GraphicsMode); stretch the data to perform aspect ratio correction;
* or shrink it to fit on small screens (in cell phones).
*
* Typical formats include:
* CLUT8 (e.g. 256 color, for most games)
* RGB555 (e.g. 16-bit color, for later SCUMM HE games)
* RGB565 (e.g. 16-bit color, for Urban Runner)
*
* This is the pixel format for which the client code generates data;
* this is not necessarily equal to the hardware pixel format. For example,
* a backend may perform color lookup of 8-bit graphics before pushing
* a screen to hardware, or correct the ARGB color order.
*
* @param width the new virtual screen width
* @param height the new virtual screen height
* @param format the new virtual screen pixel format
*/
virtual void initSize(uint width, uint height) = 0;
virtual void initSize(uint width, uint height, Graphics::PixelFormat format = Graphics::PixelFormat::createFormatCLUT8()) = 0;
/**
* Return an int value which is changed whenever any screen

View file

@ -135,9 +135,10 @@ void initGraphics(int width, int height, bool defaultTo1xScaler, Graphics::Pixel
initCommonGFX(defaultTo1xScaler);
#ifdef ENABLE_RGB_COLOR
g_system->initFormat(format);
#endif
g_system->initSize(width, height, format);
#else
g_system->initSize(width, height);
#endif
OSystem::TransactionError gfxError = g_system->endGFXTransaction();