diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-02-08 07:33:48 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-02-08 07:33:48 +0000 |
| commit | 99cd843fc6dc7a7f55b6c90fd1162f233853aad2 (patch) | |
| tree | 42b25c02cbf984fe29b378e9d0dbfbca1436c87b /otk/focuslabel.cc | |
| parent | d2df40965bbf042e062b65d6adc12bc158d503eb (diff) | |
Brand spankin new widgets for otk (Label and Button).
Add a new Size class.
Rect, Point, and Size are immutable classes.
Size uses *UNSIGNED* ints. This is causing me headaches * a bajillion right now, so we'll see about that.
Diffstat (limited to 'otk/focuslabel.cc')
| -rw-r--r-- | otk/focuslabel.cc | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/otk/focuslabel.cc b/otk/focuslabel.cc deleted file mode 100644 index 846d035e..00000000 --- a/otk/focuslabel.cc +++ /dev/null @@ -1,110 +0,0 @@ -// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- - -#ifdef HAVE_CONFIG_H -# include "../config.h" -#endif - -#include "focuslabel.hh" -#include "display.hh" -#include "screeninfo.hh" - -namespace otk { - -FocusLabel::FocusLabel(Widget *parent) - : FocusWidget(parent), _text("") -{ - setStyle(_style); -} - -FocusLabel::~FocusLabel() -{ -} - - -void FocusLabel::setStyle(RenderStyle *style) -{ - FocusWidget::setStyle(style); - - setTexture(style->labelFocusBackground()); - setUnfocusTexture(style->labelUnfocusBackground()); -} - -void FocusLabel::fitString(const std::string &str) -{ - const Font *ft = style()->labelFont(); - fitSize(ft->measureString(str), ft->height()); -} - -void FocusLabel::fitSize(int w, int h) -{ - unsigned int sidemargin = _bevel_width * 2; - resize(w + sidemargin * 2, h + _bevel_width * 2); -} - -void FocusLabel::update() -{ - if (_dirty) { - int w = _rect.width(), h = _rect.height(); - const Font *ft = style()->labelFont(); - unsigned int sidemargin = _bevel_width * 2; - if (!_fixed_width) - w = ft->measureString(_text) + sidemargin * 2; - if (!_fixed_height) - h = ft->height(); - - // enforce a minimum size - if (w > _rect.width()) { - if (h > _rect.height()) - internalResize(w, h); - else - internalResize(w, _rect.height()); - } else if (h > _rect.height()) - internalResize(_rect.width(), h); - } - FocusWidget::update(); -} - - -void FocusLabel::renderForeground() -{ - FocusWidget::renderForeground(); - - const Font *ft = style()->labelFont(); - RenderColor *text_color = (isFocused() ? style()->textFocusColor() - : style()->textUnfocusColor()); - unsigned int sidemargin = _bevel_width * 2; - - ustring t = _text; // the actual text to draw - int x = sidemargin; // x coord for the text - - // find a string that will fit inside the area for text - int max_length = width() - sidemargin * 2; - if (max_length <= 0) { - t = ""; // can't fit anything - } else { - size_t text_len = t.size(); - int length; - - do { - t.resize(text_len); - length = ft->measureString(t); - } while (length > max_length && text_len-- > 0); - - // justify the text - switch (style()->labelTextJustify()) { - case RenderStyle::RightJustify: - x += max_length - length; - break; - case RenderStyle::CenterJustify: - x += (max_length - length) / 2; - break; - case RenderStyle::LeftJustify: - break; - } - } - - display->renderControl(_screen)-> - drawString(*_surface, *ft, x, _bevel_width, *text_color, t); -} - -} |
