#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 ledColors The list with raw colors /// void applyTransform(std::vector& ledColors); 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; };