1 #ifndef CPPURSES_DEMOS_PALETTE_COLOR_DISPLAY_HPP
2 #define CPPURSES_DEMOS_PALETTE_COLOR_DISPLAY_HPP
3 #include <cppurses/painter/color.hpp>
4 #include <cppurses/widget/layouts/horizontal.hpp>
5 #include <cppurses/widget/layouts/vertical.hpp>
6 #include <cppurses/widget/widget.hpp>
7 #include <cppurses/widget/widgets/text_display.hpp>
8 
9 namespace palette {
10 
11 /// Square visual display of a given Color.
12 struct Color_patch : cppurses::Widget {
13     explicit Color_patch(cppurses::Color value);
14     void set_color(cppurses::Color value);
15 };
16 
17 /// Title and name display of a given Color.
18 struct Color_name : cppurses::layout::Vertical {
19     cppurses::Text_display& title{
20         this->make_child<cppurses::Text_display>("Color:")};
21     cppurses::Text_display& name{
22         this->make_child<cppurses::Text_display>("White")};
23 };
24 
25 /// Displays a text name and a square visual of a given Color.
26 struct Color_display : cppurses::layout::Horizontal {
27     explicit Color_display(cppurses::Color color);
28 
29     /// Change the currently displayed color.
30     void set_color(cppurses::Color color);
31 
32     Color_name& text{this->make_child<Color_name>()};
33     Color_patch& square{this->make_child<Color_patch>(cppurses::Color::White)};
34 };
35 }  // namespace palette
36 #endif  // CPPURSES_DEMOS_PALETTE_COLOR_DISPLAY_HPP
37