/*Copyright © 2017 Hasan Yavuz ÖzderyaThis file is part of serialplot.serialplot is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.serialplot is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with serialplot. If not, see <http://www.gnu.org/licenses/>.*/#ifndef PLOTMANAGER_H#define PLOTMANAGER_H#include <QObject>#include <QWidget>#include <QScrollArea>#include <QVBoxLayout>#include <QList>#include <QSettings>#include <QMenu>#include <qwt_plot_curve.h>#include "plot.h"#include "framebufferseries.h"#include "channelinfomodel.h"#include "plotmenu.h"class PlotManager : public QObject{Q_OBJECTpublic:explicit PlotManager(QWidget* plotArea, PlotMenu* menu,ChannelInfoModel* infoModel = NULL,QObject *parent = 0);~PlotManager();/// Add a new curve with title and buffer. A color is/// automatically chosen for curve.void addCurve(QString title, FrameBuffer* buffer);/// Alternative of `addCurve` for static curve data (snapshots).void addCurve(QString title, QVector<QPointF> data);/// Removes curves from the endvoid removeCurves(unsigned number);/// Returns current number of curves known by plot managerunsigned numOfCurves();public slots:/// Enable/Disable multiple plot displayvoid setMulti(bool enabled);/// Update all plot widgetsvoid replot();/// Enable display of a "DEMO" label on each plotvoid showDemoIndicator(bool show = true);/// Set the Y axisvoid setYAxis(bool autoScaled, double yMin = 0, double yMax = 1);/// Set the X axisvoid setXAxis(bool asIndex, double xMin = 0 , double xMax = 1);/// Display an animation for snapshotvoid flashSnapshotOverlay();/// Should be called to update zoom basevoid setNumOfSamples(unsigned value);/// Maximum width of X axis (limit of hscroll)void setPlotWidth(double width);private:bool isMulti;QWidget* _plotArea;PlotMenu* _menu;QVBoxLayout* layout; ///< layout of the `plotArea`QScrollArea* scrollArea;QList<QwtPlotCurve*> curves;QList<Plot*> plotWidgets;Plot* emptyPlot; ///< for displaying when all channels are hiddenChannelInfoModel* _infoModel;bool isDemoShown;bool _autoScaled;double _yMin;double _yMax;bool _xAxisAsIndex;double _xMin;double _xMax;unsigned _numOfSamples;double _plotWidth;Plot::ShowSymbols showSymbols;/// Setups the layout for multi or single plotvoid setupLayout(bool multiPlot);/// Inserts a new plot widget to the current layout.Plot* addPlotWidget();/// Returns the plot widget that given curve is attached toPlot* plotWidget(unsigned curveIndex);/// Common part of overloaded `addCurve` functionsvoid _addCurve(QwtPlotCurve* curve);/// Check and make sure "no visible channels" text is shownvoid checkNoVisChannels();private slots:void showGrid(bool show = true);void showMinorGrid(bool show = true);void showLegend(bool show = true);void unzoom();void darkBackground(bool enabled = true);void setSymbols(Plot::ShowSymbols shown);void onChannelInfoChanged(const QModelIndex & topLeft,const QModelIndex & bottomRight,const QVector<int> & roles = QVector<int> ());};#endif // PLOTMANAGER_H
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。