comparison 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
comparison
equal deleted inserted replaced
380:ba5ad93f935a 381:19bd222283ae
57 }; 57 };
58 58
59 59
60 class LayerReadyMessage : public OriginMessage<MessageType_LayerSource_LayerReady, ILayerSource> 60 class LayerReadyMessage : public OriginMessage<MessageType_LayerSource_LayerReady, ILayerSource>
61 { 61 {
62 public:
63 class IRendererFactory : public boost::noncopyable
64 {
65 public:
66 virtual ~IRendererFactory()
67 {
68 }
69
70 virtual ILayerRenderer* CreateRenderer() const = 0;
71 };
72
62 private: 73 private:
63 std::auto_ptr<ILayerRenderer> renderer_; 74 const IRendererFactory& factory_;
64 const CoordinateSystem3D& slice_; 75 const CoordinateSystem3D& slice_;
65 76
66 public: 77 public:
67 LayerReadyMessage(ILayerSource& origin, 78 LayerReadyMessage(ILayerSource& origin,
68 ILayerRenderer* renderer, // Takes ownership => TODO Remove this! 79 const IRendererFactory& rendererFactory,
69 const CoordinateSystem3D& slice) : 80 const CoordinateSystem3D& slice) :
70 OriginMessage(origin), 81 OriginMessage(origin),
71 renderer_(renderer), 82 factory_(rendererFactory),
72 slice_(slice) 83 slice_(slice)
73 { 84 {
74 } 85 }
75 86
76 // TODO - Remove this function 87 ILayerRenderer* CreateRenderer() const
77 std::auto_ptr<ILayerRenderer>& GetRendererRaw()
78 { 88 {
79 return renderer_; 89 return factory_.CreateRenderer();
80 }
81
82 const ILayerRenderer& GetRenderer() const
83 {
84 return *renderer_;
85 } 90 }
86 91
87 const CoordinateSystem3D& GetSlice() const 92 const CoordinateSystem3D& GetSlice() const
88 { 93 {
89 return slice_; 94 return slice_;