NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkUltrasonixDataSourceService.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 #ifndef niftkUltrasonixDataSourceService_h
15 #define niftkUltrasonixDataSourceService_h
16 
17 #include <niftkIGIDataSource.h>
25 
26 #include <QObject>
27 #include <QSet>
28 #include <QMutex>
29 #include <QString>
30 
31 namespace niftk
32 {
33 
41  : public QObject
42  , public IGIDataSource
43  , public IGILocalDataSourceI
46 {
47 
48 public:
49 
51  mitkNewMacro3Param(UltrasonixDataSourceService, QString, const IGIDataSourceProperties&, mitk::DataStorage::Pointer)
52 
56  virtual void StartPlayback(niftk::IGIDataType::IGITimeType firstTimeStamp,
57  niftk::IGIDataType::IGITimeType lastTimeStamp) override;
58 
62  void PlaybackData(niftk::IGIDataType::IGITimeType requestedTimeStamp) override;
63 
67  virtual void StopPlayback() override;
68 
72  virtual std::vector<IGIDataItemInfo> Update(const niftk::IGIDataType::IGITimeType& time) override;
73 
77  virtual void CleanBuffer() override;
78 
82  virtual void GrabData() override;
83 
87  bool ProbeRecordedData(niftk::IGIDataType::IGITimeType* firstTimeStampInStore,
88  niftk::IGIDataType::IGITimeType* lastTimeStampInStore) override;
89 
93  virtual void SetProperties(const IGIDataSourceProperties& properties) override;
94 
98  virtual IGIDataSourceProperties GetProperties() const override;
99 
100 protected:
101 
102  UltrasonixDataSourceService(QString factoryName,
103  const IGIDataSourceProperties& properties,
104  mitk::DataStorage::Pointer dataStorage
105  );
106  virtual ~UltrasonixDataSourceService();
107 
108 private:
109 
110  UltrasonixDataSourceService(const UltrasonixDataSourceService&); // deliberately not implemented
111  UltrasonixDataSourceService& operator=(const UltrasonixDataSourceService&); // deliberately not implemented
112 
113  void SaveItem(niftk::IGIDataType::Pointer item) override;
114 
115  static niftk::IGIDataSourceLocker s_Lock;
116  QMutex m_Lock;
117  int m_ChannelNumber;
118  niftk::IGIDataType::IGIIndexType m_FrameId;
119  niftk::IGIDataSourceBuffer::Pointer m_Buffer;
120  niftk::IGIDataSourceBackgroundDeleteThread* m_BackgroundDeleteThread;
121  niftk::IGIDataSourceGrabbingThread* m_DataGrabbingThread;
122  std::set<niftk::IGIDataType::IGITimeType> m_PlaybackIndex;
123 
124 }; // end class
125 
126 } // end namespace
127 
128 #endif
virtual void SetProperties(const IGIDataSourceProperties &properties) override
IGIDataSourceI::SetProperties()
Definition: niftkUltrasonixDataSourceService.cxx:102
Abstract base class for local data sources.
Definition: niftkIGILocalDataSourceI.h:29
mitkClassMacroItkParent(UltrasonixDataSourceService, IGIDataSource) mitkNewMacro3Param(UltrasonixDataSourceService
void PlaybackData(niftk::IGIDataType::IGITimeType requestedTimeStamp) override
Definition: niftkUltrasonixDataSourceService.cxx:175
virtual IGIDataSourceProperties GetProperties() const override
IGIDataSourceI::GetProperties()
Definition: niftkUltrasonixDataSourceService.cxx:116
Thread class, based on IGITimerBasedThread to simply call "CleanBuffer".
Definition: niftkIGIDataSourceBackgroundDeleteThread.h:29
Abstract base class for data sources that can clean their own buffer.
Definition: niftkIGICleanableDataSourceI.h:27
QString
Definition: niftkUltrasonixDataSourceService.h:51
virtual void StopPlayback() override
Definition: niftkUltrasonixDataSourceService.cxx:163
Definition: niftkMeshSmoother.cxx:19
Definition: ReceptorMemberCommandTest.cxx:25
virtual std::vector< IGIDataItemInfo > Update(const niftk::IGIDataType::IGITimeType &time) override
Definition: niftkUltrasonixDataSourceService.cxx:222
virtual void CleanBuffer() override
Definition: niftkUltrasonixDataSourceService.cxx:129
Abstract base class for IGI Data, such as objects containing tracking data, video frames or ultrasoun...
Definition: niftkIGIDataType.h:35
Provides a feed of images from Ultrasonix MDP, as an IGIDataSourceServiceI.
Definition: niftkUltrasonixDataSourceService.h:40
bool ProbeRecordedData(niftk::IGIDataType::IGITimeType *firstTimeStampInStore, niftk::IGIDataType::IGITimeType *lastTimeStampInStore) override
Definition: niftkUltrasonixDataSourceService.cxx:181
Manages a buffer of niftk::IGIDataType.
Definition: niftkIGIDataSourceBuffer.h:42
QMap< QString, QVariant > IGIDataSourceProperties
Definition: niftkIGIDataSourceI.h:33
const IGIDataSourceProperties virtual mitk::DataStorage::Pointer void StartPlayback(niftk::IGIDataType::IGITimeType firstTimeStamp, niftk::IGIDataType::IGITimeType lastTimeStamp) override
Definition: niftkUltrasonixDataSourceService.cxx:137
Info class to describe current state, so that GUI can display status.
Definition: niftkIGIDataSourceI.h:47
Abstract base class for IGI DataSources, such as objects that produce tracking data, video frames or ultrasound frames.
Definition: niftkIGIDataSource.h:47
Helper class to provide a class-level counter.
Definition: niftkIGIDataSourceLocker.h:29
virtual void GrabData() override
Definition: niftkUltrasonixDataSourceService.cxx:193
Definition: niftkIGIDataSourceGrabbingThread.h:29
Definition: niftkExceptionObject.h:21
Abstract base class for data sources that can clean their own buffer.
Definition: niftkIGIBufferedSaveableDataSourceI.h:28