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
featuresublayer.h
Go to the documentation of this file.
1
15#ifndef OPENSWMM_RENDER_SUBLAYERS_FEATURE_FEATURESUBLAYER_H
16#define OPENSWMM_RENDER_SUBLAYERS_FEATURE_FEATURESUBLAYER_H
17
18#include "render/isublayer.h"
20
22
23#include <QString>
24
25namespace OpenSWMM::Render
26{
27
42{
43 Q_OBJECT
44public:
45 enum class Archetype { Point, Line, Polygon };
46
48 QString id_,
49 QString displayName_,
50 QObject *parent = nullptr);
51 ~FeatureSublayer() override = default;
52
53 // ── Identity ──────────────────────────────────────────────────────
54 [[nodiscard]] OpenSWMMVis::SwmmCategory category() const noexcept { return m_category; }
55 [[nodiscard]] Archetype archetype() const noexcept { return m_archetype; }
56
57 // ── ISublayer ─────────────────────────────────────────────────────
58 Kind kind() const override
59 {
60 switch (m_archetype) {
61 case Archetype::Point: return MarkerKind;
62 case Archetype::Line: return LineKind;
63 case Archetype::Polygon: return FillKind;
64 }
65 return MarkerKind;
66 }
67 QString id() const override { return m_id; }
68 QString displayName() const override { return m_displayName; }
69
70 bool isVisible() const override { return m_visible; }
71 void setVisible(bool v) override;
72 qreal opacity() const override { return m_opacity; }
73 void setOpacity(qreal o) override;
74
75 bool isDynamic() const override
76 {
77 return m_category != OpenSWMMVis::CatRainGages;
78 }
79
80 SublayerStyle *style() override { return m_style; }
81
83 [[nodiscard]] FeatureSublayerStyle *featureStyle() const { return m_style; }
84 [[nodiscard]] PointFeatureSublayerStyle *pointStyle() const;
85 [[nodiscard]] LineFeatureSublayerStyle *lineStyle() const;
86 [[nodiscard]] PolygonFeatureSublayerStyle *polygonStyle() const;
87
88 QList<LegendSymbolItem> legendSymbolItems() const override;
89
93 QSGNode *buildOrUpdateNode(QSGNode *existing,
94 const SublayerContext &ctx) override;
95
96private:
98 Archetype m_archetype;
99 QString m_id;
100 QString m_displayName;
101 bool m_visible = true;
102 qreal m_opacity = 1.0;
103
106 FeatureSublayerStyle *m_style = nullptr;
107
108public:
136};
137
138} // namespace OpenSWMM::Render
139
140#endif // OPENSWMM_RENDER_SUBLAYERS_FEATURE_FEATURESUBLAYER_H
One paint pass for a single OpenSWMMVis::SwmmCategory.
Definition featuresublayer.h:42
QList< LegendSymbolItem > legendSymbolItems() const override
Returns the legend rows this sublayer contributes.
Definition featuresublayer.cpp:86
~FeatureSublayer() override=default
LineFeatureSublayerStyle * lineStyle() const
Definition featuresublayer.cpp:63
QString id() const override
Definition featuresublayer.h:67
Archetype
Definition featuresublayer.h:45
PointFeatureSublayerStyle * pointStyle() const
Definition featuresublayer.cpp:59
void setOpacity(qreal o) override
Definition featuresublayer.cpp:79
FeatureSublayerStyle * featureStyle() const
Definition featuresublayer.h:83
SublayerStyle * style() override
Returns the property-bag QObject that owns this sublayer's style knobs.
Definition featuresublayer.h:80
bool isDynamic() const override
Whether this sublayer's output depends on the current animation period.
Definition featuresublayer.h:75
void setVisible(bool v) override
Definition featuresublayer.cpp:72
Kind kind() const override
Definition featuresublayer.h:58
QString displayName() const override
Definition featuresublayer.h:68
bool isVisible() const override
Definition featuresublayer.h:70
QSGNode * buildOrUpdateNode(QSGNode *existing, const SublayerContext &ctx) override
Definition featuresublayer.cpp:113
static Archetype archetypeFor(OpenSWMMVis::SwmmCategory c)
Definition featuresublayer.h:115
Archetype archetype() const noexcept
Definition featuresublayer.h:55
qreal opacity() const override
Definition featuresublayer.h:72
OpenSWMMVis::SwmmCategory category() const noexcept
Definition featuresublayer.h:54
PolygonFeatureSublayerStyle * polygonStyle() const
Definition featuresublayer.cpp:67
Common property bag for every per-Category result sublayer.
Definition featuresublayerstyle.h:47
One toggleable visual aspect of a results / model layer.
Definition isublayer.h:87
Kind
Coarse taxonomy of sublayer paint behaviours.
Definition isublayer.h:100
@ MarkerKind
Definition isublayer.h:101
@ LineKind
Definition isublayer.h:102
@ FillKind
Definition isublayer.h:103
Definition featuresublayerstyle.h:163
Definition featuresublayerstyle.h:112
Definition featuresublayerstyle.h:253
Base class for per-sublayer style property bags.
Definition sublayerstyle.h:56
Common style-bag base for the per-Category result sublayers.
Toggleable visual aspect of an output layer.
Definition gisrasterlayer.h:40
SwmmCategory
Stable ordinal categorising every SWMM-element kind that has per-kind styling, per-kind tree rows,...
Definition swmm_category.h:28
@ CatRainGages
Definition swmm_category.h:39
@ CatOutfalls
Definition swmm_category.h:30
@ CatWeirs
Definition swmm_category.h:36
@ CatSubcatchments
Definition swmm_category.h:38
@ CatOutlets
Definition swmm_category.h:37
@ CatOrifices
Definition swmm_category.h:35
@ CatJunctions
Definition swmm_category.h:29
@ CatConduits
Definition swmm_category.h:33
@ CatDividers
Definition swmm_category.h:32
@ CatStorage
Definition swmm_category.h:31
@ CatPumps
Definition swmm_category.h:34
QVector< int > v
pool vertex indices
Definition pslgminsize.cpp:159
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Per-frame parameters handed to ISublayer::buildOrUpdateNode().
Definition isublayer.h:73
Standalone definition of the SWMM-element Category enum used by per-Category APIs across layers,...