Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
ProgressReporters.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <functional>
11#include <string>
12
14
15namespace open3d {
16namespace utility {
17
23public:
24 CountingProgressReporter(std::function<bool(double)> f) {
25 update_progress_ = f;
26 }
27 void SetTotal(int64_t total) { total_ = total; }
28 bool Update(int64_t count) {
29 if (!update_progress_) return true;
30 last_count_ = count;
31 double percent = 0;
32 if (total_ > 0) {
33 if (count < total_) {
34 percent = count * 100.0 / total_;
35 } else {
36 percent = 100.0;
37 }
38 }
39 return CallUpdate(percent);
40 }
41 void Finish() { CallUpdate(100); }
42 // for compatibility with ProgressBar
43 void operator++() { Update(last_count_ + 1); }
44
45private:
46 bool CallUpdate(double percent) {
47 if (update_progress_) {
48 return update_progress_(percent);
49 }
50 return true;
51 }
52 std::function<bool(double)> update_progress_;
53 int64_t total_ = -1;
54 int64_t last_count_ = -1;
55};
56
59 ConsoleProgressUpdater(const std::string &progress_info,
60 bool active = false)
61 : progress_bar_(100, progress_info, active) {}
62 bool operator()(double pct) {
63 while (last_pct_ < pct) {
64 ++last_pct_;
65 ++progress_bar_;
66 }
67 return true;
68 }
69
70private:
71 utility::ProgressBar progress_bar_;
72 int last_pct_ = 0;
73};
74
75} // namespace utility
76} // namespace open3d
Definition ProgressReporters.h:22
void SetTotal(int64_t total)
Definition ProgressReporters.h:27
void operator++()
Definition ProgressReporters.h:43
bool Update(int64_t count)
Definition ProgressReporters.h:28
CountingProgressReporter(std::function< bool(double)> f)
Definition ProgressReporters.h:24
void Finish()
Definition ProgressReporters.h:41
Definition ProgressBar.h:15
int count
Definition FilePCD.cpp:42
Definition PinholeCameraIntrinsic.cpp:16
update_progress(double percent) functor for ProgressBar
Definition ProgressReporters.h:58
bool operator()(double pct)
Definition ProgressReporters.h:62
ConsoleProgressUpdater(const std::string &progress_info, bool active=false)
Definition ProgressReporters.h:59