14#include <QmitkVideoBackground.h>
15#include <QmitkRenderWindow.h>
18#include <mitkIPersistenceService.h>
20#include <opencv2/videoio/legacy/constants_c.h>
34 PERSISTENCE_GET_SERVICE_METHOD_MACRO
47 , QmitkRenderWindow* _RenderWindow
48 , QWidget * parent, Qt::WindowFlags f)
50 , m_VideoBackground(nullptr)
51 , m_RenderWindow(nullptr)
52 , m_VideoSource(nullptr)
54 , m_SliderCurrentlyMoved(false)
58 m_Controls->FileChooser->SetFileMustExist(
true);
63 d->FromPropertyList();
65 mitk::IPersistenceService* persistenceService = d->GetPersistenceService();
67 if (persistenceService !=
nullptr)
69 persistenceService->AddPropertyListReplacedObserver(
this);
73 MITK_WARN <<
"No Persistence Service available in constructor";
84 mitk::IPersistenceService* persistenceService = d->GetPersistenceService();
85 if (persistenceService !=
nullptr)
87 persistenceService->RemovePropertyListReplacedObserver(
this);
91 MITK_WARN <<
"No Persistence Service available in destructor";
105 m_Controls->GrabbingDevicePanel->setEnabled(
true);
106 m_Controls->VideoFilePanel->setEnabled(
false);
111 m_Controls->GrabbingDevicePanel->setEnabled(
false);
126 double progressRatio =
static_cast<double>(
m_Controls->VideoProgressSlider->value())
127 /
static_cast<double>(
m_Controls->VideoProgressSlider->maximum());
138 MITK_INFO <<
"repeat video clicked";
144 MITK_INFO <<
"play button clicked";
171 if (
m_Controls->UseGrabbingDeviceButton->isChecked())
174 m_Controls->VideoFileControls->setEnabled(
false);
187 MITK_ERROR <<
"Video could not be initialized!";
192 int hertz =
m_Controls->UpdateRate->text().toInt();
193 int updateTime = itk::Math::Round<int, double>(1000.0 / hertz);
204 this->
m_Controls->StopButton->setEnabled(
true);
206 if (
m_Controls->UseVideoFileButton->isChecked())
208 m_Controls->VideoFileControls->setEnabled(
true);
209 m_Controls->RepeatVideoButton->setEnabled(
true);
210 m_Controls->VideoProgressSlider->setEnabled(
true);
215 m_Controls->GrabbingDevicePanel->setEnabled(
false);
216 m_Controls->VideoFilePanel->setEnabled(
false);
217 m_Controls->UseGrabbingDeviceButton->setEnabled(
false);
218 m_Controls->UseVideoFileButton->setEnabled(
false);
219 m_Controls->UpdateRatePanel->setEnabled(
false);
227 m_Controls->UseGrabbingDeviceButton->setEnabled(
true);
228 m_Controls->UseVideoFileButton->setEnabled(
true);
229 if (
m_Controls->UseGrabbingDeviceButton->isChecked())
234 m_Controls->UpdateRatePanel->setEnabled(
true);
236 m_Controls->VideoFileControls->setEnabled(
false);
237 this->
m_Controls->StopButton->setEnabled(
false);
264 m_Controls->PlayButton->setIcon(QIcon(
":/OpenCVVideoSupportUI/media-playback-start.png"));
270 m_Controls->PlayButton->setIcon(QIcon(
":/OpenCVVideoSupportUI/media-playback-pause.png"));
282 *
m_Controls->VideoProgressSlider->maximum())));
288 if (
m_Controls->RepeatVideoButton->isChecked())
305 if (_RenderWindow ==
nullptr)
313 this->setEnabled(
false);
317 this->setEnabled(
true);
342 MITK_WARN <<
"m_MultiWidget is 0";
343 this->setEnabled(
false);
347 this->setEnabled(
true);
367 MITK_WARN <<
"m_VideoSource is 0";
368 this->setEnabled(
false);
389 mitk::IPersistenceService* persistenceService = this->GetPersistenceService();
391 if (persistenceService !=
nullptr)
393 mitk::PropertyList::Pointer propList = persistenceService->GetPropertyList(
m_Id);
394 propList->Set(
"deviceType",
q->
m_Controls->UseGrabbingDeviceButton->isChecked() ? 0 : 1);
395 propList->Set(
"grabbingDeviceNumber",
q->
m_Controls->GrabbingDeviceNumber->value());
396 propList->Set(
"updateRate",
q->
m_Controls->UpdateRate->value());
397 propList->Set(
"repeatVideo",
q->
m_Controls->RepeatVideoButton->isChecked());
401 MITK_WARN <<
"Persistence Service not available.";
407 mitk::IPersistenceService* persistenceService = this->GetPersistenceService();
409 if (persistenceService !=
nullptr)
411 mitk::PropertyList::Pointer propList = persistenceService->GetPropertyList(
m_Id);
413 bool repeatVideo =
false;
414 propList->Get(
"repeatVideo", repeatVideo);
415 q->
m_Controls->RepeatVideoButton->setChecked(repeatVideo);
418 propList->Get(
"updateRate", updateRate);
421 int grabbingDeviceNumber = 0;
422 propList->Get(
"grabbingDeviceNumber", grabbingDeviceNumber);
423 q->
m_Controls->GrabbingDeviceNumber->setValue(grabbingDeviceNumber);
426 propList->Get(
"deviceType", deviceType);
429 q->
m_Controls->UseGrabbingDeviceButton->setChecked(
true);
433 q->
m_Controls->UseVideoFileButton->setChecked(
true);
438 MITK_WARN <<
"Persistence Service not available.";
445 d->FromPropertyList();
QmitkOpenCVVideoControlsPrivate(QmitkOpenCVVideoControls *q, const std::string &id)
PERSISTENCE_GET_SERVICE_METHOD_MACRO QmitkOpenCVVideoControls * q
Offers widgets to play/pause/stop a video on a certain render window with the use of an !...
void AfterPropertyListReplaced(const std::string &id, mitk::PropertyList *propertyList) override
void IsPlaying(bool paused)
QmitkVideoBackground * m_VideoBackground
void on_RepeatVideoButton_clicked(bool checked=false)
void SetVideoBackground(QmitkVideoBackground *_VideoBackground)
void on_UseGrabbingDeviceButton_clicked(bool checked=false)
void QObjectDestroyed(QObject *obj=nullptr)
QmitkRenderWindow * m_RenderWindow
void on_VideoProgressSlider_sliderReleased()
void on_StopButton_clicked(bool checked=false)
void on_PlayButton_clicked(bool checked=false)
void NewOpenCVFrameAvailable(const IplImage *)
bool m_SliderCurrentlyMoved
mitk::OpenCVVideoSource * m_VideoSource
void on_UseVideoFileButton_clicked(bool checked=false)
Ui::QmitkOpenCVVideoControls * m_Controls
void on_VideoProgressSlider_sliderPressed()
QmitkVideoBackground * GetVideoBackground() const
void SetRenderWindow(QmitkRenderWindow *_RenderWindow)
QmitkRenderWindow * GetRenderWindow() const
void EndOfVideoSourceReached(mitk::VideoSource *videoSource)
void NewFrameAvailable(mitk::VideoSource *videoSource)
QmitkOpenCVVideoControls(QmitkVideoBackground *_VideoBackground, QmitkRenderWindow *_RenderWindow, QWidget *parent=nullptr, Qt::WindowFlags f={})
void on_VideoProgressSlider_valueChanged(int value)
~QmitkOpenCVVideoControls() override
virtual void SetVideoCameraInput(int cameraindex, bool useCVCAMLib=false)
void StopCapturing() override
void PauseCapturing() override
void StartCapturing() override
virtual const IplImage * GetCurrentFrame()
virtual int SetVideoCaptureProperty(int property_id, double value)
virtual double GetVideoCaptureProperty(int property_id)
virtual void SetVideoFileInput(const char *filename, bool repeatVideo, bool useCVCAMLib=false)