Go to the documentation of this file.
9 #ifndef EAGINE_APPLICATION_INTERFACE_HPP
10 #define EAGINE_APPLICATION_INTERFACE_HPP
12 #include "../interface.hpp"
13 #include "../memory/block.hpp"
14 #include "../string_span.hpp"
15 #include "../tribool.hpp"
23 struct input_sink : interface<input_sink> {
26 consume(
const input_info&,
const input_value<bool>&) noexcept = 0;
28 consume(
const input_info&,
const input_value<int>&) noexcept = 0;
30 consume(
const input_info&,
const input_value<float>&) noexcept = 0;
32 consume(
const input_info&,
const input_value<double>&) noexcept = 0;
35 struct input_provider : interface<input_provider> {
42 virtual
void input_connect(input_sink&) = 0;
43 virtual
void input_disconnect() = 0;
45 virtual
void mapping_begin(
identifier setup_id) = 0;
46 virtual
void mapping_enable(message_id signal_id) = 0;
47 virtual
void mapping_commit(
identifier setup_id) = 0;
50 struct video_provider : interface<video_provider> {
53 virtual auto instance_id() const noexcept ->
identifier = 0;
55 virtual auto is_offscreen() noexcept -> tribool = 0;
56 virtual auto has_framebuffer() noexcept -> tribool = 0;
57 virtual auto surface_size() noexcept -> std::tuple<
int,
int> = 0;
58 virtual auto surface_aspect() noexcept ->
float = 0;
60 virtual
void video_begin(execution_context&) = 0;
61 virtual
void video_end(execution_context&) = 0;
62 virtual
void video_commit(execution_context&) = 0;
65 struct audio_provider : interface<audio_provider> {
68 virtual auto instance_id() const noexcept ->
identifier = 0;
71 struct hmi_provider : interface<hmi_provider> {
73 virtual auto is_implemented() const noexcept ->
bool = 0;
74 virtual auto implementation_name() const noexcept ->
string_view = 0;
76 virtual auto is_initialized() ->
bool = 0;
77 virtual auto should_initialize(execution_context&) ->
bool = 0;
78 virtual auto initialize(execution_context&) ->
bool = 0;
79 virtual
void update(execution_context&) = 0;
80 virtual
void clean_up(execution_context&) = 0;
83 input_enumerate(
callable_ref<
void(std::shared_ptr<input_provider>)>) = 0;
85 video_enumerate(
callable_ref<
void(std::shared_ptr<video_provider>)>) = 0;
87 audio_enumerate(
callable_ref<
void(std::shared_ptr<audio_provider>)>) = 0;
90 struct framedump : interface<framedump> {
92 virtual auto initialize(execution_context&,
const video_options&)
97 virtual auto dump_frame(
108 struct application :
interface<application> {
110 virtual auto is_done() noexcept ->
bool = 0;
111 virtual
void on_video_resize() noexcept = 0;
112 virtual
void update() noexcept = 0;
113 virtual
void clean_up() noexcept = 0;
116 struct launchpad : interface<launchpad> {
118 virtual auto setup(main_ctx&, launch_options&) ->
bool {
122 virtual auto launch(execution_context&,
const launch_options&)
123 -> std::unique_ptr<application> = 0;
Application harness / wrapper code is placed in this namespace.
Definition: eagine.hpp:72
framedump_pixel_format
Pixel data format of frame dump image data.
Definition: types.hpp:102
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
basic_callable_ref< Sig, is_noexcept_function_v< Sig > > callable_ref
Alias for callable object references.
Definition: callable_ref.hpp:191
basic_block< false > block
Alias for non-const byte memory span.
Definition: block.hpp:27
audio_context_kind
Audio / sound playback and recodring context kind.
Definition: types.hpp:37
framedump_data_type
Pixel data type used to store frame dump image data.
Definition: types.hpp:72
constexpr interface(const interface &)=delete
Not copyable.
bitfield< input_value_kind > input_value_kinds
Application input value kind bitfield.
Definition: input.hpp:34
@ instance_id
The endpoint instance id has changed.
video_context_kind
Video / graphics rendering context kind.
Definition: types.hpp:20
basic_identifier< 10, 6, default_identifier_char_set, identifier_t > identifier
Default identifier type used throughout the project.
Definition: identifier.hpp:346