aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/surfacesdl
diff options
context:
space:
mode:
authorAlexander Tkachev2016-06-04 15:56:15 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit1b9987ddc9ff7a69d0de5bbbbd4aee42fff08b42 (patch)
tree35ccde24b612b888f20cf38acfe8ba991f691b9a /backends/graphics/surfacesdl
parentb32c2be78dfa88cdb8bb90174fe6fef8757ae85a (diff)
downloadscummvm-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.cpp27
-rw-r--r--backends/graphics/surfacesdl/surfacesdl-graphics.h3
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 */