28 #include <QtCore/QList> 29 #include <QtCore/QMap> 31 #include <QtGui/QBrush> 32 #include <QGraphicsEllipseItem> 33 #include <QtCore/QMutex> 35 #include <QPushButton> 36 #include <QtCore/QTime> 53 UPlotItem(qreal dataX, qreal dataY, qreal width=2);
63 void setData(
const QPointF & data);
98 UPlotCurve(
const QString & name, QObject * parent = 0);
102 UPlotCurve(
const QString & name,
const QVector<UPlotItem *>
data, QObject * parent = 0);
106 UPlotCurve(
const QString & name,
const QVector<float> & x,
const QVector<float> & y, QObject * parent = 0);
112 const QPen &
pen()
const {
return _pen;}
116 const QBrush &
brush()
const {
return _brush;}
121 void setPen(
const QPen & pen);
125 void setBrush(
const QBrush & brush);
130 QString
name()
const {
return _name;}
134 int itemsSize()
const;
135 QPointF getItemData(
int index);
137 void setData(QVector<UPlotItem*> & data);
138 void setData(
const QVector<float> & x,
const QVector<float> & y);
139 void setData(
const std::vector<float> & x,
const std::vector<float> & y);
140 void setData(
const QVector<float> & y);
141 void setData(
const std::vector<float> & y);
142 void getData(QVector<float> & x, QVector<float> & y)
const;
143 void draw(QPainter * painter);
150 virtual void clear();
155 void setVisible(
bool visible);
165 void setXStart(
float val);
176 void addValue(
float y);
181 void addValue(
float x,
float y);
188 void addValue(
const QString & y);
194 void addValues(QVector<UPlotItem *> & data);
199 void addValues(
const QVector<float> & xs,
const QVector<float> & ys);
205 void addValues(
const QVector<float> & ys);
206 void addValues(
const QVector<int> & ys);
212 void addValues(
const std::vector<float> & ys);
213 void addValues(
const std::vector<int> & ys);
224 void attach(
UPlot * plot);
225 void detach(
UPlot * plot);
227 const QVector<float> &
getMinMax()
const {
return _minMax;}
228 int removeItem(
int index);
231 virtual void update(
float scaleX,
float scaleY,
float offsetX,
float offsetY,
float xDir,
float yDir,
bool allDataKept);
261 UPlotCurveThreshold(
const QString & name,
float thesholdValue, Qt::Orientation orientation = Qt::Horizontal, QObject * parent = 0);
268 void setThreshold(
float threshold);
272 void setOrientation(Qt::Orientation orientation);
276 virtual void update(
float scaleX,
float scaleY,
float offsetX,
float offsetY,
float xDir,
float yDir,
bool allDataKept);
292 UPlotAxis(Qt::Orientation orientation = Qt::Horizontal,
float min=0,
float max=1, QWidget * parent = 0);
300 void setAxis(
float &
min,
float & max);
308 int step()
const {
return _step;}
316 void setReversed(
bool reversed);
319 virtual void paintEvent(QPaintEvent * event);
352 virtual void contextMenuEvent(QContextMenuEvent * event);
377 void setFlat(
bool on);
380 QPixmap createSymbol(
const QPen & pen,
const QBrush & brush);
384 void removeLegendItem(
const UPlotCurve * curve);
387 void legendItemRemoved(
const UPlotCurve * curve);
388 void legendItemToggled(
const UPlotCurve * curve,
bool toggled);
391 virtual void contextMenuEvent(QContextMenuEvent * event);
394 void redirectToggled(
bool);
414 UOrientableLabel(
const QString & text, Qt::Orientation orientation = Qt::Horizontal, QWidget * parent = 0);
423 void setOrientation(Qt::Orientation orientation);
424 QSize sizeHint()
const;
425 QSize minimumSizeHint()
const;
427 virtual void paintEvent(QPaintEvent* event);
470 UPlot(QWidget * parent = 0);
476 UPlotCurve * addCurve(
const QString & curveName,
const QColor & color = QColor());
480 bool addCurve(
UPlotCurve * curve,
bool ownershipTransferred =
true);
484 QStringList curveNames();
485 bool contains(
const QString & curveName);
490 UPlotCurveThreshold * addThreshold(
const QString & name,
float value, Qt::Orientation orientation = Qt::Horizontal);
491 QString
title()
const {
return this->objectName();}
492 QPen getRandomPenColored();
493 void showLegend(
bool shown);
494 void showGrid(
bool shown);
495 void showRefreshRate(
bool shown);
496 void keepAllData(
bool kept);
497 void showXAxis(
bool shown) {_horizontalAxis->setVisible(shown);}
498 void showYAxis(
bool shown) {_verticalAxis->setVisible(shown);}
501 void setFixedXAxis(
float x1,
float x2);
502 void setFixedYAxis(
float y1,
float y2);
503 void setMaxVisibleItems(
int maxVisibleItems);
504 void setTitle(
const QString & text);
505 void setXLabel(
const QString & text);
506 void setYLabel(
const QString & text, Qt::Orientation orientation = Qt::Vertical);
507 void setWorkingDirectory(
const QString & workingDirectory);
508 void setGraphicsView(
bool on);
509 QRectF sceneRect()
const;
517 void showCurve(
const UPlotCurve * curve,
bool shown);
526 void captureScreen();
530 virtual void contextMenuEvent(QContextMenuEvent * event);
531 virtual void paintEvent(QPaintEvent * event);
532 virtual void resizeEvent(QResizeEvent * event);
536 void addItem(QGraphicsItem * item);
539 void replot(QPainter * painter);
540 bool updateAxis(
float x,
float y);
541 bool updateAxis(
float x1,
float x2,
float y1,
float y2);
543 void createActions();
545 void selectScreenCaptureFormat();
552 float _axisMaximums[4];
553 bool _axisMaximumsSet[4];
QString _autoScreenCaptureFormat
virtual bool isMinMaxValid() const
QGraphicsTextItem * _text
QGraphicsItem * _sceneRoot
UPlotAxis * _verticalAxis
QList< UPlotCurve * > _curves
const QVector< float > & getMinMax() const
const QBrush & brush() const
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
const UPlotCurve * _curve
QAction * _aAddVerticalLine
UPlotItem * _previousItem
const UPlotCurve * curve() const
virtual bool isMinMaxValid() const
UOrientableLabel * _yLabel
QWidget * _graphicsViewHolder
Qt::Orientation _orientation
QTime _refreshIntervalTime
Qt::Orientation orientation() const
QString _workingDirectory
void update(const std::string &key, const XmlRpc::XmlRpcValue &v)
void showYAxis(bool shown)
UPlotAxis * _horizontalAxis
virtual void showDescription(bool shown)
Qt::Orientation _orientation
QAction * _aShowRefreshRate
UPlotItem(qreal dataX, qreal dataY, qreal width=2)
QAction * _aAddHorizontalLine
virtual void keyReleaseEvent(QKeyEvent *keyEvent)
QList< QGraphicsItem * > _items
QAction * _aYLabelVertical
QList< QGraphicsLineItem * > vGridLines
QAction * _aCopyToClipboard
QAction * _aAutoScreenCapture
virtual void focusOutEvent(QFocusEvent *event)
UPlotItem * nextItem() const
UPlotItem * previousItem() const
void setData(const QPointF &data)
const QPointF & data() const
virtual void focusInEvent(QFocusEvent *event)
QAction * _aUseFlatButtons
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
void showXAxis(bool shown)
void setNextItem(UPlotItem *nextItem)
QList< QGraphicsLineItem * > hGridLines
Qt::Orientation _orientation
void increment(int *value)
void setPreviousItem(UPlotItem *previousItem)