1 /* 2 SPDX-FileCopyrightText: 2007 Krzysztof Kundzicz <athantor@gmail.com> 3 SPDX-License-Identifier: GPL-2.0-or-later 4 */ 5 6 #ifndef KPlotWgtDrawer_H_ 7 #define KPlotWgtDrawer_H_ 8 9 #include <algorithm> 10 #include <cstdint> 11 #include <list> 12 #include <memory> 13 #include <utility> 14 #include <vector> 15 16 #include <QEvent> 17 #include <QHelpEvent> 18 #include <QImage> 19 #include <QList> 20 #include <QMenu> 21 #include <QPalette> 22 #include <QToolTip> 23 #include <QUuid> 24 #include <QWidget> 25 26 #include <KPlotAxis> 27 #include <KPlotObject> 28 #include <KPlotPoint> 29 #include <KPlotWidget> 30 31 #include <drawer/ChartDrawer.h> 32 33 namespace kt 34 { 35 /** \brief Drawer class based on KPlotWidget 36 \author Krzysztof Kundzicz <athantor@gmail.com> 37 */ 38 39 class KPlotWgtDrawer : public KPlotWidget, public ChartDrawer 40 { 41 Q_OBJECT 42 43 public: 44 /// Type used as buffer 45 typedef std::list<std::pair<size_t, wgtunit_t>> buff_t; 46 typedef QList<KPlotObject *> val_t; 47 48 private: 49 /// Uuids of plotObjects 50 std::vector<QUuid> pmUuids; 51 /// Buffer where new values are stored between GUI updates 52 buff_t pmBuff; 53 /// Descriptions of plotObjects 54 std::vector<QString> pmDescs; 55 /// Context menu 56 QMenu *pmCtxMenu; 57 58 /// Makes a context menu for widget 59 void MakeCtxMenu(); 60 /** \brief Converts ChartDrawerData to KPlotObject 61 \param rC ChartDrawerData object to convert 62 \return Converted object 63 */ 64 KPlotObject *cdd2kpo(const ChartDrawerData &rC) const; 65 /// Adds points to chart from buffer 66 void AddPointsFromBuffer(); 67 /// Marks max 68 void MarkMax(); 69 70 public: 71 /// Constructor 72 KPlotWgtDrawer(QWidget *p); 73 74 void paintEvent(QPaintEvent *pPevt) override; 75 QUuid getUuid(const size_t idx) const override; 76 77 bool event(QEvent *) override; 78 79 public Q_SLOTS: 80 void addValue(const size_t idx, const wgtunit_t val, const bool upd = false) override; 81 void addDataSet(ChartDrawerData Cdd) override; 82 void insertDataSet(const size_t idx, ChartDrawerData Cdd) override; 83 void removeDataSet(const size_t idx) override; 84 void zero(const size_t idx) override; 85 void zeroAll() override; 86 void setUnitName(const QString &rN) override; 87 void setPen(const size_t idx, const QPen &rP) override; 88 void setXMax(const wgtunit_t x) override; 89 void setYMax(const wgtunit_t y) override; 90 void findSetMax() override; 91 void setUuid(const size_t idx, const QUuid &rQ) override; 92 int16_t findUuidInSet(const QUuid &rQ) const override; 93 void setMaxMode(const MaxMode mm) override; 94 void update() override; 95 void setLegend(const QString &rL) override; 96 QString makeLegendString() override; 97 98 void enableAntiAlias(bool aa) override; 99 void enableBackgroundGrid(bool bg) override; 100 101 void showContextMenu(const QPoint &rP) override; 102 void renderToImage() override; 103 104 Q_SIGNALS: 105 void Zeroed(ChartDrawer *); 106 }; 107 108 } // ns end 109 110 #endif 111