Mercurial > hg > orthanc-stone
diff UnitTestsSources/UnitTestsMain.cpp @ 93:5945e81734a3 wasm
decoding of JPEG images
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 29 May 2017 17:28:31 +0200 |
parents | f244018a4e4b |
children | fcec0ab44054 |
line wrap: on
line diff
--- a/UnitTestsSources/UnitTestsMain.cpp Mon May 29 11:42:53 2017 +0200 +++ b/UnitTestsSources/UnitTestsMain.cpp Mon May 29 17:28:31 2017 +0200 @@ -48,7 +48,7 @@ for (size_t i = 0; i < loader.GetSliceCount(); i++) { - const_cast<OrthancSlicesLoader&>(loader).ScheduleLoadSliceImage(i); + const_cast<OrthancSlicesLoader&>(loader).ScheduleLoadSliceImage(i, SliceImageQuality_Full); } } @@ -60,7 +60,8 @@ virtual void NotifySliceImageReady(const OrthancSlicesLoader& loader, unsigned int sliceIndex, const Slice& slice, - Orthanc::ImageAccessor* image) + Orthanc::ImageAccessor* image, + SliceImageQuality quality) { std::auto_ptr<Orthanc::ImageAccessor> tmp(image); printf("Slice OK %dx%d\n", tmp->GetWidth(), tmp->GetHeight()); @@ -68,14 +69,15 @@ virtual void NotifySliceImageError(const OrthancSlicesLoader& loader, unsigned int sliceIndex, - const Slice& slice) + const Slice& slice, + SliceImageQuality quality) { printf("ERROR 2\n"); } }; - class OrthancVolumeImageLoader : + class OrthancVolumeImage : public SlicedVolumeBase, private OrthancSlicesLoader::ICallback { @@ -92,7 +94,7 @@ unsigned int slice; if (downloadStack_->Pop(slice)) { - loader_.ScheduleLoadSliceImage(slice); + loader_.ScheduleLoadSliceImage(slice, SliceImageQuality_Full); } } @@ -172,7 +174,11 @@ for (size_t i = 1; i < loader.GetSliceCount(); i++) { - if (!GeometryToolbox::IsNear(spacingZ, GetDistance(loader.GetSlice(i - 1), loader.GetSlice(i)))) + printf("%d %s %f\n", i, loader.GetSlice(i).GetOrthancInstanceId().c_str(), + GetDistance(loader.GetSlice(i - 1), loader.GetSlice(i))); + + if (!GeometryToolbox::IsNear(spacingZ, GetDistance(loader.GetSlice(i - 1), loader.GetSlice(i)), + 0.001 /* this is expressed in mm */)) { LOG(ERROR) << "The distance between successive slices is not constant in a volume image"; SlicedVolumeBase::NotifyGeometryError(); @@ -210,7 +216,8 @@ virtual void NotifySliceImageReady(const OrthancSlicesLoader& loader, unsigned int sliceIndex, const Slice& slice, - Orthanc::ImageAccessor* image) + Orthanc::ImageAccessor* image, + SliceImageQuality quality) { std::auto_ptr<Orthanc::ImageAccessor> protection(image); @@ -226,14 +233,15 @@ virtual void NotifySliceImageError(const OrthancSlicesLoader& loader, unsigned int sliceIndex, - const Slice& slice) + const Slice& slice, + SliceImageQuality quality) { LOG(ERROR) << "Cannot download slice " << sliceIndex << " in a volume image"; ScheduleSliceDownload(); } public: - OrthancVolumeImageLoader(IWebService& orthanc) : + OrthancVolumeImage(IWebService& orthanc) : loader_(*this, orthanc) { } @@ -258,6 +266,18 @@ { return loader_.GetSlice(index); } + + ImageBuffer3D& GetImage() + { + if (image_.get() == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); + } + else + { + return *image_; + } + } }; } @@ -296,11 +316,13 @@ Orthanc::WebServiceParameters web; OrthancStone::OracleWebService orthanc(oracle, web); - OrthancStone::OrthancVolumeImageLoader volume(orthanc); + OrthancStone::OrthancVolumeImage volume(orthanc); - volume.ScheduleLoadInstance("19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5", 0); + //volume.ScheduleLoadInstance("19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5", 0); //volume.ScheduleLoadSeries("318603c5-03e8cffc-a82b6ee1-3ccd3c1e-18d7e3bb"); // COMUNIX PET + //volume.ScheduleLoadSeries("7124dba7-09803f33-98b73826-33f14632-ea842d29"); // COMUNIX CT //volume.ScheduleLoadSeries("5990e39c-51e5f201-fe87a54c-31a55943-e59ef80e"); // Delphine sagital + volume.ScheduleLoadSeries("6f1b492a-e181e200-44e51840-ef8db55e-af529ab6"); // Delphine ax 2.5 boost::this_thread::sleep(boost::posix_time::milliseconds(1000));