#pragma once // STL includes #include // Utils includes #include // Hyperion includes #include /// /// The LedColorTransform is responsible for performing color transformation from 'raw' colors /// received as input to colors mapped to match the color-properties of the leds. /// class MultiColorTransform { public: MultiColorTransform(const unsigned ledCnt); ~MultiColorTransform(); /** * Adds a new ColorTransform to this MultiColorTransform * * @param transform The new ColorTransform (ownership is transfered) */ void addTransform(ColorTransform * transform); void setTransformForLed(const std::string& id, const unsigned startLed, const unsigned endLed); bool verifyTransforms() const; /// /// Returns the identifier of all the unique ColorTransform /// /// @return The list with unique id's of the ColorTransforms const std::vector & getTransformIds(); /// /// Returns the pointer to the ColorTransform with the given id /// /// @param id The identifier of the ColorTransform /// /// @return The ColorTransform with the given id (or nullptr if it does not exist) /// ColorTransform* getTransform(const std::string& id); /// /// Performs the color transoformation from raw-color to led-color /// /// @param rawColors The list with raw colors /// /// @return The list with led-colors /// std::vector applyTransform(const std::vector& rawColors); private: /// List with transform ids std::vector _transformIds; /// List with unique ColorTransforms std::vector _transform; /// List with a pointer to the ColorTransform for each individual led std::vector _ledTransforms; };