From 816030e73aad13c39bc84ca6fdb814ba7131f19f Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 15 Apr 2012 22:50:28 +0200 Subject: 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. --- src/menu/background_color.cpp | 56 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 7 deletions(-) (limited to 'src/menu/background_color.cpp') 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 +#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); } }; -- cgit v1.2.3