35 lines
940 B
C++
35 lines
940 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include <vamp_zero/types.hpp>
|
|
|
|
|
|
namespace vamp_zero {
|
|
|
|
enum class menu_action_kind { ACTIVATE,
|
|
PREVIOUS,
|
|
NEXT,
|
|
TEMPO_DOWN,
|
|
TEMPO_UP };
|
|
|
|
struct menu_action {
|
|
vamp_zero::menu_action_kind kind{};
|
|
std::size_t row{};
|
|
std::uint64_t revision{};
|
|
std::shared_ptr<vamp_zero::catalog const> catalog{};
|
|
};
|
|
|
|
struct menu_item {
|
|
std::string label{};
|
|
std::string detail{};
|
|
};
|
|
|
|
auto menu_count(vamp_zero::app_state const &state) -> std::size_t;
|
|
auto menu_selection(vamp_zero::app_state const &state) -> std::size_t;
|
|
auto menu_title(vamp_zero::app_state const &state) -> std::string;
|
|
auto menu_row(vamp_zero::app_state const &state, std::size_t row) -> vamp_zero::menu_item;
|
|
auto apply_menu_action(vamp_zero::app_state state, vamp_zero::menu_action const &action) -> vamp_zero::app_state;
|
|
|
|
}
|