mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
7773a82cb4
Former-commit-id: 003e07c72d2244f2ffb6f4c4cb2b3b691ecaaad7
67 lines
1.6 KiB
C++
67 lines
1.6 KiB
C++
#pragma once
|
|
|
|
// STL includes
|
|
#include <cstdint>
|
|
|
|
/// 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 RgbChannelCorrection
|
|
{
|
|
public:
|
|
/// Default constructor
|
|
RgbChannelCorrection();
|
|
|
|
/// Constructor
|
|
/// @param correctionR
|
|
/// @param correctionG
|
|
/// @param correctionB
|
|
|
|
RgbChannelCorrection(int correctionR, int correctionG, int correctionB);
|
|
|
|
/// Destructor
|
|
~RgbChannelCorrection();
|
|
|
|
/// @return The current correctionR value
|
|
uint8_t getcorrectionR() const;
|
|
|
|
/// @param threshold New correctionR value
|
|
void setcorrectionR(uint8_t correctionR);
|
|
|
|
/// @return The current correctionG value
|
|
uint8_t getcorrectionG() const;
|
|
|
|
/// @param gamma New correctionG value
|
|
void setcorrectionG(uint8_t correctionG);
|
|
|
|
/// @return The current correctionB value
|
|
uint8_t getcorrectionB() const;
|
|
|
|
/// @param blacklevel New correctionB value
|
|
void setcorrectionB(uint8_t correctionB);
|
|
|
|
/// Transform the given array value
|
|
/// @param input The input color bytes
|
|
/// @return The corrected byte value
|
|
uint8_t correctionR(uint8_t inputR) const;
|
|
uint8_t correctionG(uint8_t inputG) const;
|
|
uint8_t correctionB(uint8_t inputB) const;
|
|
|
|
|
|
private:
|
|
/// (re)-initilize the color mapping
|
|
void initializeMapping();
|
|
|
|
private:
|
|
/// The correction of R channel
|
|
int _correctionR;
|
|
/// The correction of G channel
|
|
int _correctionG;
|
|
/// The correction of B channel
|
|
int _correctionB;
|
|
|
|
/// The mapping from input color to output color
|
|
int _mappingR[256];
|
|
int _mappingG[256];
|
|
int _mappingB[256];
|
|
};
|