diff --git a/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.cpp b/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.cpp index e0d721c99d..6f0d500588 100644 --- a/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.cpp +++ b/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.cpp @@ -1,333 +1,346 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ // Blueberry #include #include //Mitk #include #include #include #include #include // Qmitk #include "UltrasoundSupport.h" #include // Qt #include // Ultrasound #include "mitkUSDevice.h" #include "QmitkUSAbstractCustomWidget.h" #include #include #include "usServiceReference.h" #include "internal/org_mitk_gui_qt_ultrasound_Activator.h" const std::string UltrasoundSupport::VIEW_ID = "org.mitk.views.ultrasoundsupport"; void UltrasoundSupport::SetFocus() { } void UltrasoundSupport::CreateQtPartControl( QWidget *parent ) { - m_Timer = new QTimer(this); - - // create GUI widgets from the Qt Designer's .ui file - m_Controls.setupUi( parent ); - - connect( m_Controls.m_DeviceManagerWidget, SIGNAL(NewDeviceButtonClicked()), this, SLOT(OnClickedAddNewDevice()) ); // Change Widget Visibilities - connect( m_Controls.m_DeviceManagerWidget, SIGNAL(NewDeviceButtonClicked()), this->m_Controls.m_NewVideoDeviceWidget, SLOT(CreateNewDevice()) ); // Init NewDeviceWidget - connect( m_Controls.m_ActiveVideoDevices, SIGNAL(ServiceSelectionChanged(us::ServiceReferenceU)), this, SLOT(OnChangedActiveDevice()) ); - connect( m_Controls.m_ShowImageStream, SIGNAL(clicked()), this, SLOT(OnChangedActiveDevice()) ); - connect( m_Controls.m_NewVideoDeviceWidget, SIGNAL(Finished()), this, SLOT(OnNewDeviceWidgetDone()) ); // After NewDeviceWidget finished editing - connect( m_Controls.m_FrameRate, SIGNAL(valueChanged(int)), this, SLOT(OnChangedFramerateLimit(int)) ); - connect( m_Controls.m_FreezeButton, SIGNAL(clicked()), this, SLOT(OnClickedFreezeButton()) ); - connect( m_Timer, SIGNAL(timeout()), this, SLOT(DisplayImage())); - - // Initializations - m_Controls.m_NewVideoDeviceWidget->setVisible(false); - std::string filter = "(&(" + us::ServiceConstants::OBJECTCLASS() + "=" - + "org.mitk.services.UltrasoundDevice)(" - + mitk::USDevice::GetPropertyKeys().US_PROPKEY_ISACTIVE + "=true))"; - m_Controls.m_ActiveVideoDevices->Initialize( - mitk::USDevice::GetPropertyKeys().US_PROPKEY_LABEL ,filter); - m_Controls.m_ActiveVideoDevices->SetAutomaticallySelectFirstEntry(true); - - // Create Node for US Stream - if (m_Node.IsNull()) - { - m_Node = mitk::DataNode::New(); - m_Node->SetName("US Support Viewing Stream"); - //create a dummy image (gray values 0..255) for correct initialization of level window, etc. - mitk::Image::Pointer dummyImage = mitk::ImageGenerator::GenerateRandomImage(100, 100, 1, 1, 1, 1, 1, 255,0); - m_Node->SetData(dummyImage); - } - - m_Controls.tabWidget->setTabEnabled(1, false); +m_Timer = new QTimer(this); + +// create GUI widgets from the Qt Designer's .ui file +m_Controls.setupUi( parent ); + +connect( m_Controls.m_DeviceManagerWidget, SIGNAL(NewDeviceButtonClicked()), this, SLOT(OnClickedAddNewDevice()) ); // Change Widget Visibilities +connect( m_Controls.m_DeviceManagerWidget, SIGNAL(NewDeviceButtonClicked()), this->m_Controls.m_NewVideoDeviceWidget, SLOT(CreateNewDevice()) ); // Init NewDeviceWidget +connect( m_Controls.m_ActiveVideoDevices, SIGNAL(ServiceSelectionChanged(us::ServiceReferenceU)), this, SLOT(OnChangedActiveDevice()) ); +connect( m_Controls.m_ShowImageStream, SIGNAL(clicked()), this, SLOT(OnChangedActiveDevice()) ); +connect( m_Controls.m_NewVideoDeviceWidget, SIGNAL(Finished()), this, SLOT(OnNewDeviceWidgetDone()) ); // After NewDeviceWidget finished editing +connect( m_Controls.m_FrameRate, SIGNAL(valueChanged(int)), this, SLOT(OnChangedFramerateLimit(int)) ); +connect( m_Controls.m_FreezeButton, SIGNAL(clicked()), this, SLOT(OnClickedFreezeButton()) ); +connect( m_Timer, SIGNAL(timeout()), this, SLOT(DisplayImage())); + +// Initializations +m_Controls.m_NewVideoDeviceWidget->setVisible(false); +std::string filter = "(&(" + us::ServiceConstants::OBJECTCLASS() + "=" ++ "org.mitk.services.UltrasoundDevice)(" ++ mitk::USDevice::GetPropertyKeys().US_PROPKEY_ISACTIVE + "=true))"; +m_Controls.m_ActiveVideoDevices->Initialize( +mitk::USDevice::GetPropertyKeys().US_PROPKEY_LABEL ,filter); +m_Controls.m_ActiveVideoDevices->SetAutomaticallySelectFirstEntry(true); + +// Create Node for US Stream +if (m_Node.IsNull()) +{ +m_Node = mitk::DataNode::New(); +m_Node->SetName("US Support Viewing Stream"); +//create a dummy image (gray values 0..255) for correct initialization of level window, etc. +mitk::Image::Pointer dummyImage = mitk::ImageGenerator::GenerateRandomImage(100, 100, 1, 1, 1, 1, 1, 255,0); +m_Node->SetData(dummyImage); +m_OldGeometry = dummyImage->GetGeometry(); +} + +m_Controls.tabWidget->setTabEnabled(1, false); } void UltrasoundSupport::OnClickedAddNewDevice() { - m_Controls.m_NewVideoDeviceWidget->setVisible(true); - m_Controls.m_DeviceManagerWidget->setVisible(false); - m_Controls.m_Headline->setText("Add New Video Device:"); - m_Controls.m_WidgetActiveDevices->setVisible(false); +m_Controls.m_NewVideoDeviceWidget->setVisible(true); +m_Controls.m_DeviceManagerWidget->setVisible(false); +m_Controls.m_Headline->setText("Add New Video Device:"); +m_Controls.m_WidgetActiveDevices->setVisible(false); } void UltrasoundSupport::DisplayImage() { - //Update device - m_Device->Modified(); - m_Device->Update(); - - //Update data node - mitk::Image::Pointer curOutput = m_Device->GetOutput(); - m_Node->SetData(curOutput); - curOutput->Modified(); - - //Only update the view if the image is shown - if(m_Controls.m_ShowImageStream->isChecked()) - { - this->RequestRenderWindowUpdate(); - if ( curOutput->GetDimension() > 1 - && (curOutput->GetDimension(0) != m_CurrentImageWidth - || curOutput->GetDimension(1) != m_CurrentImageHeight) ) - { - // make a reinit on the ultrasound image - mitk::IRenderWindowPart* renderWindow = this->GetRenderWindowPart(); - if ( renderWindow != NULL && curOutput->GetTimeGeometry()->IsValid() ) - { - renderWindow->GetRenderingManager()->InitializeViews( - curOutput->GetTimeGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); - renderWindow->GetRenderingManager()->RequestUpdateAll(); - } - - m_CurrentImageWidth = curOutput->GetDimension(0); - m_CurrentImageHeight = curOutput->GetDimension(1); - } - } - - //Update frame counter - m_FrameCounter ++; - if (m_FrameCounter == 10) - { - int nMilliseconds = m_Clock.restart(); - int fps = 10000.0f / (nMilliseconds ); - m_Controls.m_FramerateLabel->setText("Current Framerate: "+ QString::number(fps) +" FPS"); - m_FrameCounter = 0; - } +//Update device +m_Device->Modified(); +m_Device->Update(); + +//Update data node +mitk::Image::Pointer curOutput = m_Device->GetOutput(); +m_Node->SetData(curOutput); + +// if the geometry changed: make a reinit on the ultrasound image +if(!mitk::Equal(m_OldGeometry.GetPointer(),curOutput->GetGeometry(),0.0001,false)) +{ +mitk::IRenderWindowPart* renderWindow = this->GetRenderWindowPart(); +if ( renderWindow != NULL && curOutput->GetTimeGeometry()->IsValid() ) +{ +renderWindow->GetRenderingManager()->InitializeViews( +curOutput->GetGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); +renderWindow->GetRenderingManager()->RequestUpdateAll(); +} +m_OldGeometry = curOutput->GetGeometry(); +} + +//Only update the view if the image is shown +if(m_Controls.m_ShowImageStream->isChecked()) +{ +this->RequestRenderWindowUpdate(); +if ( curOutput->GetDimension() > 1 +&& (curOutput->GetDimension(0) != m_CurrentImageWidth +|| curOutput->GetDimension(1) != m_CurrentImageHeight) ) +{ +// make a reinit on the ultrasound image +mitk::IRenderWindowPart* renderWindow = this->GetRenderWindowPart(); +if ( renderWindow != NULL && curOutput->GetTimeGeometry()->IsValid() ) +{ +renderWindow->GetRenderingManager()->InitializeViews( +curOutput->GetTimeGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); +renderWindow->GetRenderingManager()->RequestUpdateAll(); +} + +m_CurrentImageWidth = curOutput->GetDimension(0); +m_CurrentImageHeight = curOutput->GetDimension(1); +} +} + +//Update frame counter +m_FrameCounter ++; +if (m_FrameCounter == 10) +{ +int nMilliseconds = m_Clock.restart(); +int fps = 10000.0f / (nMilliseconds ); +m_Controls.m_FramerateLabel->setText("Current Framerate: "+ QString::number(fps) +" FPS"); +m_FrameCounter = 0; +} } void UltrasoundSupport::OnChangedFramerateLimit(int value) { - m_Timer->setInterval(1000 / value); +m_Timer->setInterval(1000 / value); } void UltrasoundSupport::OnClickedFreezeButton() { - if ( m_Device->GetIsFreezed() ) - { - m_Device->SetIsFreezed(false); - m_Controls.m_FreezeButton->setText("Freeze"); - } - else - { - m_Device->SetIsFreezed(true); - m_Controls.m_FreezeButton->setText("Start Viewing Again"); - } +if ( m_Device->GetIsFreezed() ) +{ +m_Device->SetIsFreezed(false); +m_Controls.m_FreezeButton->setText("Freeze"); +} +else +{ +m_Device->SetIsFreezed(true); +m_Controls.m_FreezeButton->setText("Start Viewing Again"); +} } void UltrasoundSupport::OnChangedActiveDevice() { //clean up and stop timer m_Timer->stop(); this->RemoveControlWidgets(); this->GetDataStorage()->Remove(m_Node); m_Node->ReleaseData(); //get current device, abort if it is invalid m_Device = m_Controls.m_ActiveVideoDevices->GetSelectedService(); if (m_Device.IsNull()) - { - MITK_WARN << "Selected device is not valid, aborting"; - m_Controls.tabWidget->setTabEnabled(1, false); - return; - } +{ +MITK_WARN << "Selected device is not valid, aborting"; +m_Controls.tabWidget->setTabEnabled(1, false); +return; +} //create the widgets for this device and enable the widget tab this->CreateControlWidgets(); m_Controls.tabWidget->setTabEnabled(1, true); //show node if the option is enabled if(m_Controls.m_ShowImageStream->isChecked()) - {this->GetDataStorage()->Add(m_Node);} +{this->GetDataStorage()->Add(m_Node);} //start timer int interval = (1000 / m_Controls.m_FrameRate->value()); m_Timer->setInterval(interval); m_Timer->start(); } void UltrasoundSupport::OnNewDeviceWidgetDone() { - m_Controls.m_NewVideoDeviceWidget->setVisible(false); - m_Controls.m_DeviceManagerWidget->setVisible(true); - m_Controls.m_Headline->setText("Ultrasound Devices:"); - m_Controls.m_WidgetActiveDevices->setVisible(true); +m_Controls.m_NewVideoDeviceWidget->setVisible(false); +m_Controls.m_DeviceManagerWidget->setVisible(true); +m_Controls.m_Headline->setText("Ultrasound Devices:"); +m_Controls.m_WidgetActiveDevices->setVisible(true); } void UltrasoundSupport::CreateControlWidgets() { - m_ControlProbesWidget = new QmitkUSControlsProbesWidget(m_Device->GetControlInterfaceProbes(), m_Controls.m_ToolBoxControlWidgets); - m_Controls.probesWidgetContainer->addWidget(m_ControlProbesWidget); - - // create b mode widget for current device - m_ControlBModeWidget = new QmitkUSControlsBModeWidget(m_Device->GetControlInterfaceBMode(), m_Controls.m_ToolBoxControlWidgets); - m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlBModeWidget, "B Mode Controls"); - if ( ! m_Device->GetControlInterfaceBMode() ) - { - m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); - } - - // create doppler widget for current device - m_ControlDopplerWidget = new QmitkUSControlsDopplerWidget(m_Device->GetControlInterfaceDoppler(), m_Controls.m_ToolBoxControlWidgets); - m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlDopplerWidget, "Doppler Controls"); - if ( ! m_Device->GetControlInterfaceDoppler() ) - { - m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); - } - - ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); - if ( pluginContext ) - { - std::string filter = "(ork.mitk.services.UltrasoundCustomWidget.deviceClass=" + m_Device->GetDeviceClass() + ")"; - - QString interfaceName ( us_service_interface_iid() ); - m_CustomWidgetServiceReference = pluginContext->getServiceReferences(interfaceName, QString::fromStdString(filter)); - - if (m_CustomWidgetServiceReference.size() > 0) - { - m_ControlCustomWidget = pluginContext->getService - (m_CustomWidgetServiceReference.at(0))->CloneForQt(m_Controls.tab2); - m_ControlCustomWidget->SetDevice(m_Device); - m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlCustomWidget, "Custom Controls"); - } - else - { - m_Controls.m_ToolBoxControlWidgets->addItem(new QWidget(m_Controls.m_ToolBoxControlWidgets), "Custom Controls"); - m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); - } - } - - // select first enabled control widget - for ( int n = 0; n < m_Controls.m_ToolBoxControlWidgets->count(); ++n) - { - if ( m_Controls.m_ToolBoxControlWidgets->isItemEnabled(n) ) - { - m_Controls.m_ToolBoxControlWidgets->setCurrentIndex(n); - break; - } - } +m_ControlProbesWidget = new QmitkUSControlsProbesWidget(m_Device->GetControlInterfaceProbes(), m_Controls.m_ToolBoxControlWidgets); +m_Controls.probesWidgetContainer->addWidget(m_ControlProbesWidget); + +// create b mode widget for current device +m_ControlBModeWidget = new QmitkUSControlsBModeWidget(m_Device->GetControlInterfaceBMode(), m_Controls.m_ToolBoxControlWidgets); +m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlBModeWidget, "B Mode Controls"); +if ( ! m_Device->GetControlInterfaceBMode() ) +{ +m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); +} + +// create doppler widget for current device +m_ControlDopplerWidget = new QmitkUSControlsDopplerWidget(m_Device->GetControlInterfaceDoppler(), m_Controls.m_ToolBoxControlWidgets); +m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlDopplerWidget, "Doppler Controls"); +if ( ! m_Device->GetControlInterfaceDoppler() ) +{ +m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); +} + +ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); +if ( pluginContext ) +{ +std::string filter = "(ork.mitk.services.UltrasoundCustomWidget.deviceClass=" + m_Device->GetDeviceClass() + ")"; + +QString interfaceName ( us_service_interface_iid() ); +m_CustomWidgetServiceReference = pluginContext->getServiceReferences(interfaceName, QString::fromStdString(filter)); + +if (m_CustomWidgetServiceReference.size() > 0) +{ +m_ControlCustomWidget = pluginContext->getService +(m_CustomWidgetServiceReference.at(0))->CloneForQt(m_Controls.tab2); +m_ControlCustomWidget->SetDevice(m_Device); +m_Controls.m_ToolBoxControlWidgets->addItem(m_ControlCustomWidget, "Custom Controls"); +} +else +{ +m_Controls.m_ToolBoxControlWidgets->addItem(new QWidget(m_Controls.m_ToolBoxControlWidgets), "Custom Controls"); +m_Controls.m_ToolBoxControlWidgets->setItemEnabled(m_Controls.m_ToolBoxControlWidgets->count()-1, false); +} +} + +// select first enabled control widget +for ( int n = 0; n < m_Controls.m_ToolBoxControlWidgets->count(); ++n) +{ +if ( m_Controls.m_ToolBoxControlWidgets->isItemEnabled(n) ) +{ +m_Controls.m_ToolBoxControlWidgets->setCurrentIndex(n); +break; +} +} } void UltrasoundSupport::RemoveControlWidgets() { - if(!m_ControlProbesWidget) {return;} //widgets do not exist... nothing to do +if(!m_ControlProbesWidget) {return;} //widgets do not exist... nothing to do - // remove all control widgets from the tool box widget - while (m_Controls.m_ToolBoxControlWidgets->count() > 0) - { - m_Controls.m_ToolBoxControlWidgets->removeItem(0); - } +// remove all control widgets from the tool box widget +while (m_Controls.m_ToolBoxControlWidgets->count() > 0) +{ +m_Controls.m_ToolBoxControlWidgets->removeItem(0); +} - // remove probes widget (which is not part of the tool box widget) - m_Controls.probesWidgetContainer->removeWidget(m_ControlProbesWidget); - delete m_ControlProbesWidget; - m_ControlProbesWidget = 0; +// remove probes widget (which is not part of the tool box widget) +m_Controls.probesWidgetContainer->removeWidget(m_ControlProbesWidget); +delete m_ControlProbesWidget; +m_ControlProbesWidget = 0; - delete m_ControlBModeWidget; - m_ControlBModeWidget = 0; +delete m_ControlBModeWidget; +m_ControlBModeWidget = 0; - delete m_ControlDopplerWidget; - m_ControlDopplerWidget = 0; +delete m_ControlDopplerWidget; +m_ControlDopplerWidget = 0; - // delete custom widget if it is present - if ( m_ControlCustomWidget ) - { - ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); - delete m_ControlCustomWidget; m_ControlCustomWidget = 0; +// delete custom widget if it is present +if ( m_ControlCustomWidget ) +{ +ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); +delete m_ControlCustomWidget; m_ControlCustomWidget = 0; - if ( m_CustomWidgetServiceReference.size() > 0 ) - { - pluginContext->ungetService(m_CustomWidgetServiceReference.at(0)); - } - } +if ( m_CustomWidgetServiceReference.size() > 0 ) +{ +pluginContext->ungetService(m_CustomWidgetServiceReference.at(0)); +} +} } void UltrasoundSupport::OnDeciveServiceEvent(const ctkServiceEvent event) { - if ( m_Device.IsNull() || event.getType() != us::ServiceEvent::MODIFIED ) { return; } +if ( m_Device.IsNull() || event.getType() != us::ServiceEvent::MODIFIED ) { return; } - ctkServiceReference service = event.getServiceReference(); +ctkServiceReference service = event.getServiceReference(); - if ( m_Device->GetManufacturer() != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_MANUFACTURER)).toString().toStdString() - && m_Device->GetName() != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_NAME)).toString().toStdString() ) - { - return; - } +if ( m_Device->GetManufacturer() != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_MANUFACTURER)).toString().toStdString() +&& m_Device->GetName() != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_NAME)).toString().toStdString() ) +{ +return; +} - if ( ! m_Device->GetIsActive() && m_Timer->isActive() ) - { - m_Timer->stop(); - } +if ( ! m_Device->GetIsActive() && m_Timer->isActive() ) +{ +m_Timer->stop(); +} - if ( m_CurrentDynamicRange != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_BMODE_DYNAMIC_RANGE)).toDouble() ) - { - m_CurrentDynamicRange = service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_BMODE_DYNAMIC_RANGE)).toDouble(); +if ( m_CurrentDynamicRange != service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_BMODE_DYNAMIC_RANGE)).toDouble() ) +{ +m_CurrentDynamicRange = service.getProperty(QString::fromStdString(mitk::USDevice::GetPropertyKeys().US_PROPKEY_BMODE_DYNAMIC_RANGE)).toDouble(); - // update level window for the current dynamic range - mitk::LevelWindow levelWindow; - m_Node->GetLevelWindow(levelWindow); - levelWindow.SetAuto(m_Image, true, true); - m_Node->SetLevelWindow(levelWindow); - } +// update level window for the current dynamic range +mitk::LevelWindow levelWindow; +m_Node->GetLevelWindow(levelWindow); +levelWindow.SetAuto(m_Image, true, true); +m_Node->SetLevelWindow(levelWindow); +} } UltrasoundSupport::UltrasoundSupport() : m_ControlCustomWidget(0), m_ControlBModeWidget(0), - m_ControlProbesWidget(0), m_ImageAlreadySetToNode(false), - m_CurrentImageWidth(0), m_CurrentImageHeight(0) +m_ControlProbesWidget(0), m_ImageAlreadySetToNode(false), +m_CurrentImageWidth(0), m_CurrentImageHeight(0) { - ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); +ctkPluginContext* pluginContext = mitk::PluginActivator::GetContext(); - if ( pluginContext ) - { - // to be notified about service event of an USDevice - pluginContext->connectServiceListener(this, "OnDeciveServiceEvent", - QString::fromStdString("(" + us::ServiceConstants::OBJECTCLASS() + "=" + us_service_interface_iid() + ")")); - } +if ( pluginContext ) +{ +// to be notified about service event of an USDevice +pluginContext->connectServiceListener(this, "OnDeciveServiceEvent", +QString::fromStdString("(" + us::ServiceConstants::OBJECTCLASS() + "=" + us_service_interface_iid() + ")")); +} } UltrasoundSupport::~UltrasoundSupport() { } diff --git a/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.h b/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.h index 3ade5afd31..66b3129622 100644 --- a/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.h +++ b/Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.h @@ -1,122 +1,124 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef UltrasoundSupport_h #define UltrasoundSupport_h #include #include #include "ui_UltrasoundSupportControls.h" #include "QmitkUSAbstractCustomWidget.h" #include "QmitkUSControlsBModeWidget.h" #include "QmitkUSControlsDopplerWidget.h" #include "QmitkUSControlsProbesWidget.h" #include #include /*! \brief UltrasoundSupport This plugin provides functionality to manage Ultrasound devices, create video devices and to view device images. \sa QmitkFunctionality \ingroup ${plugin_target}_internal */ class UltrasoundSupport : public QmitkAbstractView { // this is needed for all Qt objects that should have a Qt meta-object // (everything that derives from QObject and wants to have signal/slots) Q_OBJECT public: virtual void SetFocus(); static const std::string VIEW_ID; virtual void CreateQtPartControl(QWidget *parent); UltrasoundSupport(); virtual ~UltrasoundSupport(); public slots: /* * \brief This is called when the newDeviceWidget is closed */ void OnNewDeviceWidgetDone(); protected slots: void OnClickedAddNewDevice(); void OnChangedFramerateLimit(int); void OnChangedActiveDevice(); void OnClickedFreezeButton(); void OnDeciveServiceEvent(const ctkServiceEvent event); /* * \brief This is the main imaging loop that is called regularily during the imaging process */ void DisplayImage(); protected: void CreateControlWidgets(); void RemoveControlWidgets(); int m_FrameCounter; /* * \brief This timer triggers periodic updates to the pipeline */ QTimer* m_Timer; QTime m_Clock; /* * \brief The device that is currently used to aquire images */ mitk::USDevice::Pointer m_Device; /* * \brief The node that we feed images into */ mitk::DataNode::Pointer m_Node; mitk::Image::Pointer m_Image; + mitk::Geometry3D::Pointer m_OldGeometry; + Ui::UltrasoundSupportControls m_Controls; QmitkUSAbstractCustomWidget* m_ControlCustomWidget; QmitkUSControlsBModeWidget* m_ControlBModeWidget; QmitkUSControlsDopplerWidget* m_ControlDopplerWidget; QmitkUSControlsProbesWidget* m_ControlProbesWidget; QList m_CustomWidgetServiceReference; bool m_ImageAlreadySetToNode; unsigned int m_CurrentImageWidth; unsigned int m_CurrentImageHeight; double m_CurrentDynamicRange; }; #endif // UltrasoundSupport_h \ No newline at end of file