diff --git a/Modules/SceneSerializationBase/files.cmake b/Modules/SceneSerializationBase/files.cmake index 022aebc1c2..e5218fadf6 100644 --- a/Modules/SceneSerializationBase/files.cmake +++ b/Modules/SceneSerializationBase/files.cmake @@ -1,33 +1,34 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES mitkAnnotationPropertySerializer.cpp mitkBaseDataSerializer.cpp mitkBasePropertySerializer.cpp mitkBoolLookupTablePropertySerializer.cpp mitkBoolPropertySerializer.cpp mitkClippingPropertySerializer.cpp mitkColorPropertySerializer.cpp mitkDoublePropertySerializer.cpp mitkEnumerationPropertySerializer.cpp mitkEnumerationSubclassesSerializer.cpp mitkFloatLookupTablePropertySerializer.cpp mitkFloatPropertySerializer.cpp mitkGroupTagPropertySerializer.cpp mitkIntLookupTablePropertySerializer.cpp mitkIntPropertySerializer.cpp mitkLevelWindowPropertySerializer.cpp mitkLookupTablePropertySerializer.cpp mitkPoint3dPropertySerializer.cpp mitkPoint3iPropertySerializer.cpp mitkPoint4dPropertySerializer.cpp mitkPropertyListSerializer.cpp mitkStringLookupTablePropertySerializer.cpp mitkStringPropertySerializer.cpp + mitkTemporoSpatialStringPropertySerializer.cpp mitkTransferFunctionPropertySerializer.cpp mitkUIntPropertySerializer.cpp mitkUShortPropertySerializer.cpp mitkVector3DPropertySerializer.cpp mitkVectorPropertySerializer.cpp ) diff --git a/Modules/SceneSerializationBase/src/mitkTemporoSpatialStringPropertySerializer.cpp b/Modules/SceneSerializationBase/src/mitkTemporoSpatialStringPropertySerializer.cpp new file mode 100644 index 0000000000..48347052b5 --- /dev/null +++ b/Modules/SceneSerializationBase/src/mitkTemporoSpatialStringPropertySerializer.cpp @@ -0,0 +1,67 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#ifndef mitkTemporoSpatialStringPropertySerializer_h_included +#define mitkTemporoSpatialStringPropertySerializer_h_included + +#include "mitkBasePropertySerializer.h" + +#include "mitkTemporoSpatialStringProperty.h" + +namespace mitk +{ + +class TemporoSpatialStringPropertySerializer : public BasePropertySerializer +{ + public: + + mitkClassMacro( TemporoSpatialStringPropertySerializer, BasePropertySerializer ); + itkFactorylessNewMacro(Self) + itkCloneMacro(Self) + + virtual TiXmlElement* Serialize() override + { + if (const TemporoSpatialStringProperty* prop = dynamic_cast(m_Property.GetPointer())) + { + auto element = new TiXmlElement("temporo_spatial_string"); + std::string content = PropertyPersistenceSerialization::serializeTemporoSpatialStringPropertyToJSON(prop); + TiXmlText text(content.c_str()); + element->InsertEndChild(text); + return element; + } + else return nullptr; + } + + virtual BaseProperty::Pointer Deserialize(TiXmlElement* element) override + { + if (!element) return nullptr; + const char* s( element->GetText() ); + std::string content = s ? s : ""; + return PropertyPersistenceDeserialization::deserializeJSONToTemporoSpatialStringProperty(content); + } + + protected: + + TemporoSpatialStringPropertySerializer() {} + virtual ~TemporoSpatialStringPropertySerializer() {} +}; + +} // namespace + +// important to put this into the GLOBAL namespace (because it starts with 'namespace mitk') +MITK_REGISTER_SERIALIZER(TemporoSpatialStringPropertySerializer); + +#endif