diff options
author | Borja Lorente | 2016-08-08 18:36:51 +0200 |
---|---|---|
committer | Borja Lorente | 2016-08-19 16:29:15 +0200 |
commit | 560185903cf13dbb91ce916dc7347cec6f968c12 (patch) | |
tree | ce9c65dba80aa7fb845eb22d4b01c7683fdc4787 | |
parent | 4f6609f704edf2ee38582cb2d2f17a7017d79732 (diff) | |
download | scummvm-rg350-560185903cf13dbb91ce916dc7347cec6f968c12.tar.gz scummvm-rg350-560185903cf13dbb91ce916dc7347cec6f968c12.tar.bz2 scummvm-rg350-560185903cf13dbb91ce916dc7347cec6f968c12.zip |
MACVENTURE: Fix console drawing bug
-rw-r--r-- | engines/macventure/gui.cpp | 14 | ||||
-rw-r--r-- | engines/macventure/gui.h | 19 |
2 files changed, 26 insertions, 7 deletions
diff --git a/engines/macventure/gui.cpp b/engines/macventure/gui.cpp index caa756f755..deb4a09a77 100644 --- a/engines/macventure/gui.cpp +++ b/engines/macventure/gui.cpp @@ -639,7 +639,7 @@ void Gui::drawConsoleWindow() { Graphics::ManagedSurface *srf = _outConsoleWindow->getSurface(); BorderBounds bounds = borderBounds(getWindowData(kOutConsoleWindow).type); - _consoleText->renderInto(srf, bounds.leftOffset); + _consoleText->renderInto(srf, bounds, kConsoleLeftOffset); } void Gui::drawObjectsInWindow(const WindowData &targetData, Graphics::ManagedSurface *surface) { @@ -651,10 +651,7 @@ void Gui::drawObjectsInWindow(const WindowData &targetData, Graphics::ManagedSur if (targetData.children.size() == 0) return; Graphics::ManagedSurface *composeSurface = new Graphics::ManagedSurface(); - composeSurface->create( - surface->w - border.leftOffset - border.rightOffset, - surface->h - border.topOffset - border.bottomOffset, - surface->format); + createInnerSurface(composeSurface, surface, border); composeSurface->clear(kColorGreen); for (uint i = 0; i < targetData.children.size(); i++) { @@ -879,6 +876,13 @@ void Gui::saveInto(int slot) { _engine->preparedToRun(); } +void Gui::createInnerSurface(Graphics::ManagedSurface *innerSurface, Graphics::ManagedSurface *outerSurface, const BorderBounds &borders) { + innerSurface->create( + outerSurface->w - borders.leftOffset - borders.rightOffset, + outerSurface->h - borders.topOffset - borders.bottomOffset, + outerSurface->format); +} + void Gui::moveDraggedObject(Common::Point target) { ensureAssetLoaded(_draggedObj.id); _draggedObj.pos = target + _draggedObj.mouseOffset; diff --git a/engines/macventure/gui.h b/engines/macventure/gui.h index 12b499ad30..7d1a08aa5b 100644 --- a/engines/macventure/gui.h +++ b/engines/macventure/gui.h @@ -161,6 +161,8 @@ public: void loadGame(int slot); void saveInto(int slot); + void createInnerSurface(Graphics::ManagedSurface *innerSurface, Graphics::ManagedSurface *outerSurface, const BorderBounds &borders); + private: // Attributes @@ -377,6 +379,10 @@ static void cursorTimerHandler(void *refCon) { } +enum { + kConsoleLeftOffset = 2 +}; + class ConsoleText { public: @@ -407,14 +413,23 @@ public: updateScroll(); } - void renderInto(Graphics::ManagedSurface *target, uint leftOffset) { + void renderInto(Graphics::ManagedSurface *target, const BorderBounds borders, int textOffset) { target->fillRect(target->getBounds(), kColorWhite); + + Graphics::ManagedSurface *composeSurface = new Graphics::ManagedSurface(); + _gui->createInnerSurface(composeSurface, target, borders); + composeSurface->clear(kColorGreen); + const Graphics::Font *font = &_gui->getCurrentFont(); uint y = target->h - font->getFontHeight(); for (uint i = _scrollPos; i != 0; i--) { - font->drawString(target, _lines[i], leftOffset, y, font->getStringWidth(_lines[i]), kColorBlack); + font->drawString(target, _lines[i], textOffset, y, font->getStringWidth(_lines[i]), kColorBlack); y -= font->getFontHeight(); } + + Common::Point composePosition = Common::Point(borders.leftOffset, borders.topOffset); + target->transBlitFrom(*composeSurface, composePosition, kColorGreen); + delete composeSurface; } void updateScroll() { |