summaryrefslogtreecommitdiffstats
path: root/src/analyzer/analyzerprogress.h
blob: 40484932ee25d36df60cb6d28075a4ffd5e840ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include "util/math.h"


typedef double AnalyzerProgress;

constexpr AnalyzerProgress kAnalyzerProgressUnknown    = -1.0;
constexpr AnalyzerProgress kAnalyzerProgressNone       =  0.0;  //   0.0 %
constexpr AnalyzerProgress kAnalyzerProgressHalf       =  0.5;  //  50.0 %
constexpr AnalyzerProgress kAnalyzerProgressFinalizing =  0.95; //  95.0 %
constexpr AnalyzerProgress kAnalyzerProgressDone       =  1.0;  // 100.0%

Q_DECLARE_METATYPE(AnalyzerProgress);

// Integer [0, 100]
inline
int analyzerProgressPercent(AnalyzerProgress analyzerProgress) {
    DEBUG_ASSERT(analyzerProgress >= kAnalyzerProgressNone);
    const auto analyzerProgressClamped =
            math_min(analyzerProgress, kAnalyzerProgressDone);
    return static_cast<int>(std::round(
            100 * (analyzerProgressClamped - kAnalyzerProgressNone) /
            (kAnalyzerProgressDone - kAnalyzerProgressNone)));
}