From 7c622423157e29b7206ba0c39a7756443ed1e70d Mon Sep 17 00:00:00 2001 From: Jody Northup Date: Tue, 23 Jun 2009 02:02:51 +0000 Subject: Merged format initialization into InitSize to allow for backends not supporting gfx transactions. svn-id: r41801 --- backends/platform/sdl/graphics.cpp | 21 ++++++++++----------- backends/platform/sdl/sdl.h | 10 +++------- base/main.cpp | 3 --- common/system.h | 30 +++++++++++++----------------- engines/engine.cpp | 5 +++-- 5 files changed, 29 insertions(+), 40 deletions(-) diff --git a/backends/platform/sdl/graphics.cpp b/backends/platform/sdl/graphics.cpp index a08239d472..b5ec9b9db8 100644 --- a/backends/platform/sdl/graphics.cpp +++ b/backends/platform/sdl/graphics.cpp @@ -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); - _videoMode.format = format; - _transactionDetails.formatChanged = true; - _screenFormat = format; -} + 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; diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index aee15fcbd0..db855094cb 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -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; } diff --git a/base/main.cpp b/base/main.cpp index 3bbe6ddd9c..dba4aeccaa 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -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")) diff --git a/common/system.h b/common/system.h index 6846b7b9dd..1f91fc900d 100644 --- a/common/system.h +++ b/common/system.h @@ -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 diff --git a/engines/engine.cpp b/engines/engine.cpp index 15c6820f22..7a76de36dc 100644 --- a/engines/engine.cpp +++ b/engines/engine.cpp @@ -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(); -- cgit v1.2.3