You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was testing different animations and found that I needed to convert a RGB color to make a fade animation of it by changing the brightness.
There is no function to do this and because most code samples use hue as a float or unit8_t I couldn't copy-paste the solution.
I came up with this function:
void RgbToHsv(uint8_t r, uint8_t g, uint8_t b, uint16_t &h, uint8_t &s, uint8_t &v)
{
uint8_t rgbMin, rgbMax;
rgbMin = r < g ? (r < b ? r : b) : (g < b ? g : b);
rgbMax = r > g ? (r > b ? r : b) : (g > b ? g : b);
v = rgbMax;
if (v == 0)
{
h = 0;
s = 0;
return;
}
s = 255 * static_cast<uint16_t>(rgbMax - rgbMin) / v;
if (s == 0)
{
h = 0;
return;
}
if (rgbMax == r)
h = 65535 / 3 * 0 + 65535 / 6 * static_cast<int>(g - b) / (rgbMax - rgbMin);
else if (rgbMax == g)
h = 65535 / 3 * 1 + 65535 / 6 * static_cast<int>(b - r) / (rgbMax - rgbMin);
else
h = 65535 / 3 * 2 + 65535 / 6 * static_cast<int>(r - g) / (rgbMax - rgbMin);
}
Should I make a PR for this or just leave it here for anyone else that may need this functionality?
The text was updated successfully, but these errors were encountered:
I was testing different animations and found that I needed to convert a RGB color to make a fade animation of it by changing the brightness.
There is no function to do this and because most code samples use hue as a
float
orunit8_t
I couldn't copy-paste the solution.I came up with this function:
Should I make a PR for this or just leave it here for anyone else that may need this functionality?
The text was updated successfully, but these errors were encountered: