Skip to content

Commit

Permalink
ZVISION: Change rendermanager code for correct subtitles handle.
Browse files Browse the repository at this point in the history
  • Loading branch information
Marisa-Chan committed Feb 24, 2014
1 parent ac9b74d commit 8e02e06
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
19 changes: 17 additions & 2 deletions engines/zvision/render_manager.cpp
Expand Up @@ -24,6 +24,7 @@

#include "zvision/zvision.h"
#include "zvision/render_manager.h"
#include "zvision/text.h"

#include "zvision/lzss_read_stream.h"

Expand Down Expand Up @@ -746,9 +747,14 @@ void RenderManager::updateSubArea(uint16 id, const Common::String &txt) {
}
}

void RenderManager::renderSubsToScreen() {
void RenderManager::processSubs(uint16 deltatime) {
bool redraw = false;
for (subMap::iterator it = _subsList.begin(); it != _subsList.end(); it++) {
if (it->_value.timer != -1) {
it->_value.timer -= deltatime;
if (it->_value.timer <= 0)
it->_value.todelete = true;
}
if (it->_value.todelete) {
_subsList.erase(it);
redraw = true;
Expand All @@ -761,7 +767,16 @@ void RenderManager::renderSubsToScreen() {
_subWnd.fillRect(Common::Rect(_subWnd.w, _subWnd.h), 0);

for (subMap::iterator it = _subsList.begin(); it != _subsList.end(); it++) {
//draw subs
oneSub *sub = &it->_value;
if (sub->_txt.size()) {
Graphics::Surface *rndr = new Graphics::Surface();
rndr->create(sub->_r.width(), sub->_r.height(), _pixelFormat);
_engine->getTextRenderer()->drawTxtInOneLine(sub->_txt, *rndr);
blitSurfaceToSurface(*rndr, _subWnd, sub->_r.left - _subWndRect.left + _workingWindow.left, sub->_r.top - _subWndRect.top + _workingWindow.top);
rndr->free();
delete rndr;
}
sub->redraw = false;
}

_system->copyRectToScreen(_subWnd.getPixels(), _subWnd.pitch,
Expand Down
2 changes: 1 addition & 1 deletion engines/zvision/render_manager.h
Expand Up @@ -236,7 +236,7 @@ class RenderManager {
void deleteSubArea(uint16 id);
void deleteSubArea(uint16 id, int16 delay);
void updateSubArea(uint16 id, const Common::String &txt);
void renderSubsToScreen();
void processSubs(uint16 deltatime);

Common::Point getBkgSize();

Expand Down
2 changes: 1 addition & 1 deletion engines/zvision/zvision.cpp
Expand Up @@ -192,7 +192,7 @@ Common::Error ZVision::run() {
// Render the backBuffer to the screen
_renderManager->prepareBkg();
_renderManager->renderMenuToScreen();
_renderManager->renderSubsToScreen();
_renderManager->processSubs(deltaTime);
_renderManager->renderBackbufferToScreen();

// Update the screen
Expand Down

0 comments on commit 8e02e06

Please sign in to comment.