libwtk-sdl2  0.0.1
table.hpp
1 #ifndef LIBWTK_SDL2_TABLE_HPP
2 #define LIBWTK_SDL2_TABLE_HPP
3 
4 #include "container.hpp"
5 
6 #include <vector>
7 
8 struct table : container
9 {
10  struct entry
11  {
12  SDL_Rect placement;
13  widget_ptr wptr;
14  };
15 
16  table(vec size, std::vector<entry> entries, int padding);
17  ~table() override;
18 
19  std::vector<widget *> get_children() override;
20  std::vector<widget const *> get_children() const override;
21  void on_box_allocated() override;
22  widget * find_selectable(navigation_type nt, point center) override;
23  widget * navigate_selectable_from_children(navigation_type nt, widget * w, point center) override;
24 
25  size_hint get_size_hint(int width, int height) const override;
26 
27  private:
28 
29  int length_with_spacing(std::vector<int> const & lengths) const;
30  void min_cell_dimensions(int * min_widths, int * min_heights) const;
31  void compute_offsets(std::vector<int> & lengths, std::vector<int> & offsets, int n, int box_length, int box_start);
32 
33  std::vector<entry> _entries;
34  vec _size;
35  std::vector<std::vector<int>> _grid;
36  int _spacing;
37 
38  std::vector<int> _x_offsets;
39  std::vector<int> _y_offsets;
40 
41 };
42 
43 #endif
44 
widget * find_selectable(navigation_type nt, point center) override
Definition: container.hpp:10
Definition: padding.hpp:6
widget * navigate_selectable_from_children(navigation_type nt, widget *w, point center) override
std::vector< widget * > get_children() override
Definition: geometry.hpp:12
size_hint get_size_hint(int width, int height) const override
Definition: geometry.hpp:6
Definition: table.hpp:10
Definition: widget.hpp:52
void on_box_allocated() override
Definition: widget.hpp:35
Definition: table.hpp:8