/
panel.hpp
108 lines (77 loc) · 2.52 KB
/
panel.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
Copyright (C) 2008 - 2017 by Mark de Wever <koraq@xs4all.nl>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#pragma once
#include "gui/widgets/container_base.hpp"
#include "gui/core/widget_definition.hpp"
#include "gui/core/window_builder.hpp"
namespace gui2
{
// ------------ WIDGET -----------{
/**
* Visible container to hold multiple widgets.
*
* This widget can draw items beyond the widgets it holds and in front of them.
* A panel is always active so these functions return dummy values.
*/
class panel : public container_base
{
public:
/**
* Constructor.
*/
panel() : container_base()
{
}
/** See @ref container_base::get_client_rect. */
virtual SDL_Rect get_client_rect() const override;
/** See @ref styled_widget::get_active. */
virtual bool get_active() const override;
/** See @ref styled_widget::get_state. */
virtual unsigned get_state() const override;
private:
/** See @ref widget::impl_draw_background. */
virtual void impl_draw_background(int x_offset, int y_offset) override;
/** See @ref widget::impl_draw_foreground. */
virtual void impl_draw_foreground(int x_offset, int y_offset) override;
/** See @ref styled_widget::get_control_type. */
virtual const std::string& get_control_type() const override;
/** See @ref container_base::border_space. */
virtual point border_space() const override;
/** See @ref container_base::set_self_active. */
virtual void set_self_active(const bool active) override;
};
// }---------- DEFINITION ---------{
struct panel_definition : public styled_widget_definition
{
explicit panel_definition(const config& cfg);
struct resolution : public resolution_definition
{
explicit resolution(const config& cfg);
unsigned top_border;
unsigned bottom_border;
unsigned left_border;
unsigned right_border;
};
};
// }---------- BUILDER -----------{
namespace implementation
{
struct builder_panel : public builder_styled_widget
{
explicit builder_panel(const config& cfg);
using builder_styled_widget::build;
widget* build() const;
builder_grid_ptr grid;
};
} // namespace implementation
// }------------ END --------------
} // namespace gui2