diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-11-13 05:44:22 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2012-01-09 06:55:07 +0100 |
commit | f54cd905f49d08116bf988bcb4451beb168cbd48 (patch) | |
tree | fe1b9eebd4941fe44cee48cfd2818a7239b2ac07 /src/gui/widgets/browserbox.cpp | |
parent | 734cf89900cde0526043429c3028cb69616f7cb8 (diff) | |
download | Mana-f54cd905f49d08116bf988bcb4451beb168cbd48.tar.gz Mana-f54cd905f49d08116bf988bcb4451beb168cbd48.tar.bz2 Mana-f54cd905f49d08116bf988bcb4451beb168cbd48.tar.xz Mana-f54cd905f49d08116bf988bcb4451beb168cbd48.zip |
Made the chat text much more readable in every opacity case.
I added text shadow and outline support to the browserbox,
and made it adapt the text for the chattabs depending on the
GUI opacity.
Reviewed-by: Ablu.
Diffstat (limited to 'src/gui/widgets/browserbox.cpp')
-rw-r--r-- | src/gui/widgets/browserbox.cpp | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp index d553312b..8c678805 100644 --- a/src/gui/widgets/browserbox.cpp +++ b/src/gui/widgets/browserbox.cpp @@ -37,6 +37,8 @@ BrowserBox::BrowserBox(unsigned int mode, bool opaque): gcn::Widget(), mMode(mode), mHighMode(UNDERLINE | BACKGROUND), + mShadows(false), + mOutline(false), mOpaque(opaque), mUseLinksAndUserColors(true), mSelectedLink(-1), @@ -304,8 +306,6 @@ void BrowserBox::draw(gcn::Graphics *graphics) } } - gcn::Font *font = getFont(); - for (LinePartIterator i = mLineParts.begin(); i != mLineParts.end(); i ++) @@ -315,8 +315,41 @@ void BrowserBox::draw(gcn::Graphics *graphics) continue; if (part.getY() > yEnd) break; + + // Use the correct font + graphics->setFont(getFont()); + + // Handle text shadows + if (mShadows) + { + graphics->setColor(Theme::getThemeColor(Theme::SHADOW, + part.getColor().a / 2)); + if (mOutline) + { + graphics->drawText(part.getText(), part.getX() + 2, + part.getY() + 2); + } + else + { + graphics->drawText(part.getText(), part.getX() + 1, + part.getY() + 1); + } + } + + if (mOutline) + { + // Text outline + graphics->setColor(Theme::getThemeColor(Theme::OUTLINE, + part.getColor().a / 4)); + graphics->drawText(part.getText(), part.getX() + 1, part.getY()); + graphics->drawText(part.getText(), part.getX() - 1, part.getY()); + graphics->drawText(part.getText(), part.getX(), part.getY() + 1); + graphics->drawText(part.getText(), part.getX(), part.getY() - 1); + } + + // the main text graphics->setColor(part.getColor()); - font->drawString(graphics, part.getText(), part.getX(), part.getY()); + graphics->drawText(part.getText(), part.getX(), part.getY()); } return; |