SourceXtractorPlusPlus  0.8
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ProgressMediator.cpp
Go to the documentation of this file.
1 
17 /*
18  * Progress.cpp
19  *
20  * Created on: Sep 07, 2018
21  * Author: Alejandro Alvarez Ayllon
22  */
23 
25 
26 namespace SourceXtractor {
27 
28 class ProgressMediator::ProgressCounter : public Observer<SegmentationProgress> {
29 public:
30  ProgressCounter(ProgressMediator& progress_listener, SegmentationProgress& segmentation_progress) :
31  m_progress_listener(progress_listener), m_segmentation_progress(segmentation_progress) {
32  }
33 
34  void handleMessage(const SegmentationProgress& progress) override {
35  m_segmentation_progress = progress;
37  }
38 
39 private:
42 };
43 
44 class ProgressMediator::SourceCounter : public Observer<std::shared_ptr<SourceInterface>> {
45 public:
46  SourceCounter(ProgressMediator& progress_listener, std::atomic_int& counter) :
47  m_progress_listener(progress_listener), m_counter(counter) {}
48 
50  ++m_counter;
52  }
53 
54 private:
56  std::atomic_int& m_counter;
57 };
58 
59 class ProgressMediator::GroupCounter : public Observer<std::shared_ptr<SourceGroupInterface>> {
60 public:
61  GroupCounter(ProgressMediator& progress_listener, std::atomic_int& counter) :
62  m_progress_listener(progress_listener), m_counter(counter) {}
63 
65  m_counter += group->size();
67  }
68 
69 private:
71  std::atomic_int& m_counter;
72 };
73 
75  m_segmentation_progress{0, 0}, m_detected{0}, m_deblended{0}, m_measured{0},
76  m_segmentation_listener{std::make_shared<ProgressCounter>(*this, m_segmentation_progress)},
77  m_detection_listener{std::make_shared<SourceCounter>(*this, m_detected)},
78  m_deblending_listener{std::make_shared<GroupCounter>(*this, m_deblended)},
79  m_measurement_listener{std::make_shared<GroupCounter>(*this, m_measured)} {
80 }
81 
84 }
85 
87  return m_detection_listener;
88 }
89 
91  return m_deblending_listener;
92 }
93 
96 }
97 
102  {"Detected", m_detected, -1},
103  {"Deblended", m_deblended, -1},
104  {"Measured", m_measured, m_deblended},
105  });
106 }
107 
111 }
112 
113 } // end SourceXtractor
Used to notify observers of the progress of the processing of the image.
Definition: Segmentation.h:48
void notifyObservers(const T &message) const
Definition: Observable.h:71
ProgressCounter(ProgressMediator &progress_listener, SegmentationProgress &segmentation_progress)
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
GroupCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
std::shared_ptr< group_observer_t > & getDeblendingObserver(void)
void handleMessage(const std::shared_ptr< SourceInterface > &) override
SourceCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
std::shared_ptr< source_observer_t > & getDetectionObserver(void)
std::shared_ptr< source_observer_t > m_detection_listener
STL class.
std::shared_ptr< segmentation_observer_t > & getSegmentationObserver(void)
SegmentationProgress m_segmentation_progress
std::shared_ptr< segmentation_observer_t > m_segmentation_listener
Observer interface to be used with Observable to implement the Observer pattern.
Definition: Observable.h:38
void handleMessage(const SegmentationProgress &progress) override
void handleMessage(const std::shared_ptr< SourceGroupInterface > &group) override
std::shared_ptr< group_observer_t > m_deblending_listener
std::shared_ptr< group_observer_t > m_measurement_listener