Scroller::Scroller(Layer& layer, Widget* parent, Orientation orientation): Widget(layer, parent), m_minValue(0.f), m_maxValue(1.f), m_value(0.f), m_percentage(0.5f), m_reference(0.f), m_orientation(orientation) { const float em = layer.drawer().theme().em(); if (m_orientation == HORIZONTAL) setDesiredSize(vec2(0.f, em * 1.5f)); else setDesiredSize(vec2(em * 1.5f, 0.f)); setDraggable(true); setFocusable(true); }
Label::Label(Layer& layer, Widget* parent, const std::string& text, Alignment alignment): Widget(layer, parent), m_text(text), m_alignment(alignment) { Font& font = layer.drawer().theme().font(); const float em = font.height(); const float textWidth = font.boundsOf(m_text.c_str()).size.x; setDesiredSize(vec2(em * 2.f + textWidth, em * 2.f)); }
void Popup::init() { const float em = layer().drawer().currentEM(); setDesiredSize(vec2(em * 10.f, em * 2.f)); m_menu = new Menu(layer()); m_menu->itemSelectedSignal().connect(*this, &Popup::onItemSelected); m_menu->destroyedSignal().connect(*this, &Popup::onMenuDestroyed); setFocusable(true); }
Popup::Popup(Layer& layer, Widget* parent): Widget(layer, parent), m_selection(NO_ITEM), m_menu(nullptr) { const float em = layer.drawer().theme().em(); setDesiredSize(vec2(em * 10.f, em * 2.f)); m_menu = new Menu(layer); m_menu->itemSelected().connect(*this, &Popup::onItemSelected); m_menu->destroyed().connect(*this, &Popup::onMenuDestroyed); setFocusable(true); }
Button::Button(Layer& layer, Widget* parent, ButtonType type, const std::string& text): Widget(layer, parent), m_type(type), m_text(text), m_selected(false), m_checked(false) { Font& font = layer.drawer().theme().font(); const float em = font.height(); const float textWidth = font.boundsOf(m_text.c_str()).size.x; setDesiredSize(vec2(em * 2.f + textWidth, em * 2.f)); setDraggable(true); setFocusable(true); }