aboutsummaryrefslogtreecommitdiffstats
path: root/src/menu/background_color.cpp
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-09-17 01:37:56 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-13 22:41:06 +0100
commit7c290476afd877cf4be48f458a6d2666a2562c8c (patch)
treeb662247e94851cb66d005e64b7c6db062f2fef02 /src/menu/background_color.cpp
parent618926293ca497ff8e31d048e34d10954cb0e059 (diff)
downloadusdx-7c290476afd877cf4be48f458a6d2666a2562c8c.tar.gz
usdx-7c290476afd877cf4be48f458a6d2666a2562c8c.tar.xz
usdx-7c290476afd877cf4be48f458a6d2666a2562c8c.zip
menu/background_*: vertices are only recalculated if the size changed
The size of the parent component is cached by the backgrounds and the vertices to draw the backgrounds are only calculated again, if the size of the parent component changed.
Diffstat (limited to 'src/menu/background_color.cpp')
-rw-r--r--src/menu/background_color.cpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/menu/background_color.cpp b/src/menu/background_color.cpp
index f55763b7..031ffe26 100644
--- a/src/menu/background_color.cpp
+++ b/src/menu/background_color.cpp
@@ -28,26 +28,33 @@
namespace usdx
{
BackgroundColor::BackgroundColor(const DrawableControl &control)
- : Background(control), color(0,0,0)
+ : Background(control), color(0,0,0), size(0, 0)
{
}
BackgroundColor::BackgroundColor(const DrawableControl &control,
const RgbColor &color) :
- Background(control), color(color)
+ Background(control), color(color), size(0, 0)
{
}
- void BackgroundColor::draw()
+ void BackgroundColor::updateVertices() {
+ vertices[0] = 0;
+ vertices[1] = get_parent().get_height();
+ vertices[2] = get_parent().get_width();
+ vertices[3] = get_parent().get_height();
+ vertices[4] = get_parent().get_width();
+ vertices[5] = 0;
+ vertices[6] = 0;
+ vertices[7] = 0;
+ }
+
+ void BackgroundColor::draw(void)
{
- 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;
+ if (size != get_parent().get_size()) {
+ this->updateVertices();
+ size = get_parent().get_size();
+ }
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);