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
rulebasedrenderer.h
Go to the documentation of this file.
1
23#ifndef OPENSWMM_RENDER_RULEBASEDRENDERER_H
24#define OPENSWMM_RENDER_RULEBASEDRENDERER_H
25
27
28#include <QPair>
29#include <QString>
30
31namespace OpenSWMM::Render
32{
33
42{
43public:
48 struct Rule
49 {
50 QString expression;
51 QString label;
53 QPair<double, double> scaleRange = { 0.0, 0.0 };
54 };
55
56 RuleBasedRenderer() = default;
57 ~RuleBasedRenderer() override = default;
58
59 [[nodiscard]] const QList<Rule> &rules() const { return m_rules; }
60 void setRules(QList<Rule> rules);
61 void addRule(Rule r);
62
66 [[nodiscard]] const SymbolStyle &fallbackSymbol() const { return m_fallback; }
67 void setFallbackSymbol(SymbolStyle s) { m_fallback = std::move(s); }
68
69 // IFeatureRenderer.
70 [[nodiscard]] QString rendererId() const override { return QStringLiteral("rule"); }
71 [[nodiscard]] SymbolStyle symbolFor(const FeatureRef &f,
72 const QVariantMap &attrs) const override;
73 [[nodiscard]] QList<LegendSymbolItem> legendSymbolItems() const override;
74 [[nodiscard]] QJsonObject toJson() const override;
75 void fromJson(const QJsonObject &j) override;
76 [[nodiscard]] std::unique_ptr<IFeatureRenderer> clone() const override;
77
78private:
79 QList<Rule> m_rules;
80 SymbolStyle m_fallback;
81};
82
83} // namespace OpenSWMM::Render
84
85#endif // OPENSWMM_RENDER_RULEBASEDRENDERER_H
Abstract interface — every vector layer's paint path goes here.
Definition ifeaturerenderer.h:85
First-match expression-gated rule list.
Definition rulebasedrenderer.h:42
std::unique_ptr< IFeatureRenderer > clone() const override
Deep copy. Owning layers / map presets / undo stack call this when they need a renderer snapshot deco...
Definition rulebasedrenderer.cpp:117
QJsonObject toJson() const override
Serialises this renderer to a JSON object. The "id" field equals rendererId(); remaining keys are ren...
Definition rulebasedrenderer.cpp:66
void addRule(Rule r)
Definition rulebasedrenderer.cpp:24
void setFallbackSymbol(SymbolStyle s)
Definition rulebasedrenderer.h:67
const QList< Rule > & rules() const
Definition rulebasedrenderer.h:59
void fromJson(const QJsonObject &j) override
Restores this renderer from a JSON object previously produced by toJson(). Implementations should tol...
Definition rulebasedrenderer.cpp:94
const SymbolStyle & fallbackSymbol() const
Symbol returned when no rule matches.
Definition rulebasedrenderer.h:66
~RuleBasedRenderer() override=default
void setRules(QList< Rule > rules)
Definition rulebasedrenderer.cpp:19
SymbolStyle symbolFor(const FeatureRef &f, const QVariantMap &attrs) const override
Returns the SymbolStyle to paint for one feature.
Definition rulebasedrenderer.cpp:29
QString rendererId() const override
Stable string id ("single", "graduated", "categorized", "rule"). Used as the discriminator in JSON ro...
Definition rulebasedrenderer.h:70
QList< LegendSymbolItem > legendSymbolItems() const override
Returns one LegendSymbolItem per visible legend row. Drives the legend dock, the on-canvas legend ove...
Definition rulebasedrenderer.cpp:50
One layer-scope styled aspect — name + renderer + filter + scale.
Definition rule.h:51
The single seam every layer paint path goes through.
double s
Scene px per model length unit.
Definition inletdrawingview.cpp:82
Definition gisrasterlayer.h:40
Identifies one feature in one layer for the renderer pipeline.
Definition featureref.h:35
One rule in the list.
Definition rulebasedrenderer.h:49
QString label
Definition rulebasedrenderer.h:51
QString expression
Definition rulebasedrenderer.h:50
SymbolStyle symbol
Definition rulebasedrenderer.h:52
QPair< double, double > scaleRange
Definition rulebasedrenderer.h:53
Stack of SymbolLayer paint passes (bottom-up) plus an overall opacity.
Definition symbolstyle.h:39