#pragma once // STL includes #include #include #include /// Correction for a single color byte value /// All configuration values are unsigned int and assume the color value to be between 0 and 255 class RgbChannelAdjustment { public: /// Default constructor RgbChannelAdjustment(QString channelName=""); /// Constructor /// @param adjustR /// @param adjustG /// @param adjustB RgbChannelAdjustment(uint8_t adjustR, uint8_t adjustG, uint8_t adjustB, QString channelName=""); /// Destructor ~RgbChannelAdjustment(); /// Transform the given array value /// @param input The input color bytes void apply(uint8_t input, uint8_t & red, uint8_t & green, uint8_t & blue); /// setAdjustment RGB /// @param adjustR /// @param adjustG /// @param adjustB void setAdjustment(uint8_t adjustR, uint8_t adjustG, uint8_t adjustB); /// @return The current adjustR value uint8_t getAdjustmentR() const; /// @return The current adjustG value uint8_t getAdjustmentG() const; /// @return The current adjustB value uint8_t getAdjustmentB() const; private: /// color channels enum ColorChannel { RED=0,GREEN=1, BLUE=2 }; /// (re)-initilize the color mapping void initializeMapping(); /// The adjustment of RGB channel uint8_t _adjust[3]; /// The mapping from input color to output color uint8_t _mapping[3][256]; /// Name of this channel, usefull for debug messages QString _channelName; /// Logger instance Logger * _log; };