-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathledUtility.h
33 lines (27 loc) · 1023 Bytes
/
ledUtility.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Utility Functions
uint8_t getR(uint32_t color) { return (uint8_t)(color >> 16); }
uint8_t getG(uint32_t color) { return (uint8_t)(color >> 8); }
uint8_t getB(uint32_t color) { return (uint8_t)color; }
uint8_t lerpChannel(uint8_t value1, uint8_t value2, float scalar) {
return value1 + (scalar * (value2 - value1));
}
uint32_t lerpColor(
uint32_t color1, uint32_t color2, float scalar) {
return strip.Color(
lerpChannel(getR(color1), getR(color2), scalar),
lerpChannel(getG(color1), getG(color2), scalar),
lerpChannel(getB(color1), getB(color2), scalar)
);
}
uint32_t lerpColorMirror(uint32_t color1, uint32_t color2, float scalar, bool reverse = false) {
if (scalar < 0.5) {
scalar = scalar * 2;
} else {
scalar = 1 - ((scalar - 0.5) * 2);
}
return strip.Color(
lerpChannel(getR(color1), getR(color2), scalar),
lerpChannel(getG(color1), getG(color2), scalar),
lerpChannel(getB(color1), getB(color2), scalar)
);
}