1 /* 2 SPDX-FileCopyrightText: 2007 Krzysztof Kundzicz <athantor@gmail.com> 3 SPDX-License-Identifier: GPL-2.0-or-later 4 */ 5 6 #ifndef ChartDrawerData_H_ 7 #define ChartDrawerData_H_ 8 9 #include <QPen> 10 #include <QPointer> 11 #include <QString> 12 #include <QUuid> 13 14 #include <algorithm> 15 #include <memory> 16 #include <utility> 17 #include <vector> 18 19 namespace kt 20 { 21 /** \brief „Container” for chart's data, used by ChartDrawer 22 \author Krzysztof Kundzicz <athantor@gmail.com> 23 */ 24 25 class ChartDrawerData 26 { 27 friend class ChartDrawer; 28 29 public: 30 /// Type storing chart's values 31 typedef std::vector<qreal> val_t; 32 33 private: 34 /// Name of the set 35 QString pmName; 36 /// Pent of the set 37 QPen pmPen; 38 /// Values 39 val_t pmVals; 40 /// Set's UUID 41 QUuid pmUuid; 42 /// Mark maximum? 43 bool mMax; 44 45 public: 46 /// Constructor 47 ChartDrawerData(); 48 /// Destructor 49 ~ChartDrawerData(); 50 /** \brief Copy constructor 51 \param rCdd Source 52 */ 53 ChartDrawerData(const ChartDrawerData &rCdd); 54 /** \brief Constructor 55 \param rN Name 56 \param rP Pen 57 \param max Mark maximum? 58 \param rU UUID 59 60 \note If there is no UUID given, it'll going be generated automagically 61 */ 62 ChartDrawerData(const QString &rN, const QPen &rP, const bool max, const QUuid &rU = QUuid::createUuid()); 63 64 /** \brief Resizes set to given size 65 \param size New size 66 \note New values are filled with '0.0' 67 */ 68 void setSize(const size_t size); 69 70 /// Zeros the set 71 void zero(); 72 73 /** \brief Adds value to set 74 \param val Value 75 */ 76 void addValue(const qreal val); 77 78 /** \brief Returns valueset 79 \return Values 80 */ getValues()81 const val_t &getValues() const 82 { 83 return pmVals; 84 } 85 86 /** \brief Returns set's pen 87 \return Pen 88 */ getPen()89 QPen getPen() const 90 { 91 return pmPen; 92 } 93 /** \brief Sets set's pen 94 \param rP New pen 95 */ setPen(const QPen & rP)96 void setPen(const QPen &rP) 97 { 98 pmPen = rP; 99 } 100 101 /** \brief Returns set's name 102 \return Name 103 */ getName()104 QString getName() const 105 { 106 return pmName; 107 } 108 109 /** \brief Sets set's name 110 \param rN New name 111 */ setName(const QString & rN)112 void setName(const QString &rN) 113 { 114 pmName = rN; 115 } 116 117 /** \brief Returns set's UUID 118 \return UUID 119 */ getUuid()120 const QUuid getUuid() const 121 { 122 return pmUuid; 123 } 124 /** \brief Sets set's UUID 125 \param rU New UUID 126 */ setUuid(const QUuid & rU)127 void setUuid(const QUuid &rU) 128 { 129 pmUuid = rU; 130 } 131 132 /** \brief Mark set's maximum 133 \return Mark? 134 */ 135 bool getMarkMax() const; 136 /** \brief Enable maximum marking? 137 \param max Enable? 138 */ 139 void enableMarkMax(const bool max); 140 141 /** \brief Finds maximum 142 * \return Maximum 143 * 144 * Function returns pair, where: 145 * - First: Maximum value 146 * - Second: Value's position in set 147 */ 148 std::pair<qreal, size_t> findMax() const; 149 150 /// Dummy assignment operator for MSVC 151 bool operator=(const ChartDrawerData & /*rCdd*/) 152 { 153 return true; 154 }; 155 }; 156 157 } // NS end 158 159 #endif 160