# HG changeset patch # User bgo@SHARKNADO.localdomain # Date 1619431540 -7200 # Node ID 1a775f4ee67258377a3cb852889a0a55c3972b57 # Parent 34ab7f643327163e14fefcb3df1f3b1017cfbf34 added ability to specify initial slice in BasicFetchingStrategy and using it in OrthancSeriesVolumeProgressiveLoader diff -r 34ab7f643327 -r 1a775f4ee672 OrthancStone/Sources/Loaders/BasicFetchingStrategy.cpp --- a/OrthancStone/Sources/Loaders/BasicFetchingStrategy.cpp Mon Apr 26 12:05:02 2021 +0200 +++ b/OrthancStone/Sources/Loaders/BasicFetchingStrategy.cpp Mon Apr 26 12:05:40 2021 +0200 @@ -42,7 +42,8 @@ BasicFetchingStrategy::BasicFetchingStrategy(IFetchingItemsSorter* sorter, // Takes ownership - unsigned int maxQuality) : + unsigned int maxQuality, + unsigned int initialItem) : sorter_(sorter), maxQuality_(maxQuality), position_(0), @@ -55,7 +56,7 @@ nextQuality_.resize(sorter_->GetItemsCount(), 0); // Does not change along calls to "SetCurrent()" - SetCurrent(0); + SetCurrent(initialItem); } diff -r 34ab7f643327 -r 1a775f4ee672 OrthancStone/Sources/Loaders/BasicFetchingStrategy.h --- a/OrthancStone/Sources/Loaders/BasicFetchingStrategy.h Mon Apr 26 12:05:02 2021 +0200 +++ b/OrthancStone/Sources/Loaders/BasicFetchingStrategy.h Mon Apr 26 12:05:40 2021 +0200 @@ -71,7 +71,8 @@ public: BasicFetchingStrategy(IFetchingItemsSorter* sorter, // Takes ownership - unsigned int maxQuality); + unsigned int maxQuality, + unsigned int initialItem = 0); virtual unsigned int GetItemsCount() const ORTHANC_OVERRIDE { diff -r 34ab7f643327 -r 1a775f4ee672 OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp --- a/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp Mon Apr 26 12:05:02 2021 +0200 +++ b/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp Mon Apr 26 12:05:40 2021 +0200 @@ -397,9 +397,14 @@ if (progressiveQuality_) maxQuality = QUALITY_02; + unsigned int initialSlice = 0; + if (startCenter_) + initialSlice = static_cast(slicesCount) / 2; + strategy_.reset(new BasicFetchingStrategy( sorter_->CreateSorter(static_cast(slicesCount)), - maxQuality)); + maxQuality, + initialSlice)); assert(simultaneousDownloads_ != 0); for (unsigned int i = 0; i < simultaneousDownloads_; i++) @@ -528,6 +533,7 @@ : loadersContext_(loadersContext) , active_(false) , progressiveQuality_(progressiveQuality) + , startCenter_(false) , simultaneousDownloads_(4) , volume_(volume) , sorter_(new BasicFetchingItemsSorter::Factory) @@ -568,6 +574,11 @@ OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader() { LOG(TRACE) << "OrthancSeriesVolumeProgressiveLoader::~OrthancSeriesVolumeProgressiveLoader()"; + } + + void OrthancSeriesVolumeProgressiveLoader::SetStartCenter(bool startCenter) + { + startCenter_ = startCenter; } void OrthancSeriesVolumeProgressiveLoader::SetSimultaneousDownloads(unsigned int count) diff -r 34ab7f643327 -r 1a775f4ee672 OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h --- a/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h Mon Apr 26 12:05:02 2021 +0200 +++ b/OrthancStone/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h Mon Apr 26 12:05:40 2021 +0200 @@ -121,6 +121,7 @@ ILoadersContext& loadersContext_; bool active_; bool progressiveQuality_; + bool startCenter_; unsigned int simultaneousDownloads_; SeriesGeometry seriesGeometry_; boost::shared_ptr volume_; @@ -154,6 +155,8 @@ virtual ~OrthancSeriesVolumeProgressiveLoader(); + void SetStartCenter(bool startCenter); + void SetSimultaneousDownloads(unsigned int count); /**