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
annotationlayer.h
Go to the documentation of this file.
1
16#ifndef OPENSWMMVIS_LAYERS_ANNOTATIONLAYER_H
17#define OPENSWMMVIS_LAYERS_ANNOTATIONLAYER_H
18
20
21#include <QHash>
22#include <QJsonArray>
23#include <QString>
24#include <QVector>
25
28
30{
31 Q_OBJECT
32public:
33 explicit OpenSWMMVisAnnotationLayer(const QString &name = QStringLiteral("Annotations"),
34 OpenSWMMVisWorkspace *parent = nullptr);
36
37 // ----- Annotation management -----------------------------------------
38
43
45 bool removeAnnotation(const QString &id);
46
49 AnnotationTextItem *takeAnnotation(const QString &id);
50
52 [[nodiscard]] AnnotationTextItem *annotation(const QString &id) const;
53
55 [[nodiscard]] QVector<AnnotationTextItem *> annotations() const { return m_items; }
56
60 [[nodiscard]] AnnotationTextItem *annotationAtScenePos(const QPointF &scenePos) const;
61
62 // ----- Persistence ----------------------------------------------------
63
64 [[nodiscard]] QJsonArray toJson() const;
65 void fromJson(const QJsonArray &arr);
66
67 // ----- OpenSWMMVisLayer overrides -------------------------------------
68
69 [[nodiscard]] QString sourceDescription() const override { return tr("(in-memory)"); }
70 [[nodiscard]] QVector<QPair<QString, QString>> extendedMetadata() const override
71 { return {{ tr("Annotations"), QString::number(m_items.size()) }}; }
72
73 void populateScene(QGraphicsScene *scene,
74 const MapExtent &canvasExtent,
75 const SpatialReferenceSystem *canvasSRS) override;
76 void depopulateScene(QGraphicsScene *scene) override;
77 void refreshScene(QGraphicsScene *scene,
78 const MapExtent &canvasExtent,
79 const SpatialReferenceSystem *canvasSRS) override;
80 void onCanvasCRSChanged(const SpatialReferenceSystem *newCanvasSRS) override;
81
82private slots:
86 void onItemPositionChanged();
87
89 void onItemChanged();
90
91private:
93 QPointF toCanvas(double x, double y) const;
94
98 void buildGraphicsItem(AnnotationTextItem *item);
99
100 QVector<AnnotationTextItem *> m_items;
101 QHash<QString, AnnotationGraphicsItem *> m_graphics;
102 QGraphicsScene *m_scene = nullptr;
103 const SpatialReferenceSystem *m_canvasSRS = nullptr;
104};
105
106#endif // OPENSWMMVIS_LAYERS_ANNOTATIONLAYER_H
Definition annotationlayer.cpp:49
Data model for a single styled text annotation.
Definition annotationtextitem.h:34
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
Definition annotationlayer.h:30
QJsonArray toJson() const
Definition annotationlayer.cpp:278
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 annotationlayer.cpp:357
~OpenSWMMVisAnnotationLayer() override
Definition annotationlayer.cpp:201
QVector< AnnotationTextItem * > annotations() const
Definition annotationlayer.h:55
void fromJson(const QJsonArray &arr)
Definition annotationlayer.cpp:286
void refreshScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS) override
Smart scene refresh — updates existing items instead of destroying and recreating.
Definition annotationlayer.cpp:343
void populateScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS) override
Creates / updates QGraphicsItems representing this layer in the scene.
Definition annotationlayer.cpp:317
bool removeAnnotation(const QString &id)
Definition annotationlayer.cpp:227
void depopulateScene(QGraphicsScene *scene) override
Removes all QGraphicsItems belonging to this layer from the scene.
Definition annotationlayer.cpp:329
AnnotationTextItem * takeAnnotation(const QString &id)
Definition annotationlayer.cpp:236
QString sourceDescription() const override
Human-readable source of this layer: a file path, a service URL, or a description for in-memory / der...
Definition annotationlayer.h:69
bool addAnnotation(AnnotationTextItem *item)
Definition annotationlayer.cpp:208
AnnotationTextItem * annotation(const QString &id) const
Definition annotationlayer.cpp:254
AnnotationTextItem * annotationAtScenePos(const QPointF &scenePos) const
Definition annotationlayer.cpp:263
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 annotationlayer.h:70
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:116
QString name() const
Returns the user-visible name of this layer.
Definition openswmmvislayer.cpp:62
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
QGraphicsScene * scene
Definition inletdrawingview.cpp:78
Abstract base class for all map layers displayed in the MapCanvas.
QVector< int > parent
union-find
Definition pslgminsize.cpp:176