diff --git a/Modules/DICOMQI/CMakeLists.txt b/Modules/DICOMQI/CMakeLists.txt deleted file mode 100644 index 01b9e69713..0000000000 --- a/Modules/DICOMQI/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(autoload/IO) diff --git a/Modules/ModuleList.cmake b/Modules/ModuleList.cmake index 9ab99b1a0e..589eed5b3f 100644 --- a/Modules/ModuleList.cmake +++ b/Modules/ModuleList.cmake @@ -1,79 +1,78 @@ # The entries in the mitk_modules list must be # ordered according to their dependencies. set(mitk_modules Core CommandLine AppUtil DCMTesting RDF LegacyIO DataTypesExt Annotation LegacyGL AlgorithmsExt MapperExt DICOMReader DICOMReaderServices DICOMTesting SceneSerializationBase PlanarFigure ImageDenoising ImageExtraction SceneSerialization Gizmo GraphAlgorithms Multilabel ImageStatistics ContourModel SurfaceInterpolation Segmentation PlanarFigureSegmentation QtWidgets QtWidgetsExt Chart SegmentationUI Classification GPGPU OpenIGTLink IGTBase IGT CameraCalibration OpenCL OpenCVVideoSupport QtOverlays ToFHardware ToFProcessing ToFUI PhotoacousticsHardware PhotoacousticsAlgorithms PhotoacousticsLib US USUI DicomUI Remeshing Python QtPython Persistence OpenIGTLinkUI IGTUI DicomRT RTUI IOExt XNAT TubeGraph BiophotonicsHardware MatchPointRegistration MatchPointRegistrationUI DiffusionImaging TumorInvasionAnalysis BoundingShape RenderWindowManager RenderWindowManagerUI CEST - DICOMQI ) if(MITK_ENABLE_PIC_READER) list(APPEND mitk_modules IpPicSupportIO) endif() diff --git a/Modules/Multilabel/CMakeLists.txt b/Modules/Multilabel/CMakeLists.txt index 7f696d72eb..dfe56177a3 100644 --- a/Modules/Multilabel/CMakeLists.txt +++ b/Modules/Multilabel/CMakeLists.txt @@ -1,9 +1,10 @@ MITK_CREATE_MODULE( DEPENDS MitkCore MitkAlgorithmsExt MitkSceneSerializationBase MitkDICOMReader PACKAGE_DEPENDS PRIVATE ITK|ITKQuadEdgeMesh+ITKAntiAlias+ITKIONRRD ) add_subdirectory(autoload/IO) +add_subdirectory(autoload/DICOMQIIO) if(BUILD_TESTING) add_subdirectory(Testing) endif() diff --git a/Modules/DICOMQI/autoload/IO/CMakeLists.txt b/Modules/Multilabel/autoload/DICOMQIIO/CMakeLists.txt similarity index 54% rename from Modules/DICOMQI/autoload/IO/CMakeLists.txt rename to Modules/Multilabel/autoload/DICOMQIIO/CMakeLists.txt index 6e41cc8639..bbad4e7c06 100644 --- a/Modules/DICOMQI/autoload/IO/CMakeLists.txt +++ b/Modules/Multilabel/autoload/DICOMQIIO/CMakeLists.txt @@ -1,8 +1,6 @@ MITK_CREATE_MODULE( DICOMQIIO - INCLUDE_DIRS - PRIVATE src/IO - DEPENDS PUBLIC MitkMultilabel MitkDICOMReader + DEPENDS MitkMultilabel PACKAGE_DEPENDS PRIVATE DCMQI DCMTK AUTOLOAD_WITH MitkCore ) diff --git a/Modules/DICOMQI/autoload/IO/files.cmake b/Modules/Multilabel/autoload/DICOMQIIO/files.cmake similarity index 72% rename from Modules/DICOMQI/autoload/IO/files.cmake rename to Modules/Multilabel/autoload/DICOMQIIO/files.cmake index b6faaec765..2c08b9d3b3 100644 --- a/Modules/DICOMQI/autoload/IO/files.cmake +++ b/Modules/Multilabel/autoload/DICOMQIIO/files.cmake @@ -1,5 +1,5 @@ set(CPP_FILES mitkDICOMSegmentationIO.cpp mitkDICOMQIIOMimeTypes.cpp - mitkDICOMQIActivator.cpp + mitkDICOMQIIOActivator.cpp ) diff --git a/Modules/DICOMQI/autoload/IO/mitkDICOMQIActivator.cpp b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOActivator.cpp similarity index 91% rename from Modules/DICOMQI/autoload/IO/mitkDICOMQIActivator.cpp rename to Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOActivator.cpp index b84c883fc7..17d96ec169 100644 --- a/Modules/DICOMQI/autoload/IO/mitkDICOMQIActivator.cpp +++ b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOActivator.cpp @@ -1,62 +1,63 @@ /*=================================================================== 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. ===================================================================*/ #include #include #include #include +#include #include "mitkDICOMSegmentationIO.h" #include "mitkDICOMQIIOMimeTypes.h" namespace mitk { /** \brief Registers services for multilabel dicom module. */ - class DICOMQIIOModulActivator : public us::ModuleActivator + class DICOMQIIOActivator : public us::ModuleActivator { std::vector m_FileIOs; public: void Load(us::ModuleContext * context) override { us::ServiceProperties props; props[us::ServiceConstants::SERVICE_RANKING()] = 10; std::vector mimeTypes = mitk::MitkDICOMQIIOMimeTypes::Get(); for (std::vector::const_iterator mimeTypeIter = mimeTypes.begin(), iterEnd = mimeTypes.end(); mimeTypeIter != iterEnd; ++mimeTypeIter) { context->RegisterService(*mimeTypeIter, props); } m_FileIOs.push_back(new DICOMSegmentationIO()); } void Unload(us::ModuleContext *) override { for (auto &elem : m_FileIOs) { delete elem; } } }; } -US_EXPORT_MODULE_ACTIVATOR(mitk::DICOMQIIOModulActivator) +US_EXPORT_MODULE_ACTIVATOR(mitk::DICOMQIIOActivator) diff --git a/Modules/DICOMQI/autoload/IO/mitkDICOMQIIOMimeTypes.cpp b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOMimeTypes.cpp similarity index 97% rename from Modules/DICOMQI/autoload/IO/mitkDICOMQIIOMimeTypes.cpp rename to Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOMimeTypes.cpp index 49d8bfcea3..e42029d947 100644 --- a/Modules/DICOMQI/autoload/IO/mitkDICOMQIIOMimeTypes.cpp +++ b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOMimeTypes.cpp @@ -1,115 +1,113 @@ /*=================================================================== 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. ===================================================================*/ #include "mitkDICOMQIIOMimeTypes.h" #include "mitkIOMimeTypes.h" -#include -#include #include #include #include // dcmqi #include #include namespace mitk { std::vector MitkDICOMQIIOMimeTypes::Get() { std::vector mimeTypes; // order matters here (descending rank for mime types) mimeTypes.push_back(DICOMQI_MIMETYPE().Clone()); return mimeTypes; } // Mime Types MitkDICOMQIIOMimeTypes::MitkDICOMQIMimeType::MitkDICOMQIMimeType() : CustomMimeType(DICOMQI_MIMETYPE_NAME()) { this->AddExtension("dcm"); this->SetCategory(IOMimeTypes::CATEGORY_IMAGES()); this->SetComment("DICOM SEG"); } bool MitkDICOMQIIOMimeTypes::MitkDICOMQIMimeType::AppliesTo(const std::string &path) const { bool canRead(CustomMimeType::AppliesTo(path)); // fix for bug 18572 // Currently this function is called for writing as well as reading, in that case // the image information can of course not be read // This is a bug, this function should only be called for reading. if (!itksys::SystemTools::FileExists(path.c_str())) { return canRead; } // end fix for bug 18572 DcmFileFormat dcmFileFormat; OFCondition status = dcmFileFormat.loadFile(path.c_str()); if (status.bad()) { canRead = false; } if (!canRead) { return canRead; } OFString modality; if (dcmFileFormat.getDataset()->findAndGetOFString(DCM_Modality, modality).good()) { if (modality.compare("SEG") == 0) { canRead = true; } else { canRead = false; } } return canRead; } MitkDICOMQIIOMimeTypes::MitkDICOMQIMimeType *MitkDICOMQIIOMimeTypes::MitkDICOMQIMimeType::Clone() const { return new MitkDICOMQIMimeType(*this); } MitkDICOMQIIOMimeTypes::MitkDICOMQIMimeType MitkDICOMQIIOMimeTypes::DICOMQI_MIMETYPE() { return MitkDICOMQIMimeType(); } // Names std::string MitkDICOMQIIOMimeTypes::DICOMQI_MIMETYPE_NAME() { // create a unique and sensible name for this mime type static std::string name = IOMimeTypes::DEFAULT_BASE_NAME() + ".image.dicom.seg"; return name; } } diff --git a/Modules/DICOMQI/autoload/IO/mitkDICOMQIIOMimeTypes.h b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOMimeTypes.h similarity index 100% rename from Modules/DICOMQI/autoload/IO/mitkDICOMQIIOMimeTypes.h rename to Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMQIIOMimeTypes.h diff --git a/Modules/DICOMQI/autoload/IO/mitkDICOMSegmentationIO.cpp b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMSegmentationIO.cpp similarity index 100% rename from Modules/DICOMQI/autoload/IO/mitkDICOMSegmentationIO.cpp rename to Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMSegmentationIO.cpp diff --git a/Modules/DICOMQI/autoload/IO/mitkDICOMSegmentationIO.h b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMSegmentationIO.h similarity index 94% rename from Modules/DICOMQI/autoload/IO/mitkDICOMSegmentationIO.h rename to Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMSegmentationIO.h index d9076e141e..7f566d63b5 100644 --- a/Modules/DICOMQI/autoload/IO/mitkDICOMSegmentationIO.h +++ b/Modules/Multilabel/autoload/DICOMQIIO/mitkDICOMSegmentationIO.h @@ -1,68 +1,66 @@ /*=================================================================== 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 __mitkDICOMSegmentationIO_h #define __mitkDICOMSegmentationIO_h #include #include -#include "MitkDICOMQIIOExports.h" - #include namespace mitk { /** * Read and Writes a LabelSetImage to a dcm file * @ingroup Process */ - class MITKDICOMQIIO_EXPORT DICOMSegmentationIO : public mitk::AbstractFileIO + class DICOMSegmentationIO : public mitk::AbstractFileIO { public: typedef mitk::LabelSetImage InputType; typedef itk::Image itkInputImageType; typedef itk::Image itkInternalImageType; DICOMSegmentationIO(); // -------------- AbstractFileReader ------------- using AbstractFileReader::Read; /** * @brief Reads a number of DICOM segmentation from the file system * @return a vector of mitk::LabelSetImages * @throws throws an mitk::Exception if an error ocurrs */ virtual std::vector Read() override; virtual ConfidenceLevel GetReaderConfidenceLevel() const override; // -------------- AbstractFileWriter ------------- virtual void Write() override; virtual ConfidenceLevel GetWriterConfidenceLevel() const override; private: DICOMSegmentationIO *IOClone() const override; // -------------- DICOMSegmentationIO specific functions ------------- const std::string CreateMetaDataJsonFile(int layer); void SetLabelProperties(Label *label, dcmqi::SegmentAttributes *segmentAttribute); void AddDICOMTagsToService(); }; } // end of namespace mitk #endif // __mitkDICOMSegmentationIO_h