Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkSceneIO.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 mitkSceneIO_h
14 #define mitkSceneIO_h
15 
17 
18 #include <mitkDataStorage.h>
19 #include <mitkNodePredicateBase.h>
20 
21 #include <Poco/Zip/ZipLocalFileHeader.h>
22 
23 namespace tinyxml2
24 {
25  class XMLDocument;
26  class XMLElement;
27 }
28 
29 namespace mitk
30 {
31  class BaseData;
32  class IPropertyTransience;
33  class PropertyList;
34 
56  class MITKSCENESERIALIZATION_EXPORT SceneIO : public itk::Object
57  {
58  public:
60  itkFactorylessNewMacro(Self);
61  itkCloneMacro(Self);
62 
65 
98  virtual DataStorage::Pointer LoadScene(const std::string &filename,
99  DataStorage *storage = nullptr,
100  bool clearStorageFirst = false);
101 
120  virtual DataStorage::Pointer LoadSceneUnzipped(const std::string &indexfilename,
121  DataStorage *storage = nullptr,
122  bool clearStorageFirst = false);
123 
124 
145  virtual bool SaveScene(DataStorage::SetOfObjects::ConstPointer sceneNodes,
146  const DataStorage *storage,
147  const std::string &filename);
148 
161 
176 
177  protected:
179  ~SceneIO() override;
180 
182 
183  tinyxml2::XMLElement *SaveBaseData(tinyxml2::XMLDocument &doc, BaseData *data, const std::string &filenamehint, bool &error);
184  tinyxml2::XMLElement *SavePropertyList(tinyxml2::XMLDocument &doc, const IPropertyTransience *transience, PropertyList *propertyList, const BaseData *nodeData, const std::string &filenamehint);
185 
186  void OnUnzipError(const void *pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string> &info);
187  void OnUnzipOk(const void *pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const Poco::Path> &info);
188 
189  FailedBaseDataListType::Pointer m_FailedNodes;
190  PropertyList::Pointer m_FailedProperties;
191 
192  std::string m_WorkingDirectory;
193  unsigned int m_UnzipErrors;
194  };
195 }
196 
197 #endif
#define MITKSCENESERIALIZATION_EXPORT
Base class of all data objects.
Definition: mitkBaseData.h:60
Abstract data management class that organizes DataNode objects in a directed acyclic graph.
itk::VectorContainer< unsigned int, DataNode::Pointer > SetOfObjects
Container type used as a result set of query operations such as GetSubset().
Interface of the property transience service.
Key-value list holding instances of BaseProperty.
Provides functionality to load and save MITK scene files (.mitk).
Definition: mitkSceneIO.h:57
std::string m_WorkingDirectory
Definition: mitkSceneIO.h:192
unsigned int m_UnzipErrors
Definition: mitkSceneIO.h:193
PropertyList::Pointer m_FailedProperties
Definition: mitkSceneIO.h:190
void OnUnzipError(const void *pSender, std::pair< const Poco::Zip::ZipLocalFileHeader, const std::string > &info)
virtual DataStorage::Pointer LoadSceneUnzipped(const std::string &indexfilename, DataStorage *storage=nullptr, bool clearStorageFirst=false)
Loads a scene from an already-unpacked directory.
virtual bool SaveScene(DataStorage::SetOfObjects::ConstPointer sceneNodes, const DataStorage *storage, const std::string &filename)
Saves a scene of DataNodes to a .mitk scene file (ZIP archive).
void OnUnzipOk(const void *pSender, std::pair< const Poco::Zip::ZipLocalFileHeader, const Poco::Path > &info)
const FailedBaseDataListType * GetFailedNodes()
Returns DataNodes whose BaseData failed to be written during the most recent SaveScene() call.
std::string CreateEmptyTempDirectory()
const PropertyList * GetFailedProperties()
Returns properties that failed to be written during the most recent SaveScene() call.
mitkClassMacroItkParent(SceneIO, itk::Object)
tinyxml2::XMLElement * SavePropertyList(tinyxml2::XMLDocument &doc, const IPropertyTransience *transience, PropertyList *propertyList, const BaseData *nodeData, const std::string &filenamehint)
DataStorage::SetOfObjects FailedBaseDataListType
Type for a list of DataNodes whose BaseData failed to serialize/deserialize.
Definition: mitkSceneIO.h:61
~SceneIO() override
FailedBaseDataListType::Pointer m_FailedNodes
Definition: mitkSceneIO.h:189
virtual DataStorage::Pointer LoadScene(const std::string &filename, DataStorage *storage=nullptr, bool clearStorageFirst=false)
Loads a scene from an MITK scene file.
tinyxml2::XMLElement * SaveBaseData(tinyxml2::XMLDocument &doc, BaseData *data, const std::string &filenamehint, bool &error)
Find image slices visible on a given plane.