1 #ifndef CPPURSES_DEMOS_PALETTE_COLOR_CONTROL_HPP 2 #define CPPURSES_DEMOS_PALETTE_COLOR_CONTROL_HPP 3 #include <signals/signal.hpp> 4 5 #include <cppurses/widget/layouts/horizontal.hpp> 6 7 #include "value_control.hpp" 8 9 namespace palette { 10 11 /// Holds Value_control objects for red, green, and blue color values. 12 class Color_control : public cppurses::layout::Horizontal { 13 Value_control& slider_red_{this->make_child<Value_control>("R")}; 14 Value_control& slider_green_{this->make_child<Value_control>("G")}; 15 Value_control& slider_blue_{this->make_child<Value_control>("B")}; 16 17 public: 18 Color_control(); 19 20 /// Set the red slider to a specific value. set_red_slider(int value)21 void set_red_slider(int value) { slider_red_.set_value(value); } 22 23 /// Set the green slider to a specific value. set_green_slider(int value)24 void set_green_slider(int value) { slider_green_.set_value(value); } 25 26 /// Set the blue slider to a specific value. set_blue_slider(int value)27 void set_blue_slider(int value) { slider_blue_.set_value(value); } 28 29 /// Set all sliders to the respective RGB color value. 30 void set_sliders(cppurses::Color color); 31 32 sig::Signal<void(int)>& red_changed{slider_red_.value_changed}; 33 sig::Signal<void(int)>& green_changed{slider_green_.value_changed}; 34 sig::Signal<void(int)>& blue_changed{slider_blue_.value_changed}; 35 }; 36 37 } // namespace palette 38 #endif // CPPURSES_DEMOS_PALETTE_COLOR_CONTROL_HPP 39