diff options
author | Eugene Sandulenko | 2016-01-11 20:58:37 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2016-01-11 20:58:37 +0100 |
commit | db9a9665a47a16852613fd0a15799cdaeaa4bb97 (patch) | |
tree | 84c928f3baaa5a968c5dfe48e1f4cf89241dd4cb /engines/wage/menu.cpp | |
parent | a65fdcf7567e4a8a1ce1d5ee4ec7e483781befd9 (diff) | |
download | scummvm-rg350-db9a9665a47a16852613fd0a15799cdaeaa4bb97.tar.gz scummvm-rg350-db9a9665a47a16852613fd0a15799cdaeaa4bb97.tar.bz2 scummvm-rg350-db9a9665a47a16852613fd0a15799cdaeaa4bb97.zip |
WAGE: Precalculate menu dimensions
Diffstat (limited to 'engines/wage/menu.cpp')
-rw-r--r-- | engines/wage/menu.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/engines/wage/menu.cpp b/engines/wage/menu.cpp index bb58398326..f7ab7e9998 100644 --- a/engines/wage/menu.cpp +++ b/engines/wage/menu.cpp @@ -146,6 +146,24 @@ Menu::Menu(Gui *gui) : _gui(gui) { _items.push_back(weapons); } + // Calculate menu dimensions + _font = getMenuFont(); + int y = _gui->_builtInFonts ? 3 : 2; + int x = 18; + + for (int i = 0; i < _items.size(); i++) { + int w = _font->getStringWidth(_items[i]->name); + + if (_items[i]->bbox.bottom == 0) { + _items[i]->bbox.left = x - kMenuLeftMargin; + _items[i]->bbox.top = y; + _items[i]->bbox.right = x + w + kMenuSpacing - kMenuLeftMargin; + _items[i]->bbox.bottom = y + _font->getFontHeight(); + } + + x += w + kMenuSpacing; + } + _bbox.left = 0; _bbox.top = 0; _bbox.right = _gui->_screen.w - 1; @@ -179,12 +197,7 @@ void Menu::render() { r.top = kMenuHeight - 1; Design::drawFilledRect(&_gui->_screen, r, kColorBlack, p, 1); - const Graphics::Font *font = getMenuFont(); - int y = _gui->_builtInFonts ? 3 : 2; - int x = 18; - for (int i = 0; i < _items.size(); i++) { - int w = font->getStringWidth(_items[i]->name); int color = kColorBlack; if (_activeItem == i) { @@ -192,16 +205,7 @@ void Menu::render() { color = kColorWhite; } - font->drawString(&_gui->_screen, _items[i]->name, x, y, w, color); - - if (_items[i]->bbox.bottom == 0) { - _items[i]->bbox.left = x - 7; - _items[i]->bbox.top = y; - _items[i]->bbox.right = x + w + 6; - _items[i]->bbox.bottom = y + font->getFontHeight(); - } - - x += w + 13; + _font->drawString(&_gui->_screen, _items[i]->name, _items[i]->bbox.left + kMenuLeftMargin, _items[i]->bbox.top, _items[i]->bbox.width(), color); } g_system->copyRectToScreen(_gui->_screen.getPixels(), _gui->_screen.pitch, 0, 0, _gui->_screen.w, kMenuHeight); |