QGraphicsPixmapEnum.hpp
1 #pragma once
2 #include <score/graphics/widgets/Constants.hpp>
3 #include <score/graphics/widgets/QGraphicsEnum.hpp>
4 #include <score/widgets/Pixmap.hpp>
5 
6 #include <QGraphicsItem>
7 #include <QObject>
8 
9 #include <score_lib_base_export.h>
10 
11 #include <vector>
12 #include <verdigris>
13 
14 namespace score
15 {
16 class SCORE_LIB_BASE_EXPORT QGraphicsPixmapEnum final : public QGraphicsEnum
17 {
18 public:
19  std::vector<QPixmap> on_images;
20  std::vector<QPixmap> off_images;
21 
22  template <std::size_t N>
24  const std::array<const char*, N>& arr,
25  const std::array<const char*, 2 * N>& pixmaps, QGraphicsItem* parent)
26  : QGraphicsPixmapEnum{parent}
27  {
28  array.reserve(N);
29  for(auto str : arr)
30  array.push_back(str);
31 
32  for(std::size_t i = 0; i < pixmaps.size(); i++)
33  {
34  if(i % 2)
35  off_images.emplace_back(score::get_pixmap(pixmaps[i]));
36  else
37  on_images.emplace_back(score::get_pixmap(pixmaps[i]));
38  }
39 
40  setupDefaultColumns(N);
41  }
42 
44  std::vector<QString> arr, const std::vector<QString>& pixmaps,
45  QGraphicsItem* parent)
46  : QGraphicsPixmapEnum{parent}
47  {
48  array = std::move(arr);
49 
50  for(std::size_t i = 0; i < pixmaps.size(); i++)
51  {
52  if(i % 2)
53  off_images.emplace_back(score::get_pixmap(pixmaps[i]));
54  else
55  on_images.emplace_back(score::get_pixmap(pixmaps[i]));
56  }
57  setupDefaultColumns(array.size());
58  }
59 
60  void setupDefaultColumns(int N);
61 
62  QGraphicsPixmapEnum(QGraphicsItem* parent);
63 
64  void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
65  override;
66 };
67 }
Definition: QGraphicsEnum.hpp:17
Definition: QGraphicsPixmapEnum.hpp:17
Base toolkit upon which the software is built.
Definition: Application.cpp:90