12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #pragma once
- #include <QWidget>
- #include <QPaintEvent>
- #include <QPen>
- #include <QPainter>
- #include <vector>
- struct LineGraphSeries {
- std::vector<QPointF> data;
- double minX, maxX;
- double minY, maxY;
- QColor color;
- QString name;
- enum SeriesType{ Line, Dot};
- SeriesType type;
- };
- //bool compTest(QPoint a, QPoint b) {
- // return a.x() < b.x();
- //}
- class CustomLineGraph :public QWidget
- {
- Q_OBJECT
- public:
- CustomLineGraph(QWidget* parent, QString title, int lineWidth = 2, double circleRadius = .5);
- ~CustomLineGraph();
- void CustomLineGraph::paintEvent(QPaintEvent* event);
- int lineWidth;
- double circleRadius;
- QString title;
- private:
- //Data
- std::vector<LineGraphSeries> seriesVec;
- double minGraphX = 0, maxGraphX = 0, minGraphY = 0, maxGraphY = 0, rangeGraphX = 0, rangeGraphY = 0;
- //Visualization
- QString xAxisNumbers[11];
- QString yAxisNumbers[11];
- double hueoffset;
- QPen linePen, rectPen, axisPen;
- QPointF transformPoint(QPointF& point, double stregth_factorX, double stregth_factorY);
- void generateAxisNumberStrings();
- void calculateMinMaxGraphXY();
- void CustomLineGraph::popullateLineGraphSeries(std::vector<QPointF>& line, LineGraphSeries& lgs);
- void addSeries(std::vector<QPointF>& line, QColor color, LineGraphSeries::SeriesType type);
- QColor generateNextColorForGraph();
- public:
- void generateAndAddRandomLine();
- void addLine(std::vector<QPointF>& line);
- void addLine(std::vector<QPointF>& line, QColor color);
- void addDots(std::vector<QPointF>& dots);
- void addDots(std::vector<QPointF>& dots, QColor color);
- };
|