void MacText::render(int from, int to) { reallocSurface(); from = MAX<int>(0, from); to = MIN<int>(to, _textLines.size() - 1); // Clear the screen _surface->fillRect(Common::Rect(0, _textLines[from].y, _surface->w, _textLines[to].y + getLineHeight(to)), _bgcolor); for (int i = from; i <= to; i++) { int xOffset = 0; if (_textAlignment == kTextAlignRight) xOffset = _textMaxWidth - getLineWidth(i); else if (_textAlignment == kTextAlignCenter) xOffset = (_textMaxWidth / 2) - (getLineWidth(i) / 2); // TODO: _textMaxWidth, when -1, was not rendering ANY text. for (uint j = 0; j < _textLines[i].chunks.size(); j++) { if (_textLines[i].chunks[j].text.empty()) continue; _textLines[i].chunks[j].getFont()->drawString(_surface, _textLines[i].chunks[j].text, xOffset, _textLines[i].y, _maxWidth, _fgcolor); xOffset += _textLines[i].chunks[j].getFont()->getStringWidth(_textLines[i].chunks[j].text); } } for (uint i = 0; i < _textLines.size(); i++) { debugN(4, "%2d ", i); for (uint j = 0; j < _textLines[i].chunks.size(); j++) debugN(4, "[%d (%d)] \"%s\" ", _textLines[i].chunks[j].fontId, _textLines[i].chunks[j].textSlant, _textLines[i].chunks[j].text.c_str()); debug(4, "%s", ""); } }
void MacText::render(int from, int to) { reallocSurface(); from = MAX<int>(0, from); to = MIN<int>(to, _text.size()); int lineH = _font->getFontHeight() + _interLinear; int y = from * lineH; // Clear the screen _surface->fillRect(Common::Rect(0, y, _surface->w, to * lineH), _bgcolor); for (int i = from; i < to; i++) { int xOffset = 0; if (_textAlignment == kTextAlignRight) xOffset = _textMaxWidth - _font->getStringWidth(_text[i]); else if (_textAlignment == kTextAlignCenter) xOffset = (_textMaxWidth / 2) - (_font->getStringWidth(_text[i]) / 2); //TODO: _textMaxWidth, when -1, was not rendering ANY text. _font->drawString(_surface, _text[i], xOffset, y, _maxWidth, _fgcolor); y += _font->getFontHeight() + _interLinear; } }