diff options
author | Einar Johan Trøan Sømåen | 2012-08-13 22:28:39 +0200 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2012-08-13 22:33:35 +0200 |
commit | fb566386c74c823f98c089ef088ec997d5ce1371 (patch) | |
tree | 09f8cd1dd99e8b85fddd3f1137247c4ef88f8623 | |
parent | c96ccaa1c3e130be9185b67dabaecb538924ad96 (diff) | |
download | scummvm-rg350-fb566386c74c823f98c089ef088ec997d5ce1371.tar.gz scummvm-rg350-fb566386c74c823f98c089ef088ec997d5ce1371.tar.bz2 scummvm-rg350-fb566386c74c823f98c089ef088ec997d5ce1371.zip |
WINTERMUTE: Write alpha properly on big-endian platforms.
-rw-r--r-- | engines/wintermute/video/video_theora_player.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp index f75c7ba5b6..31e6b1fcb7 100644 --- a/engines/wintermute/video/video_theora_player.cpp +++ b/engines/wintermute/video/video_theora_player.cpp @@ -344,10 +344,18 @@ void VideoTheoraPlayer::writeAlpha() { // TODO: Endian-fix. assert(_alphaImage->getSurface()->format.bytesPerPixel == 4); assert(_surface.format.bytesPerPixel == 4); const byte *alphaData = (byte *)_alphaImage->getSurface()->getBasePtr(0, 0); +#ifdef SCUMM_LITTLE_ENDIAN int alphaPlace = (_alphaImage->getSurface()->format.aShift / 8); +#else + int alphaPlace = 3 - (_alphaImage->getSurface()->format.aShift / 8); +#endif alphaData += alphaPlace; byte *imgData = (byte *)_surface.getBasePtr(0, 0); +#ifdef SCUMM_LITTLE_ENDIAN imgData += (_surface.format.aShift / 8); +#else + imgData += 3 - (_surface.format.aShift / 8); +#endif for (int i = 0; i < _surface.w * _surface.h; i++) { *imgData = *alphaData; alphaData += 4; @@ -381,8 +389,6 @@ bool VideoTheoraPlayer::display(uint32 alpha) { ////////////////////////////////////////////////////////////////////////// bool VideoTheoraPlayer::setAlphaImage(const Common::String &filename) { - warning("VideoTheoraPlayer::SetAlphaImage(%s) - Not implemented", filename.c_str()); - delete _alphaImage; _alphaImage = new BaseImage(); if (!_alphaImage || DID_FAIL(_alphaImage->loadFile(filename))) { |