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
sectiondiagram.h
Go to the documentation of this file.
1
24#ifndef OPENSWMMVIS_SECTIONVIEW_SECTIONDIAGRAM_H
25#define OPENSWMMVIS_SECTIONVIEW_SECTIONDIAGRAM_H
26
27#include <QPalette>
28#include <QtGlobal>
29#include <QPointF>
30#include <QPolygonF>
31#include <QRectF>
32#include <QString>
33#include <QVector>
34
35class QPainter;
36
38
41enum class DiagramRole {
42 Conduit,
43 Structure,
44 Storage,
46 Soil,
47 Media,
48 Gravel,
50 Water,
51 Muted,
52 Accent
53};
54
67enum class DiagramTexture {
68 None,
69 Stipple,
70 Gravel,
71 Aggregate,
72 Sand,
73 Hatch,
74 Lattice,
75 Brick
76};
77
94
97{
98 QPolygonF pts;
100 bool dashed = false;
101 QString label;
105 bool wavy = false;
106};
107
110{
111 double x0 = 0.0;
112 double x1 = 0.0;
113 double y = 0.0;
114};
115
124{
125 QPointF from;
126 QPointF to;
127 QString text;
128 double pixelOffset = 28.0;
129 bool accent = false;
130};
131
135{
136 QPointF anchor;
137 QString text;
138 QPointF pixelOffset { 60.0, -28.0 };
139};
140
149{
150 double x0 = 0.0;
151 double x1 = 0.0;
152 double y = 0.0;
154 double height = 0.0;
157 int count = 8;
159 bool grass = false;
160};
161
167{
168 QPointF centre;
169 double radius = 0.0;
172 bool perforated = false;
173};
174
180{
181 QPointF from;
182 QPointF to;
183 QString label;
185};
186
197 Pump,
198 FlapGate,
200 RatingBox
201};
202
216
220{
221 double angleDeg = 0.0;
222 QString label;
223 bool inbound = true;
224};
225
233{
239 enum class Side { Left, Right };
240
241 QVector<PlanSpoke> spokes;
242 QString title;
244};
245
261{
262 double zoom = 1.0;
263 QPointF panPx;
264
265 [[nodiscard]] bool isIdentity() const
266 { return qFuzzyCompare(zoom, 1.0) && panPx.isNull(); }
267};
268
274{
275 QString title;
276 QString subtitle;
277 QString footer;
280 QString emptyText;
281
283 QRectF bounds;
284
288 bool uniformScale = true;
289
302
305
319 double targetDrawnAspect = 0.0;
320
327
328 QVector<DiagramPoly> polys;
329 QVector<DiagramPolyline> polylines;
330 QVector<DiagramGround> grounds;
331 QVector<DiagramVegetation> vegetation;
332 QVector<DiagramCircle> circles;
333 QVector<DiagramArrow> arrows;
334 QVector<DiagramSymbol> symbols;
335 QVector<DiagramDim> dims;
336 QVector<DiagramLeader> leaders;
341 QVector<PlanInset> planInsets;
342
343 [[nodiscard]] bool isEmpty() const
344 {
345 // Vegetation, circles, arrows and symbols are ornaments on something
346 // else, so they deliberately do not count as content on their own.
347 return polys.isEmpty() && polylines.isEmpty() && grounds.isEmpty();
348 }
349
351 [[nodiscard]] QRectF computeBounds() const;
352};
353
377void paintSectionDiagram(QPainter &painter, const QRectF &target,
378 const SectionDiagramModel &model,
379 const QPalette &palette,
380 const DiagramViewport &viewport = {},
381 QRectF *fitRectOut = nullptr,
382 double *achievedExaggerationOut = nullptr);
383
385[[nodiscard]] QColor diagramFillColor(DiagramRole role, const QPalette &palette);
386
388[[nodiscard]] QColor diagramStrokeColor(DiagramRole role, const QPalette &palette);
389
390} // namespace openswmmvis::sectionview
391
392#endif // OPENSWMMVIS_SECTIONVIEW_SECTIONDIAGRAM_H
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:22
Definition aquifereditordialog.h:41
QColor diagramFillColor(DiagramRole role, const QPalette &palette)
Definition sectiondiagram.cpp:425
QColor diagramStrokeColor(DiagramRole role, const QPalette &palette)
Definition sectiondiagram.cpp:449
void paintSectionDiagram(QPainter &painter, const QRectF &target, const SectionDiagramModel &model, const QPalette &palette, const DiagramViewport &viewport={}, QRectF *fitRectOut=nullptr, double *achievedExaggerationOut=nullptr)
Paint model into target using palette for all colours.
Definition sectiondiagram.cpp:500
DiagramSymbolKind
Definition sectiondiagram.h:196
@ RatingBox
Flow-vs-head outlet: a box holding a rating curve.
@ Pump
Casing circle + impeller, with a discharge nozzle.
@ ManholeCover
Frame and cover, sat on a junction rim.
@ FlapGate
Hinged flap hanging on a pipe end / outfall face.
DiagramRole
Definition sectiondiagram.h:41
@ Water
Ponded or flowing water.
@ Conduit
Pipe / channel interior.
@ Media
Engineered media (LID soil layer).
@ Gravel
Void storage (LID storage layer, gravel bed).
@ Muted
De-emphasised (unknown / not-yet-entered values).
@ Accent
Highlighted item (e.g. the geom being edited).
@ Structure
Manhole, chamber, vault walls.
DiagramTexture
Definition sectiondiagram.h:67
@ Hatch
45° lines — native soil, and unknown-value layers.
@ Brick
Staggered joints — paver blocks.
@ Aggregate
Angular chips — porous pavement, base course.
@ Lattice
Cross-hatched grid — drainage mat / geocomposite.
@ Sand
Dense fine dots — sand / choking layer.
@ Stipple
Fine speckle — engineered soil / planting media.
Definition sectiondiagram.h:180
QPointF to
Definition sectiondiagram.h:182
QString label
Definition sectiondiagram.h:183
QPointF from
Definition sectiondiagram.h:181
DiagramRole role
Definition sectiondiagram.h:184
Definition sectiondiagram.h:167
bool perforated
Definition sectiondiagram.h:172
double radius
Definition sectiondiagram.h:169
QPointF centre
Definition sectiondiagram.h:168
DiagramRole role
Definition sectiondiagram.h:170
Definition sectiondiagram.h:124
QPointF to
Definition sectiondiagram.h:126
bool accent
Highlight (e.g. the geom being edited).
Definition sectiondiagram.h:129
double pixelOffset
Definition sectiondiagram.h:128
QPointF from
Definition sectiondiagram.h:125
QString text
Definition sectiondiagram.h:127
Definition sectiondiagram.h:110
double x1
Definition sectiondiagram.h:112
double y
Definition sectiondiagram.h:113
double x0
Definition sectiondiagram.h:111
Definition sectiondiagram.h:135
QPointF anchor
Definition sectiondiagram.h:136
QPointF pixelOffset
Definition sectiondiagram.h:138
QString text
Definition sectiondiagram.h:137
Definition sectiondiagram.h:80
DiagramRole role
Definition sectiondiagram.h:82
bool unknown
Definition sectiondiagram.h:90
QString insetLabel
Definition sectiondiagram.h:92
DiagramTexture texture
Definition sectiondiagram.h:84
bool openTop
Definition sectiondiagram.h:87
QPolygonF pts
Definition sectiondiagram.h:81
Definition sectiondiagram.h:97
QString label
Drawn at the polyline's right end when set.
Definition sectiondiagram.h:101
bool dashed
Definition sectiondiagram.h:100
QPolygonF pts
Definition sectiondiagram.h:98
DiagramRole role
Definition sectiondiagram.h:99
bool wavy
Definition sectiondiagram.h:105
Definition sectiondiagram.h:205
double pixelSize
Definition sectiondiagram.h:210
QPointF anchor
Definition sectiondiagram.h:206
DiagramSymbolKind kind
Definition sectiondiagram.h:207
DiagramRole role
Definition sectiondiagram.h:214
bool mirrored
Definition sectiondiagram.h:213
Definition sectiondiagram.h:149
double x1
Definition sectiondiagram.h:151
double x0
Definition sectiondiagram.h:150
double y
Definition sectiondiagram.h:152
bool grass
Definition sectiondiagram.h:159
int count
Definition sectiondiagram.h:157
double height
Definition sectiondiagram.h:154
User zoom / pan applied on top of the automatic fit.
Definition sectiondiagram.h:261
bool isIdentity() const
Definition sectiondiagram.h:265
double zoom
1.0 = fitted to the widget.
Definition sectiondiagram.h:262
QPointF panPx
Additional translation, in screen pixels.
Definition sectiondiagram.h:263
Definition sectiondiagram.h:233
Side
Definition sectiondiagram.h:239
Side side
Definition sectiondiagram.h:243
QVector< PlanSpoke > spokes
Definition sectiondiagram.h:241
QString title
Definition sectiondiagram.h:242
Definition sectiondiagram.h:220
bool inbound
Definition sectiondiagram.h:223
double angleDeg
Definition sectiondiagram.h:221
QString label
Definition sectiondiagram.h:222
Everything one preview pane draws, in model units.
Definition sectiondiagram.h:274
double targetDrawnAspect
Definition sectiondiagram.h:319
double maxVerticalExaggeration
Definition sectiondiagram.h:304
QRectF bounds
Definition sectiondiagram.h:283
QVector< PlanInset > planInsets
Definition sectiondiagram.h:341
QRectF computeBounds() const
Definition sectiondiagram.cpp:467
bool isEmpty() const
Definition sectiondiagram.h:343
QString title
Bold header, e.g. "C-12 — Cross-Section".
Definition sectiondiagram.h:275
QVector< DiagramCircle > circles
Definition sectiondiagram.h:332
QVector< DiagramPoly > polys
Definition sectiondiagram.h:328
bool annotateExaggeration
Definition sectiondiagram.h:326
bool uniformScale
Definition sectiondiagram.h:288
QVector< DiagramDim > dims
Definition sectiondiagram.h:335
QVector< DiagramGround > grounds
Definition sectiondiagram.h:330
QVector< DiagramPolyline > polylines
Definition sectiondiagram.h:329
QString emptyText
Definition sectiondiagram.h:280
QString subtitle
Secondary header, e.g. "CIRCULAR".
Definition sectiondiagram.h:276
QString footer
Single-line readout under the drawing.
Definition sectiondiagram.h:277
QVector< DiagramSymbol > symbols
Definition sectiondiagram.h:334
QVector< DiagramArrow > arrows
Definition sectiondiagram.h:333
QVector< DiagramVegetation > vegetation
Definition sectiondiagram.h:331
double verticalExaggeration
Definition sectiondiagram.h:301
QVector< DiagramLeader > leaders
Definition sectiondiagram.h:336