#include "pch.h" #include "log.h" #include "node_checkbox.h" Node* NodeCheckBox::clone_instantiate() const { return new NodeCheckBox(); } void NodeCheckBox::clone_children(Node* dest) const { Node::clone_children(dest); NodeCheckBox* n = static_cast(dest); n->m_outer = (NodeBorder*)n->m_children[0].get(); n->m_inner = (NodeBorder*)n->m_outer->m_children[0].get(); n->m_mouse_ignore = false; } void NodeCheckBox::init() { m_outer = new NodeBorder(); m_inner = new NodeBorder(); add_child(m_outer); m_outer->add_child(m_inner); m_outer->init(); m_outer->m_color = { .3, .3, .3, 1 }; m_outer->SetAlign(YGAlignCenter); m_outer->SetJustify(YGJustifyCenter); m_outer->SetPadding(5, 5, 5, 5); m_outer->SetWidthP(100); m_outer->SetHeightP(100); m_outer->m_mouse_ignore = false; m_inner->init(); m_inner->SetWidthP(100); m_inner->SetHeightP(100); m_inner->m_border_color = glm::vec4(.8, .8, .8, 1); m_inner->m_thinkness = 1; m_inner->m_color = glm::vec4(.8, .8, .8, 1); m_mouse_ignore = false; } void NodeCheckBox::create() { m_outer->create(); m_inner->create(); } kEventResult NodeCheckBox::handle_event(Event* e) { Node::handle_event(e); switch (e->m_type) { case kEventType::MouseEnter: break; case kEventType::MouseLeave: break; case kEventType::MouseDownL: break; case kEventType::MouseUpL: checked = !checked; if (on_value_changed) on_value_changed(this, checked); break; default: return kEventResult::Available; break; } return kEventResult::Consumed; } void NodeCheckBox::draw() { m_inner->m_color = checked ? glm::vec4(.4, .4, .4, 1) : glm::vec4(.8, .8, .8, 1); Node::draw(); }