From 60add2c149c9c61bfbede5ae92cfe216927aca8a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 27 Dec 2012 14:42:15 +0300 Subject: Improve a bit draw speed in other controls. --- src/gui/widgets/textbox.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/gui/widgets/textbox.cpp') diff --git a/src/gui/widgets/textbox.cpp b/src/gui/widgets/textbox.cpp index 51933708b..976d7f772 100644 --- a/src/gui/widgets/textbox.cpp +++ b/src/gui/widgets/textbox.cpp @@ -338,3 +338,32 @@ void TextBox::keyPressed(gcn::KeyEvent& keyEvent) keyEvent.consume(); } + +void TextBox::draw(gcn::Graphics* graphics) +{ + BLOCK_START("TextBox::draw") + if (mOpaque) + { + graphics->setColor(mBackgroundColor); + graphics->fillRectangle(gcn::Rectangle(0, 0, getWidth(), getHeight())); + } + + if (isFocused() && isEditable()) + { + drawCaret(graphics, getFont()->getWidth( + mTextRows[mCaretRow].substr(0, mCaretColumn)), + mCaretRow * getFont()->getHeight()); + } + + graphics->setColor(mForegroundColor); + gcn::Font *const font = getFont(); + graphics->setFont(font); + const int fontHeight = font->getHeight(); + + for (size_t i = 0, sz = mTextRows.size(); i < sz; i++) + { + // Move the text one pixel so we can have a caret before a letter. + font->drawString(graphics, mTextRows[i], 1, i * fontHeight); + } + BLOCK_END("TextBox::draw") +} -- cgit v1.2.3-60-g2f50