Mercurial > hg > orthanc-stone
diff Framework/Layers/ILayerSource.h @ 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 |
line wrap: on
line diff
--- a/Framework/Layers/ILayerSource.h Tue Nov 06 14:59:20 2018 +0100 +++ b/Framework/Layers/ILayerSource.h Tue Nov 06 15:36:06 2018 +0100 @@ -59,29 +59,34 @@ class LayerReadyMessage : public OriginMessage<MessageType_LayerSource_LayerReady, ILayerSource> { + public: + class IRendererFactory : public boost::noncopyable + { + public: + virtual ~IRendererFactory() + { + } + + virtual ILayerRenderer* CreateRenderer() const = 0; + }; + private: - std::auto_ptr<ILayerRenderer> renderer_; - const CoordinateSystem3D& slice_; + const IRendererFactory& factory_; + const CoordinateSystem3D& slice_; public: LayerReadyMessage(ILayerSource& origin, - ILayerRenderer* renderer, // Takes ownership => TODO Remove this! + const IRendererFactory& rendererFactory, const CoordinateSystem3D& slice) : OriginMessage(origin), - renderer_(renderer), + factory_(rendererFactory), slice_(slice) { } - // TODO - Remove this function - std::auto_ptr<ILayerRenderer>& GetRendererRaw() + ILayerRenderer* CreateRenderer() const { - return renderer_; - } - - const ILayerRenderer& GetRenderer() const - { - return *renderer_; + return factory_.CreateRenderer(); } const CoordinateSystem3D& GetSlice() const