forked from pioneerspacesim/pioneer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GuiMeterBar.cpp
47 lines (38 loc) · 1.06 KB
/
GuiMeterBar.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "Gui.h"
#define METERBAR_PADDING 5.0f
#define METERBAR_BAR_HEIGHT 8.0f
namespace Gui {
MeterBar::MeterBar(float width, const char *label, const ::Color &graphCol)
{
m_requestedWidth = width;
m_barValue = 0;
m_barColor = graphCol;
m_label = new Gui::Label(label);
Add(m_label, METERBAR_PADDING, METERBAR_PADDING + METERBAR_BAR_HEIGHT);
m_label->Show();
}
void MeterBar::Draw()
{
float size[2];
GetSize(size);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.0f,1.0f,1.0f,.125f);
Gui::Theme::DrawRoundEdgedRect(size, 5.0);
glPushMatrix();
glColor4fv(m_barColor);
glTranslatef(METERBAR_PADDING, METERBAR_PADDING, 0.0f);
size[0] = m_barValue * (size[0] - 2.0f*METERBAR_PADDING);
size[1] = METERBAR_BAR_HEIGHT;
Gui::Theme::DrawRoundEdgedRect(size, 3.0f);
glPopMatrix();
glBlendFunc(GL_ONE, GL_ZERO);
glDisable(GL_BLEND);
Gui::Fixed::Draw();
}
void MeterBar::GetSizeRequested(float size[2])
{
size[0] = m_requestedWidth;
size[1] = METERBAR_PADDING*2.0f + METERBAR_BAR_HEIGHT + Gui::Screen::GetFontHeight();
}
}