libwtk-sdl2  0.0.1
label.hpp
1 #ifndef LIBWTK_SDL2_LABEL_HPP
2 #define LIBWTK_SDL2_LABEL_HPP
3 
4 // TODO tiny DSEL for markup and font size
5 // TODO sum-of-product type would be better suited for paragraph
6 
7 #include "widget.hpp"
8 
13 struct paragraph
14 {
15  paragraph(std::string text, int trailing_newlines, int font_idx);
16  paragraph(std::string text, int trailing_newlines);
17  paragraph(std::string text);
18  paragraph() = default;
19 
20  // TODO add font style, etc.
21  std::string text;
22  int trailing_newlines;
23  int font_idx;
24 };
25 
29 struct label : widget
30 {
31  label(std::vector<paragraph> content = std::vector<paragraph>());
32  label(std::string text);
33  ~label() override;
34 
35  void on_draw(draw_context & dc, selection_context const & sc) const override;
36 
37  size_hint get_size_hint(int width, int height) const override;
38 
47  void set_text(std::string text);
48 
49  std::string get_text() const;
50 
54  void set_content(std::vector<paragraph> content);
55 
56  std::vector<paragraph> const & get_content() const;
57 
61  void set_minimum_width(int width);
62  void set_maximum_width(int width);
63 
68  void set_wrap(bool wrap);
69 
72  private:
73 
74  std::vector<paragraph> _content;
75 
76  int _minimum_width;
77  int _maximum_width;
78  bool _wrap;
79 };
80 
81 #endif
82 
Definition: label.hpp:29
void set_text(std::string text)
void set_content(std::vector< paragraph > content)
void set_wrap(bool wrap)
void set_minimum_width(int width)
Definition: draw_context.hpp:126
void on_draw(draw_context &dc, selection_context const &sc) const override
size_hint get_size_hint(int width, int height) const override
Definition: label.hpp:13
Definition: selection_context.hpp:18
Definition: widget.hpp:52
Definition: widget.hpp:35