hyperion.ng
Effect.h
1 #pragma once
2 
3 // Python includes
4 // collide of qt slots macro
5 #undef slots
6 #include "Python.h"
7 #define slots
8 
9 // Qt includes
10 #include <QThread>
11 #include <QJsonObject>
12 #include <QSize>
13 #include <QImage>
14 #include <QPainter>
15 #include <QMap>
16 
17 // Hyperion includes
18 #include <utils/Components.h>
19 #include <utils/Image.h>
20 
21 class Hyperion;
22 class Logger;
23 
24 class Effect : public QThread
25 {
26  Q_OBJECT
27 
28 public:
29  friend class EffectModule;
30 
32  , int priority
33  , int timeout
34  , const QString &script
35  , const QString &name
36  , const QJsonObject &args = QJsonObject()
37  , const QString &imageData = ""
38  );
39  virtual ~Effect();
40 
41  virtual void run();
42 
43  int getPriority() const { return _priority; };
44 
49  void setInteruptionFlag() { _interupt = true; };
50 
55  bool hasInteruptionFlag() { return _interupt; };
56 
57  QString getScript() const { return _script; }
58  QString getName() const { return _name; }
59 
60  int getTimeout() const {return _timeout; }
61 
62  QJsonObject getArgs() const { return _args; }
63 
64 signals:
65  void setInput(const int priority, const std::vector<ColorRgb> &ledColors, const int timeout_ms, const bool &clearEffect);
66  void setInputImage(const int priority, const Image<ColorRgb> &image, const int timeout_ms, const bool &clearEffect);
67 
68 private:
69 
70  void addImage();
71 
72  Hyperion *_hyperion;
73 
74  const int _priority;
75 
76  const int _timeout;
77 
78  const QString _script;
79  const QString _name;
80 
81  const QJsonObject _args;
82  const QString _imageData;
83 
84  int64_t _endTime;
85 
87  QVector<ColorRgb> _colors;
88 
89  Logger *_log;
90  // Reflects whenever this effects should interupt (timeout or external request)
91  bool _interupt = false;
92 
93  QSize _imageSize;
94  QImage _image;
95  QPainter *_painter;
96  QVector<QImage> _imageStack;
97 };
Definition: Logger.h:32
Definition: EffectModule.h:11
bool hasInteruptionFlag()
Check if the interuption flag has been set.
Definition: Effect.h:55
The main class of Hyperion.
Definition: Hyperion.h:57
Provide utility methods for Hyperion class.
Definition: BlackBorderDetector.h:7
void setInteruptionFlag()
Set manual interuption to true, Note: DO NOT USE QThread::interuption!
Definition: Effect.h:49
Definition: Effect.h:24