14#include <QPaintDevice>
49class IFeatureRenderer;
77 double pxRight,
double pyBottom,
80 if (dpr <= 0.0) dpr = 1.0;
81 const double l = std::round(pxLeft * dpr) / dpr;
82 const double t = std::round(pyTop * dpr) / dpr;
83 const double r = std::round(pxRight * dpr) / dpr;
84 const double b = std::round(pyBottom * dpr) / dpr;
85 return QRectF(l,
t, r - l,
b -
t);
90 return (
p &&
p->device()) ?
p->device()->devicePixelRatioF() : 1.0;
118 Q_ENUMS(SWMMLayerType)
170 [[nodiscard]] QString
layerId()
const;
175 [[nodiscard]] QString
name()
const;
203 [[nodiscard]]
double opacity()
const;
265 [[nodiscard]]
virtual QVector<QPair<QString, QString>>
310 virtual void render(QPainter *painter,
312 const QSize &imageSize,
338 const QSize &viewportSize,
355 [[nodiscard]] QVector<OpenSWMMVisLayer *>
children()
const;
415 [[nodiscard]]
virtual std::vector<std::unique_ptr<openswmmvis::ui::ILayerStyleSubject>>
442 virtual void setRenderer(std::unique_ptr<OpenSWMM::Render::IFeatureRenderer>);
467 {
return m_temporalSpec; }
479 {
return m_labelConfig; }
489 {
return m_maskSpec; }
508 [[nodiscard]]
const QVector<OpenSWMM::Render::JoinSpec> &
joins()
const
510 void setJoins(
const QVector<OpenSWMM::Render::JoinSpec> &
joins);
518 {
return m_diagramSpec; }
537 void setBasicAuth(
const QString &username,
const QString &password);
588 QVector<OpenSWMMVisLayer*> mChildren;
590 bool m_visible =
true;
591 double m_opacity = 1.0;
593 bool m_ownsSRS =
false;
595 double m_layerZValue = 0.0;
608 QVector<OpenSWMM::Render::JoinSpec> m_joins;
614Q_DECLARE_METATYPE(QVector<OpenSWMMVisLayer *>)
Typed config for the Layer Properties → Auxiliary Storage tab (Slice Z.15).
QMap< QString, QString > BasemapHttpHeaders
Arbitrary HTTP header map for basemap requests.
Definition basemapconnection.h:33
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
Abstract interface — every vector layer's paint path goes here.
Definition ifeaturerenderer.h:85
Ordered owning container for Rules on one layer.
Definition rulelist.h:48
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:116
const OpenSWMM::Render::MaskSpec & maskSpec() const
Definition openswmmvislayer.h:488
QString Name
Definition openswmmvislayer.h:119
void setTemporalSpec(const OpenSWMM::Render::TemporalSpec &spec)
Definition openswmmvislayer.cpp:124
bool removeChild(OpenSWMMVisLayer *child)
Definition openswmmvislayer.cpp:279
const OpenSWMM::Render::TemporalSpec & temporalSpec() const
Definition openswmmvislayer.h:466
virtual void fetchCache(const MapExtent &extent, const QSize &viewportSize, const SpatialReferenceSystem *srs)
Triggers any asynchronous (or synchronous) tile/data fetch needed to populate this layer's internal c...
Definition openswmmvislayer.cpp:373
QString crsDescription() const
Returns a human-readable summary of this layer's CRS for display in the Properties window.
Definition openswmmvislayer.cpp:236
virtual bool isRasterLayer() const
Returns true for layers that render into a raster buffer (WMS, WMTS, GISRaster) rather than populatin...
Definition openswmmvislayer.h:276
OpenSWMMVisLayerType LayerType
Definition openswmmvislayer.h:123
virtual void render(QPainter *painter, const MapExtent &extent, const QSize &imageSize, const SpatialReferenceSystem *srs)
Renders this layer's content directly into painter.
Definition openswmmvislayer.cpp:365
void setBasicAuth(const QString &username, const QString &password)
Sets HTTP Basic authentication for all subsequent network requests.
Definition openswmmvislayer.cpp:299
virtual QString sourceDescription() const
Human-readable source of this layer: a file path, a service URL, or a description for in-memory / der...
Definition openswmmvislayer.h:256
virtual const OpenSWMM::Render::RuleList * ruleList() const
Definition openswmmvislayer.h:455
void setVisible(bool visible)
Shows or hides this layer.
Definition openswmmvislayer.cpp:93
void temporalSpecChanged(const OpenSWMM::Render::TemporalSpec &spec)
BasemapHttpHeaders httpHeaders() const
Definition openswmmvislayer.h:544
virtual void refreshScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS)
Smart scene refresh — updates existing items instead of destroying and recreating.
Definition openswmmvislayer.cpp:346
virtual ~OpenSWMMVisLayer()
Definition openswmmvislayer.cpp:50
const OpenSWMM::Render::AuxiliaryStorageSpec & auxStorageSpec() const
Definition openswmmvislayer.h:499
double opacity() const
Returns the layer opacity in the range [0.0, 1.0]. 0.0 = fully transparent; 1.0 = fully opaque.
Definition openswmmvislayer.cpp:103
void setOpacity(double opacity)
Sets the layer opacity. Values are clamped to [0.0, 1.0].
Definition openswmmvislayer.cpp:105
QString name() const
Returns the user-visible name of this layer.
Definition openswmmvislayer.cpp:62
void setAuxStorageSpec(const OpenSWMM::Render::AuxiliaryStorageSpec &spec)
Definition openswmmvislayer.cpp:160
virtual void onCanvasCRSChanged(const SpatialReferenceSystem *newCanvasSRS)
Called when the user changes the canvas CRS so layers can pre-compute any CRS-dependent transform cac...
Definition openswmmvislayer.cpp:293
void diagramSpecChanged(const OpenSWMM::Render::DiagramSpec &spec)
OpenSWMMVisLayerType
Discriminator for the concrete layer class.
Definition openswmmvislayer.h:136
@ SWMMTabularDataLayer
Definition openswmmvislayer.h:144
@ SWMMTabularyTimeSeriesLayer
Definition openswmmvislayer.h:145
@ SWMMDefaultLayer
Definition openswmmvislayer.h:137
@ SWMMVectorLayer
Definition openswmmvislayer.h:141
@ SWMMRasterLayer
Definition openswmmvislayer.h:142
@ SWMMFeatureLayer
Definition openswmmvislayer.h:152
@ SWMMWMSLayer
Definition openswmmvislayer.h:147
@ SWMMImageryLayer
Definition openswmmvislayer.h:143
@ SWMMSubProjectLayer
Definition openswmmvislayer.h:146
@ SWMMWMTSLayer
Definition openswmmvislayer.h:148
@ SWMMGISLayer
Definition openswmmvislayer.h:140
@ SWMMAnnotationLayer
Definition openswmmvislayer.h:151
double Opacity
Definition openswmmvislayer.h:121
const OpenSWMM::Render::LabelConfig & labelConfig() const
Definition openswmmvislayer.h:478
QString layerId() const
Returns the layer's immutable unique identifier (UUID).
Definition openswmmvislayer.cpp:60
virtual void populateScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS)=0
Creates / updates QGraphicsItems representing this layer in the scene.
void setSRS(SpatialReferenceSystem *srs, bool ownsSRS=false)
Sets (or replaces) the CRS for this layer.
Definition openswmmvislayer.cpp:203
QString LayerId
Definition openswmmvislayer.h:122
double layerZValue() const
Returns the z-value base assigned to this layer by the canvas. Items within the layer should use z-va...
Definition openswmmvislayer.cpp:380
SpatialReferenceSystem * srs() const
Returns the spatial reference system for this layer, or nullptr if the layer has no known CRS.
Definition openswmmvislayer.cpp:201
const OpenSWMM::Render::DiagramSpec & diagramSpec() const
Definition openswmmvislayer.h:517
void setName(const QString &name)
Sets the user-visible name.
Definition openswmmvislayer.cpp:64
bool addChild(OpenSWMMVisLayer *child)
Definition openswmmvislayer.cpp:269
void nameChanged(const QString &newName)
void setJoins(const QVector< OpenSWMM::Render::JoinSpec > &joins)
Definition openswmmvislayer.cpp:177
void setLayerZValue(double z)
Called by the canvas to set this layer's z-value band.
Definition openswmmvislayer.cpp:382
virtual QVector< QPair< QString, QString > > extendedMetadata() const
Ordered key→value pairs of TYPE-SPECIFIC metadata, rendered by the Metadata tab below the common bloc...
Definition openswmmvislayer.h:266
virtual void setRenderer(std::unique_ptr< OpenSWMM::Render::IFeatureRenderer >)
Definition openswmmvislayer.cpp:387
void setDiagramSpec(const OpenSWMM::Render::DiagramSpec &spec)
Definition openswmmvislayer.cpp:189
bool Visible
Definition openswmmvislayer.h:120
void visibilityChanged(bool visible)
void opacityChanged(double opacity)
virtual OpenSWMM::Render::RuleList * ruleList()
Definition openswmmvislayer.h:454
QString CRS
Definition openswmmvislayer.h:127
void setHttpHeaders(const BasemapHttpHeaders &headers)
Sets arbitrary extra HTTP headers applied to every request.
Definition openswmmvislayer.cpp:308
QVector< OpenSWMMVisLayer * > children() const
Returns the ordered list of child layers.
Definition openswmmvislayer.cpp:264
bool isVisible() const
Returns true when this layer should be drawn.
Definition openswmmvislayer.cpp:91
QByteArray m_authHeader
"Basic <base64>" or empty
Definition openswmmvislayer.h:581
void extentChanged(const MapExtent &newExtent)
BasemapHttpHeaders m_httpHeaders
arbitrary headers (incl. "referer")
Definition openswmmvislayer.h:582
OpenSWMMVisLayerType layerType() const
Returns the layer type discriminator.
Definition openswmmvislayer.cpp:73
int viewportHeight() const
Definition openswmmvislayer.h:348
void setExtent(const MapExtent &extent)
Sets the layer spatial extent (in the layer's CRS).
Definition openswmmvislayer.cpp:254
virtual bool isBasemapLayer() const
Returns true for world-spanning basemap layers (XYZ tile providers, WMS/WMTS services covering the wh...
Definition openswmmvislayer.h:290
void setViewportSize(int w, int h)
Called by MapCanvas before refreshScene so layers can request the correct pixel dimensions for tile/i...
Definition openswmmvislayer.h:345
OpenSWMMVisWorkspace * workspace() const
Definition openswmmvislayer.h:528
void setLayerType(OpenSWMMVisLayerType type)
Definition openswmmvislayer.cpp:78
void joinsChanged(const QVector< OpenSWMM::Render::JoinSpec > &joins)
MapExtent extent() const
Returns the layer extent in the layer's own CRS.
Definition openswmmvislayer.cpp:252
void auxStorageSpecChanged(const OpenSWMM::Render::AuxiliaryStorageSpec &spec)
const QVector< OpenSWMM::Render::JoinSpec > & joins() const
Definition openswmmvislayer.h:508
void maskSpecChanged(const OpenSWMM::Render::MaskSpec &spec)
void layerTypeChanged(OpenSWMMVisLayerType newType)
void setMaskSpec(const OpenSWMM::Render::MaskSpec &spec)
Definition openswmmvislayer.cpp:149
virtual std::vector< std::unique_ptr< openswmmvis::ui::ILayerStyleSubject > > styleSubjects()
Slice U-2 — return the styleable subjects for the unified LayerStyleDialog.
Definition openswmmvislayer.cpp:360
virtual void setLabelConfig(const OpenSWMM::Render::LabelConfig &cfg)
Definition openswmmvislayer.cpp:134
virtual OpenSWMM::Render::IFeatureRenderer * renderer() const
Definition openswmmvislayer.h:436
QVector< OpenSWMMVisLayer * > Children
Definition openswmmvislayer.h:124
int viewportWidth() const
Definition openswmmvislayer.h:347
void labelConfigChanged()
virtual void depopulateScene(QGraphicsScene *scene)
Removes all QGraphicsItems belonging to this layer from the scene.
Definition openswmmvislayer.cpp:313
void srsChanged(SpatialReferenceSystem *newSRS)
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
Definition swmm2dmeshlayer.h:64
Definition swmm2dresultslayer.h:550
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
Overlays time-stepped simulation results on the SWMM network geometry.
Definition swmmresultslayer.h:96
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
One styleable thing the dialog can edit.
Definition ilayerstylesubject.h:39
DiagramType t
Definition diagramspec.cpp:20
Typed config for the Layer Properties → Diagrams tab (Slice Z.12).
enum OpenSWMM::Render::@788::Value::Type type
QGraphicsScene * scene
Definition inletdrawingview.cpp:78
Typed config for the Layer Properties → Joins tab (Slice Z.16).
Shared label-configuration value-type used by every layer that paints text labels.
ArrowPlacement p
Definition linesymbollayer.cpp:27
Axis-aligned bounding box in a map coordinate system, used by MapCanvas and all layer types to define...
Typed config for the Layer Properties → Mask tab (Slice Z.14).
int h
Definition mesh2dresultsexport.cpp:387
int w
Definition mesh2dresultsexport.cpp:387
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
Definition gisrasterlayer.h:40
Definition openswmmvislayer.h:43
qreal painterDevicePixelRatio(const QPainter *p)
Definition openswmmvislayer.h:88
QRectF snapTileRectToDevicePx(double pxLeft, double pyTop, double pxRight, double pyBottom, qreal dpr)
Snap a tile's logical-pixel rect to device pixel boundaries.
Definition openswmmvislayer.h:76
QMap< QString, QString > BasemapHttpHeaders
Definition openswmmvislayer.h:95
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Per-layer auxiliary-storage configuration.
Definition auxiliarystoragespec.h:46
Per-layer diagram configuration.
Definition diagramspec.h:59
Per-layer label rendering parameters.
Definition labelconfig.h:47
Per-layer mask configuration.
Definition maskspec.h:52
Per-layer temporal-animation configuration.
Definition temporalspec.h:57
Typed config for the Layer Properties → Temporal tab (Slice Z.13).