diff options
| author | André Nusser <andre.nusser@googlemail.com> | 2017-04-17 09:30:52 +0200 | 
|---|---|---|
| committer | André Nusser <andre.nusser@googlemail.com> | 2017-04-17 09:30:52 +0200 | 
| commit | 7d58f10c8034b779d752028ec3b5dcbce848c661 (patch) | |
| tree | 6478dfcb13516eb0ab69520e1937305698561c66 /plugingui | |
| parent | 65d72dde7fde9a48213bc1430f5c7be544b3ae28 (diff) | |
Make it possible to set the Slider colour via a public function.
Diffstat (limited to 'plugingui')
| -rw-r--r-- | plugingui/slider.cc | 20 | ||||
| -rw-r--r-- | plugingui/slider.h | 37 | 
2 files changed, 40 insertions, 17 deletions
| diff --git a/plugingui/slider.cc b/plugingui/slider.cc index 19343bc..6a764b8 100644 --- a/plugingui/slider.cc +++ b/plugingui/slider.cc @@ -55,6 +55,21 @@ float Slider::value() const  	return current_value;  } +void Slider::setColour(Colour colour) +{ +	switch (colour) { +	case Colour::Green: +		inner_bar = &inner_bar_green; +		break; +	case Colour::Red: +		inner_bar = &inner_bar_red; +		break; +	case Colour::Blue: +		inner_bar = &inner_bar_blue; +		break; +	} +} +  void Slider::repaintEvent(RepaintEvent* repaintEvent)  {  	Painter p(*this); @@ -69,9 +84,8 @@ void Slider::repaintEvent(RepaintEvent* repaintEvent)  	p.drawImage(0, 0, bar);  	// draw inner bar -	inner_bar_blue.setSize( -	    button_x - bar_boundary, height() - 2 * bar_boundary); -	p.drawImage(bar_boundary, bar_boundary, inner_bar_blue); +	inner_bar->setSize(button_x - bar_boundary, height() - 2 * bar_boundary); +	p.drawImage(bar_boundary, bar_boundary, *inner_bar);  	// draw button  	p.drawImage(button_x, button_y, button); diff --git a/plugingui/slider.h b/plugingui/slider.h index 7e4037f..9620fd0 100644 --- a/plugingui/slider.h +++ b/plugingui/slider.h @@ -53,6 +53,10 @@ public:  	void setValue(float new_value);  	float value() const; +	enum class Colour { Green, Red, Blue }; +	// Changes the colour of the inner bar +	void setColour(Colour colour); +  	Notifier<> clickNotifier;  protected: @@ -73,31 +77,36 @@ private:  	State state; -	TexturedBox bar{ -	    getImageCache(), ":slider.png", 0, 0, // atlas offset (x, y) -	    7, 1, 7,                              // dx1, dx2, dx3 -	    7, 1, 7                               // dy1, dy2, dy3 +	TexturedBox bar{getImageCache(), ":slider.png", +		0, 0, // atlas offset (x, y) +	    7, 1, 7, // dx1, dx2, dx3 +	    7, 1, 7 // dy1, dy2, dy3 +	}; +	TexturedBox inner_bar_green{getImageCache(), ":slider.png", +		30, 0, // atlas offset (x, y) +		2, 1, 2, // dx1, dx2, dx3 +		2, 1, 2 // dy1, dy2, dy3 +	}; +	TexturedBox inner_bar_red{getImageCache(), ":slider.png", +		30, 5, // atlas offset (x, y) +		2, 1, 2, // dx1, dx2, dx3 +		2, 1, 2 // dy1, dy2, dy3  	}; -	// TexturedBox inner_bar_green{ -	//     getImageCache(), ":slider.png", 30, 0, // atlas offset (x, y) -	//     2, 1, 2,                               // dx1, dx2, dx3 -	//     2, 1, 2                                // dy1, dy2, dy3 -	// }; -	// TexturedBox inner_bar_red{getImageCache(), ":slider.png", -	//     30, 5, // atlas offset (x, y) -	//     2, 1, 2, // dx1, dx2, dx3 -	//     2, 1, 2 // dy1, dy2, dy3 -	// };  	TexturedBox inner_bar_blue{getImageCache(), ":slider.png",  		30, 10, // atlas offset (x, y)  		2, 1, 2, // dx1, dx2, dx3  		2, 1, 2 // dy1, dy2, dy3  	}; +  	Texture button{  	    getImageCache(), ":slider.png", 15, 0, // atlas offset (x, y)  	    15, 15                                 // width, height  	}; +	// This points to the inner_bar_* of the current color. +	// It should never be a nullptr! +	TexturedBox* inner_bar{&inner_bar_blue}; +  	std::size_t bar_boundary{5};  	std::size_t button_offset{7}; | 
