Mercurial > hg > orthanc-stone
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_; |