Mercurial > hg > orthanc-stone
diff Samples/Sdl/Loader.cpp @ 648:1088d4c4d78c
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 13 May 2019 17:19:04 +0200 |
parents | 6af3099ed8da |
children | 970949ff868a |
line wrap: on
line diff
--- a/Samples/Sdl/Loader.cpp Mon May 13 17:03:46 2019 +0200 +++ b/Samples/Sdl/Loader.cpp Mon May 13 17:19:04 2019 +0200 @@ -26,6 +26,7 @@ #include "../../Framework/StoneInitialization.h" #include "../../Framework/Toolbox/GeometryToolbox.h" #include "../../Framework/Volumes/ImageBuffer3D.h" +#include "../../Framework/Toolbox/SlicesSorter.h" // From Orthanc framework #include <Core/Compression/GzipCompressor.h> @@ -1138,7 +1139,8 @@ - class DicomInstanceParameters : public boost::noncopyable + class DicomInstanceParameters : + public Orthanc::IDynamicObject /* to be used as a payload of SlicesSorter */ { private: Orthanc::DicomImageInformation imageInformation_; @@ -1374,8 +1376,8 @@ double distance; - return (OrthancStone::CoordinateSystem3D::GetDistance(distance, tmp, plan) && - OrthancStone::LinearAlgebra::IsNear(distance, thickness_ / 2.0)); + return (OrthancStone::CoordinateSystem3D::GetDistance(distance, tmp, plane) && + distance <= thickness_ / 2.0); } bool IsColor() const @@ -1491,9 +1493,19 @@ Orthanc::DicomMap dicom; dicom.FromDicomAsJson(value[instances[i]]); - DicomInstanceParameters instance(dicom); + std::auto_ptr<DicomInstanceParameters> instance(new DicomInstanceParameters(dicom)); + + OrthancStone::CoordinateSystem3D geometry = instance->GetGeometry(); + that_.slices_.AddSlice(geometry, instance.release()); + } + if (!that_.slices_.Sort()) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange, + "Cannot sort the 3D slices of a DICOM series"); } + + printf("series sorted\n"); } }; @@ -1529,7 +1541,7 @@ bool active_; std::auto_ptr<OrthancStone::ImageBuffer3D> image_; - + OrthancStone::SlicesSorter slices_; public: AxialVolumeOrthancLoader(OrthancStone::IObservable& oracle) :