summaryrefslogtreecommitdiff
path: root/src/interface/Slider.cpp
diff options
context:
space:
mode:
authorSimon 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)
commit55acb6aa801f89f14ccc2ae469247149b19a806d (patch)
treeabddd11e985a92697a955bb770829c4f68dc6f92 /src/interface/Slider.cpp
parent644e6770e43e5ed568b0cdc14d63f20869d7fccc (diff)
downloadpowder-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.cpp25
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;