diff options
author | Alexander Tkachev | 2016-06-04 15:56:15 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | 1b9987ddc9ff7a69d0de5bbbbd4aee42fff08b42 (patch) | |
tree | 35ccde24b612b888f20cf38acfe8ba991f691b9a /backends/graphics/surfacesdl | |
parent | b32c2be78dfa88cdb8bb90174fe6fef8757ae85a (diff) | |
download | scummvm-rg350-1b9987ddc9ff7a69d0de5bbbbd4aee42fff08b42.tar.gz scummvm-rg350-1b9987ddc9ff7a69d0de5bbbbd4aee42fff08b42.tar.bz2 scummvm-rg350-1b9987ddc9ff7a69d0de5bbbbd4aee42fff08b42.zip |
GUI: Add getOSDFormat() and make OSD 32 bpp
Diffstat (limited to 'backends/graphics/surfacesdl')
-rw-r--r-- | backends/graphics/surfacesdl/surfacesdl-graphics.cpp | 27 | ||||
-rw-r--r-- | backends/graphics/surfacesdl/surfacesdl-graphics.h | 3 |
2 files changed, 25 insertions, 5 deletions
diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp index 4a33890f42..85e39839cb 100644 --- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp +++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp @@ -883,13 +883,26 @@ bool SurfaceSdlGraphicsManager::loadGFXMode() { _osdSurface = SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_RLEACCEL | SDL_SRCCOLORKEY | SDL_SRCALPHA, _hwscreen->w, _hwscreen->h, - 16, - _hwscreen->format->Rmask, - _hwscreen->format->Gmask, - _hwscreen->format->Bmask, - _hwscreen->format->Amask); + 32, + 0xFF000000, + 0x00FF0000, + 0x0000FF00, + 0x000000FF + ); if (_osdSurface == NULL) error("allocating _osdSurface failed"); + + _osdFormat.bytesPerPixel = _osdSurface->format->BytesPerPixel; + + _osdFormat.rLoss = _osdSurface->format->Rloss; + _osdFormat.gLoss = _osdSurface->format->Gloss; + _osdFormat.bLoss = _osdSurface->format->Bloss; + _osdFormat.aLoss = _osdSurface->format->Aloss; + + _osdFormat.rShift = _osdSurface->format->Rshift; + _osdFormat.gShift = _osdSurface->format->Gshift; + _osdFormat.bShift = _osdSurface->format->Bshift; + _osdFormat.aShift = _osdSurface->format->Ashift; SDL_SetColorKey(_osdSurface, SDL_RLEACCEL | SDL_SRCCOLORKEY | SDL_SRCALPHA, kOSDColorKey); #endif @@ -2277,6 +2290,10 @@ void SurfaceSdlGraphicsManager::clearOSD() { // Ensure a full redraw takes place next time the screen is updated _forceFull = true; } + +Graphics::PixelFormat SurfaceSdlGraphicsManager::getOSDFormat() { + return _osdFormat; +} #endif bool SurfaceSdlGraphicsManager::handleScalerHotkeys(Common::KeyCode key) { diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.h b/backends/graphics/surfacesdl/surfacesdl-graphics.h index 01974cf6ab..ff721ea6fc 100644 --- a/backends/graphics/surfacesdl/surfacesdl-graphics.h +++ b/backends/graphics/surfacesdl/surfacesdl-graphics.h @@ -147,6 +147,7 @@ public: virtual void displayMessageOnOSD(const char *msg); virtual void copyRectToOSD(const void *buf, int pitch, int x, int y, int w, int h); virtual void clearOSD(); + virtual Graphics::PixelFormat getOSDFormat(); #endif // Override from Common::EventObserver @@ -175,6 +176,8 @@ protected: kOSDColorKey = 1, /** < Transparent color key */ kOSDInitialAlpha = 80 /** < Initial alpha level, in percent */ }; + /** OSD pixel format */ + Graphics::PixelFormat _osdFormat; #endif /** Hardware screen */ |