aboutsummaryrefslogtreecommitdiffstats
path: root/src/menu/background_color.cpp
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-04-15 22:50:28 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-13 22:40:52 +0100
commit816030e73aad13c39bc84ca6fdb814ba7131f19f (patch)
treeead3c4c691b3db7f396982327307c5da6ca99855 /src/menu/background_color.cpp
parente0e9997a5e92ce2a31f0ff4d139109be4434105b (diff)
downloadusdx-816030e73aad13c39bc84ca6fdb814ba7131f19f.tar.gz
usdx-816030e73aad13c39bc84ca6fdb814ba7131f19f.tar.xz
usdx-816030e73aad13c39bc84ca6fdb814ba7131f19f.zip
menu/background: backgrounds get to know the parent component
Backgrounds now know the parent control, they are painted in, to query the size. Backgrounds are not allowed to use glClear anymore, should only draw something during the extend of the parent control and should take care to do not modify the opengl cursor position.
Diffstat (limited to 'src/menu/background_color.cpp')
-rw-r--r--src/menu/background_color.cpp56
1 files changed, 49 insertions, 7 deletions
diff --git a/src/menu/background_color.cpp b/src/menu/background_color.cpp
index aa8a90d2..bb579f06 100644
--- a/src/menu/background_color.cpp
+++ b/src/menu/background_color.cpp
@@ -25,23 +25,65 @@
*/
#include "background_color.hpp"
-#include <GL/gl.h>
+#include "drawable_control.hpp"
namespace usdx
{
- BackgroundColor::BackgroundColor(RgbColor &color) :
- color(color)
+ BackgroundColor::BackgroundColor(const DrawableControl &control) :
+ Background(control)
{
+ this->color[0] = 0;
+ this->color[1] = 0;
+ this->color[2] = 0;
+ this->color[3] = 0;
+ this->color[4] = 0;
+ this->color[5] = 0;
+ this->color[6] = 0;
+ this->color[7] = 0;
+ this->color[8] = 0;
+ this->color[9] = 0;
+ this->color[10] = 0;
+ this->color[11] = 0;
}
- BackgroundColor::BackgroundColor(void) :
- color(0, 0, 0)
+ BackgroundColor::BackgroundColor(const DrawableControl &control,
+ const RgbColor &color) :
+ Background(control)
{
+ this->color[0] = color.get_red();
+ this->color[1] = color.get_green();
+ this->color[2] = color.get_blue();
+ this->color[3] = color.get_red();
+ this->color[4] = color.get_green();
+ this->color[5] = color.get_blue();
+ this->color[6] = color.get_red();
+ this->color[7] = color.get_green();
+ this->color[8] = color.get_blue();
+ this->color[9] = color.get_red();
+ this->color[10] = color.get_green();
+ this->color[11] = color.get_blue();
}
void BackgroundColor::draw()
{
- glClearColor(color.get_red(), color.get_green(), color.get_blue(), 1.0f);
- glClear(GL_COLOR_BUFFER_BIT);
+ this->vertices[0] = 0;
+ this->vertices[1] = get_parent().get_height();
+ this->vertices[2] = get_parent().get_width();
+ this->vertices[3] = get_parent().get_height();
+ this->vertices[4] = get_parent().get_width();
+ this->vertices[5] = 0;
+ this->vertices[6] = 0;
+ this->vertices[7] = 0;
+
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_COLOR_ARRAY);
+
+ glVertexPointer(2, GL_INT, 0, vertices);
+ glColorPointer(3, GL_UNSIGNED_BYTE, 0, color);
+
+ glDrawArrays(GL_QUADS, 0, 4);
+
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_COLOR_ARRAY);
}
};