Euphoria
widget.cc
Go to the documentation of this file.
1 #include "gui/widget.h"
2 
3 #include "log/log.h"
4 
5 #include "gui/uistate.h"
6 
7 
8 namespace eu::gui
9 {
11  : margin(0.0f)
12  , padding(0.0f)
13  , ui_state(state)
14  {
15  }
16 
17 
18  Widget::~Widget() = default;
19 
20 
21  bool
23  {
24  return ui_state->active == this;
25  }
26 
27 
28  bool
30  {
31  return ui_state->hot == this;
32  }
33 
34 
35  void
37  {
38  }
39 
40 
41  Rectf
43  {
45  }
46 
47 
48  Rectf
50  {
51  return rect;
52  }
53 
54 
55  void
57  {
58  rect = r.inset_copy
59  (
60  margin.left,
61  margin.right,
62  margin.up,
63  margin.down
64  );
66  }
67 
68 
69  size2f
71  {
72  const auto min = calc_minimum_size();
73  const auto padding_width = padding.left + padding.right;
74  const auto padding_height = padding.up + padding.down;
75  const auto margin_width = margin.left + margin.right;
76  const auto margin_height = margin.up + margin.down;
77 
79  (
80  max
81  (
82  min.width + padding_width + margin_width,
84  ),
85  max
86  (
87  min.height + padding_height + margin_height,
89  )
90  );
91  }
92 
93 
94  const State&
96  {
97  return *ui_state;
98  }
99 
100 
101  State*
103  {
104  return ui_state;
105  }
106 }
size2f min(const size2f lhs, const size2f rhs)
Definition: size2.cc:140
size2f max(const size2f lhs, const size2f rhs)
Definition: size2.cc:149
T right
Definition: lrud.h:24
T left
Definition: lrud.h:23
T up
Definition: lrud.h:25
T down
Definition: lrud.h:26
Definition: rect.h:27
Rectf inset_copy(float dx, float dy) const
Definition: rect.cc:282
Widget * hot
Definition: uistate.h:19
Widget * active
Definition: uistate.h:20
LayoutData layout
Definition: widget.h:86
virtual ~Widget()
Rectf rect
Definition: widget.h:87
Lrud< float > padding
Definition: widget.h:27
Rectf get_client_rect() const
Definition: widget.cc:42
Lrud< float > margin
Definition: widget.h:26
Widget(gui::State *state)
Definition: widget.cc:10
void set_rect(const Rectf &r)
Definition: widget.cc:56
const gui::State & get_state() const
Definition: widget.cc:95
bool is_hot() const
Definition: widget.cc:29
virtual size2f calc_minimum_size() const =0
gui::State * ui_state
Definition: widget.h:84
virtual void on_size_changed()
Definition: widget.cc:36
size2f get_preferred_size() const
Definition: widget.cc:70
Rectf get_background_rect() const
Definition: widget.cc:49
gui::State * get_state_ptr() const
Definition: widget.cc:102
bool is_active() const
Definition: widget.cc:22
static size2f create_from_width_height(float w, float h)
Definition: size2.cc:15
float height
Definition: size2.h:14
float width
Definition: size2.h:13
ParserState state
Definition: ui_text.cc:134