openbox/otk/label.hh

65 lines
1.7 KiB
C++

// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifndef __label_hh
#define __label_hh
#include "widget.hh"
#include "ustring.hh"
#include "renderstyle.hh"
#include "font.hh"
#include <vector>
namespace otk {
class Label : public Widget {
public:
Label(Widget *parent);
virtual ~Label();
inline const ustring& getText(void) const { return _text; }
void setText(const ustring &text);
virtual inline bool isHighlighted() const { return _highlight; }
virtual void setHighlighted(bool h);
RenderStyle::Justify horizontalJustify() const { return _justify_horz; }
virtual void setHorizontalJustify(RenderStyle::Justify j);
RenderStyle::Justify verticalJustify() const { return _justify_vert; }
virtual void setVerticalJustify(RenderStyle::Justify j);
const Font *font() const { return _font; }
virtual void setFont(const Font *f);
virtual void calcDefaultSizes();
virtual void styleChanged(const RenderStyle &style);
virtual void renderForeground(Surface &surface);
protected:
//! The color the label will use for rendering its text
RenderColor *_forecolor;
private:
//! Text to be displayed in the label
ustring _text;
//! Text to be displayed, parsed into its separate lines
std::vector<ustring> _parsedtext;
//! The actual text being shown, may be a subset of _text
ustring _drawtext;
//! The font the text will be rendered with
const Font *_font;
//! The horizontal justification used for drawing text
RenderStyle::Justify _justify_horz;
//! The vertical justification used for drawing text
RenderStyle::Justify _justify_vert;
//! The drawing offset for the text
int _drawx;
//! If the widget is highlighted or not
bool _highlight;
};
}
#endif