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
sectionpreviewwidget.h
Go to the documentation of this file.
1
19#ifndef OPENSWMMVIS_SECTIONVIEW_SECTIONPREVIEWWIDGET_H
20#define OPENSWMMVIS_SECTIONVIEW_SECTIONPREVIEWWIDGET_H
21
22#include <QPointF>
23#include <QRectF>
24#include <QWidget>
25
27
29
30class SectionPreviewWidget : public QWidget
31{
32 Q_OBJECT
33
34public:
35 explicit SectionPreviewWidget(QWidget *parent = nullptr);
36
43
44 [[nodiscard]] const SectionDiagramModel &model() const noexcept
45 { return m_model; }
46
49 void setPlaceholderText(const QString &text);
50
53 [[nodiscard]] QImage renderToImage(const QSize &size) const;
54
55 // ---- View ---------------------------------------------------------------
56 //
57 // Navigation matches the map canvas so the gestures transfer:
58 // wheel → zoom about the cursor
59 // middle-button drag → pan
60 // middle double-click → zoom to extents
61 //
62 // Zoom scales the GEOMETRY only; labels keep their point size, which is what
63 // makes zooming a legibility tool — the drawing spreads out from under
64 // crowded dimension text instead of magnifying the crowding.
65
66 [[nodiscard]] const DiagramViewport &viewport() const noexcept
67 { return m_viewport; }
68
70
73 void zoomToExtents();
74
77 void zoomBy(double factor, const QPointF &anchorPx);
78
83 [[nodiscard]] double achievedVerticalExaggeration() const noexcept
84 { return m_achievedVE; }
85
89 [[nodiscard]] QRectF lastFitRect() const noexcept { return m_lastFitRect; }
90
91signals:
95
96protected:
97 void paintEvent(QPaintEvent *event) override;
98 void wheelEvent(QWheelEvent *event) override;
99 void mousePressEvent(QMouseEvent *event) override;
100 void mouseMoveEvent(QMouseEvent *event) override;
101 void mouseReleaseEvent(QMouseEvent *event) override;
102 void mouseDoubleClickEvent(QMouseEvent *event) override;
103
104private:
105 SectionDiagramModel m_model;
106 QString m_placeholder;
107
108 DiagramViewport m_viewport;
114 mutable QRectF m_lastFitRect;
115 mutable double m_achievedVE = 1.0;
116 bool m_panning = false;
117 QPointF m_panAnchorPx;
118 QPointF m_panStartOffset;
119};
120
121} // namespace openswmmvis::sectionview
122
123#endif // OPENSWMMVIS_SECTIONVIEW_SECTIONPREVIEWWIDGET_H
Definition sectionpreviewwidget.h:31
QRectF lastFitRect() const noexcept
Definition sectionpreviewwidget.h:89
void setModel(SectionDiagramModel model)
Definition sectionpreviewwidget.cpp:50
void setViewport(const DiagramViewport &viewport)
Definition sectionpreviewwidget.cpp:73
QImage renderToImage(const QSize &size) const
Definition sectionpreviewwidget.cpp:189
void mouseReleaseEvent(QMouseEvent *event) override
Definition sectionpreviewwidget.cpp:160
double achievedVerticalExaggeration() const noexcept
Definition sectionpreviewwidget.h:83
void mousePressEvent(QMouseEvent *event) override
Definition sectionpreviewwidget.cpp:135
void mouseDoubleClickEvent(QMouseEvent *event) override
Definition sectionpreviewwidget.cpp:171
void setPlaceholderText(const QString &text)
Definition sectionpreviewwidget.cpp:62
void paintEvent(QPaintEvent *event) override
Definition sectionpreviewwidget.cpp:206
void wheelEvent(QWheelEvent *event) override
Definition sectionpreviewwidget.cpp:121
void viewportChanged(const DiagramViewport &viewport)
const SectionDiagramModel & model() const noexcept
Definition sectionpreviewwidget.h:44
void zoomBy(double factor, const QPointF &anchorPx)
Definition sectionpreviewwidget.cpp:90
void mouseMoveEvent(QMouseEvent *event) override
Definition sectionpreviewwidget.cpp:148
void zoomToExtents()
Definition sectionpreviewwidget.cpp:85
const DiagramViewport & viewport() const noexcept
Definition sectionpreviewwidget.h:66
Definition aquifereditordialog.h:41
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString text
Definition queryparser.cpp:35
Renderer-agnostic section/profile diagram model + QPainter painter.
User zoom / pan applied on top of the automatic fit.
Definition sectiondiagram.h:261
Everything one preview pane draws, in model units.
Definition sectiondiagram.h:274