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
isublayer.h
Go to the documentation of this file.
1
38#ifndef OPENSWMM_RENDER_ISUBLAYER_H
39#define OPENSWMM_RENDER_ISUBLAYER_H
40
42
43#include <QDateTime>
44#include <QList>
45#include <QMatrix4x4>
46#include <QObject>
47#include <QRectF>
48#include <QString>
49
50class QSGNode;
51
52namespace OpenSWMM::Render
53{
54
55class SublayerStyle;
56
73{
74 QMatrix4x4 viewMatrix;
75 double pixelsPerSceneUnit = 1.0;
76 double devicePixelRatio = 1.0;
78 QDateTime currentTime;
79 int currentPeriod = -1;
80};
81
86class ISublayer : public QObject
87{
88 Q_OBJECT
89
90public:
110 Q_ENUM(Kind)
111
112 explicit ISublayer(QObject *parent = nullptr) : QObject(parent) {}
113 ~ISublayer() override = default;
114
115 // ── Identity / taxonomy ────────────────────────────────────────────
116 [[nodiscard]] virtual Kind kind() const = 0;
117 [[nodiscard]] virtual QString id() const = 0;
118 [[nodiscard]] virtual QString displayName() const = 0;
120 // ── Visibility / opacity ──────────────────────────────────────────
121 [[nodiscard]] virtual bool isVisible() const = 0;
122 virtual void setVisible(bool) = 0;
123 [[nodiscard]] virtual qreal opacity() const = 0;
124 virtual void setOpacity(qreal) = 0;
125
126 // ── Animation integration ─────────────────────────────────────────
135 [[nodiscard]] virtual bool isDynamic() const = 0;
136
137 // ── Style bag ─────────────────────────────────────────────────────
149 [[nodiscard]] virtual SublayerStyle *style() = 0;
150
151 // ── Legend contribution (§J.5 + plan §4.3) ────────────────────────
160 [[nodiscard]] virtual QList<LegendSymbolItem> legendSymbolItems() const = 0;
161
162 // ── QSG paint ─────────────────────────────────────────────────────
179 virtual QSGNode *buildOrUpdateNode(QSGNode *existing,
180 const SublayerContext &ctx) = 0;
181
192 Q_INVOKABLE virtual void invalidate() { emit invalidated(); }
193
194signals:
203};
204
205} // namespace OpenSWMM::Render
206
207#endif // OPENSWMM_RENDER_ISUBLAYER_H
One toggleable visual aspect of a results / model layer.
Definition isublayer.h:87
virtual bool isDynamic() const =0
Whether this sublayer's output depends on the current animation period.
virtual SublayerStyle * style()=0
Returns the property-bag QObject that owns this sublayer's style knobs.
virtual void setOpacity(qreal)=0
virtual QString displayName() const =0
Kind
Coarse taxonomy of sublayer paint behaviours.
Definition isublayer.h:100
@ MarkerKind
Definition isublayer.h:101
@ VectorGlyphKind
Definition isublayer.h:108
@ ContourBandKind
Definition isublayer.h:107
@ LineKind
Definition isublayer.h:102
@ FillKind
Definition isublayer.h:103
@ IsolineKind
Definition isublayer.h:106
@ ColorRampFillKind
Definition isublayer.h:105
@ ArrowKind
Definition isublayer.h:104
~ISublayer() override=default
virtual Q_INVOKABLE void invalidate()
Public entry point hosts call to request a re-render.
Definition isublayer.h:192
virtual void setVisible(bool)=0
virtual bool isVisible() const =0
virtual Kind kind() const =0
virtual QList< LegendSymbolItem > legendSymbolItems() const =0
Returns the legend rows this sublayer contributes.
virtual QSGNode * buildOrUpdateNode(QSGNode *existing, const SublayerContext &ctx)=0
Build (or update) the QSG node tree for this sublayer.
virtual QString id() const =0
void invalidated()
Style or visibility changed in a way the renderer must observe.
virtual qreal opacity() const =0
Base class for per-sublayer style property bags.
Definition sublayerstyle.h:56
One row in a layer's legend — label + swatch symbol + optional range.
Definition gisrasterlayer.h:40
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Per-frame parameters handed to ISublayer::buildOrUpdateNode().
Definition isublayer.h:73
QRectF exposedSceneRect
Definition isublayer.h:77
QMatrix4x4 viewMatrix
Definition isublayer.h:74
double devicePixelRatio
Definition isublayer.h:76
QDateTime currentTime
Definition isublayer.h:78
int currentPeriod
Definition isublayer.h:79
double pixelsPerSceneUnit
Definition isublayer.h:75