Nuitrack 1.5.0
3D スケルトン トラッキング ミドルウェア
 すべて クラス 名前空間 関数 変数 Typedefs 列挙型 列挙子 プロパティ イベント グループ ページ
IssuesData.h
1 #ifndef NUITRACK_MIDDLEWARE_ISSUES_DATA_H_
2 #define NUITRACK_MIDDLEWARE_ISSUES_DATA_H_
3 
4 #include <map>
5 #include <memory>
6 #include <string.h>
7 
8 #include "nuitrack/capi/IssueTracker_CAPI.h"
9 #include "nuitrack/types/ObjectData.h"
10 #include "nuitrack/types/Issue.h"
11 #include "nuitrack/types/Export.h"
12 #include "nuitrack/types/FrameBorderIssue.h"
13 #include "nuitrack/types/OcclusionIssue.h"
14 #include "nuitrack/types/SensorIssue.h"
15 
16 namespace tdv
17 {
18 namespace nuitrack
19 {
25 {
26 public:
28  IssuesData(IssueTrackerData* pimpl)
29  {
30  _pimpl = pimpl;
31  }
32 
33  virtual ~IssuesData()
34  {
35  nuitrack_DestroyIssueTrackerData(_pimpl);
36  }
37 
41  typedef std::shared_ptr<IssuesData> Ptr;
42 
48  template<typename T> std::shared_ptr<T> NUITRACK_LOCAL getIssue() const
49  {
50  std::shared_ptr<T> result;
51  if(strcmp(T::getType().c_str(), "SensorIssue") == 0)
52  {
53  Issue* issue = NULL;
54 
55  int bufferSize = 300;
56  char* buffer = new char[bufferSize];
57  if(nuitrack_GetSensorIssue(_pimpl, buffer, bufferSize))
58  {
59  issue = new SensorIssue(SENSOR_ISSUE, std::string(buffer));
60  }
61 
62  delete[] buffer;
63  result = std::shared_ptr<T>(static_cast<T*>(issue));
64  }
65  return result;
66  }
67 
74  template<typename T> std::shared_ptr<T> NUITRACK_LOCAL getUserIssue(int userId) const
75  {
76  std::shared_ptr<T> result;
77 
78  if(strcmp(T::getType().c_str(), "OcclusionIssue") == 0)
79  {
80  bool occlusion = nuitrack_GetOcclusionIssue(_pimpl, userId);
81  Issue* issue = NULL;
82  if(occlusion)
83  {
84  issue = new OcclusionIssue();
85  }
86  result = std::shared_ptr<T>(static_cast<T*>(issue));
87  }
88 
89  if(strcmp(T::getType().c_str(), "FrameBorderIssue") == 0)
90  {
91  bool left = false;
92  bool right = false;
93  bool top = false;
94  nuitrack_GetFrameBorderIssue(_pimpl, userId, &left, &right, &top);
95  Issue* issue = NULL;
96  if(left || right || top)
97  {
98  issue = new FrameBorderIssue(left, right, top);
99  }
100  result = std::shared_ptr<T>(static_cast<T*>(issue));
101  }
102  return result;
103  }
104 
105 protected:
107  IssueTrackerData* _pimpl;
108 };
109 
110 
111 } /* namespace nuitrack */
112 } /* namespace tdv */
113 
114 #endif /* NUITRACK_MIDDLEWARE_ISSUES_DATA_H_ */
IssueTrackerData * _pimpl
定義:IssuesData.h:107
std::shared_ptr< T > NUITRACK_LOCAL getUserIssue(int userId) const
検出した、ユーザー関連の問題に関する情報を戻します。
定義:IssuesData.h:74
センサーの問題を表します。
定義:SensorIssue.h:18
IssuesData(IssueTrackerData *pimpl)
定義:IssuesData.h:28
issue に関する一般的な情報を保存します。
定義:Issue.h:30
オクルージョン (手前にある物体が背後にある物体を隠す状態) の問題を表します。
定義:OcclusionIssue.h:14
std::shared_ptr< T > NUITRACK_LOCAL getIssue() const
検出した、センサー関連の問題に関する情報を戻します。
定義:IssuesData.h:48
問題の検出に関する結果を保存します。
定義:IssuesData.h:24
std::shared_ptr< IssuesData > Ptr
IssuesData インスタンスにアクセスするためのスマート ポインター。
定義:IssuesData.h:41
フレーム枠の問題を表します。
定義:FrameBorderIssue.h:19