26#ifndef MESH_PROFILE_PLOT_WIDGET_H
27#define MESH_PROFILE_PLOT_WIDGET_H
54 const QVector<bool> &cellHasSurface = {});
63 void setAxisLabels(
const QString &xLabel,
const QString &yLabel);
71 [[nodiscard]]
bool hasCursor()
const {
return m_hasCursor; }
86 [[nodiscard]]
Mode mode()
const {
return m_mode; }
90 void zoomBy(
double factor);
108 [[nodiscard]] QRectF plotRect()
const;
109 [[nodiscard]] QPointF dataToPixel(
double chainage,
double elev)
const;
110 [[nodiscard]]
double pixelToChainage(
double px)
const;
113 [[nodiscard]]
bool sampleAtChainage(
double chain,
double &ground,
double &wse)
const;
114 void recomputeBounds();
117 void paintBackgroundAndAxes(QPainter &
p)
const;
118 void paintSoilFill(QPainter &
p)
const;
119 void paintMaxEnvelope(QPainter &
p)
const;
120 void paintDepthFill(QPainter &
p)
const;
121 void paintWseLine(QPainter &
p)
const;
122 void paintGroundLine(QPainter &
p)
const;
123 void paintCellBoundaryDots(QPainter &
p)
const;
124 void paintCursor(QPainter &
p)
const;
125 void paintLegend(QPainter &
p)
const;
126 void paintTimeLabel(QPainter &
p)
const;
129 QPointer<MeshProfilePlotOptions> m_options;
130 QDateTime m_currentDateTime;
131 QString m_xLabel = QStringLiteral(
"Distance");
132 QString m_yLabel = QStringLiteral(
"Elevation");
135 double m_autoXMin = 0.0, m_autoXMax = 1.0, m_autoYMin = 0.0, m_autoYMax = 1.0;
136 double m_dataXMin = 0.0, m_dataXMax = 1.0, m_dataYMin = 0.0, m_dataYMax = 1.0;
137 bool m_fitMode =
true;
140 bool m_panActive =
false;
141 bool m_zoomActive =
false;
143 QPoint m_lastMousePos;
145 QRubberBand *m_rubberBand =
nullptr;
148 mutable QRectF m_legendRect;
149 mutable QRectF m_timeLabelRect;
150 enum class OverlayDrag {
None = 0, Legend, TimeLabel };
151 OverlayDrag m_overlayDrag = OverlayDrag::None;
152 QPoint m_overlayDragLastPos;
155 bool m_hasCursor =
false;
156 double m_cursorChainage = 0.0;
157 bool m_cursorDragging =
false;
Definition meshprofileplotoptions.h:28
ArrowPlacement p
Definition linesymbollayer.cpp:27
MaskMode m
Definition maskspec.cpp:18
Q_OBJECT facade for the user-configurable display options on the 2D mesh longitudinal profile plot....
Pure-logic sampler that turns a user-traced polyline across the 2D surface mesh into a longitudinal c...
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
The assembled cross-section: ordered samples + a results flag.
Definition profilesection.h:70