7#include "gui_window_size.hpp"
8#include "mouse_cursor.hpp"
11#include "keyboard_focus_direction.hpp"
12#include "keyboard_focus_group.hpp"
14#include "../GFX/module.hpp"
15#include "../geometry/module.hpp"
16#include "../chrono.hpp"
18#include "../animator.hpp"
19#include <unordered_set>
23namespace hi::inline
v1 {
28class keyboard_bindings;
65 mouse_cursor current_mouse_cursor = mouse_cursor::None;
71 bool resizing =
false;
111 virtual
void render(utc_nanoseconds displayTimePoint);
115 virtual
void set_cursor(mouse_cursor cursor) = 0;
119 virtual
void close_window() = 0;
126 virtual
void set_size_state(gui_window_size state) noexcept = 0;
130 virtual aarectangle workspace_rectangle() const noexcept = 0;
134 virtual aarectangle fullscreen_rectangle() const noexcept = 0;
140 gui_window_size size_state() const noexcept
155 void update_mouse_target(widget_id new_target_widget,
point2 position = {})
noexcept;
198 virtual
void put_text_on_clipboard(
hi::text text) const noexcept = 0;
200 [[nodiscard]]
translate2 window_to_screen() const noexcept
205 [[nodiscard]]
translate2 screen_to_window() const noexcept
207 return ~window_to_screen();
223 box_constraints _widget_constraints = {};
232 gui_window_size _size_state = gui_window_size::normal;
236 aarectangle _restore_rectangle;
245 utc_nanoseconds last_forced_redraw = {};
249 animator<float> _animated_active = _animation_duration;
252 notifier<>::callback_token _setting_change_token;
253 observer<std::string>::callback_token _selected_theme_token;
259 widget_id _mouse_target_id;
264 widget_id _keyboard_target_id;
Functionality for labels, text and icons.
Definition of GUI event types.
@ title
Format a heading Often in bold, larger font and on a line by itself.
DOXYGEN BUG.
Definition algorithm.hpp:13
subpixel_orientation
The orientation of the RGB sub-pixels of and LCD/LED panel.
Definition subpixel_orientation.hpp:18
keyboard_focus_direction
The keyboard focus group used for finding a widget that will accept a particular focus.
Definition keyboard_focus_direction.hpp:11
keyboard_focus_group
The keyboard focus group used for finding a widget that will accept a particular focus.
Definition keyboard_focus_group.hpp:11
geometry/margins.hpp
Definition cache.hpp:11
A rectangle / parallelogram in 3D space.
Definition rectangle.hpp:20
Definition translate.hpp:15
Definition gfx_device.hpp:20
Graphics system.
Definition gui_system.hpp:27
Definition gui_window.hpp:35
hi::keyboard_bindings const & keyboard_bindings() const noexcept
Get the keyboard binding.
std::unique_ptr< widget > widget
The widget covering the complete window.
Definition gui_window.hpp:41
virtual void open_system_menu()=0
Open the system menu of the window.
void update_keyboard_target(keyboard_focus_group group, keyboard_focus_direction direction) noexcept
Change the keyboard focus to the given, previous or next widget.
void update_keyboard_target(widget_id widget, keyboard_focus_group group=keyboard_focus_group::normal) noexcept
Change the keyboard focus to the given widget.
void update_keyboard_target(widget_id widget, keyboard_focus_group group, keyboard_focus_direction direction) noexcept
Change the keyboard focus to the previous or next widget from the given widget.
aarectangle rectangle
The current rectangle of the window relative to the screen.
Definition gui_window.hpp:56
extent2 widget_size
The size of the widget.
Definition gui_window.hpp:86
notifier< void()> closing
Notifier used when the window is closing.
Definition gui_window.hpp:91
virtual void set_window_size(extent2 extent)=0
Ask the operating system to set the size of this window.
bool process_event(gui_event const &event) noexcept
Process the event.
virtual std::optional< hi::text > get_text_from_clipboard() const noexcept=0
Get text from the clipboard.
A label consisting of localizable text and an icon.
Definition label.hpp:114
A notifier which can be used to call a set of registered callbacks.
Definition notifier.hpp:25