Nuitrack 1.5.0
3D スケルトン トラッキング ミドルウェア
 すべて クラス 名前空間 関数 変数 Typedefs 列挙型 列挙子 プロパティ イベント グループ ページ
ColorSensor.h
1 #ifndef NUITRACK_COLORSENSOR_H_
2 #define NUITRACK_COLORSENSOR_H_
3 
4 #include <vector>
5 
6 #include "nuitrack/modules/HeaderOnlyAPI_Module.h"
7 #include "nuitrack/ModuleFunctions.h"
8 #include "nuitrack/types/Export.h"
9 #include "nuitrack/utils/ExceptionTranslator.h"
10 #include "nuitrack/types/RGBFrame.h"
11 #include "nuitrack/types/Vector3.h"
12 #include "nuitrack/types/OutputMode.h"
13 #include "nuitrack/capi/Nuitrack_CAPI.h"
14 #include "nuitrack/capi/ColorSensor_CAPI.h"
15 #include "nuitrack/utils/CallbackStruct.h"
16 
17 #include <iostream>
18 
19 namespace tdv
20 {
21 namespace nuitrack
22 {
34 class ColorSensor :public tdv::nuitrack::HeaderOnlyAPI_Module
35 {
36 public:
37 
42  typedef std::shared_ptr<ColorSensor> Ptr;
43 
50  typedef std::function<void (RGBFrame::Ptr)> OnNewFrame;
51 
60  {
61  NuitrackModule* pimpl = NULL;
62  ExceptionType exception_code = nuitrack_CreateColorSensor(&pimpl);
63  ExceptionTranslator::generateExceptionByErrorCode(exception_code);
64  return std::shared_ptr<ColorSensor>(new ColorSensor(pimpl));
65  }
66 
68  ColorSensor(NuitrackModule* pimpl)
69  {
70  _pimpl = pimpl;
71 
72  _callbackStruct = new CallbackStruct<RGBFrame::Ptr>();
73  _callbackWrapper.setColorSensor(this);
74  _callbackWrapper.setFunctionAddress(&onNewFrameCallback);
75  nuitrack_registerColorSensorCallback(_pimpl, &_callbackWrapper);
76  }
77 
78  virtual ~ColorSensor()
79  {
80  nuitrack_DestroyColorSensor(_pimpl);
81  if(_callbackStruct)
82  delete _callbackStruct;
83  }
84 
88  const OutputMode getOutputMode() const
89  {
90  OutputMode mode;
91  nuitrack_GetColorSensorOutputMode(_pimpl, &mode);
92  return mode;
93  }
94 
102  uint64_t connectOnNewFrame(const OnNewFrame& callback)
103  {
104  return _callbackStruct->addCallback(callback);
105  }
106 
107 
114  void disconnectOnNewFrame(uint64_t handler)
115  {
116  _callbackStruct->deleteCallback(handler);
117  }
118 
123  RGBFrame::Ptr getColorFrame()
124  {
125  ColorSensorDataPtr data = nuitrack_GetColorSensorData(_pimpl);
126  RGBFrame::Ptr newFrame = RGBFrame::Ptr(new RGBFrame(data));
127  return newFrame;
128  }
129 
130  bool canUpdate() const
131  {
132  return nuitrack_GetNuitrackModuleCanUpdate(_pimpl);
133  }
134 
141  virtual uint64_t getTimestamp()
142  {
143  return nuitrack_GetNuitrackModuleTimestamp(_pimpl);
144  }
145 
146 private:
147 
148  static void onNewFrameCallback(ColorSensorData* colorFrameImpl, ColorSensor* sensor)
149  {
150  RGBFrame::Ptr newFrame = RGBFrame::Ptr(new RGBFrame(colorFrameImpl));
151  sensor->_callbackStruct->executeAllCallbacks(newFrame);
152  }
153 
154  NuitrackModule* _pimpl;
155 
156  ColorSensorCallbackWrapper _callbackWrapper;
157 
158  CallbackStruct<RGBFrame::Ptr>* _callbackStruct;
159 
160 
161 };
162 
163 } /* namespace nuitrack */
164 } /* namespace tdv */
165 
166 #endif /* NUITRACK_COLORSENSOR_H_ */
RGBFrame::Ptr getColorFrame()
利用可能な最後の RGBFrame に対してスマート ポインターを戻します。
定義:ColorSensor.h:123
ColorSensor(NuitrackModule *pimpl)
定義:ColorSensor.h:68
Exception タイプ
Nuitrack 内部関数の考え得るエラーコードです。
定義:Error.h:20
uint64_t connectOnNewFrame(const OnNewFrame &callback)
新しい色フレーム リクエストに関するコールバックを追加します。
定義:ColorSensor.h:102
センサー データ プロパティを保存します。
定義:OutputMode.h:13
const OutputMode getOutputMode() const
色センサーから出力モードを戻します。
定義:ColorSensor.h:88
void disconnectOnNewFrame(uint64_t handler)
新しい色フレーム リクエストに関するコールバックを削除します。
定義:ColorSensor.h:114
std::function< void(RGBFrame::Ptr)> OnNewFrame
新しい色フレームリクエストのコールバック タイプ。
定義:ColorSensor.h:50
std::shared_ptr< ColorSensor > Ptr
ColorSensor インスタンスにアクセスするためのスマート ポインター。
定義:ColorSensor.h:42
フレームの色マップを保存します。
定義:RGBFrame.h:16
インターフェイスに Nuitrack カラー センサー モジュールの可能性を表します。...
定義:ColorSensor.h:34
virtual uint64_t getTimestamp()
マイクロ秒で表示される、最後に処理したデータのタイムスタンプを戻します。
定義:ColorSensor.h:141
static ColorSensor::Ptr create()
ColorSensor モジュール オブジェクトを作成します。
定義:ColorSensor.h:59