ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
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
17
namespace
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.
22
class
IVisualObserver
;
23
24
enum class
EventType
{
25
process
,
26
progress
,
27
visualization
28
//
29
};
30
31
class
IObserver
{};
32
33
class
ProgressObserver
{
34
public
:
35
explicit
ProgressObserver
(
Stage
stage,
size_t
total = 0);
36
~ProgressObserver
();
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
48
class
IProgressObserver
:
IObserver
{
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
62
void
set_visual_observer
(
IVisualObserver
*observer);
63
void
set_progress_observer
(
IProgressObserver
*observer);
64
65
void
reset_visual_observer
();
66
void
reset_progress_observer
();
67
68
auto
get_visual_observer
() ->
IVisualObserver
*;
69
auto
get_progress_observer
() ->
IProgressObserver
*;
70
71
}
// namespace reusex::core
reusex::core::IObserver
Definition
processing_observer.hpp:31
reusex::core::IProgressObserver
Definition
processing_observer.hpp:48
reusex::core::IProgressObserver::on_process_started
virtual void on_process_started(Stage, size_t)
Definition
processing_observer.hpp:53
reusex::core::IProgressObserver::on_process_finished
virtual void on_process_finished(Stage)
Definition
processing_observer.hpp:54
reusex::core::IProgressObserver::on_process_updated
virtual void on_process_updated(Stage, size_t)
Definition
processing_observer.hpp:55
reusex::core::IProgressObserver::~IProgressObserver
virtual ~IProgressObserver()=default
reusex::core::IVisualObserver
Definition
visual_observer.hpp:39
reusex::core::ProgressObserver::operator+=
void operator+=(size_t increment)
Definition
processing_observer.hpp:41
reusex::core::ProgressObserver::ProgressObserver
ProgressObserver(Stage stage, size_t total=0)
reusex::core::ProgressObserver::operator++
void operator++()
Definition
processing_observer.hpp:40
reusex::core::ProgressObserver::~ProgressObserver
~ProgressObserver()
reusex::core::ProgressObserver::update
void update(size_t progress=1)
reusex::core
Definition
component_record.hpp:12
reusex::core::reset_visual_observer
void reset_visual_observer()
reusex::core::Stage
Stage
Definition
stages.hpp:11
reusex::core::set_visual_observer
void set_visual_observer(IVisualObserver *observer)
reusex::core::get_visual_observer
auto get_visual_observer() -> IVisualObserver *
reusex::core::reset_progress_observer
void reset_progress_observer()
reusex::core::get_progress_observer
auto get_progress_observer() -> IProgressObserver *
reusex::core::EventType
EventType
Definition
processing_observer.hpp:24
reusex::core::EventType::progress
@ progress
Definition
processing_observer.hpp:26
reusex::core::EventType::process
@ process
Definition
processing_observer.hpp:25
reusex::core::EventType::visualization
@ visualization
Definition
processing_observer.hpp:27
reusex::core::set_progress_observer
void set_progress_observer(IProgressObserver *observer)
libs
reusex
include
core
processing_observer.hpp
Generated by
1.17.0