7#include "gui_window.hpp"
8#include "gui_window_win32.hpp"
9#include "gui_system_delegate.hpp"
10#include "../unicode/unicode_bidi_class.hpp"
11#include "../GFX/gfx_device.hpp"
12#include "../thread.hpp"
13#include "../unfair_recursive_mutex.hpp"
14#include "../observable.hpp"
21namespace hi::inline v1 {
26class keyboard_bindings;
39 thread_id
const thread_id;
51 unicode_bidi_class writing_direction = unicode_bidi_class::L;
77 virtual void init() noexcept
79 if (
auto delegate = _delegate.lock()) {
80 delegate->init(*
this);
84 virtual void deinit() noexcept
86 if (
auto delegate = _delegate.lock()) {
87 delegate->deinit(*
this);
103 template<
typename... Args>
106 hi_axiom(is_gui_thread());
109 auto window = std::make_shared<gui_window_win32>(*
this, std::forward<Args>(args)...);
119 return thread_id == current_thread_id();
140 hi::theme
const *_theme =
nullptr;
void * os_handle
Minimum offset between two objects to avoid false sharing.
Definition architecture.hpp:263
Graphics system.
Definition gfx_system.hpp:21
Graphics system.
Definition gui_system.hpp:30
std::shared_ptr< gui_window > make_window(Args &&...args)
Create a new window.
Definition gui_system.hpp:104
bool is_gui_thread() const noexcept
Check if this thread is the same as the gui thread.
Definition gui_system.hpp:117
static std::unique_ptr< gui_system > make_unique(std::weak_ptr< gui_system_delegate > delegate={}) noexcept
Make a gui_system instance.
virtual void init() noexcept
Initialize after construction.
Definition gui_system.hpp:77
void request_reconstrain() noexcept
Request all windows to constrain.
Definition gui_system_delegate.hpp:11
Definition keyboard_bindings.hpp:17
theme_book keeps track of multiple themes.
Definition theme_book.hpp:19
An observable value.
Definition observable.hpp:359
font_book keeps track of multiple fonts.
Definition font_book.hpp:30