#include "bpmcalculatorwidget.h" BPMCalculatorWidget::BPMCalculatorWidget() : _pressed(false) { _button_text.setFillColor(sf::Color::Black); _button_content.setFillColor(sf::Color::White); } void BPMCalculatorWidget::input(const sf::Event& event) { switch (event.type) { default: break; case sf::Event::MouseButtonPressed: if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) { _pressed = true; _button_content.setFillColor(sf::Color(155, 155, 155)); } break; case sf::Event::MouseButtonReleased: if (_pressed) { _button_content.setFillColor(sf::Color::White); _pressed = false; if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) _on_click_callback(); } break; } Widget::input(event); } void BPMCalculatorWidget::update() { Widget::update(); } void BPMCalculatorWidget::draw(sf::RenderTarget& target, sf::RenderStates states) const { target.draw(_button_content, states); target.draw(_button_text, states); Widget::draw(target, states); } void BPMCalculatorWidget::setRect(const sf::FloatRect& rect) { _button_content.setPosition(rect.left, rect.top); _button_content.setSize({rect.width, rect.height}); } void BPMCalculatorWidget::setPosition(const sf::Vector2f &position) { _button_content.setPosition(position); } bool BPMCalculatorWidget::isUnderMouse(int mouse_x, int mouse_y) const { return _button_content.getGlobalBounds().contains(mouse_x, mouse_y); }