#include "libs.h" #include "gui.h" #define BUTTON_SIZE 16 namespace Gui { ToggleButton::ToggleButton(void) { m_pressed = false; SetSize(BUTTON_SIZE, BUTTON_SIZE); } bool ToggleButton::OnMouseDown(MouseButtonEvent* e) { if(e->button == 1) { onPress.emit(); m_pressed = !m_pressed; if(m_pressed) { onChange.emit(this, true); } else { onChange.emit(this, false); } } return false; } void ToggleButton::OnActivate(void) { m_pressed = !m_pressed; if(m_pressed) { onChange.emit(this, true); } else { onChange.emit(this, false); } } void ToggleButton::GetSizeRequested(float size[2]) { size[0] = BUTTON_SIZE; size[1] = BUTTON_SIZE; } void ToggleButton::Draw(void) { if(m_pressed) { glBegin(GL_QUADS); glColor3fv(Color::bgShadow); glVertex2f(0, 0); glVertex2f(15, 0); glVertex2f(15, 15); glVertex2f(0, 15); glColor3f(.6, .6, .6); glVertex2f(2, 0); glVertex2f(15, 0); glVertex2f(15, 13); glVertex2f(2, 13); glColor3fv(Color::bg); glVertex2f(2, 2); glVertex2f(13, 2); glVertex2f(13, 13); glVertex2f(2, 13); glEnd(); } else { glBegin(GL_QUADS); glColor3f(.6, .6, .6); glVertex2f(0, 0); glVertex2f(15, 0); glVertex2f(15, 15); glVertex2f(0, 15); glColor3fv(Color::bgShadow); glVertex2f(2, 0); glVertex2f(15, 0); glVertex2f(15, 13); glVertex2f(2, 13); glColor3fv(Color::bg); glVertex2f(2, 2); glVertex2f(13, 2); glVertex2f(13, 13); glVertex2f(2, 13); glEnd(); } } }