Medical Imaging Interaction Toolkit  2025.08.99-f7084adb
Medical Imaging Interaction Toolkit
mitkIOUtil.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkIOUtil_h
14 #define mitkIOUtil_h
15 
16 #include <MitkCoreExports.h>
17 #include <mitkDataStorage.h>
18 #include <mitkFileSystem.h>
19 #include <mitkImage.h>
20 #include <mitkPointSet.h>
21 #include <mitkSurface.h>
22 
23 #include <mitkFileReaderSelector.h>
24 #include <mitkFileWriterSelector.h>
25 #include <mitkIFileReader.h>
26 #include <mitkIFileWriter.h>
27 
28 #include <fstream>
29 
30 #if !defined(MITK_WINDOWS_NO_UNDEF) && defined(GetTempPath)
31  #undef GetTempPath
32 #endif
33 
34 namespace us
35 {
36  class ModuleResource;
37 }
38 
39 namespace mitk
40 {
41  class PropertyList;
42 
51  {
52  public:
58  {
59  LoadInfo(const std::string &path);
60 
61  std::string m_Path;
62  std::vector<BaseData::Pointer> m_Output;
63 
65  bool m_Cancel;
66 
68  };
69 
75  {
76  virtual bool operator()(LoadInfo &loadInfo) const = 0;
77  };
78 
80  {
81  SaveInfo(const BaseData *baseData, const MimeType &mimeType, const std::string &path);
82 
83  bool operator<(const SaveInfo &other) const;
84 
87 
93  std::string m_Path;
95  bool m_Cancel;
96  };
97 
103  {
104  virtual bool operator()(SaveInfo &saveInfo) const = 0;
105  };
106 
112  static std::string GetProgramPath();
113 
114  enum class AppBundlePath
115  {
116  Parent,
117  Self
118  };
119 
127  static fs::path GetAppBundlePath(AppBundlePath path = AppBundlePath::Parent);
128 
134  static std::string GetTempPath();
135 
141  static char GetDirectorySeparator();
142 
163  static std::string CreateTemporaryFile(std::ofstream &tmpStream,
164  const std::string &templateName = "XXXXXX",
165  std::string path = std::string());
166 
189  static std::string CreateTemporaryFile(std::ofstream &tmpStream,
190  std::ios_base::openmode mode,
191  const std::string &templateName = "XXXXXX",
192  std::string path = std::string());
193 
214  static std::string CreateTemporaryFile(const std::string &templateName = "XXXXXX",
215  std::string path = std::string());
216 
233  static std::string CreateTemporaryDirectory(const std::string &templateName = "XXXXXX",
234  std::string path = std::string());
235 
252  static DataStorage::SetOfObjects::Pointer Load(const std::string &path, DataStorage &storage,
253  const ReaderOptionsFunctorBase *optionsCallback = nullptr);
254 
270  static DataStorage::SetOfObjects::Pointer Load(const std::string &path,
271  const IFileReader::Options &options,
272  DataStorage &storage);
273 
289  static std::vector<BaseData::Pointer> Load(const std::string &path,
290  const ReaderOptionsFunctorBase *optionsCallback = nullptr);
291 
292  template <typename T>
293  static typename T::Pointer Load(const std::string& path, const ReaderOptionsFunctorBase *optionsCallback = nullptr)
294  {
295  return dynamic_cast<T*>(Load(path, optionsCallback).at(0).GetPointer());
296  }
297 
312  static std::vector<BaseData::Pointer> Load(const std::string &path, const IFileReader::Options &options);
313 
314  template <typename T>
315  static typename T::Pointer Load(const std::string& path, const IFileReader::Options &options)
316  {
317  return dynamic_cast<T*>(Load(path, options).at(0).GetPointer());
318  }
319 
334  static DataStorage::SetOfObjects::Pointer Load(const std::vector<std::string> &paths, DataStorage &storage,
335  const ReaderOptionsFunctorBase *optionsCallback = nullptr);
336 
337  static std::vector<BaseData::Pointer> Load(const std::vector<std::string> &paths,
338  const ReaderOptionsFunctorBase *optionsCallback = nullptr);
339 
349  static std::vector<BaseData::Pointer> Load(const us::ModuleResource &usResource,
350  std::ios_base::openmode mode = std::ios_base::in);
351 
352  template <typename T>
353  static typename T::Pointer Load(const us::ModuleResource &usResource, std::ios_base::openmode mode = std::ios_base::in)
354  {
355  return dynamic_cast<T*>(Load(usResource, mode).at(0).GetPointer());
356  }
357 
358  static BaseData::Pointer Load(const std::string& path, const PropertyList* properties);
359 
370  static void Save(const mitk::BaseData *data, const std::string &path, bool setPathProperty = false);
371 
383  static void Save(const mitk::BaseData *data, const std::string &path, const IFileWriter::Options &options, bool setPathProperty = false);
384 
398  static void Save(const mitk::BaseData *data,
399  const std::string &mimeType,
400  const std::string &path,
401  bool addExtension = true,
402  bool setPathProperty = false);
403 
418  static void Save(const mitk::BaseData *data,
419  const std::string &mimeType,
420  const std::string &path,
421  const mitk::IFileWriter::Options &options,
422  bool addExtension = true,
423  bool setPathProperty = false);
424 
436  static void Save(std::vector<SaveInfo> &saveInfos, bool setPathProperty = false);
437 
438  protected:
439  static std::string Load(std::vector<LoadInfo> &loadInfos,
440  DataStorage::SetOfObjects *nodeResult,
441  DataStorage *ds,
442  const ReaderOptionsFunctorBase *optionsCallback);
443 
444  static std::string Save(const BaseData *data,
445  const std::string &mimeType,
446  const std::string &path,
447  WriterOptionsFunctorBase *optionsCallback,
448  bool addExtension,
449  bool setPathProperty);
450 
451  static std::string Save(std::vector<SaveInfo> &saveInfos,
452  WriterOptionsFunctorBase *optionsCallback,
453  bool setPathProperty);
454 
455  private:
456  struct Impl;
457  };
458 }
459 
460 #endif
mitk::IOUtil::LoadInfo::m_Path
std::string m_Path
Definition: mitkIOUtil.h:61
mitk::IOUtil::ReaderOptionsFunctorBase
Definition: mitkIOUtil.h:74
mitkFileReaderSelector.h
mitk::DataStorage::SetOfObjects
itk::VectorContainer< unsigned int, DataNode::Pointer > SetOfObjects
A Container of objects that is used as a result set of GetSubset() query operations (Set of.
Definition: mitkDataStorage.h:46
mitkImage.h
mitk::IFileIO::Options
std::map< std::string, us::Any > Options
Options for reading or writing data.
Definition: mitkIFileIO.h:69
mitk::IOUtil::SaveInfo::m_MimeType
MimeType m_MimeType
The selected mime-type, used to restrict results from FileWriterSelector.
Definition: mitkIOUtil.h:91
mitkDataStorage.h
us
Definition: mitkAbstractFileReader.h:29
mitk::modelFit::operator<
bool operator<(const StaticParameterMap::ValueType &a, const StaticParameterMap::ValueType &b)
Compares two var lists and returns true if the first list's first item is lower than the second one's...
Definition: mitkModelFitStaticParameterMap.h:139
itk::SmartPointer< Self >
mitk::IOUtil::SaveInfo::m_Cancel
bool m_Cancel
Flag indicating if sub-sequent save operations are to be canceled.
Definition: mitkIOUtil.h:95
mitk::IOUtil::SaveInfo::m_Path
std::string m_Path
The path to write the BaseData object to.
Definition: mitkIOUtil.h:93
mitkPointSet.h
mitk::FileWriterSelector
Definition: mitkFileWriterSelector.h:29
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitk::IOUtil::Load
static T::Pointer Load(const std::string &path, const ReaderOptionsFunctorBase *optionsCallback=nullptr)
Definition: mitkIOUtil.h:293
mitkSurface.h
mitk::IOUtil::SaveInfo
Definition: mitkIOUtil.h:79
mitkIFileWriter.h
mitk::FileReaderSelector
Definition: mitkFileReaderSelector.h:29
mitk::IOUtil::Load
static T::Pointer Load(const std::string &path, const IFileReader::Options &options)
Definition: mitkIOUtil.h:315
MitkCoreExports.h
mitk::IOUtil::SaveInfo::m_WriterSelector
FileWriterSelector m_WriterSelector
Contains a set of IFileWriter objects.
Definition: mitkIOUtil.h:89
mitkIFileReader.h
mitk::PropertyList
Key-value list holding instances of BaseProperty.
Definition: mitkPropertyList.h:56
mitk::BaseData
Base of all data objects.
Definition: mitkBaseData.h:42
mitk::IOUtil::LoadInfo::m_ReaderSelector
FileReaderSelector m_ReaderSelector
Definition: mitkIOUtil.h:64
mitk::DataStorage
Data management class that handles 'was created by' relations.
Definition: mitkDataStorage.h:43
us::ModuleResource
Definition: usModuleResource.h:55
mitk::IOUtil::AppBundlePath
AppBundlePath
Definition: mitkIOUtil.h:114
mitk::IOUtil::LoadInfo
Definition: mitkIOUtil.h:57
mitk::IOUtil::Load
static T::Pointer Load(const us::ModuleResource &usResource, std::ios_base::openmode mode=std::ios_base::in)
Definition: mitkIOUtil.h:353
mitk::IOUtil::LoadInfo::m_Properties
const PropertyList * m_Properties
Definition: mitkIOUtil.h:67
mitk::IOUtil::LoadInfo::m_Output
std::vector< BaseData::Pointer > m_Output
Definition: mitkIOUtil.h:62
mitk::IOUtil::WriterOptionsFunctorBase
Definition: mitkIOUtil.h:102
mitkFileSystem.h
mitk::IOUtil::SaveInfo::m_BaseData
const BaseData * m_BaseData
The BaseData object to save.
Definition: mitkIOUtil.h:86
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15
mitk::IOUtil
A utility class to load and save data from/to the local file system.
Definition: mitkIOUtil.h:50
mitk::IOUtil::LoadInfo::m_Cancel
bool m_Cancel
Definition: mitkIOUtil.h:65
mitkFileWriterSelector.h
mitk::MimeType
The MimeType class represents a registered mime-type. It is an immutable wrapper for mitk::CustomMime...
Definition: mitkMimeType.h:36