26 #include <mitkRawImageFileReader.h> 34 #include <itkGDCMImageIO.h> 35 #include <itkNiftiImageIO.h> 82 std::string additionalPath = programPath;
84 for (
int i = 0; i < 3; ++i)
86 std::size_t index = additionalPath.find_last_of(
'/');
87 if (index != std::string::npos)
89 additionalPath = additionalPath.substr(0, index);
104 class FixedNiftiImageIO :
public itk::NiftiImageIO
108 typedef FixedNiftiImageIO Self;
109 typedef itk::NiftiImageIO Superclass;
116 itkTypeMacro(FixedNiftiImageIO, Superclass)
118 bool SupportsDimension(
unsigned long dim)
override 120 return dim > 1 && dim < 5;
129 this->m_Context = context;
134 if (programPath.empty())
136 MITK_WARN <<
"Could not get the program path.";
167 m_MimeTypeProvider->Start();
170 this->RegisterDefaultMimeTypes();
171 this->RegisterItkReaderWriter();
172 this->RegisterVtkReaderWriter();
190 this->RegisterLegacyWriter();
195 for (
auto &elem : m_FileReaders)
200 for (
auto &elem : m_FileWriters)
205 for (
auto &elem : m_FileIOs)
210 for (
auto &elem : m_LegacyWriters)
224 m_MimeTypeProviderReg.Unregister();
225 m_MimeTypeProvider->Stop();
227 for (std::vector<mitk::CustomMimeType *>::const_iterator mimeTypeIter = m_DefaultMimeTypes.begin(),
228 iterEnd = m_DefaultMimeTypes.end();
229 mimeTypeIter != iterEnd;
232 delete *mimeTypeIter;
236 void MitkCoreActivator::RegisterDefaultMimeTypes()
241 for (std::vector<mitk::CustomMimeType *>::const_iterator mimeTypeIter = mimeTypes.begin(), iterEnd = mimeTypes.end();
242 mimeTypeIter != iterEnd;
245 m_DefaultMimeTypes.push_back(*mimeTypeIter);
246 m_Context->RegisterService(m_DefaultMimeTypes.back());
250 void MitkCoreActivator::RegisterItkReaderWriter()
252 std::list<itk::LightObject::Pointer> allobjects = itk::ObjectFactoryBase::CreateAllInstance(
"itkImageIOBase");
254 for (
auto &allobject : allobjects)
256 auto *io =
dynamic_cast<itk::ImageIOBase *
>(allobject.GetPointer());
260 if (dynamic_cast<itk::NiftiImageIO *>(io))
264 if (dynamic_cast<itk::GDCMImageIO *>(allobject.GetPointer()))
276 MITK_WARN <<
"Error ImageIO factory did not return an ImageIOBase: " << (allobject)->GetNameOfClass();
282 m_FileIOs.push_back(niftiIO);
285 void MitkCoreActivator::RegisterVtkReaderWriter()
295 void MitkCoreActivator::RegisterLegacyWriter()
297 std::list<itk::LightObject::Pointer> allobjects = itk::ObjectFactoryBase::CreateAllInstance(
"IOWriter");
299 for (
auto i = allobjects.begin(); i != allobjects.end(); ++i)
304 std::string description = std::string(
"Legacy ") + io->GetNameOfClass() +
" Writer";
306 m_LegacyWriters.push_back(writer);
310 MITK_ERROR <<
"Error IOWriter override is not of type mitk::FileWriter: " << (*i)->GetNameOfClass() << std::endl;
Interface of property relations service.
Interface of property aliases service.
static std::vector< CustomMimeType * > Get()
void Load(us::ModuleContext *context) override
static void AddAutoLoadPath(const std::string &path)
Interface of property extensions service.
#define US_INITIALIZE_MODULE
Creates initialization code for a module.
void Unload(us::ModuleContext *) override
Interface of property descriptions service.
The IMimeTypeProvider service interface allows to query all registered mime types.
Interface class of writers that write data to files.
static CustomMimeType NIFTI_MIMETYPE()
static std::string GetProgramPath()
Interface of property persistence service.
MsgHandler installMsgHandler(MsgHandler h)
void HandleMicroServicesMessages(us::MsgType type, const char *msg)
Interface of property filters service.
void AddMitkAutoLoadPaths(const std::string &programPath)
The common interface of all MITK file writers.
#define US_EXPORT_MODULE_ACTIVATOR(_activator_type)
Export a module activator class.