Merge remote-tracking branch 'origin/master' into 1804

This commit is contained in:
LordGrey
2024-12-08 20:40:38 +01:00
26 changed files with 981 additions and 551 deletions

View File

@@ -24,13 +24,13 @@ public:
friend class EffectModule;
Effect(Hyperion *hyperion
, int priority
, int timeout
, const QString &script
, const QString &name
, const QJsonObject &args = QJsonObject()
, const QString &imageData = ""
Effect(Hyperion* hyperion
, int priority
, int timeout
, const QString& script
, const QString& name
, const QJsonObject& args = QJsonObject()
, const QString& imageData = ""
);
~Effect() override;
@@ -64,20 +64,20 @@ public:
QString getScript() const { return _script; }
QString getName() const { return _name; }
int getTimeout() const {return _timeout; }
int getTimeout() const { return _timeout; }
bool isEndless() const { return _isEndless; }
QJsonObject getArgs() const { return _args; }
signals:
void setInput(int priority, const std::vector<ColorRgb> &ledColors, int timeout_ms, bool clearEffect);
void setInputImage(int priority, const Image<ColorRgb> &image, int timeout_ms, bool clearEffect);
void setInput(int priority, const std::vector<ColorRgb>& ledColors, int timeout_ms, bool clearEffect);
void setInputImage(int priority, const Image<ColorRgb>& image, int timeout_ms, bool clearEffect);
private:
void setModuleParameters();
bool setModuleParameters();
void addImage();
Hyperion *_hyperion;
Hyperion* _hyperion;
const int _priority;
@@ -95,13 +95,13 @@ private:
/// Buffer for colorData
QVector<ColorRgb> _colors;
Logger *_log;
Logger* _log;
// Reflects whenever this effects should interrupt (timeout or external request)
std::atomic<bool> _interupt {};
std::atomic<bool> _interupt{};
QSize _imageSize;
QImage _image;
QPainter *_painter;
QPainter* _painter;
QVector<QImage> _imageStack;
double _lowestUpdateIntervalInSeconds;

View File

@@ -8,22 +8,16 @@
class Effect;
class EffectModule: public QObject
class EffectModule : public QObject
{
Q_OBJECT
public:
// Python 3 module def
static struct PyModuleDef moduleDef;
// Init module
static PyObject* PyInit_hyperion();
// Register module once
static void registerHyperionExtensionModule();
// json 2 python
static PyObject * json2python(const QJsonValue & jsonData);
static PyObject* json2python(const QJsonValue& jsonData);
// Wrapper methods for Python interpreter extra buildin methods
static PyMethodDef effectMethods[];

View File

@@ -71,5 +71,7 @@ private:
quint16 _port;
const QJsonDocument _config;
int _pixelDecimation;
QVector<FlatBufferClient*> _openConnections;
};

View File

@@ -1,6 +1,6 @@
#pragma once
// OSX includes
// CoreGraphics
#include <CoreGraphics/CoreGraphics.h>
// Utils includes

View File

@@ -1,5 +1,9 @@
#pragma once
#undef slots
#include <Python.h>
#define slots Q_SLOTS
///
/// @brief Handle the PythonInit, module registers and DeInit
///
@@ -10,4 +14,8 @@ private:
PythonInit();
~PythonInit();
#if (PY_VERSION_HEX >= 0x03080000)
void handlePythonError(PyStatus status, PyConfig& config);
#endif
};

View File

@@ -9,6 +9,8 @@
#include "Python.h"
#define slots
#include <python/PythonUtils.h>
class Logger;
class PythonProgram
@@ -17,9 +19,15 @@ public:
PythonProgram(const QString & name, Logger * log);
~PythonProgram();
operator PyThreadState* ()
{
return _tstate;
}
void execute(const QByteArray &python_code);
private:
QString _name;
Logger* _log;
PyThreadState* _tstate;

View File

@@ -13,6 +13,7 @@ public:
void setHorizontalPixelDecimation(int decimator) { _horizontalDecimation = decimator; }
void setVerticalPixelDecimation(int decimator) { _verticalDecimation = decimator; }
void setPixelDecimation(int decimator) { _horizontalDecimation = decimator; _verticalDecimation = decimator;}
void setCropping(int cropLeft, int cropRight, int cropTop, int cropBottom);
void setVideoMode(VideoMode mode) { _videoMode = mode; }
void setFlipMode(FlipMode mode) { _flipMode = mode; }