You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.5 KiB
C++
71 lines
1.5 KiB
C++
2 years ago
|
#include "button.h"
|
||
|
#include <iostream>
|
||
|
|
||
|
Button::Button(const std::string &text, const std::shared_ptr<kku::CoreFactory>& factory, unsigned int font_size) :
|
||
|
_core_factory(factory)
|
||
|
{
|
||
|
_button_text = _core_factory->getText(kku::Font::Id::GUI);
|
||
|
_button_text->setString(text);
|
||
|
_button_text->setColor(kku::Color{0, 0, 0, 255});
|
||
|
_button_text->setCharacterSize(font_size);
|
||
|
}
|
||
|
|
||
|
void Button::update(const kku::microsec& dt)
|
||
|
{
|
||
|
Widget::update(dt);
|
||
|
}
|
||
|
|
||
|
void Button::display() const
|
||
|
{
|
||
|
if (_is_visible)
|
||
|
{
|
||
|
_button_content->display();
|
||
|
_button_text->display();
|
||
|
}
|
||
|
|
||
|
Widget::display();
|
||
|
}
|
||
|
|
||
|
void Button::setRect(const kku::Area<float>& rect)
|
||
|
{
|
||
|
_button_content->setRect(rect);
|
||
|
_button_text->setPosition(kku::Point{rect.left + 5,
|
||
|
rect.top + 5});
|
||
|
}
|
||
|
|
||
|
void Button::setPosition(const kku::Point& position)
|
||
|
{
|
||
|
_button_content->setPosition(position);
|
||
|
|
||
|
auto new_point = position;
|
||
|
new_point.moveBy(5.f, 5.f);
|
||
|
_button_text->setPosition(new_point);
|
||
|
}
|
||
|
|
||
|
void Button::move(const kku::Vector2<float>& delta)
|
||
|
{
|
||
|
_button_content->move(delta);
|
||
|
_button_text->move(delta);
|
||
|
Widget::move(delta);
|
||
|
}
|
||
|
|
||
|
bool Button::isUnderMouse(const kku::Point& position) const
|
||
|
{
|
||
|
return _is_visible && _button_content->contains(position);
|
||
|
}
|
||
|
|
||
|
void Button::setText(const std::string& text)
|
||
|
{
|
||
|
_button_text->setString(text);
|
||
|
}
|
||
|
|
||
|
kku::Area<float> Button::getRect() const
|
||
|
{
|
||
|
return _button_content->getRect();
|
||
|
}
|
||
|
|
||
|
kku::Point Button::getPosition() const
|
||
|
{
|
||
|
return _button_content->getPosition();
|
||
|
}
|