00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef COREOBJECTFACTORY_H_INCLUDED 00019 #define COREOBJECTFACTORY_H_INCLUDED 00020 00021 #include <list> 00022 00023 #include "mitkCommon.h" 00024 #include "mitkCoreObjectFactoryBase.h" 00025 #include "mitkFileWriterWithInformation.h" 00026 namespace mitk { 00027 00028 class Event; 00029 00030 class MITK_CORE_EXPORT CoreObjectFactory : public CoreObjectFactoryBase 00031 { 00032 public: 00033 mitkClassMacro(CoreObjectFactory,CoreObjectFactoryBase); 00034 itkFactorylessNewMacro(CoreObjectFactory); 00035 virtual Mapper::Pointer CreateMapper(mitk::DataNode* node, MapperSlotId slotId); 00036 virtual void SetDefaultProperties(mitk::DataNode* node); 00037 virtual const char* GetFileExtensions(); 00038 virtual MultimapType GetFileExtensionsMap(); 00039 virtual const char* GetSaveFileExtensions(); 00040 virtual MultimapType GetSaveFileExtensionsMap(); 00041 virtual FileWriterList GetFileWriters(); 00042 virtual void MapEvent(const mitk::Event* event, const int eventID); 00043 virtual void RegisterExtraFactory(CoreObjectFactoryBase* factory); 00044 static Pointer GetInstance(); 00045 protected: 00046 CoreObjectFactory(); 00047 void MergeFileExtensions(MultimapType& fileExtensionsMap, MultimapType inputMap); 00048 void CreateFileExtensionsMap(); 00049 void CreateSaveFileExtensions(); 00050 typedef std::list<mitk::CoreObjectFactoryBase::Pointer> ExtraFactoriesList; 00051 ExtraFactoriesList m_ExtraFactories; 00052 static FileWriterList m_FileWriters; 00053 std::string m_FileExtensions; 00054 MultimapType m_FileExtensionsMap; 00055 std::string m_SaveFileExtensions; 00056 MultimapType m_SaveFileExtensionsMap; 00057 00058 }; 00059 00060 } // namespace mitk 00061 00062 #endif