X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Flabel.hh;h=3bb931d6394b92a03928a8171d2aeb0eee2167c1;hb=a4c8a839a3decc54e515fd110710195eca23fd2b;hp=3bf397a6e67733958d2e7878dac7ede55940a345;hpb=3ce8b540aae127c773c57fcf7094e11319d3c6a3;p=chaz%2Fopenbox diff --git a/otk/label.hh b/otk/label.hh index 3bf397a6..3bb931d6 100644 --- a/otk/label.hh +++ b/otk/label.hh @@ -1,28 +1,63 @@ +// -*- 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 namespace otk { -class OtkLabel : public OtkWidget { +class Label : public Widget { public: + Label(Widget *parent); + virtual ~Label(); - OtkLabel(OtkWidget *parent); - ~OtkLabel(); + inline const ustring& text(void) const { return _text; } + void setText(const ustring &text); - inline const std::string &getText(void) const { return _text; } - void setText(const std::string &text) { _text = text; _dirty = true; } + 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); - void update(void); - int exposeHandler(const XExposeEvent &e); - int configureHandler(const XConfigureEvent &e); + const Font *font() const { return _font; } + virtual void setFont(const Font *f); -private: + virtual void calcDefaultSizes(); - std::string _text; - bool _dirty; + 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 _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; }; }