hyperion.ng/include/hyperion/Hyperion.h

84 lines
1.6 KiB
C
Raw Normal View History

#pragma once
// stl includes
#include <list>
// QT includes
#include <QObject>
#include <QTimer>
// hyperion-utils includes
#include <utils/RgbImage.h>
// Hyperion includes
#include <hyperion/LedString.h>
#include <hyperion/LedDevice.h>
#include <hyperion/PriorityMuxer.h>
// Forward class declaration
class HsvTransform;
class ColorTransform;
class Hyperion : public QObject
{
Q_OBJECT
public:
typedef PriorityMuxer::InputInfo InputInfo;
enum Color
{
RED, GREEN, BLUE, INVALID
};
enum Transform
{
SATURATION_GAIN, VALUE_GAIN, THRESHOLD, GAMMA, BLACKLEVEL, WHITELEVEL
};
static LedString createLedString(const Json::Value& ledsConfig);
static Json::Value loadConfig(const std::string& configFile);
Hyperion(const std::string& configFile);
Hyperion(const Json::Value& jsonConfig);
~Hyperion();
2013-08-14 10:54:49 +02:00
unsigned getLedCount() const;
2013-08-18 13:33:56 +02:00
void setColor(int priority, RgbColor &ledColor, const int timeout_ms);
void setColors(int priority, std::vector<RgbColor> &ledColors, const int timeout_ms);
void setTransform(Transform transform, Color color, double value);
2013-08-18 13:33:56 +02:00
void clear(int priority);
void clearall();
double getTransform(Transform transform, Color color) const;
QList<int> getActivePriorities() const;
const InputInfo& getPriorityInfo(const int priority) const;
private slots:
void update();
private:
void applyTransform(std::vector<RgbColor>& colors) const;
2013-08-18 13:33:56 +02:00
LedString _ledString;
2013-08-18 13:33:56 +02:00
PriorityMuxer _muxer;
HsvTransform * _hsvTransform;
ColorTransform * _redTransform;
ColorTransform * _greenTransform;
ColorTransform * _blueTransform;
2013-08-18 13:33:56 +02:00
LedDevice* _device;
QTimer _timer;
};