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
swmmelementsymboladapter.h
Go to the documentation of this file.
1
18#ifndef OPENSWMMVIS_LAYERS_SWMMELEMENTSYMBOLADAPTER_H
19#define OPENSWMMVIS_LAYERS_SWMMELEMENTSYMBOLADAPTER_H
20
22
23#include <QColor>
24#include <QFont>
25#include <QObject>
26
27#include <functional>
28
29class SwmmElementSymbolAdapter : public QObject
30{
31 Q_OBJECT
32 Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor NOTIFY symbolChanged)
33 Q_PROPERTY(QColor outlineColor READ outlineColor WRITE setOutlineColor NOTIFY symbolChanged)
34 Q_PROPERTY(double outlineWidth READ outlineWidth WRITE setOutlineWidth NOTIFY symbolChanged)
35 Q_PROPERTY(double size READ size WRITE setSize NOTIFY symbolChanged)
36 Q_PROPERTY(OpenSWMM::Render::MarkerShape markerShape
38 Q_PROPERTY(bool showLabel READ showLabel WRITE setShowLabel NOTIFY symbolChanged)
39 Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont NOTIFY symbolChanged)
40 Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor NOTIFY symbolChanged)
41 Q_PROPERTY(bool showArrows READ showArrows WRITE setShowArrows NOTIFY symbolChanged)
42 Q_PROPERTY(double arrowSize READ arrowSize WRITE setArrowSize NOTIFY symbolChanged)
43 Q_PROPERTY(double arrowWidth READ arrowWidth WRITE setArrowWidth NOTIFY symbolChanged)
44 Q_PROPERTY(QColor arrowColor READ arrowColor WRITE setArrowColor NOTIFY symbolChanged)
47
48 Q_CLASSINFO("group:fillColor", "Fill")
49 Q_CLASSINFO("group:outlineColor", "Outline")
50 Q_CLASSINFO("group:outlineWidth", "Outline")
51 Q_CLASSINFO("group:size", "Symbology")
52 Q_CLASSINFO("group:markerShape", "Symbology")
53 Q_CLASSINFO("group:showLabel", "Labels")
54 Q_CLASSINFO("group:labelFont", "Labels")
55 Q_CLASSINFO("group:labelColor", "Labels")
56 Q_CLASSINFO("group:showArrows", "Flow arrows")
57 Q_CLASSINFO("group:arrowSize", "Flow arrows")
58 Q_CLASSINFO("group:arrowWidth", "Flow arrows")
59 Q_CLASSINFO("group:arrowColor", "Flow arrows")
60 Q_CLASSINFO("group:arrowOnlyWhenFlowPos", "Flow arrows")
61
62public:
63 using Writer = std::function<void(const SWMMElementSymbol &)>;
64
66 Writer writer,
67 QObject *parent = nullptr)
68 : QObject(parent), m_sym(std::move(initial)), m_writer(std::move(writer))
69 {}
70
71 [[nodiscard]] QColor fillColor() const { return m_sym.fillColor; }
72 [[nodiscard]] QColor outlineColor() const { return m_sym.outlineColor; }
73 [[nodiscard]] double outlineWidth() const { return m_sym.outlineWidth; }
74 [[nodiscard]] double size() const { return m_sym.size; }
75 [[nodiscard]] OpenSWMM::Render::MarkerShape markerShape() const { return m_sym.markerShape; }
76 [[nodiscard]] bool showLabel() const { return m_sym.showLabel; }
77 [[nodiscard]] QFont labelFont() const { return m_sym.labelFont; }
78 [[nodiscard]] QColor labelColor() const { return m_sym.labelColor; }
79 [[nodiscard]] bool showArrows() const { return m_sym.showArrows; }
80 [[nodiscard]] double arrowSize() const { return m_sym.arrowSize; }
81 [[nodiscard]] double arrowWidth() const { return m_sym.arrowWidth; }
82 [[nodiscard]] QColor arrowColor() const { return m_sym.arrowColor; }
83 [[nodiscard]] bool arrowOnlyWhenFlowPos() const { return m_sym.arrowOnlyWhenFlowPos; }
84
85 void setFillColor(const QColor &v) { if (m_sym.fillColor == v) return; m_sym.fillColor = v; commit(); }
86 void setOutlineColor(const QColor &v) { if (m_sym.outlineColor == v) return; m_sym.outlineColor = v; commit(); }
87 void setOutlineWidth(double v) { if (qFuzzyCompare(m_sym.outlineWidth, v)) return; m_sym.outlineWidth = v; commit(); }
88 void setSize(double v) { if (qFuzzyCompare(m_sym.size, v)) return; m_sym.size = v; commit(); }
90 { if (m_sym.markerShape == v) return; m_sym.markerShape = v; commit(); }
91 void setShowLabel(bool v) { if (m_sym.showLabel == v) return; m_sym.showLabel = v; commit(); }
92 void setLabelFont(const QFont &v) { if (m_sym.labelFont == v) return; m_sym.labelFont = v; commit(); }
93 void setLabelColor(const QColor &v) { if (m_sym.labelColor == v) return; m_sym.labelColor = v; commit(); }
94 void setShowArrows(bool v) { if (m_sym.showArrows == v) return; m_sym.showArrows = v; commit(); }
95 void setArrowSize(double v) { if (qFuzzyCompare(m_sym.arrowSize, v)) return; m_sym.arrowSize = v; commit(); }
96 void setArrowWidth(double v) { if (qFuzzyCompare(m_sym.arrowWidth, v)) return; m_sym.arrowWidth = v; commit(); }
97 void setArrowColor(const QColor &v) { if (m_sym.arrowColor == v) return; m_sym.arrowColor = v; commit(); }
98 void setArrowOnlyWhenFlowPos(bool v) { if (m_sym.arrowOnlyWhenFlowPos == v) return; m_sym.arrowOnlyWhenFlowPos = v; commit(); }
99
100 [[nodiscard]] const SWMMElementSymbol &snapshot() const { return m_sym; }
101 void restore(const SWMMElementSymbol &s) { m_sym = s; commit(); }
102
109 {
110 m_sym = s;
111 emit symbolChanged();
112 }
113
114signals:
116
117private:
118 void commit()
119 {
120 if (m_writer) m_writer(m_sym);
121 emit symbolChanged();
122 }
123 SWMMElementSymbol m_sym;
124 Writer m_writer;
125};
126
127#endif // OPENSWMMVIS_LAYERS_SWMMELEMENTSYMBOLADAPTER_H
Definition swmmelementsymboladapter.h:30
double arrowSize() const
Definition swmmelementsymboladapter.h:80
double arrowSize
Definition swmmelementsymboladapter.h:42
void setFillColor(const QColor &v)
Definition swmmelementsymboladapter.h:85
void setOutlineWidth(double v)
Definition swmmelementsymboladapter.h:87
bool arrowOnlyWhenFlowPos
Definition swmmelementsymboladapter.h:46
std::function< void(const SWMMElementSymbol &)> Writer
Definition swmmelementsymboladapter.h:63
void setArrowSize(double v)
Definition swmmelementsymboladapter.h:95
bool showLabel
Definition swmmelementsymboladapter.h:38
double outlineWidth
Definition swmmelementsymboladapter.h:34
QColor labelColor
Definition swmmelementsymboladapter.h:40
QColor arrowColor
Definition swmmelementsymboladapter.h:44
OpenSWMM::Render::MarkerShape markerShape
Definition swmmelementsymboladapter.h:37
QFont labelFont() const
Definition swmmelementsymboladapter.h:77
double arrowWidth() const
Definition swmmelementsymboladapter.h:81
void setArrowColor(const QColor &v)
Definition swmmelementsymboladapter.h:97
double arrowWidth
Definition swmmelementsymboladapter.h:43
void setLabelColor(const QColor &v)
Definition swmmelementsymboladapter.h:93
OpenSWMM::Render::MarkerShape markerShape() const
Definition swmmelementsymboladapter.h:75
double size
Definition swmmelementsymboladapter.h:35
const SWMMElementSymbol & snapshot() const
Definition swmmelementsymboladapter.h:100
QFont labelFont
Definition swmmelementsymboladapter.h:39
void resyncFrom(const SWMMElementSymbol &s)
Definition swmmelementsymboladapter.h:108
bool showArrows
Definition swmmelementsymboladapter.h:41
void setSize(double v)
Definition swmmelementsymboladapter.h:88
void setLabelFont(const QFont &v)
Definition swmmelementsymboladapter.h:92
void setShowLabel(bool v)
Definition swmmelementsymboladapter.h:91
void setOutlineColor(const QColor &v)
Definition swmmelementsymboladapter.h:86
QColor fillColor
Definition swmmelementsymboladapter.h:32
double outlineWidth() const
Definition swmmelementsymboladapter.h:73
void setShowArrows(bool v)
Definition swmmelementsymboladapter.h:94
QColor arrowColor() const
Definition swmmelementsymboladapter.h:82
bool showArrows() const
Definition swmmelementsymboladapter.h:79
bool showLabel() const
Definition swmmelementsymboladapter.h:76
bool arrowOnlyWhenFlowPos() const
Definition swmmelementsymboladapter.h:83
void setArrowWidth(double v)
Definition swmmelementsymboladapter.h:96
QColor outlineColor() const
Definition swmmelementsymboladapter.h:72
QColor outlineColor
Definition swmmelementsymboladapter.h:33
QColor labelColor() const
Definition swmmelementsymboladapter.h:78
QColor fillColor() const
Definition swmmelementsymboladapter.h:71
void restore(const SWMMElementSymbol &s)
Definition swmmelementsymboladapter.h:101
void setArrowOnlyWhenFlowPos(bool v)
Definition swmmelementsymboladapter.h:98
void setMarkerShape(OpenSWMM::Render::MarkerShape v)
Definition swmmelementsymboladapter.h:89
double size() const
Definition swmmelementsymboladapter.h:74
double s
Scene px per model length unit.
Definition inletdrawingview.cpp:82
MarkerShape
13 canonical marker shapes the Rule Model's Marker Symbol Layer supports (per RENDERING_RULE_MODEL_PL...
Definition markershape.h:53
Definition contourchain.h:23
QVector< int > v
pool vertex indices
Definition pslgminsize.cpp:159
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Rendering style for a class of SWMM network elements.
Definition swmmmodellayer.h:77
QColor outlineColor
Definition swmmmodellayer.h:79
QColor fillColor
Definition swmmmodellayer.h:78
double size
Definition swmmmodellayer.h:81
double arrowSize
Definition swmmmodellayer.h:101
bool showArrows
Definition swmmmodellayer.h:100
QFont labelFont
Definition swmmmodellayer.h:88
QColor labelColor
Definition swmmmodellayer.h:89
bool arrowOnlyWhenFlowPos
Definition swmmmodellayer.h:115
bool showLabel
Definition swmmmodellayer.h:87
OpenSWMM::Render::MarkerShape markerShape
Definition swmmmodellayer.h:83
QColor arrowColor
Definition swmmmodellayer.h:109
double arrowWidth
Definition swmmmodellayer.h:108
double outlineWidth
Definition swmmmodellayer.h:80
Map layer that renders an OpenSWMMEngine network (nodes, links, subcatchments, rain gages) and provid...