mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Color Adjustment 2.0 (#351)
* Rename test to test123 * Delete test123 * New color Ajustment Trilinear interpolation between the 8 corners of the color cube (black, red, green, blue, cyan, magenta, yellow, white) * Renaming * overloading getadjustmentX() * Renaming * Additional renaming * Added more RgbChannel * Added more colors to channelAdjustment * Added additional colors * Added additional colors * Added additional colors * Added additional color adjustments * Update MultiColorAdjustment.cpp * Fixed black adjustment * Color config in array form
This commit is contained in:
@@ -85,38 +85,54 @@ void MultiColorAdjustment::applyAdjustment(std::vector<ColorRgb>& ledColors)
|
||||
}
|
||||
ColorRgb& color = ledColors[i];
|
||||
|
||||
int RR = adjustment->_rgbRedAdjustment.adjustmentR(color.red);
|
||||
int RG = color.red > color.green ? adjustment->_rgbRedAdjustment.adjustmentG(color.red-color.green) : 0;
|
||||
int RB = color.red > color.blue ? adjustment->_rgbRedAdjustment.adjustmentB(color.red-color.blue) : 0;
|
||||
uint32_t nrng = (uint32_t) (255-color.red)*(255-color.green);
|
||||
uint32_t rng = (uint32_t) (color.red) *(255-color.green);
|
||||
uint32_t nrg = (uint32_t) (255-color.red)*(color.green);
|
||||
uint32_t rg = (uint32_t) (color.red) *(color.green);
|
||||
|
||||
int GR = color.green > color.red ? adjustment->_rgbGreenAdjustment.adjustmentR(color.green-color.red) : 0;
|
||||
int GG = adjustment->_rgbGreenAdjustment.adjustmentG(color.green);
|
||||
int GB = color.green > color.blue ? adjustment->_rgbGreenAdjustment.adjustmentB(color.green-color.blue) : 0;
|
||||
uint8_t black = nrng*(255-color.blue)/65025;
|
||||
uint8_t red = rng *(255-color.blue)/65025;
|
||||
uint8_t green = nrg *(255-color.blue)/65025;
|
||||
uint8_t blue = nrng*(color.blue) /65025;
|
||||
uint8_t cyan = nrg *(color.blue) /65025;
|
||||
uint8_t magenta = rng *(color.blue) /65025;
|
||||
uint8_t yellow = rg *(255-color.blue)/65025;
|
||||
uint8_t white = rg *(color.blue) /65025;
|
||||
|
||||
int BR = color.blue > color.red ? adjustment->_rgbBlueAdjustment.adjustmentR(color.blue-color.red) : 0;
|
||||
int BG = color.blue > color.green ? adjustment->_rgbBlueAdjustment.adjustmentG(color.blue-color.green) : 0;
|
||||
int BB = adjustment->_rgbBlueAdjustment.adjustmentB(color.blue);
|
||||
|
||||
int ledR = RR + GR + BR;
|
||||
int maxR = (int)adjustment->_rgbRedAdjustment.getAdjustmentR();
|
||||
int ledG = RG + GG + BG;
|
||||
int maxG = (int)adjustment->_rgbGreenAdjustment.getAdjustmentG();
|
||||
int ledB = RB + GB + BB;
|
||||
int maxB = (int)adjustment->_rgbBlueAdjustment.getAdjustmentB();
|
||||
uint8_t OR = adjustment->_rgbBlackAdjustment.getAdjustmentR(black);
|
||||
uint8_t OG = adjustment->_rgbBlackAdjustment.getAdjustmentG(black);
|
||||
uint8_t OB = adjustment->_rgbBlackAdjustment.getAdjustmentB(black);
|
||||
|
||||
if (ledR > maxR)
|
||||
color.red = (uint8_t)maxR;
|
||||
else
|
||||
color.red = (uint8_t)ledR;
|
||||
uint8_t RR = adjustment->_rgbRedAdjustment.getAdjustmentR(red);
|
||||
uint8_t RG = adjustment->_rgbRedAdjustment.getAdjustmentG(red);
|
||||
uint8_t RB = adjustment->_rgbRedAdjustment.getAdjustmentB(red);
|
||||
|
||||
if (ledG > maxG)
|
||||
color.green = (uint8_t)maxG;
|
||||
else
|
||||
color.green = (uint8_t)ledG;
|
||||
uint8_t GR = adjustment->_rgbGreenAdjustment.getAdjustmentR(green);
|
||||
uint8_t GG = adjustment->_rgbGreenAdjustment.getAdjustmentG(green);
|
||||
uint8_t GB = adjustment->_rgbGreenAdjustment.getAdjustmentB(green);
|
||||
|
||||
if (ledB > maxB)
|
||||
color.blue = (uint8_t)maxB;
|
||||
else
|
||||
color.blue = (uint8_t)ledB;
|
||||
uint8_t BR = adjustment->_rgbBlueAdjustment.getAdjustmentR(blue);
|
||||
uint8_t BG = adjustment->_rgbBlueAdjustment.getAdjustmentG(blue);
|
||||
uint8_t BB = adjustment->_rgbBlueAdjustment.getAdjustmentB(blue);
|
||||
|
||||
uint8_t CR = adjustment->_rgbCyanAdjustment.getAdjustmentR(cyan);
|
||||
uint8_t CG = adjustment->_rgbCyanAdjustment.getAdjustmentG(cyan);
|
||||
uint8_t CB = adjustment->_rgbCyanAdjustment.getAdjustmentB(cyan);
|
||||
|
||||
uint8_t MR = adjustment->_rgbMagentaAdjustment.getAdjustmentR(magenta);
|
||||
uint8_t MG = adjustment->_rgbMagentaAdjustment.getAdjustmentG(magenta);
|
||||
uint8_t MB = adjustment->_rgbMagentaAdjustment.getAdjustmentB(magenta);
|
||||
|
||||
uint8_t YR = adjustment->_rgbYellowAdjustment.getAdjustmentR(yellow);
|
||||
uint8_t YG = adjustment->_rgbYellowAdjustment.getAdjustmentG(yellow);
|
||||
uint8_t YB = adjustment->_rgbYellowAdjustment.getAdjustmentB(yellow);
|
||||
|
||||
uint8_t WR = adjustment->_rgbWhiteAdjustment.getAdjustmentR(white);
|
||||
uint8_t WG = adjustment->_rgbWhiteAdjustment.getAdjustmentG(white);
|
||||
uint8_t WB = adjustment->_rgbWhiteAdjustment.getAdjustmentB(white);
|
||||
|
||||
color.red = OR + RR + GR + BR + CR + MR + YR + WR;
|
||||
color.green = OG + RG + GG + BG + CG + MG + YG + WG;
|
||||
color.blue = OB + RB + GB + BB + CB + MB + YB + WB;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user