]> Dogcows Code - chaz/openbox/blobdiff - otk/label.hh
stacked cycling menu works now. add a highlighted flag to otk widgets
[chaz/openbox] / otk / label.hh
index f80f76c78ac9b54e2281ac3371e260434a82fd4d..b3e9c16655256dcbfc9fa682c3446426a7205be7 100644 (file)
@@ -1,30 +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& getText(void) const { return _text; }
+  void setText(const ustring &text);
 
-  OtkLabel(OtkWidget *parent);
-  ~OtkLabel();
+  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);
 
-  inline const std::string &getText(void) const { return _text; }
-  void setText(const std::string &text) { _text = text; _dirty = true; }
+  const Font *font() const { return _font; }
+  virtual void setFont(const Font *f);
 
-  void update(void);
+  virtual void calcDefaultSizes();
 
-  virtual void setStyle(Style *style);
+  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.02294 seconds and 4 git commands to generate.