ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
processing_observer.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#pragma once
6
7// PCL-free core observer interface (STANDARDS ยง1: core/ must not pull PCL).
8// The progress-reporting interface lives here; the PCL/Eigen-typed
9// visualization payloads live in core/visual_observer.hpp, which core headers
10// never include. The visual-observer registry below only traffics in an opaque
11// IVisualObserver* (forward-declared), so this header stays PCL-free.
12
13#include "reusex/core/stages.hpp"
14
15#include <cstddef>
16
17namespace reusex::core {
18
19// Forward declaration: the full definition (with PCL/Eigen payloads) lives in
20// core/visual_observer.hpp. Consumers that emit visualization events include
21// that header; the registry here only stores/returns the pointer.
22class IVisualObserver;
23
30
31class IObserver {};
32
34 public:
35 explicit ProgressObserver(Stage stage, size_t total = 0);
37
38 void update(size_t progress = 1);
39
40 inline void operator++() { update(1); };
41 inline void operator+=(size_t increment) { update(increment); };
42
43 private:
44 Stage stage_;
45 size_t total_ = 0;
46};
47
49 public:
50 virtual ~IProgressObserver() = default;
51
52 // Progress bar callbacks
53 virtual void on_process_started(Stage, size_t) {}
54 virtual void on_process_finished(Stage) {}
55 virtual void on_process_updated(Stage, size_t) {}
56};
57
58// Register a global processing observer. The caller retains ownership and must
59// keep the observer alive until reset or replacement. Passing nullptr clears
60// it.
61
64
67
70
71} // namespace reusex::core
virtual void on_process_started(Stage, size_t)
virtual void on_process_updated(Stage, size_t)
virtual ~IProgressObserver()=default
ProgressObserver(Stage stage, size_t total=0)
void update(size_t progress=1)
void reset_visual_observer()
void set_visual_observer(IVisualObserver *observer)
auto get_visual_observer() -> IVisualObserver *
void reset_progress_observer()
auto get_progress_observer() -> IProgressObserver *
void set_progress_observer(IProgressObserver *observer)