comparison include/gui/widgets/graph.h @ 94:2f373d48f889

*: etc changes to graph stuff
author Paper <mrpapersonic@gmail.com>
date Wed, 01 Nov 2023 14:30:26 -0400
parents d5efb81540b3
children bd68e4393e6f
comparison
equal deleted inserted replaced
93:d5efb81540b3 94:2f373d48f889
1 #ifndef __gui__widgets__graph_h 1 #ifndef __gui__widgets__graph_h
2 #define __gui__widgets__graph_h 2 #define __gui__widgets__graph_h
3
3 #include <QWidget> 4 #include <QWidget>
4 #include <QSize> 5 #include <QSize>
5 #include <QPaintEvent> 6 #include <QPaintEvent>
6 #include <QSize> 7 #include <QSize>
7 #include <QRect> 8 #include <QRect>
8 #include <QPainter> 9 #include <QPainter>
9 #include <QPainterPath> 10 #include <QPainterPath>
10 #include <QPen> 11 #include <QPen>
11 12
12 template <typename T> /* does this even work?? */ 13 template <typename T>
13 class Graph final : public QWidget { 14 class Graph final : public QWidget {
14 public: 15 public:
15 Graph(QWidget* parent = nullptr) : QWidget(parent) {}; 16 Graph(QWidget* parent = nullptr) : QWidget(parent) {};
16 void AddItem(T key, int val) { map[key] = val; update(); updateGeometry(); }; 17 void AddItem(T key, int val) { map[key] = val; update(); updateGeometry(); };
17 void Clear() { map.clear(); update(); updateGeometry(); }; 18 void Clear() { map.clear(); update(); updateGeometry(); };
34 /* now we do the actual painting */ 35 /* now we do the actual painting */
35 QPainter painter(this); 36 QPainter painter(this);
36 37
37 int i = 0; 38 int i = 0;
38 for (const auto& item : map) { 39 for (const auto& item : map) {
39 painter.drawText(QRect(0, i*ITEM_HEIGHT, TEXT_WIDTH, ITEM_HEIGHT), Qt::AlignRight | Qt::AlignVCenter, QString::number(item.first)); 40 painter.drawText(QRect(rect.x(), rect.y() + i * ITEM_HEIGHT, TEXT_WIDTH, ITEM_HEIGHT), Qt::AlignRight | Qt::AlignVCenter, QString::number(item.first));
40 41
41 if (size) { 42 if (size) {
42 painter.save(); 43 painter.save();
43 44
44 QPen pen(Qt::transparent, 0); 45 QPen pen(Qt::transparent, 0);
45 painter.setPen(pen); 46 painter.setPen(pen);
46 47
47 QPainterPath path; 48 QPainterPath path;
48 path.addRect(rect.x()+35, rect.y()+(i*ITEM_HEIGHT), (static_cast<double>(item.second)/size)*(rect.width()-35), ITEM_HEIGHT); 49 path.addRect(rect.x()+35, rect.y() + i * ITEM_HEIGHT, (static_cast<double>(item.second)/size)*(rect.width()-35), ITEM_HEIGHT);
49 painter.fillPath(path, Qt::blue); 50 painter.fillPath(path, Qt::blue);
50 painter.drawPath(path); 51 painter.drawPath(path);
51 52
52 painter.restore(); 53 painter.restore();
53 } 54 }