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
networkplotpick.h
Go to the documentation of this file.
1
10#ifndef OPENSWMM_NETWORK_PLOT_PICK_H
11#define OPENSWMM_NETWORK_PLOT_PICK_H
12
13#include "map/mapcanvas.h"
16
17namespace openswmmvis
18{
29 {
31 const auto cat = object.cat;
32 const K kind = cat <= SWMMModelLayer::CatDividers ? K::Node
33 : cat <= SWMMModelLayer::CatOutlets ? K::Link
34 : cat == SWMMModelLayer::CatSubcatchments ? K::Subcatchment
35 : K::RainGage;
36 return {object.valid ? kind : K::Unknown, object.name};
37 }
38};
39
40// Output selection follows drawing order. Model geometry remains a fallback
41// for editing and for profiles created before a simulation is available.
53inline NetworkPlotPick pickNetworkForPlot(MapCanvas *canvas, double x, double y, double tolerance)
54{
55 if (!canvas)
56 return {};
57 const auto layers = canvas->layers();
58 for (auto it = layers.crbegin(); it != layers.crend(); ++it) {
59 if (auto *output = qobject_cast<SWMMResultsLayer *>(*it)) {
60 const auto hit = output->pickAt(x, y, tolerance);
61 if (hit.valid)
62 return {hit, output->modelLayer(), output};
63 }
64 }
65 for (auto it = layers.crbegin(); it != layers.crend(); ++it) {
66 auto *model = qobject_cast<SWMMModelLayer *>(*it);
67 if (!model || !model->isVisible() || model->opacity() <= 0)
68 continue;
69 const auto hit = model->pickAt(x, y, tolerance);
70 if (hit.valid)
71 return {hit, model, nullptr};
72 }
73 return {};
74}
75}
76#endif
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:70
const QList< OpenSWMMVisLayer * > & layers() const
Definition mapcanvas.cpp:1157
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:137
static constexpr Category CatDividers
Definition swmmmodellayer.h:163
static constexpr Category CatOutlets
Definition swmmmodellayer.h:168
static constexpr Category CatSubcatchments
Definition swmmmodellayer.h:169
Overlays time-stepped simulation results on the SWMM network geometry.
Definition swmmresultslayer.h:104
ModelFacade * model
Definition extensionmodelaccess.cpp:625
Central map display — QGIS-style hybrid rendering.
Definition aquiferprovider.h:24
NetworkPlotPick pickNetworkForPlot(MapCanvas *canvas, double x, double y, double tolerance)
Definition networkplotpick.h:53
TokenKind kind
Definition queryparser.cpp:53
per-project Cross-View Selection Bus.
Tool-facing click-pick result. valid is false when no feature was hit within tolerance of the canvas-...
Definition swmmmodellayer.h:2411
Identifies a single SWMM object.
Definition selectionmanager.h:34
ObjectType
Coarse object kind. Mirrors the engine's logical groupings; finer subtypes (e.g. junction vs outfall)...
Definition selectionmanager.h:41
QString name
Definition selectionmanager.h:79
Definition networkplotpick.h:19
SWMMObjectRef ref() const
Definition networkplotpick.h:28
SWMMResultsLayer * results
Definition networkplotpick.h:22
SWMMModelLayer::PickResult object
Definition networkplotpick.h:20
SWMMModelLayer * model
Definition networkplotpick.h:21
Layer that colour-maps SWMM simulation output over the network geometry for interactive time-stepped ...
int y
Definition terrainerrorfield.cpp:60
int x
Definition terrainerrorfield.cpp:60