hyperion.ng
EffectEngine.h
1 #pragma once
2 
3 // Qt includes
4 #include <QObject>
5 #include <QString>
6 #include <QJsonObject>
7 #include <QJsonValue>
8 #include <QJsonDocument>
9 #include <QJsonArray>
10 
11 // Hyperion includes
12 #include <hyperion/Hyperion.h>
13 
14 // Effect engine includes
15 #include <effectengine/EffectDefinition.h>
16 #include <effectengine/ActiveEffectDefinition.h>
17 #include <effectengine/EffectSchema.h>
18 #include <utils/Logger.h>
19 
20 // pre-declaration
21 class Effect;
22 class EffectFileHandler;
23 
24 class EffectEngine : public QObject
25 {
26  Q_OBJECT
27 
28 public:
30  virtual ~EffectEngine();
31 
32  const std::list<EffectDefinition> & getEffects() const { return _availableEffects; };
33 
34  const std::list<ActiveEffectDefinition> & getActiveEffects();
35 
40  const std::list<EffectSchema> & getEffectSchemas();
41 
48  bool saveEffect(const QJsonObject& obj, QString& resultMsg);
49 
56  bool deleteEffect(const QString& effectName, QString& resultMsg);
57 
61  void cacheRunningEffects();
62 
66  void startCachedEffects();
67 
68 signals:
70  void effectListUpdated();
71 
72 public slots:
74  int runEffect(const QString &effectName, int priority, int timeout = -1, const QString &origin="System");
75 
77  int runEffect(const QString &effectName
78  , const QJsonObject &args
79  , int priority
80  , int timeout = -1
81  , const QString &pythonScript = ""
82  , const QString &origin = "System"
83  , unsigned smoothCfg=0
84  , const QString &imageData = ""
85  );
86 
88  void channelCleared(int priority);
89 
91  void allChannelsCleared();
92 
93 private slots:
94  void effectFinished();
95 
99  void handleUpdatedEffectList();
100 
101 private:
103  int runEffectScript(const QString &script
104  ,const QString &name
105  , const QJsonObject &args
106  , int priority
107  , int timeout = -1
108  , const QString &origin="System"
109  , unsigned smoothCfg=0
110  , const QString &imageData = ""
111  );
112 
113 private:
114  Hyperion * _hyperion;
115 
116  std::list<EffectDefinition> _availableEffects;
117 
118  std::list<Effect *> _activeEffects;
119 
120  std::list<ActiveEffectDefinition> _availableActiveEffects;
121 
122  std::list<ActiveEffectDefinition> _cachedActiveEffects;
123 
124  Logger * _log;
125 
126  // The global effect file handler
127  EffectFileHandler* _effectFileHandler;
128 };
Definition: Logger.h:32
void cacheRunningEffects()
Get all init data of the running effects and stop them.
Definition: EffectEngine.cpp:83
The main class of Hyperion.
Definition: Hyperion.h:57
Definition: EffectFileHandler.h:9
Provide utility methods for Hyperion class.
Definition: BlackBorderDetector.h:7
void startCachedEffects()
Start all cached effects, origin and smooth cfg is default.
Definition: EffectEngine.cpp:100
bool saveEffect(const QJsonObject &obj, QString &resultMsg)
Save an effect with EffectFileHandler.
Definition: EffectEngine.cpp:50
void allChannelsCleared()
Clear all effects.
Definition: EffectEngine.cpp:195
void effectListUpdated()
Emit when the effect list has been updated.
Definition: EffectEngine.h:24
const std::list< EffectSchema > & getEffectSchemas()
Get available schemas from EffectFileHandler.
Definition: EffectEngine.cpp:78
void channelCleared(int priority)
Clear any effect running on the provided channel.
Definition: EffectEngine.cpp:184
bool deleteEffect(const QString &effectName, QString &resultMsg)
Delete an effect by name.
Definition: EffectEngine.cpp:55
int runEffect(const QString &effectName, int priority, int timeout=-1, const QString &origin="System")
Run the specified effect on the given priority channel and optionally specify a timeout.
Definition: EffectEngine.cpp:133
Definition: Effect.h:24