MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_touch_server.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_TOUCH_SERVER_H_1613413592
12#define INCGUARD_MGL_TOUCH_SERVER_H_1613413592
13
15#include <mgl/event/mgl_event.h>
19
20namespace MGL
21{
22class InitializerDelegate;
23};
24
25namespace MGL::Input
26{
28class TouchServer final : public SharedSingleton<TouchServer>
29{
30public:
32
33 TouchServer() noexcept;
34
35 bool Initialize(STL::unique_ptr<TouchDelegate> &delegate) noexcept;
36
37 /* ------------------------------------------------------------------------- */
43 /* ------------------------------------------------------------------------- */
44 [[nodiscard]] bool IsAvailable() const noexcept
45 {
46 return _delegate != nullptr;
47 }
48
49 [[nodiscard]] const TouchState &GetState(size_t index) const noexcept;
50 [[nodiscard]] const TouchState &GetState(TouchID touchID) const noexcept;
51 [[nodiscard]] const TouchState &GetState(const Rectangle &rectangle) const noexcept;
52
53 void SetBounds(const Rectangle &bounds) noexcept;
54 void SetBounds(const Rectangle &bounds, const Vector2 &logicalSize) noexcept;
55
56private:
57 static void OnEventPreFrameUpdate(void *callbackArg, void *notifyArg) noexcept;
58 static void OnEventChangeClientSize(void *callbackArg, void *notifyArg) noexcept;
59
60 void UpdatePosition() noexcept;
61
62 STL::unique_ptr<TouchDelegate> _delegate;
63 Event::Handle _eventPreFrameUpdate;
64 Event::Handle _eventChangeClientSize;
65 TouchStateArray _stateArray;
66 TouchState _invalidState;
67
68 InputBounds _bounds;
69 Vector2 _clientSize;
70};
71} // namespace MGL::Input
72
73#endif // INCGUARD_MGL_TOUCH_SERVER_H_1613413592
74
75// vim: et ts=4 sw=4 sts=4
MGL 入力範囲
Definition mgl_input_bounds.h:21
タッチ入力デリゲート基底クラス
Definition mgl_touch_delegate.h:20
タッチサーバクラス
Definition mgl_touch_server.h:29
bool IsAvailable() const noexcept
タッチサーバが有効かどうかを返す
Definition mgl_touch_server.h:44
TouchServer() noexcept
コンストラクタ
Definition mgl_touch_server.cc:33
static STL::unique_ptr< TouchServer > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_touch_server.cc:21
void SetBounds(const Rectangle &bounds) noexcept
タッチの入力範囲を設定
Definition mgl_touch_server.cc:228
const TouchState & GetState(size_t index) const noexcept
インデックスからタッチステートを取得
Definition mgl_touch_server.cc:147
bool Initialize(STL::unique_ptr< TouchDelegate > &delegate) noexcept
初期化処理
Definition mgl_touch_server.cc:50
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL イベント
MGL 入力範囲
MGL シングルトンクラス
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
MGL タッチ入力デリゲート基底クラス
std::array< TouchState, kMultiTouchCount > TouchStateArray
タッチステートの配列
Definition mgl_touch_state.h:100
TouchID
タッチ識別番号の型
Definition mgl_touch_state.h:25
タッチステート
Definition mgl_touch_state.h:57
矩形
Definition mgl_rectangle.h:20
2Dベクトル
Definition mgl_vector2.h:23