]> Dogcows Code - chaz/openbox/blobdiff - otk/label.hh
layout fixes, give widgets a default texture, etc.
[chaz/openbox] / otk / label.hh
index c959a2fa662688747b82483a89220ed00acf6fcb..3bb931d6394b92a03928a8171d2aeb0eee2167c1 100644 (file)
@@ -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 <vector>
+
 namespace otk {
 
-class OtkLabel : public OtkWidget {
+class Label : public Widget {
 
 public:
+  Label(Widget *parent);
+  virtual ~Label();
+
+  inline const ustring& text(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);
 
-  OtkLabel(OtkWidget *parent);
-  ~OtkLabel();
+  const Font *font() const { return _font; }
+  virtual void setFont(const Font *f);
 
-  inline const std::string &getText(void) const { return _text; }
-  void setText(const std::string &text) { _text = text; _dirty = true; }
+  virtual void calcDefaultSizes();
 
-  void update(void);
+  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:
-  //! Object used by Xft to render to the drawable
-  XftDraw *_xftdraw;
-  //! Text displayed in the label
-  std::string _text;
+  //! 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;
 };
 
 }
This page took 0.020977 seconds and 4 git commands to generate.