#pragma once #include #include #include #include #include struct LineGraphSeries { std::vector 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 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& line, LineGraphSeries& lgs); void addSeries(std::vector& line, QColor color, LineGraphSeries::SeriesType type); QColor generateNextColorForGraph(); public: void generateAndAddRandomLine(); void addLine(std::vector& line); void addLine(std::vector& line, QColor color); void addDots(std::vector& dots); void addDots(std::vector& dots, QColor color); };