Mercurial > hg > orthanc-stone
changeset 262:77fdab5b5d6e am-2
cleanup + todos
author | am@osimis.io |
---|---|
date | Tue, 17 Jul 2018 18:28:12 +0200 |
parents | 58ad26032bd6 |
children | 6b98ac45aaee |
files | Framework/Layers/LayerSourceBase.cpp Framework/SmartLoader.cpp Framework/Toolbox/OrthancSlicesLoader.h |
diffstat | 3 files changed, 18 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/Framework/Layers/LayerSourceBase.cpp Tue Jul 17 14:44:26 2018 +0200 +++ b/Framework/Layers/LayerSourceBase.cpp Tue Jul 17 18:28:12 2018 +0200 @@ -25,33 +25,6 @@ namespace OrthancStone { -// namespace -// { -// class LayerReadyFunctor : public boost::noncopyable -// { -// private: -// std::auto_ptr<ILayerRenderer> layer_; -// const CoordinateSystem3D& slice_; -// bool isError_; - -// public: -// LayerReadyFunctor(ILayerRenderer* layer, -// const CoordinateSystem3D& slice, -// bool isError) : -// layer_(layer), -// slice_(slice), -// isError_(isError) -// { -// } - -// void operator() (ILayerSource::IObserver& observer, -// const ILayerSource& source) -// { -// observer.NotifyLayerReady(layer_, source, slice_, isError_); -// } -// }; -// } - void LayerSourceBase::NotifyGeometryReady() { EmitMessage(IMessage(MessageType_GeometryReady));
--- a/Framework/SmartLoader.cpp Tue Jul 17 14:44:26 2018 +0200 +++ b/Framework/SmartLoader.cpp Tue Jul 17 18:28:12 2018 +0200 @@ -33,12 +33,29 @@ void SmartLoader::HandleMessage(IObservable& from, const IMessage& message) { + switch (message.GetType()) { + case MessageType_SliceGeometryReady: + // TODO keep track of objects that have been loaded already + break; + case MessageType_SliceImageReady: + // TODO keep track of objects that have been loaded already + break; + default: + VLOG("unhandled message type" << message.GetType()); + } + // forward messages to its own observers IObservable::broker_.EmitMessage(from, IObservable::observers_, message); } ILayerSource* SmartLoader::GetFrame(const std::string& instanceId, unsigned int frame) { + // TODO: check if this frame has already been loaded or is already being loaded. + // - if already loaded: create a "clone" that will emit the GeometryReady/ImageReady messages "immediately" + // (it can not be immediate because Observers needs to register first and this is done after this method returns) + // - if currently loading, we need to return an object that will observe the existing LayerSource and forward + // the messages to its observables + // in both cases, we must be carefull about objects lifecycle !!! std::auto_ptr<OrthancFrameLayerSource> layerSource (new OrthancFrameLayerSource(IObserver::broker_, webService_)); layerSource->SetImageQuality(imageQuality_); layerSource->RegisterObserver(*this);
--- a/Framework/Toolbox/OrthancSlicesLoader.h Tue Jul 17 14:44:26 2018 +0200 +++ b/Framework/Toolbox/OrthancSlicesLoader.h Tue Jul 17 18:28:12 2018 +0200 @@ -125,7 +125,7 @@ boost::shared_ptr<WebCallback> webCallback_; // This is a PImpl pattern - ISliceLoaderObserver& userCallback_; + ISliceLoaderObserver& userCallback_; // TODO: instead of passing a userCallback, use the generic messages IWebService& orthanc_; State state_; SlicesSorter slices_;