comparison Framework/Layers/OrthancFrameLayerSource.cpp @ 381:19bd222283ae

uncoupling LayerReadyMessage from the creation of the renderer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 06 Nov 2018 15:36:06 +0100
parents ba5ad93f935a
children 5f13809f3f76
comparison
equal deleted inserted replaced
380:ba5ad93f935a 381:19bd222283ae
47 void OrthancFrameLayerSource::OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message) 47 void OrthancFrameLayerSource::OnSliceGeometryError(const OrthancSlicesLoader::SliceGeometryErrorMessage& message)
48 { 48 {
49 LayerSourceBase::NotifyGeometryError(); 49 LayerSourceBase::NotifyGeometryError();
50 } 50 }
51 51
52
53 class OrthancFrameLayerSource::RendererFactory : public LayerReadyMessage::IRendererFactory
54 {
55 private:
56 const OrthancSlicesLoader::SliceImageReadyMessage& message_;
57
58 public:
59 RendererFactory(const OrthancSlicesLoader::SliceImageReadyMessage& message) :
60 message_(message)
61 {
62 }
63
64 virtual ILayerRenderer* CreateRenderer() const
65 {
66 bool isFull = (message_.GetEffectiveQuality() == SliceImageQuality_FullPng ||
67 message_.GetEffectiveQuality() == SliceImageQuality_FullPam);
68
69 return FrameRenderer::CreateRenderer(message_.GetImage(), message_.GetSlice(), isFull);
70 }
71 };
72
52 void OrthancFrameLayerSource::OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message) 73 void OrthancFrameLayerSource::OnSliceImageReady(const OrthancSlicesLoader::SliceImageReadyMessage& message)
53 { 74 {
54 // first notify that the image is ready (targeted to, i.e: an image cache) 75 // first notify that the image is ready (targeted to, i.e: an image cache)
55 LayerSourceBase::NotifyImageReady(message.GetImage(), message.GetEffectiveQuality(), message.GetSlice()); 76 LayerSourceBase::NotifyImageReady(message.GetImage(), message.GetEffectiveQuality(), message.GetSlice());
56 77
57 // then notify that the layer is ready for render 78 // then notify that the layer is ready for render
58 bool isFull = (message.GetEffectiveQuality() == SliceImageQuality_FullPng || 79 RendererFactory factory(message);
59 message.GetEffectiveQuality() == SliceImageQuality_FullPam); 80 LayerSourceBase::NotifyLayerReady(factory, message.GetSlice().GetGeometry());
60
61 LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(message.GetImage(), message.GetSlice(), isFull),
62 message.GetSlice().GetGeometry());
63
64 } 81 }
65 82
66 void OrthancFrameLayerSource::OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message) 83 void OrthancFrameLayerSource::OnSliceImageError(const OrthancSlicesLoader::SliceImageErrorMessage& message)
67 { 84 {
68 LayerSourceBase::NotifyLayerError(message.GetSlice().GetGeometry()); 85 LayerSourceBase::NotifyLayerError(message.GetSlice().GetGeometry());