diff options
author | dhewg | 2011-02-27 10:10:44 +0100 |
---|---|---|
committer | dhewg | 2011-02-27 10:10:44 +0100 |
commit | 1c95d47cfaf1f39b3c3012aa649ce3ced90ed147 (patch) | |
tree | 62dd1aa6852e1d7963df3cff7d2ca0e2a5dd4a18 /engines | |
parent | a73b2ec97279b1ef1562ece18c7905591e6a7cc4 (diff) | |
download | scummvm-rg350-1c95d47cfaf1f39b3c3012aa649ce3ced90ed147.tar.gz scummvm-rg350-1c95d47cfaf1f39b3c3012aa649ce3ced90ed147.tar.bz2 scummvm-rg350-1c95d47cfaf1f39b3c3012aa649ce3ced90ed147.zip |
SWORD2: Respect screen pitch while postprocessing
Fixes subtitles on androids
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sword2/animation.cpp | 22 | ||||
-rw-r--r-- | engines/sword2/animation.h | 6 |
2 files changed, 14 insertions, 14 deletions
diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index 3c506c0dae..8d0600aeef 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -110,7 +110,7 @@ void MoviePlayer::play(MovieText *movieTexts, uint32 numMovieTexts, uint32 leadI terminated = !playVideo(); - closeTextObject(_currentMovieText, NULL); + closeTextObject(_currentMovieText, NULL, 0); if (terminated) { _snd->stopHandle(*_bgSoundHandle); @@ -165,7 +165,7 @@ void MoviePlayer::openTextObject(uint32 index) { } } -void MoviePlayer::closeTextObject(uint32 index, byte *screen) { +void MoviePlayer::closeTextObject(uint32 index, byte *screen, uint16 pitch) { if (index < _numMovieTexts) { MovieText *text = &_movieTexts[index]; @@ -183,7 +183,7 @@ void MoviePlayer::closeTextObject(uint32 index, byte *screen) { int frameX = (_system->getWidth() - frameWidth) / 2; int frameY = (_system->getHeight() - frameHeight) / 2; - byte *dst = screen + _textY * _system->getWidth(); + byte *dst = screen + _textY * pitch; for (int y = 0; y < text->_textSprite.h; y++) { if (_textY + y < frameY || _textY + y >= frameY + frameHeight) { @@ -195,7 +195,7 @@ void MoviePlayer::closeTextObject(uint32 index, byte *screen) { memset(dst + frameX + frameWidth, findBlackPalIndex(), _textX + text->_textSprite.w - (frameX + frameWidth)); } - dst += _system->getWidth(); + dst += pitch; } } @@ -205,7 +205,7 @@ void MoviePlayer::closeTextObject(uint32 index, byte *screen) { } } -void MoviePlayer::drawTextObject(uint32 index, byte *screen) { +void MoviePlayer::drawTextObject(uint32 index, byte *screen, uint16 pitch) { MovieText *text = &_movieTexts[index]; byte white = findWhitePalIndex(); @@ -224,7 +224,7 @@ void MoviePlayer::drawTextObject(uint32 index, byte *screen) { src = buffer; } - byte *dst = screen + _textY * RENDERWIDE + _textX; + byte *dst = screen + _textY * pitch + _textX; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { @@ -234,12 +234,12 @@ void MoviePlayer::drawTextObject(uint32 index, byte *screen) { dst[x] = white; } src += width; - dst += RENDERWIDE; + dst += pitch; } } } -void MoviePlayer::performPostProcessing(byte *screen) { +void MoviePlayer::performPostProcessing(byte *screen, uint16 pitch) { MovieText *text; int frame = _decoder->getCurFrame(); @@ -261,9 +261,9 @@ void MoviePlayer::performPostProcessing(byte *screen) { _vm->_sound->playCompSpeech(text->_speechId, 16, 0); } if (frame < text->_endFrame) { - drawTextObject(_currentMovieText, screen); + drawTextObject(_currentMovieText, screen, pitch); } else { - closeTextObject(_currentMovieText, screen); + closeTextObject(_currentMovieText, screen, pitch); _currentMovieText++; } } @@ -313,7 +313,7 @@ bool MoviePlayer::playVideo() { } Graphics::Surface *screen = _vm->_system->lockScreen(); - performPostProcessing((byte *)screen->pixels); + performPostProcessing((byte *)screen->pixels, screen->pitch); _vm->_system->unlockScreen(); _vm->_system->updateScreen(); } diff --git a/engines/sword2/animation.h b/engines/sword2/animation.h index 550ac0fac4..afe7dfcc68 100644 --- a/engines/sword2/animation.h +++ b/engines/sword2/animation.h @@ -96,12 +96,12 @@ protected: uint32 _leadOut; int _leadOutFrame; - void performPostProcessing(byte *screen); + void performPostProcessing(byte *screen, uint16 pitch); bool playVideo(); void openTextObject(uint32 index); - void closeTextObject(uint32 index, byte *screen); - void drawTextObject(uint32 index, byte *screen); + void closeTextObject(uint32 index, byte *screen, uint16 pitch); + void drawTextObject(uint32 index, byte *screen, uint16 pitch); byte findBlackPalIndex(); byte findWhitePalIndex(); |