20#ifndef OPENSWMMVIS_LAYERS_SWMM2DMESHLAYER_H
21#define OPENSWMMVIS_LAYERS_SWMM2DMESHLAYER_H
41#include <ogr_spatialref.h>
51class IFeatureRenderer;
53class MeshFillSublayer;
54class MeshEdgeSublayer;
55class MeshNodeSublayer;
56class ContourBandSublayer;
59class CoupledNodeSublayer;
111 Q_CLASSINFO("group:
showEdges", "Display")
136 bool deferHeavyGeometry =
false);
200 [[nodiscard]] QVector<QPair<QString, QString>>
extendedMetadata()
const override;
310 [[nodiscard]]
const QVector<mesh::MeshEdgeBC> &
edgeBCs()
const {
return m_bc; }
325 double tolPx,
double pxPerSceneUnit)
const;
330 [[nodiscard]]
int pickEdgeAt(
double sx,
double sy,
331 double tolPx,
double pxPerSceneUnit,
332 bool boundaryOnly)
const;
342 [[nodiscard]]
int pickCellAt(
const QPointF &scenePt)
const;
346 [[nodiscard]] QVector<int>
pickCellsInRect(
const QRectF &sceneRect)
const;
354 [[nodiscard]]
double sampleZAt(
double sx,
double sy)
const;
360 [[nodiscard]]
bool isBoundaryEdge(
int triIdx,
int edgeLocal)
const;
425 const QVector<mesh::CellCoupling> &rows);
556 void setRenderer(std::unique_ptr<OpenSWMM::Render::IFeatureRenderer> r)
override;
567 [[nodiscard]] QList<OpenSWMM::Render::ISublayer *>
sublayers()
const override;
595 [[nodiscard]] QVector<double>
elevationSamples(
int maxSamples = 200000)
const;
610 [[nodiscard]] quint64
bcRevision()
const {
return m_bcRevision; }
623 [[nodiscard]]
const QVector<qint32> &
bcSceneEdges()
const;
636 int maxSamples = 200000)
const;
642 double *vMin,
double *vMax)
const;
662 [[nodiscard]] std::vector<std::unique_ptr<openswmmvis::ui::ILayerStyleSubject>>
699 template <
class Tris>
702 out.reserve(out.size() +
int(tris.size()) * 3);
705 if (prev &&
t.
cell >= 0 &&
t.cell == prev->
cell) {
706 const QPointF
p[3] = {
t.
a,
t.b,
t.c };
707 const float z[3] = {
t.z0,
t.z1,
t.z2 };
708 for (
int k = 0;
k < 3; ++
k)
709 if (
p[
k] != prev->
a &&
p[
k] != prev->
b &&
p[
k] != prev->
c)
710 out.push_back(
double(z[
k]));
712 out.push_back(
double(
t.z0));
713 out.push_back(
double(
t.z1));
714 out.push_back(
double(
t.z2));
817 void rebuildSceneGeometry();
822 [[nodiscard]]
int locateSceneTriAt(
double sx,
double sy)
const;
828 void rebuildOverview();
829 void buildRuleListLazy()
const;
833 mutable std::unique_ptr<OpenSWMM::Render::RuleList> m_ruleList;
838 void resizeBCsToMesh();
839 void rebuildVertexAdjacency();
846 void refreshSublayerLegendInputs();
852 void scheduleLegendInputRefresh();
853 bool m_legendRefreshQueued =
false;
857 void announceInfilDefaultsChanged();
860 QString m_sourcePath;
861 bool m_isExternal =
false;
862 bool m_meshUnitsSI =
false;
863 bool m_active =
false;
866 bool m_qsgOwnsRendering =
false;
869 bool m_overviewBuildRunning =
false;
873 bool m_sceneGeomComplete =
true;
874 bool m_heavyBuildRunning =
false;
875 QVector<QPointF> m_pendingScenePts;
879 void rebuildSceneGeometryLight();
886 double m_hillshadeAz = 225.0;
887 double m_hillshadeAlt = 35.264;
888 double m_hillshadeMinLit = 0.15;
893 double m_edgeMinCellPx = 3.0;
894 double m_vertexMinCellPx = 6.0;
896 quint64 m_geomRevision = 0;
899 bool m_editsDirty =
true;
900 OGRCoordinateTransformation *m_transform =
nullptr;
907 quint64 m_attrRevision = 0;
908 quint64 m_bcRevision = 0;
913 mutable QVector<qint32> m_bcSceneEdges;
914 mutable quint64 m_bcSceneEdgesBcRev = ~quint64(0);
915 mutable quint64 m_bcSceneEdgesGeomRev = ~quint64(0);
920 mutable QByteArray m_attrCacheKey;
921 mutable quint64 m_attrCacheGeomRev = ~quint64(0);
922 mutable quint64 m_attrCacheAttrRev = ~quint64(0);
923 mutable QVector<float> m_attrCacheVals;
924 mutable double m_attrCacheMin = 0.0;
925 mutable double m_attrCacheMax = 0.0;
926 mutable bool m_attrCacheHasData =
false;
931 std::unique_ptr<OpenSWMM::Render::IFeatureRenderer> m_renderer;
937 QVector<mesh::MeshEdgeBC> m_bc;
943 QVector<int> m_vertTriPtr;
944 QVector<int> m_vertTriIdx;
949 QVector<bool> m_isBoundary;
955 bool m_boundaryGraphValid =
false;
959 QSet<int> m_selVertices;
960 QSet<int> m_selEdges;
961 QSet<int> m_selTriangles;
977 mutable QList<OpenSWMM::Render::ISublayer *> m_sublayerOrder;
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
Definition contourbandsublayer.h:111
Definition couplednodesublayer.h:60
Abstract interface — every vector layer's paint path goes here.
Definition ifeaturerenderer.h:85
Mixin interface for layers that expose a list of ISublayers.
Definition isublayerhost.h:64
Definition isolinesublayer.h:142
Definition meshbcsublayer.h:188
Definition meshedgesublayer.h:110
Definition meshfillsublayer.h:183
Definition meshnodesublayer.h:80
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
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
Definition swmm2dmeshlayer.cpp:101
Definition swmm2dmeshlayer.h:64
double vertexMinCellAreaPx() const
Definition swmm2dmeshlayer.h:238
QVector< qint32 > m_cellSceneStart
Definition swmm2dmeshlayer.h:751
bool hasUnsavedMeshEdits() const
Has this layer's mesh state diverged from the engine's copy?
Definition swmm2dmeshlayer.h:287
static void appendVertexElevationSamples(const Tris &tris, QVector< double > &out)
Definition swmm2dmeshlayer.h:700
void setHillshadeAzimuth(double degrees)
Definition swmm2dmeshlayer.cpp:2520
void setActiveMesh(bool active)
Definition swmm2dmeshlayer.cpp:1693
const QSet< int > & highlightedVertices() const
Indices of mesh vertices currently selected for highlight rendering. Populated by the SelectionManage...
Definition swmm2dmeshlayer.h:495
const QVector< mesh::CellCoupling > & cellCouplings() const
Read-only view of the node→cell coupling rows.
Definition swmm2dmeshlayer.h:428
OpenSWMM::Render::MeshNodeSublayer * meshNodeSublayer() const
Definition swmm2dmeshlayer.h:575
void rendererChanged()
Emitted when setRenderer() swaps the renderer pointer.
double zMin() const
Definition swmm2dmeshlayer.h:588
const QVector< qint32 > & bcSceneEdges() const
Scene-edge indices whose slot carries a non-Wall BC.
Definition swmm2dmeshlayer.cpp:1734
QPair< int, int > findEdgeNeighbour(int triIdx, int edgeLocal) const
Definition swmm2dmeshlayer.cpp:2221
double sampleZAt(double sx, double sy) const
Barycentric Z sample at scene point (sx,sy). Returns NaN when the point is outside every triangle.
Definition swmm2dmeshlayer.cpp:2094
double contourLineWidth
Definition swmm2dmeshlayer.h:94
void setHillshadeZExag(double factor)
Definition swmm2dmeshlayer.cpp:2559
void setRenderer(std::unique_ptr< OpenSWMM::Render::IFeatureRenderer > r) override
Replaces the current renderer.
Definition swmm2dmeshlayer.cpp:927
bool isActiveMesh() const
Definition swmm2dmeshlayer.h:202
OpenSWMM::Render::CoupledNodeSublayer * coupledNodeSublayer() const
Definition swmm2dmeshlayer.h:579
void overviewBuildStarted(const QString &layerName)
Background pyramid (overview) rebuild lifecycle — mirrors GISRasterLayer::overviewBuildStarted/Finish...
int locateTriangleAt(double sx, double sy) const
Cell (mesh triangle/quad index) containing scene point (sx,sy), or -1 if outside every cell....
Definition swmm2dmeshlayer.cpp:1961
QVector< int > pickCellsInPolygon(const QPolygonF &scenePoly) const
Triangle indices whose centroid falls inside scenePoly. Peer of SWMM2DResultsLayer::pickCellsInPolygo...
Definition swmm2dmeshlayer.cpp:2061
int triangleCount() const
Definition swmm2dmeshlayer.h:174
MeshSpatialGrid m_edgeGrid
Definition swmm2dmeshlayer.h:808
double zMax() const
Definition swmm2dmeshlayer.h:589
double edgeZoomMinCellPx() const
Definition swmm2dmeshlayer.h:230
bool applyMeshVertexZ(int vertexIdx, double z)
Set vertex Z. Mutates the layer's MeshResult, rebuilds scene geometry, emits attributeChanged with th...
Definition swmm2dmeshlayer.cpp:2139
QVector< SceneNode > m_sceneNodes
Definition swmm2dmeshlayer.h:745
bool applyMeshEdgeBC(int triIdx, int edgeLocal, const mesh::MeshEdgeBC &bc)
Replace the entire BC value for edge (triIdx,edgeLocal). Emits attributeChanged. Apply-as-you-go.
Definition swmm2dmeshlayer.cpp:2205
QVector< int > m_trisBySizeDesc
Definition swmm2dmeshlayer.h:787
void setQsgOwnsRendering(bool own)
Definition swmm2dmeshlayer.cpp:1701
const QVector< mesh::MeshEdgeBC > & edgeBCs() const
Per-edge BC values; flat-indexed by mesh::edgeSlot(cell, edgeLocal) (stride mesh::kEdgeStride = 4)....
Definition swmm2dmeshlayer.h:310
double hillshadeMinLit
Definition swmm2dmeshlayer.h:86
const mesh::MeshResult & mesh() const
Definition swmm2dmeshlayer.h:271
OpenSWMM::Render::ContourBandSublayer * contourBandSublayer() const
Definition swmm2dmeshlayer.h:576
double filledContoursOpacity
Definition swmm2dmeshlayer.h:98
int quadCount() const
Definition swmm2dmeshlayer.h:177
OpenSWMM::Render::IsolineSublayer * isolineSublayer() const
Definition swmm2dmeshlayer.h:577
bool applyMeshTriangleMannings(int triIdx, double mannings)
Set a triangle's Manning's roughness. Emits attributeChanged with the cell ref name.
Definition swmm2dmeshlayer.cpp:2374
const QSet< int > & highlightedEdges() const
Flat edge slots (mesh::edgeSlot(cell, edgeLocal)) currently selected for highlight rendering.
Definition swmm2dmeshlayer.h:500
void markMeshEdited()
Mark the layer's mesh state as diverged from the engine.
Definition swmm2dmeshlayer.h:290
int pickEdgeAt(double sx, double sy, double tolPx, double pxPerSceneUnit, bool boundaryOnly) const
Edge pick. Returns flat edge slot mesh::edgeSlot(cell, edgeLocal) within tolPx of (sx,...
Definition swmm2dmeshlayer.cpp:1918
~SWMM2DMeshLayer() override
Definition swmm2dmeshlayer.cpp:826
bool showContours
Definition swmm2dmeshlayer.h:88
QColor contourColor
Definition swmm2dmeshlayer.h:92
void setEdgeZoomMinCellPx(double px)
Definition swmm2dmeshlayer.cpp:2504
bool applyMeshVertexCoupledNode(int vertexIdx, const QString &node)
Set the vertex's coupled SWMM node ([2D_VERTEX_NODE_MAP]). Drives the coupled-vertex glyph....
Definition swmm2dmeshlayer.cpp:2314
bool meshUnitsSI() const
True when the mesh file declared ;; UNITS: SI (m) (or an equivalent metric keyword)....
Definition swmm2dmeshlayer.h:168
bool sceneGeometryComplete() const
False while the heavy structures from a deferred load are still being built — the renderers fall back...
Definition swmm2dmeshlayer.h:150
bool isBoundaryEdge(int triIdx, int edgeLocal) const
True when this edge slot is a boundary edge in the loaded mesh (i.e. the corresponding triangle has n...
Definition swmm2dmeshlayer.cpp:2131
double vertexZoomMinCellPx() const
Definition swmm2dmeshlayer.h:232
void setMeshEditsSaved()
Clear the divergence flag — only after a confirmed successful write, so a failed save still re-pushes...
Definition swmm2dmeshlayer.h:294
OpenSWMM::Render::IFeatureRenderer * renderer() const override
The IFeatureRenderer that will drive this layer's paint pass.
Definition swmm2dmeshlayer.cpp:922
float m_maxSlope
Definition swmm2dmeshlayer.h:766
bool applyMeshEdgeConveyance(int triIdx, int edgeLocal, double conveyance)
Engine §11A — set the per-edge conveyance (flux attenuation multiplier) in [0, 1]....
Definition swmm2dmeshlayer.cpp:2252
int pickCellAt(const QPointF &scenePt) const
Triangle (cell) containing scene point scenePt, or -1. Peer of SWMM2DResultsLayer::pickCellAt; lets t...
Definition swmm2dmeshlayer.cpp:2016
double m_zMax
Definition swmm2dmeshlayer.h:765
void setShowContours(bool show)
Definition swmm2dmeshlayer.cpp:2607
void selectionInvalidated()
Emitted when remesh / reload invalidates element indices in any held selection — toolbar and tools cl...
QVector< double > cellAttributeSamples(const QByteArray &key, int maxSamples=200000) const
Strided sample of key for data-driven classification (quantile / natural-breaks / std-dev),...
Definition swmm2dmeshlayer.cpp:1870
OpenSWMM::Render::RuleList * ruleList() override
Definition swmm2dmeshlayer.cpp:2760
double hillshadeAltitude
Definition swmm2dmeshlayer.h:82
QVector< SceneEdge > m_sceneEdges
Definition swmm2dmeshlayer.h:744
MeshSpatialGrid m_triGrid
Definition swmm2dmeshlayer.h:807
void setShowMeshNodes(bool show)
Definition swmm2dmeshlayer.cpp:2489
bool filledContours
Definition swmm2dmeshlayer.h:96
QVector< QPair< QString, QString > > extendedMetadata() const override
Ordered key→value pairs of TYPE-SPECIFIC metadata, rendered by the Metadata tab below the common bloc...
Definition swmm2dmeshlayer.cpp:846
bool hasOverview() const
True when an LOD overview has been built and is worth using.
Definition swmm2dmeshlayer.h:790
bool applyMeshTriangleInitDepth(int triIdx, double depth)
Set a triangle's initial water depth in m ([2D_TRIANGLES] INIT_DEPTH column, default 0 = dry)....
Definition swmm2dmeshlayer.cpp:2387
double hillshadeAzimuth() const
Definition swmm2dmeshlayer.h:244
quint64 geomRevision() const
Definition swmm2dmeshlayer.h:273
void populateScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS) override
Creates / updates QGraphicsItems representing this layer in the scene.
Definition swmm2dmeshlayer.cpp:2697
void finishSceneGeometryAsync()
Build the deferred heavy geometry (wireframe edges, spatial grids, vertex adjacency,...
Definition swmm2dmeshlayer.cpp:1373
void setHighlightedVertices(const QSet< int > &indices)
Definition swmm2dmeshlayer.cpp:2283
QVector< QRectF > m_edgeBBoxes
parallel to m_sceneEdges
Definition swmm2dmeshlayer.h:810
void setContourIntervalCount(int n)
Definition swmm2dmeshlayer.cpp:2612
void overviewBuildFinished(bool ok)
int edgeCount() const
Definition swmm2dmeshlayer.h:190
void setMeshUnitsSI(bool si)
Definition swmm2dmeshlayer.h:169
double edgeZoomMinCellPx
Definition swmm2dmeshlayer.h:103
const mesh::MeshBoundaryGraph & boundaryGraph()
Boundary-edge connectivity graph, used by the edge-select tool's Ctrl-click shortest-path picking....
Definition swmm2dmeshlayer.cpp:2118
void setShowEdges(bool show)
Definition swmm2dmeshlayer.cpp:2499
quint64 attrRevision() const
Monotonic counter bumped on every per-cell attribute write. The QSG renderer folds this into its fill...
Definition swmm2dmeshlayer.h:607
bool clearMeshInfilDefault(const QString &tag)
Erase the [2D_INFILTRATION_DEFAULTS] row for tag, so cells carrying it fall through to the '*' row (o...
Definition swmm2dmeshlayer.cpp:2468
void onCanvasCRSChanged(const SpatialReferenceSystem *newCanvasSRS) override
Called when the user changes the canvas CRS so layers can pre-compute any CRS-dependent transform cac...
Definition swmm2dmeshlayer.cpp:2731
OpenSWMM::Render::MeshBcSublayer * meshBcSublayer() const
Definition swmm2dmeshlayer.h:578
bool isExternalMesh() const
True when the mesh came from an external file referenced by [2D_MESH_FILE] FILE <path>....
Definition swmm2dmeshlayer.h:159
quint64 bcRevision() const
Monotonic counter bumped on every edge-BC write / resize.
Definition swmm2dmeshlayer.h:610
QString sourceDescription() const override
Human-readable source of this layer: a file path, a service URL, or a description for in-memory / der...
Definition swmm2dmeshlayer.cpp:840
int contourIntervalCount
Definition swmm2dmeshlayer.h:90
void setHillshadeAltitude(double degrees)
Definition swmm2dmeshlayer.cpp:2530
QVector< qint32 > m_sceneEdgeSlot
Definition swmm2dmeshlayer.h:763
QVector< int > pickCellsInRect(const QRectF &sceneRect) const
Triangle indices whose centroid falls inside sceneRect. Peer of SWMM2DResultsLayer::pickCellsInRect.
Definition swmm2dmeshlayer.cpp:2046
void setExternalMesh(bool external)
Definition swmm2dmeshlayer.h:160
int vertexCount() const
Definition swmm2dmeshlayer.h:181
QVector< SceneTri > m_overviewTris
coarse LOD fill geometry (gap-fill floor)
Definition swmm2dmeshlayer.h:778
int triangleCount
Definition swmm2dmeshlayer.h:70
bool applyMeshInfilDefault(const QString &tag, const mesh::InfilRow &row)
Write one [2D_INFILTRATION_DEFAULTS] row — the region-level peer of applyMeshTriangleInfil.
Definition swmm2dmeshlayer.cpp:2450
void setFilledContoursOpacity(double a)
Definition swmm2dmeshlayer.cpp:2651
bool applyMeshVertexCouplingCd(int vertexIdx, double cd)
Set the vertex's coupling discharge coefficient ([2D_VERTEX_NODE_MAP] CD column). Rejects uncoupled v...
Definition swmm2dmeshlayer.cpp:2352
void setContourLineWidth(double widthPx)
Definition swmm2dmeshlayer.cpp:2628
const QVector< float > & cellAttributeValues(const QByteArray &key) const
Per-cell value of key, parallel to m_sceneTris (which skips degenerate triangles, so it is not the me...
Definition swmm2dmeshlayer.cpp:1820
void setHighlightedTriangles(const QSet< int > &indices)
Definition swmm2dmeshlayer.cpp:2297
bool applyMeshTriangleTag(int triIdx, const QString &tag)
Set a triangle's descriptive tag ([2D_TRIANGLES] TAG column). Emits attributeChanged with the cell re...
Definition swmm2dmeshlayer.cpp:2400
QList< OpenSWMM::Render::ISublayer * > sublayers() const override
Definition swmm2dmeshlayer.cpp:2657
bool cellAttributeRange(const QByteArray &key, double *vMin, double *vMax) const
Observed [min,max] over the non-NaN values of key.
Definition swmm2dmeshlayer.cpp:1860
void sceneGeometryReady()
The deferred heavy geometry from a progressive load (finishSceneGeometryAsync) has been adopted — wir...
QRectF m_sceneBBox
Definition swmm2dmeshlayer.h:742
int boundaryEdgeCount() const
Definition swmm2dmeshlayer.h:184
void rebuildOverviewAsync()
Rebuild the far-zoom LOD pyramid (overview) on a background thread. Emits overviewBuildStarted() imme...
Definition swmm2dmeshlayer.cpp:1640
std::vector< std::unique_ptr< openswmmvis::ui::ILayerStyleSubject > > styleSubjects() override
Definition swmm2dmeshlayer.cpp:2956
void attributeChanged(const QString &refName)
Emitted on any successful apply* mutation. refName is the MeshObjectRef-encoded element name (see mes...
QVector< QRectF > m_triBBoxes
parallel to m_sceneTris
Definition swmm2dmeshlayer.h:809
bool overviewBuildRunning() const
True while rebuildOverviewAsync() has a build in flight.
Definition swmm2dmeshlayer.h:801
double hillshadeZExag
Definition swmm2dmeshlayer.h:84
QVector< mesh::MeshEdgeBC > & edgeBCsMutable()
Mutable BC view — used by INP reader to bulk-populate after load. Prefer the apply* helpers for user-...
Definition swmm2dmeshlayer.h:318
void onSublayersJsonLoaded(const QJsonObject &sublayersJson) override
Definition swmm2dmeshlayer.cpp:2994
double hillshadeAzimuth
Definition swmm2dmeshlayer.h:80
void activeMeshChanged(bool isActive)
Emitted when isActiveMesh() changes.
bool applyMeshVertexCouplingArea(int vertexIdx, double area)
Set the vertex's coupling exchange area in m² ([2D_VERTEX_NODE_MAP] AREA column). Rejects uncoupled v...
Definition swmm2dmeshlayer.cpp:2363
QVector< SceneTri > m_sceneTris
Definition swmm2dmeshlayer.h:743
const QSet< int > & highlightedTriangles() const
Triangle (cell) indices currently selected for highlight rendering. Populated by the SelectionManager...
Definition swmm2dmeshlayer.h:505
bool clearMeshTriangleInfil(int triIdx)
Erase the per-cell infiltration override, so the cell resolves through its region tag / the '*' defau...
Definition swmm2dmeshlayer.cpp:2424
void setFilledContours(bool filled)
Definition swmm2dmeshlayer.cpp:2646
void refreshScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS) override
Smart scene refresh — updates existing items instead of destroying and recreating.
Definition swmm2dmeshlayer.cpp:2714
void setContourColor(const QColor &c)
Definition swmm2dmeshlayer.cpp:2621
void setVertexZoomMinCellPx(double px)
Definition swmm2dmeshlayer.cpp:2512
bool moveSublayer(int from, int to) override
Definition swmm2dmeshlayer.cpp:2685
bool qsgOwnsRendering() const noexcept
Definition swmm2dmeshlayer.h:210
QString sourcePath
Definition swmm2dmeshlayer.h:69
OpenSWMM::Render::MeshFillSublayer * meshFillSublayer() const
Definition swmm2dmeshlayer.h:573
int vertexCount
Definition swmm2dmeshlayer.h:71
OpenSWMM::Render::MeshEdgeSublayer * meshEdgeSublayer() const
Definition swmm2dmeshlayer.h:574
void setHillshadeMinLit(double minLit)
Definition swmm2dmeshlayer.cpp:2568
bool showEdges
Definition swmm2dmeshlayer.h:78
void setSourcePath(const QString &path)
Definition swmm2dmeshlayer.h:153
int pickVertexAt(double sx, double sy, double tolPx, double pxPerSceneUnit) const
Vertex pick. Returns the closest vertex index to scene point (sx,sy) within tolPx screen-pixels,...
Definition swmm2dmeshlayer.cpp:1898
bool showMeshNodes
Definition swmm2dmeshlayer.h:76
double m_nativeTriSpan
representative native tri edge (scene units)
Definition swmm2dmeshlayer.h:779
void depopulateScene(QGraphicsScene *scene) override
Removes all QGraphicsItems belonging to this layer from the scene.
Definition swmm2dmeshlayer.cpp:2706
bool applyMeshTriangleInfil(int triIdx, const mesh::InfilRow &row)
Write a per-cell infiltration override ([2D_INFILTRATION] row, GUI plan §3.2a). The cell stops inheri...
Definition swmm2dmeshlayer.cpp:2410
void setHighlightedEdges(const QSet< int > &flatIndices)
Definition swmm2dmeshlayer.cpp:2290
QVector< mesh::CellCoupling > applyCellCouplings(const QVector< mesh::CellCoupling > &rows)
Replace the node→cell coupling row set wholesale ([2D_TRIANGLE_NODE_MAP] repeated-row form,...
Definition swmm2dmeshlayer.cpp:2334
double edgeMinCellAreaPx() const
Definition swmm2dmeshlayer.h:237
double maxSlope() const
Definition swmm2dmeshlayer.h:196
bool applyMeshVertexTag(int vertexIdx, const QString &tag)
Set the vertex's descriptive tag ([2D_VERTICES] TAG column). Distinct from the coupled node....
Definition swmm2dmeshlayer.cpp:2304
QVector< double > elevationSamples(int maxSamples=200000) const
Per-vertex bed-elevation samples, for data-driven classification (quantile / natural-breaks / std-dev...
Definition swmm2dmeshlayer.cpp:2076
double vertexZoomMinCellPx
Definition swmm2dmeshlayer.h:105
void meshEditsChanged()
Emitted on a bulk mutation that has no single element ref (currently applyCellCouplings)....
double m_zMin
Definition swmm2dmeshlayer.h:764
double hillshadeAltitude() const
Definition swmm2dmeshlayer.h:245
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
Undirected graph whose nodes are mesh vertices and whose arcs are boundary edge slots (mesh::edgeSlot...
Definition meshboundarygraph.h:34
DiagramType t
Definition diagramspec.cpp:20
QGraphicsScene * scene
Definition inletdrawingview.cpp:78
MeshEdgeBC bc
Definition inpmeshreader.cpp:41
bool ok
Definition inpmeshwriter.cpp:575
Mixin interface for layers that own a list of ISublayers.
ArrowPlacement p
Definition linesymbollayer.cpp:27
std::size_t n
Definition mesh2dresultsexport.cpp:426
int k
Definition mesh2dresultsexport.cpp:549
std::vector< double > area
model units²
Definition mesh2dresultsexport.cpp:104
const char * key
Definition meshcellparams.cpp:24
QString tag
r.tag or inherited from a dropped RegionMarker.
Definition meshgenerator.cpp:167
int a
Definition meshquadmatch.cpp:46
Definition gisrasterlayer.h:40
Definition meshcommands.h:302
Abstract base class for all map layers displayed in the MapCanvas.
int path
Definition pslgminsize.cpp:234
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Uniform spatial grid index over a set of axis-aligned bboxes.
Definition meshspatialgrid.h:63
Definition swmm2dmeshlayer.h:726
float zAvg
Definition swmm2dmeshlayer.h:728
float slope
Definition swmm2dmeshlayer.h:729
QLineF line
Definition swmm2dmeshlayer.h:727
Definition swmm2dmeshlayer.h:734
QPointF pt
Definition swmm2dmeshlayer.h:735
bool tagged
true = SWMM-coupled vertex.
Definition swmm2dmeshlayer.h:737
float z
Definition swmm2dmeshlayer.h:736
Definition swmm2dmeshlayer.h:688
float z0
Definition swmm2dmeshlayer.h:691
float z2
Per-vertex z — hillshade face normal.
Definition swmm2dmeshlayer.h:691
float z1
Definition swmm2dmeshlayer.h:691
QPointF b
Definition swmm2dmeshlayer.h:689
int cell
Mesh cell index (MeshResult::triangles).
Definition swmm2dmeshlayer.h:692
float zAvg
Average vertex z — elevation colour.
Definition swmm2dmeshlayer.h:690
QPointF a
Definition swmm2dmeshlayer.h:689
QPointF c
Definition swmm2dmeshlayer.h:689
One infiltration specification: method + positional parameters + destination.
Definition meshinfil.h:98
Definition meshedgebc.h:24
Result of MeshGenerator::generate.
Definition meshresult.h:116
QVector< CellCoupling > cellCouplings
Node→cell couplings (Part C).
Definition meshresult.h:120
QVector< MeshEdge > boundaryEdges
Definition meshresult.h:119
QVector< MeshTriangle > triangles
Cells: triangles first, then quads (engine order).
Definition meshresult.h:118
QVector< MeshVertex > vertices
Definition meshresult.h:117
int quadCount() const noexcept
Definition meshresult.h:146
double
Definition swmmpollutantpropertyadapter.cpp:50