Mercurial > hg > orthanc-stone
comparison Framework/Layers/OrthancFrameLayerSource.cpp @ 266:c9cf95b49a86 am-2
removed OrthancSlicesLoader::ISliceLoaderObserver; now using standard messages instead
author | am@osimis.io |
---|---|
date | Tue, 21 Aug 2018 18:14:22 +0200 |
parents | 9afafb192180 |
children | 89d02de83c03 |
comparison
equal
deleted
inserted
replaced
265:30dc6e383b0b | 266:c9cf95b49a86 |
---|---|
29 | 29 |
30 #include <boost/lexical_cast.hpp> | 30 #include <boost/lexical_cast.hpp> |
31 | 31 |
32 namespace OrthancStone | 32 namespace OrthancStone |
33 { | 33 { |
34 void OrthancFrameLayerSource::OnSliceGeometryReady(const OrthancSlicesLoader& loader) | 34 void OrthancFrameLayerSource::HandleMessage(const IObservable& from, const IMessage& message) |
35 { | 35 { |
36 if (loader.GetSliceCount() > 0) | 36 switch (message.GetType()) |
37 { | 37 { |
38 LayerSourceBase::NotifyGeometryReady(); | 38 case MessageType_SliceGeometryReady: |
39 { | |
40 const OrthancSlicesLoader& loader = dynamic_cast<const OrthancSlicesLoader&>(from); | |
41 if (loader.GetSliceCount() > 0) | |
42 { | |
43 LayerSourceBase::NotifyGeometryReady(); | |
44 } | |
45 else | |
46 { | |
47 LayerSourceBase::NotifyGeometryError(); | |
48 } | |
49 | |
50 }; break; | |
51 case MessageType_SliceGeometryError: | |
52 { | |
53 const OrthancSlicesLoader& loader = dynamic_cast<const OrthancSlicesLoader&>(from); | |
54 LayerSourceBase::NotifyGeometryError(); | |
55 }; break; | |
56 case MessageType_SliceImageReady: | |
57 { | |
58 const OrthancSlicesLoader::SliceImageReadyMessage& msg = dynamic_cast<const OrthancSlicesLoader::SliceImageReadyMessage&>(message); | |
59 bool isFull = (msg.effectiveQuality_ == SliceImageQuality_FullPng || msg.effectiveQuality_ == SliceImageQuality_FullPam); | |
60 LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(msg.image_.release(), msg.slice_, isFull), | |
61 msg.slice_.GetGeometry(), false); | |
62 | |
63 }; break; | |
64 case MessageType_SliceImageError: | |
65 { | |
66 const OrthancSlicesLoader::SliceImageErrorMessage& msg = dynamic_cast<const OrthancSlicesLoader::SliceImageErrorMessage&>(message); | |
67 LayerSourceBase::NotifyLayerReady(NULL, msg.slice_.GetGeometry(), true); | |
68 }; break; | |
69 default: | |
70 VLOG("unhandled message type" << message.GetType()); | |
39 } | 71 } |
40 else | |
41 { | |
42 LayerSourceBase::NotifyGeometryError(); | |
43 } | |
44 } | |
45 | |
46 void OrthancFrameLayerSource::OnSliceGeometryError(const OrthancSlicesLoader& loader) | |
47 { | |
48 LayerSourceBase::NotifyGeometryError(); | |
49 } | |
50 | |
51 void OrthancFrameLayerSource::OnSliceImageReady(const OrthancSlicesLoader& loader, | |
52 unsigned int sliceIndex, | |
53 const Slice& slice, | |
54 std::auto_ptr<Orthanc::ImageAccessor>& image, | |
55 SliceImageQuality quality) | |
56 { | |
57 bool isFull = (quality == SliceImageQuality_FullPng || quality == SliceImageQuality_FullPam); | |
58 LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(image.release(), slice, isFull), | |
59 slice.GetGeometry(), false); | |
60 } | |
61 | |
62 void OrthancFrameLayerSource::OnSliceImageError(const OrthancSlicesLoader& loader, | |
63 unsigned int sliceIndex, | |
64 const Slice& slice, | |
65 SliceImageQuality quality) | |
66 { | |
67 LayerSourceBase::NotifyLayerReady(NULL, slice.GetGeometry(), true); | |
68 } | 72 } |
69 | 73 |
70 | 74 |
71 OrthancFrameLayerSource::OrthancFrameLayerSource(MessageBroker& broker, IWebService& orthanc) : | 75 OrthancFrameLayerSource::OrthancFrameLayerSource(MessageBroker& broker, IWebService& orthanc) : |
72 LayerSourceBase(broker), | 76 LayerSourceBase(broker), |
73 OrthancSlicesLoader::ISliceLoaderObserver(broker), | 77 IObserver(broker), |
74 loader_(broker, *this, orthanc), | 78 //OrthancSlicesLoader::ISliceLoaderObserver(broker), |
79 loader_(broker, orthanc), | |
75 quality_(SliceImageQuality_FullPng) | 80 quality_(SliceImageQuality_FullPng) |
76 { | 81 { |
82 loader_.RegisterObserver(*this); | |
77 } | 83 } |
78 | 84 |
79 | 85 |
80 void OrthancFrameLayerSource::LoadSeries(const std::string& seriesId) | 86 void OrthancFrameLayerSource::LoadSeries(const std::string& seriesId) |
81 { | 87 { |