20#include <initializer_list>
29namespace osc {
class AppMetadata; }
30namespace osc {
class AppSettings; }
31namespace osc {
class Cursor; }
32namespace osc {
class Event; }
33namespace osc {
class FileDialogResponse; }
34namespace osc {
class Widget; }
48 template<std::destructible
T,
typename...
Args>
49 requires std::constructible_from<
T,
Args&&...>
54 return std::apply([](
auto&&...
inner_args) -> std::shared_ptr<void>
56 return std::make_shared<T>(std::forward<Args>(
inner_args)...);
93 template<std::derived_from<W
idget> TW
idget,
typename... Args>
94 requires std::constructible_from<
TWidget,
Args&&...>
99 return main_internal(
metadata, [
args_tuple = std::make_tuple(std::forward<Args>(
args)...)]()
mutable -> std::unique_ptr<Widget>
101 return std::apply([](
auto&&...
inner_args) -> std::unique_ptr<Widget>
103 return std::make_unique<TWidget>(std::forward<Args>(
inner_args)...);
156 template<std::derived_from<Event> TEvent,
typename... Args>
157 requires std::constructible_from<
TEvent,
Args&&...>
170 template<std::derived_from<Event> TEvent,
typename... Args>
171 requires std::constructible_from<
TEvent,
Args&&...>
195 void show(std::unique_ptr<Widget>);
198 template<std::derived_from<W
idget> TW
idget,
typename... Args>
199 requires std::constructible_from<
TWidget,
Args&&...>
202 show(std::make_unique<TWidget>(std::forward<Args>(
args)...));
221 template<std::derived_from<W
idget> TW
idget,
typename... Args>
222 requires std::constructible_from<
TWidget,
Args&&...>
269 std::span<const FileDialogFilter>
filters = {},
275 std::initializer_list<const FileDialogFilter>
filters = {},
281 std::span<const FileDialogFilter>{
filters},
322 std::span<const FileDialogFilter>
filters = {},
327 std::initializer_list<const FileDialogFilter>
filters = {},
351 std::function<
void(std::optional<std::filesystem::path>)>
callback,
597 std::optional<std::filesystem::path> get_resource_filepath(
const ResourcePath&)
const;
600 std::shared_ptr<void> upd_singleton(
const std::type_info&,
const std::function<std::shared_ptr<void>()>&);
606 std::unique_ptr<AppPrivate> impl_;
Definition anti_aliasing_level.h:11
Definition app_main_loop_status.h:10
Definition app_settings.h:14
const AppMetadata & metadata() const
std::string graphics_backend_vendor_string() const
WindowID main_window_id() const
static bool notify(Widget &receiver, Event &event)
AppClock::time_point startup_time() const
AppMainLoopStatus do_main_loop_step()
std::string application_name_with_version_and_buildid() const
bool vsync_enabled() const
void set_main_loop_waiting(bool)
void prompt_user_to_save_file_async(std::function< void(FileDialogResponse &&)> callback, std::span< const FileDialogFilter > filters={}, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt)
void set_main_window_mouse_confinement(std::nullopt_t)
std::string graphics_backend_renderer_string() const
static const App * try_get()
void show(std::unique_ptr< Widget >)
std::string human_readable_name() const
void prompt_user_to_select_directory_async(std::function< void(FileDialogResponse &&)> callback, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt, bool allow_many=false)
static ResourceLoader & resource_loader()
static void post_event(Widget &receiver, Args &&... args)
Definition app.h:158
bool main_window_showing() const
std::future< Screenshot > main_window_request_screenshot()
void stop_text_input(WindowID)
void main_window_clear(const Color &=Color::clear())
bool is_main_loop_waiting() const
static AppSettings & upd_settings()
void prompt_user_to_select_file_async(std::function< void(FileDialogResponse &&)> callback, std::initializer_list< const FileDialogFilter > filters={}, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt, bool allow_many=false)
Definition app.h:273
void set_main_window_mouse_confinement(std::optional< Rect > confinement_rect)
float highest_device_pixel_ratio() const
void make_main_loop_waiting()
void set_main_window_mouse_confinement(std::optional< Vector2 > confinement_point)
std::string graphics_backend_version_string() const
void pop_cursor_override()
bool has_input_focus(WindowID) const
static std::shared_ptr< T > singleton(Args &&... args)
Definition app.h:50
Vector2i main_window_pixel_dimensions() const
static bool notify(Widget &receiver, Args &&... args)
Definition app.h:172
void request_transition(Args &&... args)
Definition app.h:223
Vector2 main_window_dimensions() const
bool main_window_grabbing() const
void set_main_window_grabbing(bool)
AntiAliasingLevel max_anti_aliasing_level() const
float main_window_device_pixel_ratio() const
void start_text_input(WindowID)
void set_debug_mode(bool)
std::optional< Rect > main_window_mouse_confinement() const
void make_main_window_windowed()
static void post_event(Widget &receiver, std::unique_ptr< Event > event)
AntiAliasingLevel anti_aliasing_level() const
App(App &&) noexcept=delete
void make_main_window_fullscreen()
void set_main_window_dimensions(Vector2)
void show(Args &&... args)
Definition app.h:200
static ResourceStream open_resource(const ResourcePath &)
void set_main_window_unicode_input_rect(const Rect &screen_rect)
void push_cursor_override(const Cursor &)
void set_main_window_relative_mouse_mode(bool)
void set_vsync_enabled(bool)
void main_window_add_frame_annotation(std::string_view label, const Rect &screen_rect)
void set_prompt_initial_directory_to_show_fallback(std::optional< std::filesystem::path >)
const std::filesystem::path & user_data_directory() const
AppClock::duration frame_delta_since_startup() const
void prompt_user_to_save_file_async(std::function< void(FileDialogResponse &&)> callback, std::initializer_list< const FileDialogFilter > filters={}, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt)
Definition app.h:325
static std::optional< std::filesystem::path > resource_filepath(const ResourcePath &)
void request_invoke_on_main_thread(std::function< void()>)
void set_main_window_subtitle(std::optional< std::string_view >)
std::optional< std::filesystem::path > prompt_initial_directory_to_show_fallback()
void prompt_user_to_save_file_with_extension_async(std::function< void(std::optional< std::filesystem::path >)> callback, std::optional< std::string_view > maybe_extension=std::nullopt, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt)
AppClock::time_point frame_start_time() const
void prompt_user_to_select_file_async(std::function< void(FileDialogResponse &&)> callback, std::span< const FileDialogFilter > filters={}, std::optional< std::filesystem::path > initial_directory_to_show=std::nullopt, bool allow_many=false)
void teardown_main_loop()
void setup_main_loop(std::unique_ptr< Widget >)
void request_transition(std::unique_ptr< Widget >)
std::optional< std::filesystem::path > executable_directory() const
void set_anti_aliasing_level(AntiAliasingLevel)
static int main(const AppMetadata &metadata, Args &&... args)
Definition app.h:95
void make_main_loop_polling()
void set_main_window_showing(bool)
AppClock::duration frame_delta_since_last_frame() const
size_t num_frames_drawn() const
WindowID get_keyboard_focus() const
std::optional< Vector2 > main_window_mouse_position() const
bool is_main_window_minimized() const
bool main_window_relative_mouse_mode() const
static const AppSettings & settings()
std::string graphics_backend_shading_language_version_string() const
static std::string slurp(const ResourcePath &)
Definition file_dialog_response.h:18
Definition resource_loader.h:24
Definition resource_path.h:12
Definition resource_stream.h:11
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56
std::chrono::time_point< AppClock > time_point
Definition app_clock.h:13
std::chrono::duration< rep, period > duration
Definition app_clock.h:12
static constexpr Rgba clear()
Definition rgba.h:29