diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-03-05 15:24:52 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-03-05 15:24:52 (GMT) |
| commit | 55acb6aa801f89f14ccc2ae469247149b19a806d (patch) | |
| tree | abddd11e985a92697a955bb770829c4f68dc6f92 /src/interface/Slider.cpp | |
| parent | 644e6770e43e5ed568b0cdc14d63f20869d7fccc (diff) | |
| download | powder-55acb6aa801f89f14ccc2ae469247149b19a806d.zip powder-55acb6aa801f89f14ccc2ae469247149b19a806d.tar.gz | |
More fancy Sliders for deco colour
Diffstat (limited to 'src/interface/Slider.cpp')
| -rw-r--r-- | src/interface/Slider.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/interface/Slider.cpp b/src/interface/Slider.cpp index 1e141d2..06d6f87 100644 --- a/src/interface/Slider.cpp +++ b/src/interface/Slider.cpp @@ -7,6 +7,7 @@ #include <iostream> #include "Slider.h" +#include "Colour.h" namespace ui { @@ -14,7 +15,8 @@ Slider::Slider(Point position, Point size, int steps): Component(position, size), sliderSteps(steps), sliderPosition(0), - isMouseDown(false) + isMouseDown(false), + bgGradient(NULL) { // TODO Auto-generated constructor stub @@ -73,6 +75,15 @@ int Slider::GetValue() return sliderPosition; } +void Slider::SetColour(Colour col1, Colour col2) +{ + if(bgGradient) + free(bgGradient); + bgGradient = (unsigned char*)Graphics::GenerateGradient( + (pixel[2]){PIXRGB(col1.Red, col1.Green, col1.Blue), PIXRGB(col2.Red, col2.Green, col2.Blue)}, + (float[2]){0.0f, 1.0f}, 2, Size.X-6); +} + void Slider::SetValue(int value) { if(value < 0) @@ -85,8 +96,16 @@ void Slider::SetValue(int value) void Slider::Draw(const Point& screenPos) { Graphics * g = Engine::Ref().g; - g->drawrect(screenPos.X, screenPos.Y, Size.X, Size.Y, 255, 255, 255, 255); - g->fillrect(screenPos.X+3, screenPos.Y+3, Size.X-6, Size.Y-6, 255, 255, 255, 255); + //g->drawrect(screenPos.X, screenPos.Y, Size.X, Size.Y, 255, 255, 255, 255); + + if(bgGradient) + { + for (int j = 3; j < Size.Y-6; j++) + for (int i = 3; i < Size.X-6; i++) + g->drawpixel(screenPos.X+i+2, screenPos.Y+j+2, bgGradient[(i-3)*3], bgGradient[(i-3)*3+1], bgGradient[(i-3)*3+2], 255); + } + + g->drawrect(screenPos.X+3, screenPos.Y+3, Size.X-6, Size.Y-6, 255, 255, 255, 255); float fPosition = sliderPosition; float fSize = Size.X-6; |
