55 MITK_DEBUG <<
"CoreObjectFactory: registering extra factory of type " << factory->GetNameOfClass();
58 this->RegisterLegacyReaders(factory);
59 this->RegisterLegacyWriters(factory);
64 MITK_DEBUG <<
"CoreObjectFactory: un-registering extra factory of type " << factory->GetNameOfClass();
65 this->UnRegisterLegacyWriters(factory);
66 this->UnRegisterLegacyReaders(factory);
71 catch (
const std::exception &e )
73 MITK_ERROR <<
"Caugt exception while unregistering: " << e.what();
80 if (instance.IsNull())
90 m_LegacyReaders.begin();
91 iter != m_LegacyReaders.end();
94 for (
auto &elem : iter->second)
101 m_LegacyWriters.begin();
102 iter != m_LegacyWriters.end();
105 for (
auto &elem : iter->second)
120 if (image.IsNotNull() && image->IsInitialized())
126 if (planeGeometry.IsNotNull())
132 if (surface.IsNotNull())
139 if (pointSet.IsNotNull())
146 (*it)->SetDefaultProperties(node);
152 static bool alreadyDone =
false;
172 tmpMapper = (*it)->CreateMapper(node,
id);
173 if (tmpMapper.IsNotNull())
174 newMapper = tmpMapper;
177 if (newMapper.IsNull())
183 if ((dynamic_cast<Image *>(data) !=
nullptr))
186 newMapper->SetDataNode(node);
188 else if ((dynamic_cast<PlaneGeometryData *>(data) !=
nullptr))
191 newMapper->SetDataNode(node);
193 else if ((dynamic_cast<Surface *>(data) !=
nullptr))
200 else if ((dynamic_cast<PointSet *>(data) !=
nullptr))
203 newMapper->SetDataNode(node);
208 if ((dynamic_cast<PlaneGeometryData *>(data) !=
nullptr))
211 newMapper->SetDataNode(node);
213 else if ((dynamic_cast<Surface *>(data) !=
nullptr))
216 newMapper->SetDataNode(node);
218 else if ((dynamic_cast<PointSet *>(data) !=
nullptr))
221 newMapper->SetDataNode(node);
234 aMap = (*it)->GetFileExtensionsMap();
243 std::pair<MultimapType::iterator, MultimapType::iterator> pairOfIter;
244 for (
auto it = inputMap.begin(); it != inputMap.end(); ++it)
246 bool duplicateFound =
false;
247 pairOfIter = fileExtensionsMap.equal_range((*it).first);
248 for (
auto it2 = pairOfIter.first; it2 != pairOfIter.second; ++it2)
251 std::string aString = (*it2).second;
252 if (aString.compare((*it).second) == 0)
255 duplicateFound =
true;
261 fileExtensionsMap.insert(std::pair<std::string, std::string>((*it).first, (*it).second));
291 aMap = (*it)->GetSaveFileExtensionsMap();
307 typedef std::set<mitk::FileWriterWithInformation::Pointer> FileWriterSet;
308 FileWriterSet fileWritersSet;
310 fileWritersSet.insert(allWriters.begin(), allWriters.end());
318 fileWritersSet.insert(list2.begin(), list2.end());
323 allWriters.insert(allWriters.end(), fileWritersSet.begin(), fileWritersSet.end());
335 for (
auto it = fileExtensionMap.begin(); it != fileExtensionMap.end();
337 if (it->first == extension)
348 std::map<std::string, std::vector<std::string>> extensionsByCategories;
350 for (
auto it = fileExtensionMap.begin(); it != fileExtensionMap.end();
353 std::string extension = it->first;
355 extension = extension.erase(0, 2);
357 extensionsByCategories[it->second].push_back(extension);
360 for (
auto &extensionsByCategorie : extensionsByCategories)
362 m_LegacyReaders[factory].push_back(
370 m_LegacyReaders.find(factory);
371 if (iter != m_LegacyReaders.end())
373 for (
auto &elem : iter->second)
378 m_LegacyReaders.erase(iter);
393 for (
auto it = writers.begin(); it != writers.end(); ++it)
395 std::vector<std::string> extensions = (*it)->GetPossibleFileExtensions();
396 if (extensions.empty())
399 std::string description;
400 for (
auto ext = extensions.begin(); ext != extensions.end(); ++ext)
405 std::string extension = *ext;
406 std::string extensionWithStar = extension;
407 if (extension.find_first_of(
'*') == 0)
410 extension = extension.substr(0, extension.size() - 2);
414 extensionWithStar.insert(extensionWithStar.begin(),
'*');
417 for (
auto fileExtensionIter = fileExtensionMap.begin();
418 fileExtensionIter != fileExtensionMap.end();
421 if (fileExtensionIter->first == extensionWithStar)
423 description = fileExtensionIter->second;
427 if (!description.empty())
430 if (description.empty())
432 description = std::string(
"Legacy ") + (*it)->GetNameOfClass() +
" Reader";
437 m_LegacyWriters[factory].push_back(lfws);
444 m_LegacyWriters.find(factory);
445 if (iter != m_LegacyWriters.end())
447 for (
auto &elem : iter->second)
452 m_LegacyWriters.erase(iter);
Vtk-based mapper for cutting 2D slices out of Surfaces.
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
set the default properties for this mapper
Class for storing surfaces (vtkPolyData).
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
virtual void MapEvent(const mitk::Event *event, const int eventID)
ExtraFactoriesContainer m_ExtraFactories
FileWriterList GetFileWriters()
Base of all data objects.
virtual MultimapType GetFileExtensionsMap()=0
virtual const char * GetSaveFileExtensions() override
This method gets the supported (save) file extensions as string.
static Pointer GetInstance()
virtual const char * GetFileExtensions() override
This method gets the supported (open) file extensions as string.
virtual void UnRegisterExtraFactory(CoreObjectFactoryBase *factory)
std::string m_SaveFileExtensions
std::string GetDescriptionForExtension(const std::string &extension)
virtual MultimapType GetSaveFileExtensionsMap()=0
std::string m_FileExtensions
virtual void SetDataNode(DataNode *_arg)
Set the DataNode containing the data to map.
void SetDefaultProperties(mitk::DataNode *node) override
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
set the default properties for this mapper
virtual MultimapType GetFileExtensionsMap() override
get the defined (open) file extension map
~CoreObjectFactory() override
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
Data structure which stores a set of points. Superclass of mitk::Mesh.
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
set the default properties for this mapper
MultimapType m_SaveFileExtensionsMap
void CreateFileExtensionsMap()
initialize the file extension entries for open and save
MultimapType GetSaveFileExtensionsMap() override
get the defined (save) file extension map
Image class for storing images.
virtual void RegisterExtraFactory(CoreObjectFactoryBase *factory)
virtual const char * GetFileExtensions()=0
Data class containing PlaneGeometry objects.
mitk::Image::Pointer image
static void CreateFileExtensions(MultimapType fileExtensionsMap, std::string &fileExtensions)
create a string from a map that contains the file extensions
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
Set the default properties for general image rendering.
virtual FileWriterList GetFileWriters()
FileWriterList m_FileWriters
virtual const char * GetSaveFileExtensions()=0
Mapper::Pointer CreateMapper(mitk::DataNode *node, MapperSlotId slotId) override
void MergeFileExtensions(MultimapType &fileExtensionsMap, MultimapType inputMap)
Merge the input map into the fileExtensionsMap. Duplicate entries are removed.
MultimapType m_FileExtensionsMap
unsigned int MapperSlotId
std::multimap< std::string, std::string > MultimapType
std::list< mitk::FileWriterWithInformation::Pointer > FileWriterList
Class for nodes of the DataTree.