diff options
author | Eugene Sandulenko | 2019-01-01 13:24:54 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-11-13 22:07:08 +0100 |
commit | c450854165a9c26d6ab982b09e23ac6d53496599 (patch) | |
tree | 2e09f07d95ebd834476e5fb768834755aa8cf1da | |
parent | 7ade9001c5587e1fce1e2737f06cb279bcef88d8 (diff) | |
download | scummvm-rg350-c450854165a9c26d6ab982b09e23ac6d53496599.tar.gz scummvm-rg350-c450854165a9c26d6ab982b09e23ac6d53496599.tar.bz2 scummvm-rg350-c450854165a9c26d6ab982b09e23ac6d53496599.zip |
GRAPHICS: Added setAlpha() method to TransparentSurface
-rw-r--r-- | graphics/transparent_surface.cpp | 17 | ||||
-rw-r--r-- | graphics/transparent_surface.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/graphics/transparent_surface.cpp b/graphics/transparent_surface.cpp index b4d73d1078..a24f7198aa 100644 --- a/graphics/transparent_surface.cpp +++ b/graphics/transparent_surface.cpp @@ -716,6 +716,23 @@ void TransparentSurface::applyColorKey(uint8 rKey, uint8 gKey, uint8 bKey, bool } } +/** + * Sets alpha channel for all pixels to specified value + * @param alpha value of the alpha channel to set + */ +void TransparentSurface::setAlpha(uint8 alpha) { + assert(format.bytesPerPixel == 4); + for (int i = 0; i < h; i++) { + for (int j = 0; j < w; j++) { + uint32 pix = ((uint32 *)pixels)[i * w + j]; + uint8 r, g, b, a; + format.colorToARGB(pix, a, r, g, b); + a = alpha; + ((uint32 *)pixels)[i * w + j] = format.ARGBToColor(a, r, g, b); + } + } +} + AlphaType TransparentSurface::getAlphaMode() const { return _alphaMode; } diff --git a/graphics/transparent_surface.h b/graphics/transparent_surface.h index 22fe04551e..0738c90f90 100644 --- a/graphics/transparent_surface.h +++ b/graphics/transparent_surface.h @@ -137,6 +137,7 @@ struct TransparentSurface : public Graphics::Surface { TSpriteBlendMode blend = BLEND_NORMAL); void applyColorKey(uint8 r, uint8 g, uint8 b, bool overwriteAlpha = false); + void setAlpha(uint8 alpha); /** * @brief Scale function; this returns a transformed version of this surface after rotation and |