diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake b/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake index 0f8da95ea7..1272eb0b1a 100644 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake +++ b/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake @@ -1,104 +1,102 @@ set(SRC_CPP_FILES QmitkMultiLabelSegmentationPreferencePage.cpp ) set(INTERNAL_CPP_FILES mitkPluginActivator.cpp QmitkMultiLabelSegmentationView.cpp QmitkThresholdAction.cpp - QmitkCreatePolygonModelAction.cpp QmitkAutocropAction.cpp QmitkConvertSurfaceToLabelAction.cpp QmitkConvertMaskToLabelAction.cpp QmitkConvertToMultiLabelSegmentationAction.cpp QmitkCreateMultiLabelSegmentationAction.cpp QmitkLoadMultiLabelPresetAction.cpp QmitkCreateMultiLabelPresetAction.cpp Common/QmitkDataSelectionWidget.cpp SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.cpp SegmentationUtilities/QmitkSegmentationUtilityWidget.cpp SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidget.cpp SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidget.cpp SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidget.cpp SegmentationUtilities/ImageMasking/QmitkImageMaskingWidget.cpp ) set(UI_FILES src/internal/QmitkMultiLabelSegmentationControls.ui src/internal/Common/QmitkDataSelectionWidgetControls.ui src/internal/SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesViewControls.ui src/internal/SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidgetControls.ui src/internal/SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidgetControls.ui src/internal/SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidgetControls.ui src/internal/SegmentationUtilities/ImageMasking/QmitkImageMaskingWidgetControls.ui ) set(MOC_H_FILES src/QmitkMultiLabelSegmentationPreferencePage.h src/internal/mitkPluginActivator.h src/internal/QmitkMultiLabelSegmentationView.h src/internal/QmitkThresholdAction.h - src/internal/QmitkCreatePolygonModelAction.h src/internal/QmitkAutocropAction.h src/internal/QmitkConvertSurfaceToLabelAction.h src/internal/QmitkLoadMultiLabelPresetAction.h src/internal/QmitkCreateMultiLabelPresetAction.h src/internal/QmitkConvertMaskToLabelAction.h src/internal/QmitkConvertToMultiLabelSegmentationAction.h src/internal/QmitkCreateMultiLabelSegmentationAction.h src/internal/Common/QmitkDataSelectionWidget.h src/internal/SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.h src/internal/SegmentationUtilities/QmitkSegmentationUtilityWidget.h src/internal/SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidget.h src/internal/SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidget.h src/internal/SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidget.h src/internal/SegmentationUtilities/ImageMasking/QmitkImageMaskingWidget.h ) set(CACHED_RESOURCE_FILES resources/BooleanDifference_48x48.png resources/BooleanIntersection_48x48.png resources/BooleanOperations_48x48.png resources/BooleanUnion_48x48.png resources/Closing_48x48.png resources/CTKWidgets_48x48.png resources/deformablePlane.png resources/Dilate_48x48.png resources/Erode_48x48.png resources/FillHoles_48x48.png resources/Icons.svg resources/ImageMasking_48x48.png resources/MorphologicalOperations_48x48.png resources/multilabelsegmentation.svg resources/multilabelsegmentation_utilities.svg resources/NewLabel_48x48.png resources/NewSegmentationSession_48x48.png resources/Opening_48x48.png resources/SurfaceToImage_48x48.png plugin.xml ) set(QRC_FILES resources/multilabelsegmentation.qrc resources/MultiLabelSegmentationUtilities.qrc resources/MorphologicalOperationsWidget.qrc resources/BooleanOperationsWidget.qrc ) set(CPP_FILES) foreach(file ${SRC_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/${file}) endforeach(file ${SRC_CPP_FILES}) #usFunctionEmbedResources( #CPP_FILES # LIBRARY_NAME "liborg_mitk_gui_qt_multilabelsegmentation" #ROOT_DIR resources #FILES Interactions/SegmentationInteraction.xml # Interactions/ConfigSegmentation.xml #) 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.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.cpp b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.cpp deleted file mode 100644 index e9f95cae56..0000000000 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*=================================================================== - -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 "QmitkCreatePolygonModelAction.h" - -// MITK -#include -#include -#include -#include -#include -#include - -// Blueberry -#include -#include -#include -#include -#include - -using namespace berry; -using namespace mitk; -using namespace std; - -QmitkCreatePolygonModelAction::QmitkCreatePolygonModelAction() -{ -} - -QmitkCreatePolygonModelAction::~QmitkCreatePolygonModelAction() -{ -} - -void QmitkCreatePolygonModelAction::Run(const QList &selectedNodes) -{ - DataNode::Pointer selectedNode = selectedNodes[0]; - Image::Pointer image = dynamic_cast(selectedNode->GetData()); - - if (image.IsNull()) - return; - - try - { - if (!m_IsSmoothed) - { - ShowSegmentationAsSurface::Pointer surfaceFilter = ShowSegmentationAsSurface::New(); - - itk::SimpleMemberCommand::Pointer successCommand = itk::SimpleMemberCommand::New(); - successCommand->SetCallbackFunction(this, &QmitkCreatePolygonModelAction::OnSurfaceCalculationDone); - surfaceFilter->AddObserver(ResultAvailable(), successCommand); - - itk::SimpleMemberCommand::Pointer errorCommand = itk::SimpleMemberCommand::New(); - errorCommand->SetCallbackFunction(this, &QmitkCreatePolygonModelAction::OnSurfaceCalculationDone); - surfaceFilter->AddObserver(ProcessingError(), errorCommand); - - surfaceFilter->SetDataStorage(*m_DataStorage); - surfaceFilter->SetPointerParameter("Input", image); - surfaceFilter->SetPointerParameter("Group node", selectedNode); - surfaceFilter->SetParameter("Show result", true); - surfaceFilter->SetParameter("Sync visibility", false); - surfaceFilter->SetParameter("Smooth", false); - surfaceFilter->SetParameter("Apply median", false); - surfaceFilter->SetParameter("Median kernel size", 3u); - surfaceFilter->SetParameter("Gaussian SD", 1.5); - surfaceFilter->SetParameter("Decimate mesh", m_IsDecimated); - surfaceFilter->SetParameter("Decimation rate", 0.8); - - StatusBar::GetInstance()->DisplayText("Surface creation started in background..."); - - surfaceFilter->StartAlgorithm(); - } - else - { - ShowSegmentationAsSmoothedSurface::Pointer surfaceFilter = ShowSegmentationAsSmoothedSurface::New(); - - itk::SimpleMemberCommand::Pointer successCommand = itk::SimpleMemberCommand::New(); - successCommand->SetCallbackFunction(this, &QmitkCreatePolygonModelAction::OnSurfaceCalculationDone); - surfaceFilter->AddObserver(mitk::ResultAvailable(), successCommand); - - itk::SimpleMemberCommand::Pointer errorCommand = itk::SimpleMemberCommand::New(); - errorCommand->SetCallbackFunction(this, &QmitkCreatePolygonModelAction::OnSurfaceCalculationDone); - surfaceFilter->AddObserver(mitk::ProcessingError(), errorCommand); - - surfaceFilter->SetDataStorage(*m_DataStorage); - surfaceFilter->SetPointerParameter("Input", image); - surfaceFilter->SetPointerParameter("Group node", selectedNode); - - berry::IWorkbenchPart::Pointer activePart = - berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow()->GetActivePage()->GetActivePart(); - mitk::IRenderWindowPart* renderPart = dynamic_cast(activePart.GetPointer()); - mitk::SliceNavigationController* timeNavController = 0; - if (renderPart != 0) - { - timeNavController = renderPart->GetTimeNavigationController(); - } - - int timeNr = timeNavController != 0 ? timeNavController->GetTime()->GetPos() : 0; - surfaceFilter->SetParameter("TimeNr", timeNr); - - IPreferencesService* prefService = berry::Platform::GetPreferencesService(); - IPreferences::Pointer segPref = prefService->GetSystemPreferences()->Node("/org.mitk.views.multilabelsegmentation"); - - auto smoothingHint = segPref->GetBool("smoothing hint", true); - auto smoothing = segPref->GetDouble("smoothing value", 1.0); - auto decimation = segPref->GetDouble("decimation rate", 0.5); - auto closing = segPref->GetDouble("closing ratio", 0.0); - - if (smoothingHint) - { - smoothing = 0.0; - Vector3D spacing = image->GetGeometry()->GetSpacing(); - - for (Vector3D::Iterator iter = spacing.Begin(); iter != spacing.End(); ++iter) - smoothing = max(smoothing, *iter); - } - - surfaceFilter->SetParameter("Smoothing", smoothing); - surfaceFilter->SetParameter("Decimation", decimation); - surfaceFilter->SetParameter("Closing", closing); - - ProgressBar::GetInstance()->AddStepsToDo(8); - StatusBar::GetInstance()->DisplayText("Smoothed surface creation started in background..."); - - try { - surfaceFilter->StartAlgorithm(); - } catch (...) - { - MITK_ERROR<<"Error creating smoothed polygon model: Not enough memory!"; - } - } - } - catch(...) - { - MITK_ERROR << "Surface creation failed!"; - } -} - -void QmitkCreatePolygonModelAction::OnSurfaceCalculationDone() -{ - StatusBar::GetInstance()->Clear(); -} - -void QmitkCreatePolygonModelAction::SetDataStorage(DataStorage *dataStorage) -{ - m_DataStorage = dataStorage; -} - -void QmitkCreatePolygonModelAction::SetSmoothed(bool smoothed) -{ - m_IsSmoothed = smoothed; -} - -void QmitkCreatePolygonModelAction::SetDecimated(bool decimated) -{ - m_IsDecimated = decimated; -} - -void QmitkCreatePolygonModelAction::SetFunctionality(QtViewPart *) -{ -} diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.h b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.h deleted file mode 100644 index c34943a5c0..0000000000 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkCreatePolygonModelAction.h +++ /dev/null @@ -1,55 +0,0 @@ -/*=================================================================== - -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 QMITKCREATEPOLYGONMODELACTION_H -#define QMITKCREATEPOLYGONMODELACTION_H - -#include - -// Parent classes -#include -#include - -// Data members -#include - -class MITK_QT_SEGMENTATION QmitkCreatePolygonModelAction : public QObject, public mitk::IContextMenuAction -{ - Q_OBJECT - Q_INTERFACES(mitk::IContextMenuAction) - -public: - QmitkCreatePolygonModelAction(); - ~QmitkCreatePolygonModelAction(); - - // IContextMenuAction - void Run(const QList &selectedNodes); - void SetDataStorage(mitk::DataStorage *dataStorage); - void SetSmoothed(bool smoothed); - void SetDecimated(bool decimated); - void SetFunctionality(berry::QtViewPart *functionality); - - void OnSurfaceCalculationDone(); - -private: - QmitkCreatePolygonModelAction(const QmitkCreatePolygonModelAction &); - QmitkCreatePolygonModelAction & operator=(const QmitkCreatePolygonModelAction &); - - mitk::DataStorage::Pointer m_DataStorage; - bool m_IsSmoothed; - bool m_IsDecimated; -}; - -#endif diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp index 00d418896c..ec33b5310b 100644 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp +++ b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp @@ -1,64 +1,62 @@ /*=================================================================== 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 "mitkPluginActivator.h" #include "QmitkMultiLabelSegmentationView.h" #include "QmitkThresholdAction.h" -#include "QmitkCreatePolygonModelAction.h" #include "QmitkAutocropAction.h" #include "QmitkConvertSurfaceToLabelAction.h" #include "QmitkConvertMaskToLabelAction.h" #include "QmitkConvertToMultiLabelSegmentationAction.h" #include "QmitkCreateMultiLabelSegmentationAction.h" #include "QmitkMultiLabelSegmentationPreferencePage.h" #include "QmitkLoadMultiLabelPresetAction.h" #include "QmitkCreateMultiLabelPresetAction.h" #include "SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.h" #include ctkPluginContext* mitk::PluginActivator::m_Context = nullptr; //MLI TODO US_INITIALIZE_MODULE //("MultiLabelSegmentation", "liborg_mitk_gui_qt_multilabelsegmentation") void mitk::PluginActivator::start(ctkPluginContext *context) { BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationView, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkThresholdAction, context) - BERRY_REGISTER_EXTENSION_CLASS(QmitkCreatePolygonModelAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkAutocropAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertSurfaceToLabelAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertMaskToLabelAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertToMultiLabelSegmentationAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkCreateMultiLabelSegmentationAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkCreateMultiLabelPresetAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkLoadMultiLabelPresetAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationPreferencePage, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationUtilitiesView, context) m_Context = context; } void mitk::PluginActivator::stop(ctkPluginContext*) { } ctkPluginContext* mitk::PluginActivator::getContext() { return m_Context; }