mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
adfe2a4b23
* implement effects included in hyperiond binary * cleanup * remove install of effects dir. People who wants to develop effects has to copy them from github effect params for initial effects can be changed in config permanently and other effect params can be changed via json (currently only temporarily) * fix schema of fadecandy webui fix display of specific led options * add leddevice write support * cleanup * webui: tune hue code * when use json effect definition from putsiede hyperiond but want to use py script from inside hyperiond use ad a : e.g. fade.py needs a fade.py near the json file, but :fade.py is taken from resource inside hyperiond * add ability to di * add abiloty to diable effcts via hyperion config * use effect name instead of script in active effects and prio register * finally solve open file handle during effect is playing. Now script is read before, then file closed and then t is run by python * fix some webui things - led config tabs - inital loading screen optimize qrc file generation fix compile warning in hyperion.cpp * cleanup * more cleanup
69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
#pragma once
|
|
|
|
// Qt includes
|
|
#include <QObject>
|
|
#include <QString>
|
|
|
|
// Json includes
|
|
#include <json/value.h>
|
|
|
|
// Hyperion includes
|
|
#include <hyperion/Hyperion.h>
|
|
|
|
// Effect engine includes
|
|
#include <effectengine/EffectDefinition.h>
|
|
#include <effectengine/ActiveEffectDefinition.h>
|
|
#include <utils/Logger.h>
|
|
|
|
// pre-declarioation
|
|
class Effect;
|
|
typedef struct _ts PyThreadState;
|
|
|
|
class EffectEngine : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
EffectEngine(Hyperion * hyperion, const Json::Value & jsonEffectConfig);
|
|
virtual ~EffectEngine();
|
|
|
|
const std::list<EffectDefinition> & getEffects() const;
|
|
|
|
const std::list<ActiveEffectDefinition> & getActiveEffects();
|
|
|
|
static bool loadEffectDefinition(const QString & path, const QString & effectConfigFile, EffectDefinition &effectDefinition);
|
|
|
|
public slots:
|
|
/// Run the specified effect on the given priority channel and optionally specify a timeout
|
|
int runEffect(const std::string &effectName, int priority, int timeout = -1);
|
|
|
|
/// Run the specified effect on the given priority channel and optionally specify a timeout
|
|
int runEffect(const std::string &effectName, const Json::Value & args, int priority, int timeout = -1);
|
|
|
|
/// Clear any effect running on the provided channel
|
|
void channelCleared(int priority);
|
|
|
|
/// Clear all effects
|
|
void allChannelsCleared();
|
|
|
|
private slots:
|
|
void effectFinished(Effect * effect);
|
|
|
|
private:
|
|
/// Run the specified effect on the given priority channel and optionally specify a timeout
|
|
int runEffectScript(const std::string &script, const std::string &name, const Json::Value & args, int priority, int timeout = -1);
|
|
|
|
private:
|
|
Hyperion * _hyperion;
|
|
|
|
std::list<EffectDefinition> _availableEffects;
|
|
|
|
std::list<Effect *> _activeEffects;
|
|
|
|
std::list<ActiveEffectDefinition> _availableActiveEffects;
|
|
|
|
PyThreadState * _mainThreadState;
|
|
|
|
Logger * _log;
|
|
};
|