diff --git a/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.cpp b/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.cpp index 17a24a6..c73783f 100644 --- a/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.cpp +++ b/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.cpp @@ -28,15 +28,6 @@ See LICENSE.txt or http://www.mitk.org for details. #include "mitkContourVtkMapper3D.h" -#include "mitkContourModel.h" -#include "mitkContourModelIOFactory.h" -#include "mitkContourModelWriterFactory.h" -#include "mitkContourModelWriter.h" -#include "mitkContourModelMapper2D.h" -#include "mitkContourModelGLMapper2D.h" -#include "mitkContourModelMapper3D.h" - - mitk::SegmentationObjectFactory::SegmentationObjectFactory() :CoreObjectFactoryBase() { @@ -45,7 +36,7 @@ mitk::SegmentationObjectFactory::SegmentationObjectFactory() { MITK_DEBUG << "SegmentationObjectFactory c'tor" << std::endl; - RegisterIOFactories(); + CreateFileExtensionsMap(); alreadyDone = true; } @@ -112,7 +103,7 @@ const char* mitk::SegmentationObjectFactory::GetFileExtensions() std::string fileExtension; this->CreateFileExtensions(m_FileExtensionsMap, fileExtension); return fileExtension.c_str(); -}; +} mitk::CoreObjectFactoryBase::MultimapType mitk::SegmentationObjectFactory::GetFileExtensionsMap() { @@ -138,23 +129,21 @@ const char* mitk::SegmentationObjectFactory::GetSaveFileExtensions() void mitk::SegmentationObjectFactory::RegisterIOFactories() { - //register io classes of mitkContourModel - mitk::ContourModelIOFactory::RegisterOneFactory(); - - mitk::ContourModelWriterFactory::RegisterOneFactory(); - - this->m_FileWriters.push_back(mitk::ContourModelWriter::New().GetPointer()); - - CreateFileExtensionsMap(); } -void RegisterSegmentationObjectFactory() -{ - static bool oneSegmentationObjectFactoryRegistered = false; - if ( ! oneSegmentationObjectFactoryRegistered ) +struct RegisterSegmentationObjectFactory{ + RegisterSegmentationObjectFactory() + : m_Factory( mitk::SegmentationObjectFactory::New() ) { - MITK_DEBUG << "Registering SegmentationObjectFactory..." << std::endl; - mitk::CoreObjectFactory::GetInstance()->RegisterExtraFactory(mitk::SegmentationObjectFactory::New()); - oneSegmentationObjectFactoryRegistered = true; + mitk::CoreObjectFactory::GetInstance()->RegisterExtraFactory( m_Factory ); } -} + + ~RegisterSegmentationObjectFactory() + { + mitk::CoreObjectFactory::GetInstance()->UnRegisterExtraFactory( m_Factory ); + } + + mitk::SegmentationObjectFactory::Pointer m_Factory; +}; + +static RegisterSegmentationObjectFactory registerSegmentationObjectFactory; diff --git a/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.h b/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.h index 3b779d1..40512fb 100644 --- a/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.h +++ b/Modules/Segmentation/Algorithms/mitkSegmentationObjectFactory.h @@ -42,9 +42,5 @@ namespace mitk { }; } -// global declaration for simple call by -// applications -void Segmentation_EXPORT RegisterSegmentationObjectFactory(); #endif - diff --git a/Plugins/org.mitk.gui.qt.segmentation/src/internal/QmitkSegmentationView.cpp b/Plugins/org.mitk.gui.qt.segmentation/src/internal/QmitkSegmentationView.cpp index 3165e01..b72db8c 100644 --- a/Plugins/org.mitk.gui.qt.segmentation/src/internal/QmitkSegmentationView.cpp +++ b/Plugins/org.mitk.gui.qt.segmentation/src/internal/QmitkSegmentationView.cpp @@ -54,7 +54,6 @@ QmitkSegmentationView::QmitkSegmentationView() ,m_DataSelectionChanged(false) ,m_MouseCursorSet(false) { - RegisterSegmentationObjectFactory(); mitk::NodePredicateDataType::Pointer isDwi = mitk::NodePredicateDataType::New("DiffusionImage"); mitk::NodePredicateDataType::Pointer isDti = mitk::NodePredicateDataType::New("TensorImage"); mitk::NodePredicateDataType::Pointer isQbi = mitk::NodePredicateDataType::New("QBallImage");