Mercurial > hg > orthanc-stone
comparison Framework/SmartLoader.cpp @ 393:e7a494bdd956
removed Messages/MessageType.h
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Nov 2018 18:30:30 +0100 |
parents | 20f149669c1f |
children | 5f13809f3f76 |
comparison
equal
deleted
inserted
replaced
392:d87fe075d31b | 393:e7a494bdd956 |
---|---|
103 } | 103 } |
104 } | 104 } |
105 | 105 |
106 CachedSlice* Clone() const | 106 CachedSlice* Clone() const |
107 { | 107 { |
108 CachedSlice* output = new CachedSlice(broker_); | 108 CachedSlice* output = new CachedSlice(GetBroker()); |
109 output->sliceIndex_ = sliceIndex_; | 109 output->sliceIndex_ = sliceIndex_; |
110 output->slice_.reset(slice_->Clone()); | 110 output->slice_.reset(slice_->Clone()); |
111 output->image_ = image_; | 111 output->image_ = image_; |
112 output->effectiveQuality_ = effectiveQuality_; | 112 output->effectiveQuality_ = effectiveQuality_; |
113 output->status_ = status_; | 113 output->status_ = status_; |
148 layerSource.reset(cachedSlices_[sliceKeyId]->Clone()); | 148 layerSource.reset(cachedSlices_[sliceKeyId]->Clone()); |
149 cachedSlice = dynamic_cast<SmartLoader::CachedSlice*>(layerSource.get()); | 149 cachedSlice = dynamic_cast<SmartLoader::CachedSlice*>(layerSource.get()); |
150 } | 150 } |
151 else | 151 else |
152 { | 152 { |
153 layerSource.reset(new OrthancFrameLayerSource(IObserver::broker_, orthancApiClient_)); | 153 layerSource.reset(new OrthancFrameLayerSource(IObserver::GetBroker(), orthancApiClient_)); |
154 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->SetImageQuality(imageQuality_); | 154 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->SetImageQuality(imageQuality_); |
155 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::GeometryReadyMessage>(*this, &SmartLoader::OnLayerGeometryReady)); | 155 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::GeometryReadyMessage>(*this, &SmartLoader::OnLayerGeometryReady)); |
156 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::ImageReadyMessage>(*this, &SmartLoader::OnImageReady)); | 156 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::ImageReadyMessage>(*this, &SmartLoader::OnImageReady)); |
157 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::LayerReadyMessage>(*this, &SmartLoader::OnLayerReady)); | 157 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::LayerReadyMessage>(*this, &SmartLoader::OnLayerReady)); |
158 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->LoadFrame(instanceId, frame); | 158 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->LoadFrame(instanceId, frame); |
187 // TODO: check if it is already in the cache | 187 // TODO: check if it is already in the cache |
188 | 188 |
189 | 189 |
190 | 190 |
191 // create the slice in the cache with "empty" data | 191 // create the slice in the cache with "empty" data |
192 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::broker_)); | 192 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::GetBroker())); |
193 cachedSlice->slice_.reset(new Slice(instanceId, frame)); | 193 cachedSlice->slice_.reset(new Slice(instanceId, frame)); |
194 cachedSlice->status_ = CachedSliceStatus_ScheduledToLoad; | 194 cachedSlice->status_ = CachedSliceStatus_ScheduledToLoad; |
195 std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame); | 195 std::string sliceKeyId = instanceId + ":" + boost::lexical_cast<std::string>(frame); |
196 | 196 |
197 LOG(WARNING) << "Will preload: " << sliceKeyId; | 197 LOG(WARNING) << "Will preload: " << sliceKeyId; |
198 | 198 |
199 cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice); | 199 cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice); |
200 | 200 |
201 std::auto_ptr<ILayerSource> layerSource(new OrthancFrameLayerSource(IObserver::broker_, orthancApiClient_)); | 201 std::auto_ptr<ILayerSource> layerSource(new OrthancFrameLayerSource(IObserver::GetBroker(), orthancApiClient_)); |
202 | 202 |
203 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->SetImageQuality(imageQuality_); | 203 dynamic_cast<OrthancFrameLayerSource*>(layerSource.get())->SetImageQuality(imageQuality_); |
204 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::GeometryReadyMessage>(*this, &SmartLoader::OnLayerGeometryReady)); | 204 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::GeometryReadyMessage>(*this, &SmartLoader::OnLayerGeometryReady)); |
205 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::ImageReadyMessage>(*this, &SmartLoader::OnImageReady)); | 205 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::ImageReadyMessage>(*this, &SmartLoader::OnImageReady)); |
206 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::LayerReadyMessage>(*this, &SmartLoader::OnLayerReady)); | 206 layerSource->RegisterObserverCallback(new Callable<SmartLoader, ILayerSource::LayerReadyMessage>(*this, &SmartLoader::OnLayerReady)); |
231 std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + | 231 std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + |
232 boost::lexical_cast<std::string>(slice.GetFrame())); | 232 boost::lexical_cast<std::string>(slice.GetFrame())); |
233 | 233 |
234 LOG(WARNING) << "Geometry ready: " << sliceKeyId; | 234 LOG(WARNING) << "Geometry ready: " << sliceKeyId; |
235 | 235 |
236 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::broker_)); | 236 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::GetBroker())); |
237 cachedSlice->slice_.reset(slice.Clone()); | 237 cachedSlice->slice_.reset(slice.Clone()); |
238 cachedSlice->effectiveQuality_ = source.GetImageQuality(); | 238 cachedSlice->effectiveQuality_ = source.GetImageQuality(); |
239 cachedSlice->status_ = CachedSliceStatus_GeometryLoaded; | 239 cachedSlice->status_ = CachedSliceStatus_GeometryLoaded; |
240 | 240 |
241 cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice); | 241 cachedSlices_[sliceKeyId] = boost::shared_ptr<CachedSlice>(cachedSlice); |
254 std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + | 254 std::string sliceKeyId = (slice.GetOrthancInstanceId() + ":" + |
255 boost::lexical_cast<std::string>(slice.GetFrame())); | 255 boost::lexical_cast<std::string>(slice.GetFrame())); |
256 | 256 |
257 LOG(WARNING) << "Image ready: " << sliceKeyId; | 257 LOG(WARNING) << "Image ready: " << sliceKeyId; |
258 | 258 |
259 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::broker_)); | 259 boost::shared_ptr<CachedSlice> cachedSlice(new CachedSlice(IObserver::GetBroker())); |
260 cachedSlice->image_.reset(Orthanc::Image::Clone(message.GetImage())); | 260 cachedSlice->image_.reset(Orthanc::Image::Clone(message.GetImage())); |
261 cachedSlice->effectiveQuality_ = message.GetImageQuality(); | 261 cachedSlice->effectiveQuality_ = message.GetImageQuality(); |
262 cachedSlice->slice_.reset(message.GetSlice().Clone()); | 262 cachedSlice->slice_.reset(message.GetSlice().Clone()); |
263 cachedSlice->status_ = CachedSliceStatus_ImageLoaded; | 263 cachedSlice->status_ = CachedSliceStatus_ImageLoaded; |
264 | 264 |