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
graduatedrasterrenderer.h
Go to the documentation of this file.
1
36#ifndef OPENSWMM_RENDER_GRADUATEDRASTERRENDERER_H
37#define OPENSWMM_RENDER_GRADUATEDRASTERRENDERER_H
38
42
43#include <QColor>
44#include <QPair>
45#include <QRgb>
46#include <QVector>
47
48#include <algorithm>
49#include <array>
50
51namespace OpenSWMM::Render
52{
53
59{
60public:
64 ~GraduatedRasterRenderer() override = default;
65
66 // ── Scheme ─────────────────────────────────────────────────────────
67 [[nodiscard]] const ClassificationScheme &scheme() const { return m_scheme; }
73
74 // ── Data range ─────────────────────────────────────────────────────
75 [[nodiscard]] double dataMin() const { return m_dataMin; }
76 [[nodiscard]] double dataMax() const { return m_dataMax; }
78 void setDataRange(double dataMin, double dataMax);
79
82 [[nodiscard]] QPair<double, double> effectiveRange() const { return { m_lo, m_hi }; }
83
84 // ── Out-of-range policy ────────────────────────────────────────────
85 [[nodiscard]] bool clipOutOfRange() const { return m_clipOutOfRange; }
86 void setClipOutOfRange(bool on);
87
88 // ── Classification ─────────────────────────────────────────────────
91 void reclassify(const QVector<double> &samples = {});
92
95 [[nodiscard]] const QVector<double> &edges() const { return m_edges; }
96 [[nodiscard]] int classCount() const { return std::max(0, int(m_edges.size()) - 1); }
97
99 static constexpr int kContinuousLegendRows = 6;
100
101 // IRasterRenderer.
102 [[nodiscard]] QString rendererId() const override
103 {
104 return QStringLiteral("graduatedraster");
105 }
106 [[nodiscard]] QColor colorForValue(double value,
107 bool isNoData = false) const override;
108 [[nodiscard]] QList<LegendSymbolItem> legendSymbolItems() const override;
109 [[nodiscard]] QJsonObject toJson() const override;
110 void fromJson(const QJsonObject &j) override;
111 [[nodiscard]] std::unique_ptr<IRasterRenderer> clone() const override;
112
113private:
116 void rebake();
117
118 ClassificationScheme m_scheme;
119 double m_dataMin = 0.0;
120 double m_dataMax = 1.0;
121 QVector<double> m_edges;
122 bool m_clipOutOfRange = false;
123
124 // Baked by rebake() — read-only on the paint path.
125 double m_lo = 0.0;
126 double m_hi = 1.0;
127 std::array<QRgb, ScalarRampLut::kSize> m_lut{};
128 QVector<QRgb> m_classColors;
129};
130
131} // namespace OpenSWMM::Render
132
133#endif // OPENSWMM_RENDER_GRADUATEDRASTERRENDERER_H
Shared classification model: mode + binner + ramp + range + per-class overrides, with a revision stam...
Definition classificationscheme.h:61
ClassificationScheme-driven single-band raster colouring.
Definition graduatedrasterrenderer.h:59
GraduatedRasterRenderer()
Definition graduatedrasterrenderer.cpp:62
void setClipOutOfRange(bool on)
Definition graduatedrasterrenderer.cpp:82
std::unique_ptr< IRasterRenderer > clone() const override
Deep copy. Owning layers / map presets / undo stack call this when they need a renderer snapshot deco...
Definition graduatedrasterrenderer.cpp:207
double dataMax() const
Definition graduatedrasterrenderer.h:76
void fromJson(const QJsonObject &j) override
Restores this renderer from a JSON object previously produced by toJson(). Implementations should tol...
Definition graduatedrasterrenderer.cpp:182
const ClassificationScheme & scheme() const
Definition graduatedrasterrenderer.h:67
void setScheme(const ClassificationScheme &scheme)
Definition graduatedrasterrenderer.cpp:69
QColor colorForValue(double value, bool isNoData=false) const override
Returns the display colour for one raw pixel value.
Definition graduatedrasterrenderer.cpp:114
QJsonObject toJson() const override
Serialises this renderer to a JSON object. The "id" field equals rendererId(); remaining keys are ren...
Definition graduatedrasterrenderer.cpp:170
QString rendererId() const override
Stable string id ("singlebandpseudocolor", "singlebandgray", "paletted", "hillshade",...
Definition graduatedrasterrenderer.h:102
static constexpr int kContinuousLegendRows
Definition graduatedrasterrenderer.h:99
void setDataRange(double dataMin, double dataMax)
Definition graduatedrasterrenderer.cpp:75
bool clipOutOfRange() const
Definition graduatedrasterrenderer.h:85
QPair< double, double > effectiveRange() const
Definition graduatedrasterrenderer.h:82
double dataMin() const
Definition graduatedrasterrenderer.h:75
int classCount() const
Definition graduatedrasterrenderer.h:96
void reclassify(const QVector< double > &samples={})
Definition graduatedrasterrenderer.cpp:87
QList< LegendSymbolItem > legendSymbolItems() const override
Returns one LegendSymbolItem per visible legend row. Drives the legend dock, the on-canvas legend ove...
Definition graduatedrasterrenderer.cpp:129
const QVector< double > & edges() const
Definition graduatedrasterrenderer.h:95
Abstract interface — every raster layer's paint path goes here.
Definition irasterrenderer.h:66
Slice US.1 (UNIFIED_STYLING_AND_UI_CONSISTENCY_PLAN.md S1) — the shared classification value type emb...
Sister interface to IFeatureRenderer for single-band raster layers.
Definition gisrasterlayer.h:40