SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
classificationcolorsampler.h
Go to the documentation of this file.
1
10#ifndef OPENSWMM_RENDER_CLASSIFICATIONCOLORSAMPLER_H
11#define OPENSWMM_RENDER_CLASSIFICATIONCOLORSAMPLER_H
13#include <algorithm>
14#include <cmath>
15
16namespace OpenSWMM::Render
17{
19{
20public:
33 ClassificationColorSampler(const ClassificationScheme &scheme, double dataMin, double dataMax,
34 int classes = 0)
35 : m_ramp(scheme.resolvedRamp()), m_range(scheme.effectiveRange(dataMin, dataMax)),
36 m_invert(scheme.invertRamp())
37 {
38 m_classes.reserve(classes);
39 for (int i = 0; i < classes; ++i)
40 m_classes.append(scheme.colorForClass(i, classes));
41 }
48 [[nodiscard]] QColor classColor(int index) const
49 {
50 return index < 0 || index >= m_classes.size() ? QColor(Qt::transparent)
51 : m_classes.at(index);
52 }
61 [[nodiscard]] QColor valueColor(double value) const
62 {
63 if (!std::isfinite(value) || value < m_range.first)
64 return QColor(Qt::transparent);
65 const double f = std::clamp(m_range.second > m_range.first
66 ? (value - m_range.first) / (m_range.second - m_range.first)
67 : 0.0,
68 0.0, 1.0);
69 return m_ramp.colorAt(m_invert ? 1.0 - f : f);
70 }
71
72private:
73 RasterColorRamp m_ramp;
74 QPair<double, double> m_range;
75 bool m_invert;
76 QVector<QColor> m_classes;
77};
78} // namespace OpenSWMM::Render
79#endif
Definition classificationcolorsampler.h:19
ClassificationColorSampler(const ClassificationScheme &scheme, double dataMin, double dataMax, int classes=0)
Capture a classification's ramp, range, inversion, and optional class colors.
Definition classificationcolorsampler.h:33
QColor classColor(int index) const
Obtain a captured discrete class color without rebuilding a palette.
Definition classificationcolorsampler.h:48
QColor valueColor(double value) const
Sample the captured continuous ramp over its captured effective range.
Definition classificationcolorsampler.h:61
Shared classification model: mode + binner + ramp + range + per-class overrides, with a revision stam...
Definition classificationscheme.h:63
QColor colorForClass(int classIndex) const
Sample a discrete class using the configured class count.
Definition classificationscheme.cpp:432
Slice US.1 (UNIFIED_STYLING_AND_UI_CONSISTENCY_PLAN.md S1) — the shared classification value type emb...
size_t i
Definition contourjob.cpp:30
Definition gisrasterlayer.h:42
double value
Definition rasterfluxintegration.cpp:27
Gradient mapping from a normalised value in [0,1] to a QColor.
Definition colorramp.h:66
QColor colorAt(double normalisedPos) const
Interpolate ramp stops at a normalized position.
Definition colorramp.cpp:100