1 #ifndef NUITRACK_USERTRACKER_H_
2 #define NUITRACK_USERTRACKER_H_
6 #include "nuitrack/modules/HeaderOnlyAPI_Module.h"
7 #include "nuitrack/ModuleFunctions.h"
8 #include "nuitrack/types/Export.h"
9 #include "nuitrack/types/UserFrame.h"
10 #include "nuitrack/capi/UserTracker_CAPI.h"
11 #include "nuitrack/capi/Nuitrack_CAPI.h"
12 #include "nuitrack/utils/ExceptionTranslator.h"
13 #include "nuitrack/utils/CallbackStruct.h"
41 typedef std::shared_ptr<UserTracker>
Ptr;
50 typedef std::function<void (UserFrame::Ptr)>
OnUpdate;
63 typedef void (*OnNewUserRawFunctionPtr)(int,
UserTracker*);
74 typedef void (*OnLostUserRawFunctionPtr)(int,
UserTracker*);
85 NuitrackModule* pimpl = NULL;
86 ExceptionType exception_code = nuitrack_CreateUserTracker(&pimpl);
87 ExceptionTranslator::generateExceptionByErrorCode(exception_code);;
88 return std::shared_ptr<UserTracker>(
new UserTracker(pimpl));
96 _onUpdateCallbackStruct =
new CallbackStruct<UserFrame::Ptr>();
97 _onNewUserCallbackStruct =
new CallbackStruct<int>();
98 _onLostUserCallbackStruct =
new CallbackStruct<int>();
100 _callbackWrapper.setUserTracker(
this);
101 _callbackWrapper.setOnUpdateAddress(&onUpdateCallback);
102 _callbackWrapper.setOnNewUserAddress(&onNewUserCallback);
103 _callbackWrapper.setOnLostUserAddress(&onLostUserCallback);
105 nuitrack_registerUserTrackerCallback(_pimpl, &_callbackWrapper);
110 nuitrack_DestroyUserTracker(_pimpl);
111 destroyUserTracker();
123 return _onUpdateCallbackStruct->addCallback(callback);
134 _onUpdateCallbackStruct->deleteCallback(handler);
147 return _onNewUserCallbackStruct->addCallback(callback);
158 _onNewUserCallbackStruct->deleteCallback(handler);
171 return _onLostUserCallbackStruct->addCallback(callback);
182 _onLostUserCallbackStruct->deleteCallback(handler);
190 UserTrackerDataPtr data = nuitrack_GetUserTrackerData(_pimpl);
191 UserFrame::Ptr newFrame = UserFrame::Ptr(
new UserFrame(data));
200 return nuitrack_GetUserTrackerProcessingTime(_pimpl);
203 bool canUpdate()
const
205 return nuitrack_GetNuitrackModuleCanUpdate(_pimpl);
217 return nuitrack_GetNuitrackModuleTimestamp(_pimpl);
222 static void onUpdateCallback(UserTrackerData* userFrameImpl,
UserTracker* tracker)
224 UserFrame::Ptr newFrame = UserFrame::Ptr(
new UserFrame(userFrameImpl));
225 tracker->_onUpdateCallbackStruct->executeAllCallbacks(newFrame);
228 static void onNewUserCallback(
int usedID,
UserTracker* tracker)
230 tracker->_onNewUserCallbackStruct->executeAllCallbacks(usedID);
232 static void onLostUserCallback(
int usedID,
UserTracker* tracker)
234 tracker->_onLostUserCallbackStruct->executeAllCallbacks(usedID);
237 void destroyUserTracker()
239 if(_onUpdateCallbackStruct)
240 delete _onUpdateCallbackStruct;
241 if(_onNewUserCallbackStruct)
242 delete _onNewUserCallbackStruct;
243 if(_onLostUserCallbackStruct)
244 delete _onLostUserCallbackStruct;
247 NuitrackModule* _pimpl;
249 UserTrackerCallbackWrapper _callbackWrapper;
251 CallbackStruct<UserFrame::Ptr>* _onUpdateCallbackStruct;
252 CallbackStruct<int>* _onNewUserCallbackStruct;
253 CallbackStruct<int>* _onLostUserCallbackStruct;
float getProcessingTime() const
最後に行われたフレーム処理をミリ秒で戻します。
定義:UserTracker.h:198
Exception タイプ
Nuitrack 内部関数の考え得るエラーコードです。
定義:Error.h:20
床に関する情報を含むユーザー マップを表します。
定義:UserFrame.h:27
void disconnectOnNewUser(uint64_t handler)
ユーザー出現イベントに関するコールバックを削除します。
定義:UserTracker.h:156
static UserTracker::Ptr create()
Create the UserTracker module object.
定義:UserTracker.h:83
UserFrame::Ptr getUserFrame()
利用可能な最後の UserFrame に対してスマート ポインターを戻します。
定義:UserTracker.h:188
std::function< void(UserFrame::Ptr)> OnUpdate
ユーザー フレーム更新リクエストのためのコールバック タイプ。
定義:UserTracker.h:50
uint64_t connectOnLostUser(const OnLostUser &callback)
ユーザーのフレームアウト イベントに関するコールバックを追加します。
定義:UserTracker.h:169
std::function< void(int)> OnLostUser
ユーザーのフレームアウト イベントのためのコールバック タイプ。
定義:UserTracker.h:72
void disconnectOnUpdate(uint64_t handler)
ユーザー フレームのデータ更新リクエストのためのコールバックを削除します。
定義:UserTracker.h:132
virtual uint64_t getTimestamp()
マイクロ秒で表示される、最後に処理したデータのタイムスタンプを戻します。
定義:UserTracker.h:215
std::function< void(int)> OnNewUser
新しいユーザー出現イベントのためのコールバック タイプ。
定義:UserTracker.h:61
void disconnectOnLostUser(uint64_t handler)
ユーザーのフレームアウト イベントに関するコールバックを削除します。
定義:UserTracker.h:180
uint64_t connectOnNewUser(const OnNewUser &callback)
ユーザー出現イベントに関するコールバックを追加します。
定義:UserTracker.h:145
インターフェイスに Nuitrack ユーザー トラッカー モジュールの可能性を表します。...
定義:UserTracker.h:34
uint64_t connectOnUpdate(const OnUpdate &callback)
ユーザー フレームのデータ更新リクエストのためのコールバックを追加します。
定義:UserTracker.h:121
UserTracker(NuitrackModule *pimpl)
定義:UserTracker.h:92
std::shared_ptr< UserTracker > Ptr
UserTracker インスタンスにアクセスするためのスマート ポインター。
定義:UserTracker.h:41