78 Q_PROPERTY(
double yMinimum READ yMinimum NOTIFY viewChanged)
79 Q_PROPERTY(
double yMaximum READ yMaximum NOTIFY viewChanged)
80 Q_PROPERTY(
bool gridVisible READ isGridVisible WRITE setGridVisible NOTIFY appearanceChanged)
81 Q_PROPERTY(
bool legendVisible READ isLegendVisible WRITE setLegendVisible NOTIFY appearanceChanged)
82 Q_PROPERTY(
bool readoutVisible READ isReadoutVisible WRITE setReadoutVisible NOTIFY appearanceChanged)
83 Q_PROPERTY(QColor gridColor READ gridColor WRITE setGridColor NOTIFY appearanceChanged)
84 Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY appearanceChanged)
85 Q_PROPERTY(QColor bezelColor READ bezelColor WRITE setBezelColor NOTIFY appearanceChanged)
86 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY appearanceChanged)
87 Q_PROPERTY(QColor cursorColor READ cursorColor WRITE setCursorColor NOTIFY appearanceChanged)
88 Q_PROPERTY(DecimationMode decimationMode READ decimationMode WRITE setDecimationMode NOTIFY appearanceChanged)
89 Q_PROPERTY(TimeLabelFormat timeLabelFormat READ timeLabelFormat WRITE setTimeLabelFormat NOTIFY appearanceChanged)
90 Q_PROPERTY(QDateTime timeOrigin READ timeOrigin WRITE setTimeOrigin NOTIFY appearanceChanged)
94 enum class Cursor { A, B };
98 enum class DecimationMode {
103 Q_ENUM(DecimationMode)
106 enum class TimeLabelFormat {
110 Q_ENUM(TimeLabelFormat)
114 std::chrono::nanoseconds t{0};
124 int addChannel(
const QString &name,
const QColor &color,
double penWidth = 1.8);
126 bool removeChannel(
int channelId);
128 void removeAllChannels();
130 [[nodiscard]] QList<int> channelIds()
const;
131 [[nodiscard]]
int channelCount()
const;
133 [[nodiscard]] QString channelName(
int channelId)
const;
134 void setChannelName(
int channelId,
const QString &name);
136 [[nodiscard]] QColor channelColor(
int channelId)
const;
137 void setChannelColor(
int channelId,
const QColor &color);
138 [[nodiscard]]
bool isChannelVisible(
int channelId)
const;
139 void setChannelVisible(
int channelId,
bool visible);
140 [[nodiscard]]
double channelPenWidth(
int channelId)
const;
141 void setChannelPenWidth(
int channelId,
double width);
152 bool setChannelData(
int channelId,
const std::chrono::nanoseconds *t,
const double *values, qsizetype count);
153 [[nodiscard]] qsizetype channelSampleCount(
int channelId)
const;
155 [[nodiscard]]
bool hasData()
const;
157 [[nodiscard]] std::chrono::nanoseconds dataStart()
const;
159 [[nodiscard]] std::chrono::nanoseconds dataEnd()
const;
164 [[nodiscard]] std::optional<Sample> nearestSample(
int channelId, std::chrono::nanoseconds t)
const;
167 [[nodiscard]] std::chrono::nanoseconds gapThreshold()
const;
168 void setGapThreshold(std::chrono::nanoseconds threshold);
172 [[nodiscard]] std::chrono::nanoseconds xStart()
const;
173 [[nodiscard]] std::chrono::nanoseconds xEnd()
const;
179 void setXRange(std::chrono::nanoseconds start, std::chrono::nanoseconds end);
180 [[nodiscard]]
double yMinimum()
const;
181 [[nodiscard]]
double yMaximum()
const;
183 void setYRange(
double minimum,
double maximum);
188 [[nodiscard]]
bool isCursorVisible(Cursor cursor)
const;
189 void setCursorVisible(Cursor cursor,
bool visible);
191 [[nodiscard]] std::chrono::nanoseconds cursorPosition(Cursor cursor)
const;
192 void setCursorPosition(Cursor cursor, std::chrono::nanoseconds t);
194 [[nodiscard]] std::optional<Sample> cursorReadout(
int channelId, Cursor cursor)
const;
196 [[nodiscard]] std::chrono::nanoseconds cursorDeltaTime()
const;
198 [[nodiscard]] std::optional<double> cursorDeltaValue(
int channelId)
const;
202 [[nodiscard]]
bool isGridVisible()
const;
203 [[nodiscard]]
bool isLegendVisible()
const;
204 [[nodiscard]]
bool isReadoutVisible()
const;
205 [[nodiscard]] QColor gridColor()
const;
206 [[nodiscard]] QColor backgroundColor()
const;
207 [[nodiscard]] QColor bezelColor()
const;
208 [[nodiscard]] QColor textColor()
const;
209 [[nodiscard]] QColor cursorColor()
const;
210 [[nodiscard]] DecimationMode decimationMode()
const;
211 [[nodiscard]] TimeLabelFormat timeLabelFormat()
const;
212 [[nodiscard]] QDateTime timeOrigin()
const;
214 [[nodiscard]] QSize sizeHint()
const override;
215 [[nodiscard]] QSize minimumSizeHint()
const override;
222 void setGridVisible(
bool visible);
223 void setLegendVisible(
bool visible);
225 void setReadoutVisible(
bool visible);
226 void setGridColor(
const QColor &color);
227 void setBackgroundColor(
const QColor &color);
228 void setBezelColor(
const QColor &color);
229 void setTextColor(
const QColor &color);
230 void setCursorColor(
const QColor &color);
231 void setDecimationMode(DecimationMode mode);
232 void setTimeLabelFormat(TimeLabelFormat format);
233 void setTimeOrigin(
const QDateTime &origin);
239 void channelsChanged();
241 void cursorsChanged();
243 void appearanceChanged();
246 void paintEvent(QPaintEvent *event)
override;
247 void resizeEvent(QResizeEvent *event)
override;
248 void changeEvent(QEvent *event)
override;
249 void mousePressEvent(QMouseEvent *event)
override;
250 void mouseMoveEvent(QMouseEvent *event)
override;
251 void mouseReleaseEvent(QMouseEvent *event)
override;
252 void mouseDoubleClickEvent(QMouseEvent *event)
override;
253 void wheelEvent(QWheelEvent *event)
override;
254 void keyPressEvent(QKeyEvent *event)
override;
257 [[nodiscard]] QRectF plotArea()
const;
258 [[nodiscard]]
double readoutBandHeight()
const;
259 [[nodiscard]]
double readoutBandWidth()
const;
260 [[nodiscard]] QList<QStringList> readoutRows()
const;
261 [[nodiscard]] qint64 readoutResolution()
const;
262 void clampViewToData();
264 std::unique_ptr<AnalysisChartPrivate> d_ptr;
266 friend class internal::AnalysisChartTestAccess;