Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/Framework/Volumes/SlicedVolumeBase.cpp Fri May 26 18:27:59 2017 +0200 +++ b/Framework/Volumes/SlicedVolumeBase.cpp Mon May 29 11:04:18 2017 +0200 @@ -23,77 +23,24 @@ namespace OrthancStone { - namespace - { - struct GeometryReadyFunctor - { - void operator() (ISlicedVolume::IObserver& observer, - const ISlicedVolume& source) - { - observer.NotifyGeometryReady(source); - } - }; - - struct GeometryErrorFunctor - { - void operator() (ISlicedVolume::IObserver& observer, - const ISlicedVolume& source) - { - observer.NotifyGeometryError(source); - } - }; - - struct ContentChangeFunctor - { - void operator() (ISlicedVolume::IObserver& observer, - const ISlicedVolume& source) - { - observer.NotifyContentChange(source); - } - }; - - struct SliceChangeFunctor - { - size_t sliceIndex_; - const Slice& slice_; - - SliceChangeFunctor(size_t sliceIndex, - const Slice& slice) : - sliceIndex_(sliceIndex), - slice_(slice) - { - } - - void operator() (ISlicedVolume::IObserver& observer, - const ISlicedVolume& source) - { - observer.NotifySliceChange(source, sliceIndex_, slice_); - } - }; - } - void SlicedVolumeBase::NotifyGeometryReady() { - GeometryReadyFunctor functor; - observers_.Notify(this, functor); + observers_.Apply(*this, &IObserver::NotifyGeometryReady); } void SlicedVolumeBase::NotifyGeometryError() { - GeometryErrorFunctor functor; - observers_.Notify(this, functor); + observers_.Apply(*this, &IObserver::NotifyGeometryError); } void SlicedVolumeBase::NotifyContentChange() { - ContentChangeFunctor functor; - observers_.Notify(this, functor); + observers_.Apply(*this, &IObserver::NotifyContentChange); } - void SlicedVolumeBase::NotifySliceChange(size_t sliceIndex, + void SlicedVolumeBase::NotifySliceChange(const size_t& sliceIndex, const Slice& slice) { - SliceChangeFunctor functor(sliceIndex, slice); - observers_.Notify(this, functor); + observers_.Apply(*this, &IObserver::NotifySliceChange, sliceIndex, slice); } }