#pragma once // stl includes #include // QT includes #include #include // hyperion-utils includes #include // Hyperion includes #include #include #include // Forward class declaration namespace hyperion { class ColorTransform; } class Hyperion : public QObject { Q_OBJECT public: typedef PriorityMuxer::InputInfo InputInfo; enum Color { RED, GREEN, BLUE }; enum Transform { THRESHOLD, GAMMA, BLACKLEVEL, WHITELEVEL }; static LedString createLedString(const Json::Value& ledsConfig); Hyperion(const Json::Value& jsonConfig); ~Hyperion(); unsigned getLedCount() const; void setColor(int priority, RgbColor &ledColor, const int timeout_ms); void setColors(int priority, std::vector &ledColors, const int timeout_ms); void setTransform(Transform transform, Color color, double value); void clear(int priority); void clearall(); double getTransform(Transform transform, Color color) const; QList getActivePriorities() const; const InputInfo& getPriorityInfo(const int priority) const; private slots: void update(); private: void applyTransform(std::vector& colors) const; LedString _ledString; PriorityMuxer _muxer; hyperion::ColorTransform* _redTransform; hyperion::ColorTransform* _greenTransform; hyperion::ColorTransform* _blueTransform; LedDevice* _device; QTimer _timer; };