diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2012-04-15 22:50:28 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-13 22:40:52 +0100 |
commit | 816030e73aad13c39bc84ca6fdb814ba7131f19f (patch) | |
tree | ead3c4c691b3db7f396982327307c5da6ca99855 /src/menu/background_color.cpp | |
parent | e0e9997a5e92ce2a31f0ff4d139109be4434105b (diff) | |
download | usdx-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.cpp | 56 |
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); } }; |