Nuitrack 1.5.0
3D スケルトン トラッキング ミドルウェア
 すべて クラス 名前空間 関数 変数 Typedefs 列挙型 列挙子 プロパティ イベント グループ ページ
GestureData.h
1 #ifndef NUITRACK_GESTUREDATA_H_
2 #define NUITRACK_GESTUREDATA_H_
3 
4 #include "nuitrack/types/ObjectData.h"
5 #include "nuitrack/types/Gesture.h"
6 #include "nuitrack/capi/GestureRecognizer_CAPI.h"
7 
8 namespace tdv
9 {
10 namespace nuitrack
11 {
16 class GestureData:public ObjectData<GestureData>
17 {
18 public:
20  GestureData(GestureRecognizerData* pimpl)
21  {
22  _pimpl = pimpl;
23  }
24 
25  virtual ~GestureData()
26  {
27  nuitrack_DestroyGestureRecognizerData(_pimpl);
28  }
29 
37  uint64_t getTimestamp() const
38  {
39  return nuitrack_GetUserGesturesTimestamp(_pimpl);
40  }
41 
45  int getNumGestures() const
46  {
47  return nuitrack_GetUserGesturesNumGestures(_pimpl);
48  }
49 
55  const std::vector<Gesture> getGestures() const
56  {
57  std::vector<Gesture> gesturesVector;
58 
59  GestureRecognizerData* dataHolder = _pimpl;
60 
61 
62  size_t numUsers = nuitrack_GetUserGesturesNumGestures(dataHolder);
63 
64  for(size_t i = 0; i < numUsers; i++)
65  {
66  Gesture g;
67  nuitrack_GetUserGesture(dataHolder, i, &g);
68  gesturesVector.push_back(g);
69  }
70 
71  return gesturesVector;
72  }
73 
74 private:
75  GestureRecognizerData* _pimpl;
76 };
77 
78 
83 class UserStateData :public ObjectData<UserStateData>
84 {
85 public:
87  UserStateData(UsersStateChanges* pimpl)
88  {
89  _pimpl = pimpl;
90  }
91 
92  virtual ~UserStateData()
93  {
94  nuitrack_DestroyUsersStateChanges(_pimpl);
95  }
96 
100  int getNumUserStates() const
101  {
102  return nuitrack_GetNumUsersStateChanges(_pimpl);
103  }
104 
112  uint64_t getTimestamp() const
113  {
114  return nuitrack_GetUsersStateChangesTimestamp(_pimpl);
115  }
116 
122  const std::vector<UserState> getUserStates() const
123  {
124  std::vector<UserState> usersVector;
125 
126  UsersStateChanges* dataHolder = _pimpl;
127 
128  size_t numUsers = nuitrack_GetNumUsersStateChanges(dataHolder);
129 
130  for(size_t i = 0; i < numUsers; i++)
131  {
132  UserState g;
133  nuitrack_GetUserStateChange(dataHolder, i, &g);
134  usersVector.push_back(g);
135  }
136 
137  return usersVector;
138  }
139 
140 private:
141  UsersStateChanges* _pimpl;
142 };
143 
144 
150 class UserGesturesStateData:public ObjectData<UserGesturesStateData>
151 {
152 public:
154  UserGesturesStateData(GestureRecognizerUserGesturesStateData* pimpl)
155  {
156  _pimpl = pimpl;
157  }
158 
159  virtual ~UserGesturesStateData()
160  {
161  nuitrack_DestroyUsersStateData(_pimpl);
162  }
163 
167  int getNumUsers() const
168  {
169  return nuitrack_GetNumUsersGestures(_pimpl);
170  }
171 
179  uint64_t getTimestamp() const
180  {
181  return nuitrack_GetUsersGesturesStateTimestamp(_pimpl);
182  }
183 
189  const std::vector<UserGesturesState> getUserGesturesStates() const
190  {
191  std::vector<UserGesturesState> usersVector;
192 
193  GestureRecognizerUserGesturesStateData* dataHolder = _pimpl;
194 
195 
196  int numUsers = nuitrack_GetNumUsersGestures(dataHolder);
197 
198  for(int i = 0; i < numUsers; i++)
199  {
200  UserGesturesState ugs;
201  UserGesturesState ugsTemp;
202 
203  nuitrack_GetUserStateData(dataHolder, i, &ugsTemp);
204  ugs.userId = ugsTemp.userId;
205  ugs.state = ugsTemp.state;
206 
207  int numGestures = nuitrack_GetNumUserGestureState(dataHolder, i);
208  for(int j = 0; j < numGestures; j++)
209  {
210  GestureState gs;
211  nuitrack_GetUserGestureState(dataHolder, i, j, &gs);
212  ugs.gestures.push_back(gs);
213  }
214 
215  usersVector.push_back(ugs);
216  }
217 
218  return usersVector;
219  }
220 
221 private:
222  GestureRecognizerUserGesturesStateData* _pimpl;
223 };
224 
225 } // namespace nuitrack
226 } // namespace tdv
227 
228 #endif /* NUITRACK_GESTUREDATA_H_ */
タイムスタンプを含むデータの汎用テンプレートです。
定義:ObjectData.h:39
ユーザーの状態に関する判断の結果を保存します。
定義:GestureData.h:83
int getNumGestures() const
検出したジェスチャの数を戻します。
定義:GestureData.h:45
ジェスチャをユーザーと紐づけして説明します。
定義:Gesture.h:41
UserGesturesStateData(GestureRecognizerUserGesturesStateData *pimpl)
定義:GestureData.h:154
ジェスチャ判断の結果を保存します。
定義:GestureData.h:16
uint64_t getTimestamp() const
マイクロ秒で表示されるタイムスタンプを戻します。
定義:GestureData.h:37
UserStateData(UsersStateChanges *pimpl)
定義:GestureData.h:87
特定のユーザーの状態を説明します。
定義:Gesture.h:58
int getNumUsers() const
トラッキングを行っているるユーザー数を戻します。
定義:GestureData.h:167
トラッキングを行っているすべてのユーザーに関するジェスチャの状態の判断結果を保存します。...
定義:GestureData.h:150
int getNumUserStates() const
ユーザーの状態の検出数を戻します。
定義:GestureData.h:100
uint64_t getTimestamp() const
マイクロ秒で表示されるタイムスタンプを戻します。
定義:GestureData.h:112
const std::vector< UserState > getUserStates() const
検出されたユーザーの状態の説明を戻します。
定義:GestureData.h:122
const std::vector< Gesture > getGestures() const
検出したジェスチャの説明を戻します。
定義:GestureData.h:55
ユーザーの状態を説明し、現在実行されているアクションに関する情報が補足で表示されます。
定義:Gesture.h:93
const std::vector< UserGesturesState > getUserGesturesStates() const
トラッキングを行っているユーザーのジェスチャに関する情報を戻します。
定義:GestureData.h:189
ジェスチャの状態を説明します。
定義:Gesture.h:75
GestureData(GestureRecognizerData *pimpl)
定義:GestureData.h:20
uint64_t getTimestamp() const
マイクロ秒で表示されるタイムスタンプを戻します。
定義:GestureData.h:179