summaryrefslogtreecommitdiff
path: root/otk/focuslabel.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-08 07:33:48 +0000
committerDana Jansens <danakj@orodu.net>2003-02-08 07:33:48 +0000
commit99cd843fc6dc7a7f55b6c90fd1162f233853aad2 (patch)
tree42b25c02cbf984fe29b378e9d0dbfbca1436c87b /otk/focuslabel.cc
parentd2df40965bbf042e062b65d6adc12bc158d503eb (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.cc110
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);
-}
-
-}