diff --git a/Plugins/PluginList.cmake b/Plugins/PluginList.cmake index 4cdec681c8..5a430f1d1e 100644 --- a/Plugins/PluginList.cmake +++ b/Plugins/PluginList.cmake @@ -1,85 +1,86 @@ # Plug-ins must be ordered according to their dependencies set(MITK_PLUGINS org.blueberry.core.runtime:ON org.blueberry.core.expressions:OFF org.blueberry.core.commands:OFF org.blueberry.core.jobs:OFF org.blueberry.ui.qt:OFF org.blueberry.ui.qt.help:OFF org.blueberry.ui.qt.log:ON org.blueberry.ui.qt.objectinspector:OFF #org.blueberry.test:ON #org.blueberry.uitest:ON #Testing/org.blueberry.core.runtime.tests:ON #Testing/org.blueberry.osgi.tests:ON org.mitk.core.services:ON org.mitk.gui.common:ON org.mitk.planarfigure:ON org.mitk.core.ext:OFF org.mitk.core.jobs:OFF org.mitk.diffusionimaging:OFF org.mitk.simulation:OFF org.mitk.gui.qt.application:ON org.mitk.gui.qt.coreapplication:OFF org.mitk.gui.qt.ext:OFF org.mitk.gui.qt.extapplication:OFF org.mitk.gui.qt.common:ON org.mitk.gui.qt.stdmultiwidgeteditor:ON org.mitk.gui.qt.common.legacy:OFF org.mitk.gui.qt.cmdlinemodules:OFF org.mitk.gui.qt.diffusionimagingapp:OFF org.mitk.gui.qt.datamanager:ON org.mitk.gui.qt.datamanagerlight:OFF org.mitk.gui.qt.properties:ON org.mitk.gui.qt.basicimageprocessing:OFF org.mitk.gui.qt.dicom:OFF org.mitk.gui.qt.dicominspector:OFF org.mitk.gui.qt.diffusionimaging:OFF org.mitk.gui.qt.dosevisualization:OFF org.mitk.gui.qt.geometrytools:OFF org.mitk.gui.qt.igtexamples:OFF org.mitk.gui.qt.igttracking:OFF org.mitk.gui.qt.openigtlink:OFF org.mitk.gui.qt.imagecropper:OFF org.mitk.gui.qt.imagenavigator:ON org.mitk.gui.qt.viewnavigator:OFF org.mitk.gui.qt.materialeditor:OFF org.mitk.gui.qt.measurementtoolbox:OFF org.mitk.gui.qt.moviemaker:OFF org.mitk.gui.qt.pointsetinteraction:OFF org.mitk.gui.qt.pointsetinteractionmultispectrum:OFF org.mitk.gui.qt.python:OFF org.mitk.gui.qt.registration:OFF org.mitk.gui.qt.remeshing:OFF org.mitk.gui.qt.segmentation:OFF org.mitk.gui.qt.simulation:OFF org.mitk.gui.qt.aicpregistration:OFF org.mitk.gui.qt.toftutorial:OFF org.mitk.gui.qt.tofutil:OFF org.mitk.gui.qt.tubegraph:OFF org.mitk.gui.qt.ugvisualization:OFF org.mitk.gui.qt.ultrasound:OFF org.mitk.gui.qt.volumevisualization:OFF org.mitk.gui.qt.eventrecorder:OFF org.mitk.gui.qt.xnat:OFF org.mitk.gui.qt.igt.app.echotrack:OFF org.mitk.gui.qt.spectrocamrecorder:OFF org.mitk.gui.qt.classificationsegmentation:OFF org.mitk.gui.qt.overlaymanager:OFF org.mitk.gui.qt.multilabelsegmentation:ON org.mitk.matchpoint.core.helper:OFF org.mitk.gui.qt.matchpoint.algorithm.browser:OFF org.mitk.gui.qt.matchpoint.algorithm.control:OFF org.mitk.gui.qt.matchpoint.algorithm.batch:OFF org.mitk.gui.qt.matchpoint.mapper:OFF org.mitk.gui.qt.matchpoint.framereg:OFF org.mitk.gui.qt.matchpoint.visualizer:OFF org.mitk.gui.qt.matchpoint.evaluator:OFF org.mitk.gui.qt.matchpoint.manipulator:OFF + org.mitk.gui.qt.regiongrowing:OFF ) diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/CMakeLists.txt b/Plugins/org.mitk.gui.qt.regiongrowing/CMakeLists.txt new file mode 100644 index 0000000000..9601aedda5 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/CMakeLists.txt @@ -0,0 +1,9 @@ +project(org_mitk_gui_qt_regiongrowing) + +mitk_create_plugin( + EXPORT_DIRECTIVE REGIONGROWING_EXPORT + EXPORTED_INCLUDE_SUFFIXES src + MODULE_DEPENDS MitkQtWidgetsExt + PACKAGE_DEPENDS ITK|ITKRegionGrowing + NO_INSTALL +) diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/documentation/doxygen/modules.dox b/Plugins/org.mitk.gui.qt.regiongrowing/documentation/doxygen/modules.dox new file mode 100644 index 0000000000..fd239e49c5 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/documentation/doxygen/modules.dox @@ -0,0 +1,16 @@ +/** + \defgroup org_mitk_example_gui_regiongrowing org.mitk.example.gui.regiongrowing + \ingroup MITKExamplePlugins + + \brief Describe your plugin here. + +*/ + +/** + \defgroup org_mitk_example_gui_regiongrowing_internal Internal + \ingroup org_mitk_example_gui_regiongrowing + + \brief This subcategory includes the internal classes of the org.mitk.example.gui.regiongrowing plugin. Other + plugins must not rely on these classes. They contain implementation details and their interface + may change at any time. We mean it. +*/ diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/files.cmake b/Plugins/org.mitk.gui.qt.regiongrowing/files.cmake new file mode 100644 index 0000000000..958140b28d --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/files.cmake @@ -0,0 +1,35 @@ +set(SRC_CPP_FILES + +) + +set(INTERNAL_CPP_FILES + org_mitk_gui_qt_regiongrowing_Activator.cpp + QmitkRegionGrowingView.cpp +) + +set(UI_FILES + src/internal/QmitkRegionGrowingViewControls.ui +) + +set(MOC_H_FILES + src/internal/org_mitk_gui_qt_regiongrowing_Activator.h + src/internal/QmitkRegionGrowingView.h +) + +set(CACHED_RESOURCE_FILES + resources/icon.png + plugin.xml +) + +set(QRC_FILES + +) + +foreach(file ${SRC_CPP_FILES}) + set(CPP_FILES ${CPP_FILES} src/${file}) +endforeach(file ${SRC_CPP_FILES}) + +foreach(file ${INTERNAL_CPP_FILES}) + set(CPP_FILES ${CPP_FILES} src/internal/${file}) +endforeach(file ${INTERNAL_CPP_FILES}) + diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/manifest_headers.cmake b/Plugins/org.mitk.gui.qt.regiongrowing/manifest_headers.cmake new file mode 100644 index 0000000000..fd27338a7c --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/manifest_headers.cmake @@ -0,0 +1,5 @@ +set(Plugin-Name "Region Grower Example") +set(Plugin-Version "0.1") +set(Plugin-Vendor "DKFZ, Medical and Biological Informatics") +set(Plugin-ContactAddress "") +set(Require-Plugin org.mitk.gui.qt.common.legacy) diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/plugin.xml b/Plugins/org.mitk.gui.qt.regiongrowing/plugin.xml new file mode 100644 index 0000000000..6af0719846 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/plugin.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/resources/icon.png b/Plugins/org.mitk.gui.qt.regiongrowing/resources/icon.png new file mode 100644 index 0000000000..a7781497a3 Binary files /dev/null and b/Plugins/org.mitk.gui.qt.regiongrowing/resources/icon.png differ diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/resources/regiongrowing.png b/Plugins/org.mitk.gui.qt.regiongrowing/resources/regiongrowing.png new file mode 100644 index 0000000000..00331e374d Binary files /dev/null and b/Plugins/org.mitk.gui.qt.regiongrowing/resources/regiongrowing.png differ diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.cpp b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.cpp new file mode 100644 index 0000000000..5b750cf120 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.cpp @@ -0,0 +1,277 @@ +/*=================================================================== + +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 + +// Qmitk +#include "QmitkRegionGrowingView.h" + +//! [cpp-includes] +// Qmitk +#include "QmitkPointListWidget.h" +#include "QmitkRenderWindow.h" + +// MITK +#include "mitkColorProperty.h" +#include "mitkITKImageImport.h" +#include "mitkImageAccessByItk.h" +#include "mitkImageCast.h" +#include "mitkProperties.h" + +// ITK +#include +//! [cpp-includes] + +// Qt +#include + +const std::string QmitkRegionGrowingView::VIEW_ID = "org.mitk.views.example.regiongrowing"; + +QmitkRegionGrowingView::QmitkRegionGrowingView() : m_PointListWidget(NULL) +{ +} + +void QmitkRegionGrowingView::SetFocus() +{ + m_Controls.buttonPerformImageProcessing->setFocus(); +} + +void QmitkRegionGrowingView::CreateQtPartControl(QWidget *parent) +{ + // create GUI widgets from the Qt Designer's .ui file + m_Controls.setupUi(parent); + connect(m_Controls.buttonPerformImageProcessing, SIGNAL(clicked()), this, SLOT(DoImageProcessing())); + connect(m_Controls.checkBoxCustomRange, SIGNAL(clicked(bool)), this, SLOT(UseCustomRange(bool))); + + //! [cpp-createqtpartcontrol] + // create a QmitkPointListWidget and add it to the widget created from .ui file + m_PointListWidget = new QmitkPointListWidget(); + m_Controls.verticalLayout->addWidget(m_PointListWidget, 1); + + // retrieve a possibly existing IRenderWindowPart + if (mitk::IRenderWindowPart *renderWindowPart = GetRenderWindowPart()) + { + // let the point set widget know about the render window part (crosshair updates) + RenderWindowPartActivated(renderWindowPart); + } + + // create a new DataNode containing a PointSet with some interaction + m_PointSet = mitk::PointSet::New(); + mitk::DataNode::Pointer pointSetNode = mitk::DataNode::New(); + pointSetNode->SetData(m_PointSet); + pointSetNode->SetName("seed points for region growing"); + pointSetNode->SetProperty("helper object", mitk::BoolProperty::New(true)); + pointSetNode->SetProperty("layer", mitk::IntProperty::New(1024)); + + // add the pointset to the data storage (for rendering and access by other modules) + GetDataStorage()->Add(pointSetNode); + + // tell the GUI widget about the point set + m_PointListWidget->SetPointSetNode(pointSetNode); + //! [cpp-createqtpartcontrol] + + connect(m_PointListWidget, SIGNAL(PointListChanged()), this, SLOT(UpdatePointSet())); +} + +void QmitkRegionGrowingView::OnSelectionChanged(berry::IWorkbenchPart::Pointer /*source*/, + const QList &nodes) +{ + // iterate all selected objects, adjust warning visibility + foreach (mitk::DataNode::Pointer node, nodes) + { + if (node.IsNotNull() && dynamic_cast(node->GetData())) + { + m_Controls.labelWarning->setVisible(false); + m_Controls.buttonPerformImageProcessing->setEnabled(true); + return; + } + } + + m_Controls.labelWarning->setVisible(true); + m_Controls.buttonPerformImageProcessing->setEnabled(false); +} + +void QmitkRegionGrowingView::RenderWindowPartActivated(mitk::IRenderWindowPart *renderWindowPart) +{ + // let the point set widget know about the slice navigation controllers + // in the active render window part (crosshair updates) + foreach (QmitkRenderWindow *renderWindow, renderWindowPart->GetQmitkRenderWindows().values()) + { + m_PointListWidget->AddSliceNavigationController(renderWindow->GetSliceNavigationController()); + } +} + +void QmitkRegionGrowingView::RenderWindowPartDeactivated(mitk::IRenderWindowPart *renderWindowPart) +{ + foreach (QmitkRenderWindow *renderWindow, renderWindowPart->GetQmitkRenderWindows().values()) + { + m_PointListWidget->RemoveSliceNavigationController(renderWindow->GetSliceNavigationController()); + } +} + +void QmitkRegionGrowingView::DoImageProcessing() +{ + QList nodes = this->GetDataManagerSelection(); + if (nodes.empty()) + return; + + mitk::DataNode *node = nodes.front(); + + if (!node) + { + // Nothing selected. Inform the user and return + QMessageBox::information(NULL, "Template", "Please load and select an image before starting image processing."); + return; + } + + // here we have a valid mitk::DataNode + + // a node itself is not very useful, we need its data item (the image) + mitk::BaseData *data = node->GetData(); + if (data) + { + // test if this data item is an image or not (could also be a surface or something totally different) + mitk::Image *image = dynamic_cast(data); + if (image) + { + //! [cpp-doimageprocessing] + // So we have an image. Let's see if the user has set some seed points already + if (m_PointSet->GetSize() == 0) + { + // no points there. Not good for region growing + QMessageBox::information(NULL, + "Region growing functionality", + "Please set some seed points inside the image first.\n" + "(hold Shift key and click left mouse button inside the image.)"); + return; + } + + // actually perform region growing. Here we have both an image and some seed points + AccessByItk_1( + image, ItkImageProcessing, image->GetGeometry()) // some magic to call the correctly templated function + //! [cpp-doimageprocessing] + } + } +} + +void QmitkRegionGrowingView::UseCustomRange(bool useCustomRange) +{ + m_Controls.spinBoxMax->setEnabled(useCustomRange); + m_Controls.spinBoxMin->setEnabled(useCustomRange); +} + +void QmitkRegionGrowingView::UpdatePointSet() +{ + m_PointSet = m_PointListWidget->GetPointSet(); +} + +//! [cpp-itkimageaccess] +template +void QmitkRegionGrowingView::ItkImageProcessing(itk::Image *itkImage, + mitk::BaseGeometry *imageGeometry) +{ + typedef itk::Image InputImageType; + typedef typename InputImageType::IndexType IndexType; + + // instantiate an ITK region growing filter, set its parameters + typedef itk::ConnectedThresholdImageFilter RegionGrowingFilterType; + typename RegionGrowingFilterType::Pointer regionGrower = RegionGrowingFilterType::New(); + regionGrower->SetInput(itkImage); // don't forget this + + // determine a thresholding interval + IndexType seedIndex; + + mitk::PointSet::PointsContainer *points = m_PointSet->GetPointSet()->GetPoints(); + for (mitk::PointSet::PointsConstIterator pointsIterator = points->Begin(); pointsIterator != points->End(); + ++pointsIterator) + { + // first test if this point is inside the image at all + if (!imageGeometry->IsInside(pointsIterator.Value())) + { + continue; + } + + TPixel min(std::numeric_limits::max()); + TPixel max(std::numeric_limits::min()); + + + if (m_Controls.checkBoxCustomRange->isChecked()) + { + max = m_Controls.spinBoxMax->value(); + min = m_Controls.spinBoxMin->value(); + } + + // convert world coordinates to image indices + imageGeometry->WorldToIndex(pointsIterator.Value(), seedIndex); + + // get the pixel value at this point + TPixel currentPixelValue = itkImage->GetPixel(seedIndex); + + if (!m_Controls.checkBoxCustomRange->isChecked()) + { + // adjust minimum and maximum values + if (currentPixelValue > max) + max = currentPixelValue; + + if (currentPixelValue < min) + min = currentPixelValue; + } + + regionGrower->AddSeed(seedIndex); + MITK_INFO << "Values between " << min << " and " << max; + + if (!m_Controls.checkBoxCustomRange->isChecked()) + { + min -= 130; + max += 130; + } + + m_Controls.spinBoxMin->setValue(min); + m_Controls.spinBoxMax->setValue(max); + + // set thresholds and execute filter + regionGrower->SetLower(min); + regionGrower->SetUpper(max); + + regionGrower->Update(); + + mitk::Image::Pointer resultImage; + mitk::CastToMitkImage(regionGrower->GetOutput(), resultImage); + mitk::DataNode::Pointer newNode = mitk::DataNode::New(); + newNode->SetData(resultImage); + + // set some properties + newNode->SetProperty("binary", mitk::BoolProperty::New(true)); + newNode->SetProperty("name", mitk::StringProperty::New("dumb segmentation")); + newNode->SetProperty("color", mitk::ColorProperty::New(1.0, 0.0, 0.0)); + newNode->SetProperty("volumerendering", mitk::BoolProperty::New(true)); + newNode->SetProperty("layer", mitk::IntProperty::New(1)); + newNode->SetProperty("opacity", mitk::FloatProperty::New(0.5)); + + // add result to data tree + this->GetDataStorage()->Add(newNode); + mitk::RenderingManager::GetInstance()->RequestUpdateAll(); + + regionGrower->ClearSeeds(); + } + + +} +//! [cpp-itkimageaccess] + + diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.h b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.h new file mode 100644 index 0000000000..ca99972e3d --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingView.h @@ -0,0 +1,97 @@ +/*=================================================================== + +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 QmitkRegionGrowingView_h +#define QmitkRegionGrowingView_h + +#include + +#include + +#include "ui_QmitkRegionGrowingViewControls.h" + +//! [includes] +#include "mitkIRenderWindowPartListener.h" +#include "mitkPointSet.h" +#include + +class QmitkPointListWidget; +//! [includes] + +/** + \brief QmitkRegionGrowingView + + \warning This class is not yet documented. Use "git blame" and ask the author to provide basic documentation. + + \sa QmitkAbstractView + \ingroup ${plugin_target}_internal +*/ +class QmitkRegionGrowingView : public QmitkAbstractView, public mitk::IRenderWindowPartListener +{ + // 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: + static const std::string VIEW_ID; + + QmitkRegionGrowingView(); + +protected slots: + + /// \brief Called when the user clicks the GUI button + void DoImageProcessing(); + + void UseCustomRange(bool useCustomRange); + + void UpdatePointSet(); + +protected: + virtual void CreateQtPartControl(QWidget *parent) override; + + virtual void SetFocus() override; + + virtual void OnSelectionChanged(berry::IWorkbenchPart::Pointer source, + const QList &nodes) override; + + //! [render-window-part-listener] + void RenderWindowPartActivated(mitk::IRenderWindowPart *renderWindowPart) override; + void RenderWindowPartDeactivated(mitk::IRenderWindowPart *renderWindowPart) override; + //! [render-window-part-listener] + + Ui::QmitkRegionGrowingViewControls m_Controls; + +private: + //! [itkimageprocessing] + /** + \brief ITK image processing function + This function is templated like an ITK image. The MITK-Macro AccessByItk determines the actual pixel type and + dimensionality of + a given MITK image and calls this function for further processing (in our case region growing) + */ + template + void ItkImageProcessing(itk::Image *itkImage, mitk::BaseGeometry *imageGeometry); + //! [itkimageprocessing] + + //! [members] + /// \brief This is the actual seed point data object + mitk::PointSet::Pointer m_PointSet; + + QmitkPointListWidget *m_PointListWidget; + //! [members] +}; + +#endif // QmitkRegionGrowingView_h diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingViewControls.ui b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingViewControls.ui new file mode 100644 index 0000000000..0ef63f6363 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/QmitkRegionGrowingViewControls.ui @@ -0,0 +1,97 @@ + + + QmitkRegionGrowingViewControls + + + + 0 + 0 + 222 + 161 + + + + + 0 + 0 + + + + QmitkTemplate + + + + + + QLabel { color: rgb(255, 0, 0) } + + + Please select an image! + + + + + + + Customize Range + + + + + + + + + Min + + + + + + + false + + + 99999 + + + + + + + + + + + Max + + + + + + + false + + + 99999 + + + + + + + + + Do image processing + + + Start Region Growing! + + + + + + + + + diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.cpp b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.cpp new file mode 100644 index 0000000000..d94c2d172a --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.cpp @@ -0,0 +1,28 @@ +/*=================================================================== + +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. + +===================================================================*/ + +#include "org_mitk_gui_qt_regiongrowing_Activator.h" +#include "QmitkRegionGrowingView.h" + +namespace mitk +{ + void org_mitk_gui_qt_regiongrowing_Activator::start(ctkPluginContext *context) + { + BERRY_REGISTER_EXTENSION_CLASS(QmitkRegionGrowingView, context) + } + + void org_mitk_gui_qt_regiongrowing_Activator::stop(ctkPluginContext *context) { Q_UNUSED(context) } +} diff --git a/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.h b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.h new file mode 100644 index 0000000000..a024f85c90 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.regiongrowing/src/internal/org_mitk_gui_qt_regiongrowing_Activator.h @@ -0,0 +1,37 @@ +/*=================================================================== + +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 org_mitk_gui_qt_regiongrowing_Activator_h +#define org_mitk_gui_qt_regiongrowing_Activator_h + +#include + +namespace mitk +{ + class org_mitk_gui_qt_regiongrowing_Activator : public QObject, public ctkPluginActivator + { + Q_OBJECT + Q_PLUGIN_METADATA(IID "org_mitk_example_gui_regiongrowing") + Q_INTERFACES(ctkPluginActivator) + + public: + void start(ctkPluginContext *context) override; + void stop(ctkPluginContext *context) override; + + }; // org_mitk_gui_qt_regiongrowing_Activator_h +} + +#endif // org_mitk_gui_qt_regiongrowing_Activator_h