Mercurial > hg > orthanc-stone
comparison Framework/Volumes/SlicedVolumeBase.cpp @ 90:64e60018943f wasm
fix and observer refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 29 May 2017 11:04:18 +0200 |
parents | 90bf4116a23c |
children | e2fe9352f240 |
comparison
equal
deleted
inserted
replaced
89:f244018a4e4b | 90:64e60018943f |
---|---|
21 | 21 |
22 #include "SlicedVolumeBase.h" | 22 #include "SlicedVolumeBase.h" |
23 | 23 |
24 namespace OrthancStone | 24 namespace OrthancStone |
25 { | 25 { |
26 namespace | |
27 { | |
28 struct GeometryReadyFunctor | |
29 { | |
30 void operator() (ISlicedVolume::IObserver& observer, | |
31 const ISlicedVolume& source) | |
32 { | |
33 observer.NotifyGeometryReady(source); | |
34 } | |
35 }; | |
36 | |
37 struct GeometryErrorFunctor | |
38 { | |
39 void operator() (ISlicedVolume::IObserver& observer, | |
40 const ISlicedVolume& source) | |
41 { | |
42 observer.NotifyGeometryError(source); | |
43 } | |
44 }; | |
45 | |
46 struct ContentChangeFunctor | |
47 { | |
48 void operator() (ISlicedVolume::IObserver& observer, | |
49 const ISlicedVolume& source) | |
50 { | |
51 observer.NotifyContentChange(source); | |
52 } | |
53 }; | |
54 | |
55 struct SliceChangeFunctor | |
56 { | |
57 size_t sliceIndex_; | |
58 const Slice& slice_; | |
59 | |
60 SliceChangeFunctor(size_t sliceIndex, | |
61 const Slice& slice) : | |
62 sliceIndex_(sliceIndex), | |
63 slice_(slice) | |
64 { | |
65 } | |
66 | |
67 void operator() (ISlicedVolume::IObserver& observer, | |
68 const ISlicedVolume& source) | |
69 { | |
70 observer.NotifySliceChange(source, sliceIndex_, slice_); | |
71 } | |
72 }; | |
73 } | |
74 | |
75 void SlicedVolumeBase::NotifyGeometryReady() | 26 void SlicedVolumeBase::NotifyGeometryReady() |
76 { | 27 { |
77 GeometryReadyFunctor functor; | 28 observers_.Apply(*this, &IObserver::NotifyGeometryReady); |
78 observers_.Notify(this, functor); | |
79 } | 29 } |
80 | 30 |
81 void SlicedVolumeBase::NotifyGeometryError() | 31 void SlicedVolumeBase::NotifyGeometryError() |
82 { | 32 { |
83 GeometryErrorFunctor functor; | 33 observers_.Apply(*this, &IObserver::NotifyGeometryError); |
84 observers_.Notify(this, functor); | |
85 } | 34 } |
86 | 35 |
87 void SlicedVolumeBase::NotifyContentChange() | 36 void SlicedVolumeBase::NotifyContentChange() |
88 { | 37 { |
89 ContentChangeFunctor functor; | 38 observers_.Apply(*this, &IObserver::NotifyContentChange); |
90 observers_.Notify(this, functor); | |
91 } | 39 } |
92 | 40 |
93 void SlicedVolumeBase::NotifySliceChange(size_t sliceIndex, | 41 void SlicedVolumeBase::NotifySliceChange(const size_t& sliceIndex, |
94 const Slice& slice) | 42 const Slice& slice) |
95 { | 43 { |
96 SliceChangeFunctor functor(sliceIndex, slice); | 44 observers_.Apply(*this, &IObserver::NotifySliceChange, sliceIndex, slice); |
97 observers_.Notify(this, functor); | |
98 } | 45 } |
99 } | 46 } |