aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics
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
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')
-rw-r--r--backends/graphics/graphics.h2
-rw-r--r--backends/graphics/opengl/opengl-graphics.cpp2
-rw-r--r--backends/graphics/opengl/opengl-graphics.h1
-rw-r--r--backends/graphics/surfacesdl/surfacesdl-graphics.cpp27
-rw-r--r--backends/graphics/surfacesdl/surfacesdl-graphics.h3
5 files changed, 30 insertions, 5 deletions
diff --git a/backends/graphics/graphics.h b/backends/graphics/graphics.h
index 1063a10a9c..921dfca61c 100644
--- a/backends/graphics/graphics.h
+++ b/backends/graphics/graphics.h
@@ -86,6 +86,8 @@ 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() { return Graphics::PixelFormat(); }
+
// Graphics::PaletteManager interface
//virtual void setPalette(const byte *colors, uint start, uint num) = 0;
diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index 97788be3ad..c491b03f1f 100644
--- a/backends/graphics/opengl/opengl-graphics.cpp
+++ b/backends/graphics/opengl/opengl-graphics.cpp
@@ -774,6 +774,8 @@ void OpenGLGraphicsManager::clearOSD() {
#endif
}
+Graphics::PixelFormat OpenGLGraphicsManager::getOSDFormat() { return Graphics::PixelFormat(); } //TODO
+
void OpenGLGraphicsManager::setPalette(const byte *colors, uint start, uint num) {
assert(_gameScreen->hasPalette());
diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h
index f36d5d17f2..55d2c5c826 100644
--- a/backends/graphics/opengl/opengl-graphics.h
+++ b/backends/graphics/opengl/opengl-graphics.h
@@ -117,6 +117,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();
// PaletteManager interface
virtual void setPalette(const byte *colors, uint start, uint num);
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 */