#pragma once #include #include #include #include #include #include #include namespace vamp_zero { struct menu_target { luma::rect bounds{}; vamp_zero::menu_action action{}; }; auto menu_layout(luma::rect bounds, vamp_zero::app_state const &state) -> std::vector; auto draw_label(luma::draw_context &context, luma::rect bounds, std::string text, std::float32_t size, vamp_style::color color) -> void; auto draw_menu(luma::draw_context &context, luma::rect bounds, vamp_zero::app_state const &state) -> void; auto draw_header(luma::draw_context &context, luma::rect bounds, vamp_zero::app_state const &state) -> void; class menu_touch { public: auto handle(luma::touch_event const &event, luma::rect bounds, vamp_zero::app_state const &state) -> std::optional; private: std::set fingers_{}; std::optional target_{}; luma::point origin_{}; std::chrono::steady_clock::time_point pressed_{}; }; }