59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
#pragma once
|
|
#include "render_2D/event/Event.h"
|
|
#include <string>
|
|
#include <variant>
|
|
namespace renderive::web {
|
|
struct Frame_Request {};
|
|
struct Viewport_Resize {
|
|
Size size;
|
|
};
|
|
enum class Demo_Mode : std::uint8_t { Am, Fm, Usb, Lsb };
|
|
struct Set_Demo_Mode {
|
|
Demo_Mode mode = Demo_Mode::Fm;
|
|
};
|
|
struct Set_Center_Frequency {
|
|
double megahertz = 102.5;
|
|
};
|
|
struct Set_Bandwidth {
|
|
double kilohertz = 1200.0;
|
|
};
|
|
struct Set_Gain {
|
|
double decibels{};
|
|
};
|
|
struct Set_Max_Hold {
|
|
bool enabled{};
|
|
};
|
|
struct Set_Smoothing {
|
|
bool enabled{};
|
|
};
|
|
struct Clear_Selection {};
|
|
enum class Gallery_Request_Kind : std::uint8_t {
|
|
Catalog,
|
|
Open,
|
|
Patch,
|
|
Action,
|
|
Observe,
|
|
Refresh,
|
|
Reset_Monitoring
|
|
};
|
|
struct Gallery_Request {
|
|
Gallery_Request_Kind kind = Gallery_Request_Kind::Catalog;
|
|
std::string message;
|
|
};
|
|
|
|
template <class... Scene_Events>
|
|
using Basic_Web_Event = std::variant<Frame_Request,
|
|
Viewport_Resize,
|
|
Scene_Events...,
|
|
Set_Demo_Mode,
|
|
Set_Center_Frequency,
|
|
Set_Bandwidth,
|
|
Set_Gain,
|
|
Set_Max_Hold,
|
|
Set_Smoothing,
|
|
Clear_Selection,
|
|
Gallery_Request>;
|
|
|
|
using Web_Event = Basic_Web_Event<Event, Pointer_Event, Wheel_Event, Key_Event>;
|
|
} // namespace renderive::web
|