MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_ui_event_default_delegate.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_UI_EVENT_DEFAULT_DELEGATE_H_1689319769
12#define INCGUARD_MGL_UI_EVENT_DEFAULT_DELEGATE_H_1689319769
13
18
19namespace MGL::UI
20{
21
24{
25public:
26 ~DefaultEventDelegate() noexcept override = default;
27
28 [[nodiscard]] virtual UserInputFlags OnUpdateUserInput() const noexcept;
29
30 EventResult OnUpdateUIEvent(const STL::vector<EventTarget> &targets, EventID currentFocusID) noexcept final;
31 static EventResult UpdateWithoutMove(const STL::vector<EventTarget> &targets, EventID currentFocusID, const InputScope &scope) noexcept;
32
33 /* ------------------------------------------------------------------------- */
38 /* ------------------------------------------------------------------------- */
39 constexpr void FocusRequests(EventID eventID) noexcept
40 {
41 _focusRequestID = eventID;
42 }
43
44 /* ------------------------------------------------------------------------- */
49 /* ------------------------------------------------------------------------- */
50 constexpr void SetScope(const InputScope &scope) noexcept
51 {
52 _scope = scope;
53 }
54
55 /* ------------------------------------------------------------------------- */
60 /* ------------------------------------------------------------------------- */
61 constexpr void SetEnabledMouseAndTouch(bool isEnabled) noexcept
62 {
63 _isEnabledMouseAndTouch = isEnabled;
64 }
65
66 void SetMoveTable(EventID target, const EventMoveTable &table) noexcept;
67 EventMoveTable &GetMoveTable(EventID target) noexcept;
68 [[nodiscard]] bool HasMoveTable(EventID target) const noexcept;
69
70 /* ------------------------------------------------------------------------- */
75 /* ------------------------------------------------------------------------- */
76 constexpr void SetFirstInputMoveTable(const EventMoveTable &table) noexcept
77 {
78 _firstInputMoveTable = table;
79 }
80
81 /* ------------------------------------------------------------------------- */
86 /* ------------------------------------------------------------------------- */
88 {
89 return _firstInputMoveTable;
90 }
91
92 void ClearTable() noexcept;
93
94 static EventResult UpdateKeyInput(UserInputFlags input, const EventMoveTable &table) noexcept;
95
96private:
97 static EventResult UpdateMouseEvent(const STL::vector<EventTarget> &targets, EventID currentFocusID, const InputScope &scope) noexcept;
98 static EventResult UpdateTouchEvent(const STL::vector<EventTarget> &targets, EventID currentFocusID, const InputScope &scope) noexcept;
99
100 EventID _focusRequestID{kInvalidEventID};
101 InputScope _scope;
102
103 bool _isEnabledMouseAndTouch{false};
104
105 STL::unordered_map<EventID, EventMoveTable> _moveTable;
106 EventMoveTable _firstInputMoveTable;
107};
108} // namespace MGL::UI
109
110#endif // INCGUARD_MGL_UI_EVENT_DEFAULT_DELEGATE_H_1689319769
111
112// vim: et ts=4 sw=4 sts=4
スコープを持つ列挙型に対応したビットフラグを扱うクラス
Definition mgl_bit.h:43
UIイベントのデフォルトデリゲート
Definition mgl_ui_event_default_delegate.h:24
constexpr EventMoveTable & GetFirstInputMoveTable() noexcept
初回のキー入力時のリンクテーブルを取得
Definition mgl_ui_event_default_delegate.h:87
EventResult OnUpdateUIEvent(const STL::vector< EventTarget > &targets, EventID currentFocusID) noexcept final
UIイベントの更新処理
Definition mgl_ui_event_default_delegate.cc:77
void SetMoveTable(EventID target, const EventMoveTable &table) noexcept
移動テーブルを設定
Definition mgl_ui_event_default_delegate.cc:138
constexpr void SetEnabledMouseAndTouch(bool isEnabled) noexcept
マウスとタッチの有効フラグを設定
Definition mgl_ui_event_default_delegate.h:61
void ClearTable() noexcept
テーブルをクリア
Definition mgl_ui_event_default_delegate.cc:185
EventMoveTable & GetMoveTable(EventID target) noexcept
移動ーブルを取得
Definition mgl_ui_event_default_delegate.cc:160
bool HasMoveTable(EventID target) const noexcept
移動テーブルを保持しているかを取得
Definition mgl_ui_event_default_delegate.cc:174
constexpr void SetFirstInputMoveTable(const EventMoveTable &table) noexcept
初回のキー入力時のリンクテーブルを設定
Definition mgl_ui_event_default_delegate.h:76
constexpr void SetScope(const InputScope &scope) noexcept
有効範囲の設定
Definition mgl_ui_event_default_delegate.h:50
static EventResult UpdateKeyInput(UserInputFlags input, const EventMoveTable &table) noexcept
キー入力イベントの更新処理
Definition mgl_ui_event_default_delegate.cc:280
virtual UserInputFlags OnUpdateUserInput() const noexcept
ユーザー入力の更新処理
Definition mgl_ui_event_default_delegate.cc:207
static EventResult UpdateWithoutMove(const STL::vector< EventTarget > &targets, EventID currentFocusID, const InputScope &scope) noexcept
キー入力以外のUIイベントの更新処理(外部呼び出し用)
Definition mgl_ui_event_default_delegate.cc:55
constexpr void FocusRequests(EventID eventID) noexcept
フォーカスの要求
Definition mgl_ui_event_default_delegate.h:39
Definition mgl_ui_event_delegate.h:20
入力の有効範囲
Definition mgl_ui_input_scope.h:27
MGL 矩形
MGL STLコンテナの代替
std::vector< T, Allocator< T > > vector
std::vectorの代替
Definition mgl_stl_containers.h:51
UserInput input
入力フラグ
Definition mgl_ui_event_default_delegate.cc:25
MGL UIイベントデリゲート
MGL UI入力スコープ
上下左右の移動先テーブル
Definition mgl_ui_event_defs.h:101
イベント結果
Definition mgl_ui_event_defs.h:58
イベント対象の情報
Definition mgl_ui_event_defs.h:44