Mercurial > hg > orthanc-stone
diff Framework/Toolbox/OrthancSlicesLoader.cpp @ 647:6af3099ed8da
uncoupling OrthancStone::SlicesSorter from OrthancStone::Slice
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 13 May 2019 17:03:46 +0200 |
parents | 42dadae61fa9 |
children | 1088d4c4d78c |
line wrap: on
line diff
--- a/Framework/Toolbox/OrthancSlicesLoader.cpp Mon May 13 15:22:08 2019 +0200 +++ b/Framework/Toolbox/OrthancSlicesLoader.cpp Mon May 13 17:03:46 2019 +0200 @@ -193,7 +193,7 @@ { bool ok = false; - if (slices_.GetSliceCount() > 0) + if (slices_.GetSlicesCount() > 0) { Vector normal; if (slices_.SelectNormal(normal)) @@ -209,7 +209,7 @@ if (ok) { - LOG(INFO) << "Loaded a series with " << slices_.GetSliceCount() << " slice(s)"; + LOG(INFO) << "Loaded a series with " << slices_.GetSlicesCount() << " slice(s)"; BroadcastMessage(SliceGeometryReadyMessage(*this)); } else @@ -256,7 +256,8 @@ std::auto_ptr<Slice> slice(new Slice); if (slice->ParseOrthancFrame(dicom, instances[i], frame)) { - slices_.AddSlice(slice.release()); + CoordinateSystem3D geometry = slice->GetGeometry(); + slices_.AddSlice(geometry, slice.release()); } else { @@ -291,7 +292,8 @@ std::auto_ptr<Slice> slice(new Slice); if (slice->ParseOrthancFrame(dicom, instanceId, frame)) { - slices_.AddSlice(slice.release()); + CoordinateSystem3D geometry = slice->GetGeometry(); + slices_.AddSlice(geometry, slice.release()); } else { @@ -322,7 +324,10 @@ if (slice->ParseOrthancFrame(dicom, instanceId, frame)) { LOG(INFO) << "Loaded instance geometry " << instanceId; - slices_.AddSlice(slice.release()); + + CoordinateSystem3D geometry = slice->GetGeometry(); + slices_.AddSlice(geometry, slice.release()); + BroadcastMessage(SliceGeometryReadyMessage(*this)); } else @@ -717,14 +722,14 @@ } - size_t OrthancSlicesLoader::GetSliceCount() const + size_t OrthancSlicesLoader::GetSlicesCount() const { if (state_ != State_GeometryReady) { throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); } - return slices_.GetSliceCount(); + return slices_.GetSlicesCount(); } @@ -734,8 +739,8 @@ { throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); } - - return slices_.GetSlice(index); + + return dynamic_cast<const Slice&>(slices_.GetSlicePayload(index)); } @@ -746,8 +751,10 @@ { throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); } - - return slices_.LookupSlice(index, plane); + + double distance; + return (slices_.LookupClosestSlice(index, distance, plane) && + distance <= GetSlice(index).GetThickness() / 2.0); }