HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
system_menu_widget.hpp
1// Copyright Take Vos 2020.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "widget.hpp"
8#include "icon_widget.hpp"
9#include "../icon.hpp"
10#include <memory>
11#include <string>
12#include <array>
13
14namespace hi::inline v1 {
15
16class system_menu_widget final : public widget {
17public:
18 using super = widget;
19
21
23
24 system_menu_widget(gui_window &window, widget *parent) noexcept;
25
26 template<typename Icon>
27 system_menu_widget(gui_window &window, widget *parent, Icon &&icon) noexcept : system_menu_widget(window, parent)
28 {
29 this->icon = std::forward<Icon>(icon);
30 }
31
33 [[nodiscard]] generator<widget *> children() const noexcept override
34 {
35 co_yield _icon_widget.get();
36 }
37
38 widget_constraints const &set_constraints() noexcept override;
39 void set_layout(widget_layout const &layout) noexcept override;
40 void draw(draw_context const &context) noexcept override;
41 [[nodiscard]] hitbox hitbox_test(point3 position) const noexcept override;
43private:
44 aarectangle _icon_rectangle;
46
47 aarectangle _system_menu_rectangle;
48};
49
50} // namespace hi::inline v1
A return value for a generator-function.
Definition generator.hpp:27
Class which represents an axis-aligned rectangle.
Definition axis_aligned_rectangle.hpp:20
Draw context for drawing using the HikoGUI shaders.
Definition draw_context.hpp:51
Definition gui_window.hpp:40
Definition hitbox.hpp:16
An image, in different formats.
Definition icon.hpp:19
An observable value.
Definition observable.hpp:356
Definition system_menu_widget.hpp:16
An interactive graphical object as part of the user-interface.
Definition widget.hpp:40
Definition widget_constraints.hpp:12
Definition widget_layout.hpp:17