diff --git a/client/widgets/TextControls.cpp b/client/widgets/TextControls.cpp index 1a57f1b9c..c2b841efe 100644 --- a/client/widgets/TextControls.cpp +++ b/client/widgets/TextControls.cpp @@ -63,6 +63,11 @@ std::string CLabel::getText() return text; } +void CLabel::setAutoRedraw(bool value) +{ + autoRedraw = value; +} + void CLabel::setText(const std::string &Txt) { text = Txt; @@ -75,6 +80,23 @@ void CLabel::setText(const std::string &Txt) } } +void CLabel::setColor(const SDL_Color & Color) +{ + color = Color; + if(autoRedraw) + { + if(bg || !parent) + redraw(); + else + parent->redraw(); + } +} + +size_t CLabel::getWidth() +{ + return graphics->fonts[font]->getStringWidth(visibleText());; +} + CMultiLineLabel::CMultiLineLabel(Rect position, EFonts Font, EAlignment Align, const SDL_Color &Color, const std::string &Text): CLabel(position.x, position.y, Font, Align, Color, Text), visibleSize(0, 0, position.w, position.h) diff --git a/client/widgets/TextControls.h b/client/widgets/TextControls.h index 205dc184c..e3f2821ac 100644 --- a/client/widgets/TextControls.h +++ b/client/widgets/TextControls.h @@ -47,7 +47,10 @@ public: bool autoRedraw; //whether control will redraw itself on setTxt std::string getText(); + virtual void setAutoRedraw(bool option); virtual void setText(const std::string &Txt); + virtual void setColor(const SDL_Color & Color); + size_t getWidth(); CLabel(int x=0, int y=0, EFonts Font = FONT_SMALL, EAlignment Align = TOPLEFT, const SDL_Color &Color = Colors::WHITE, const std::string &Text = "");