Destructively modifies one color, blending in a given fraction of an overlay color.
304{
305 if( amountOfOverlay == 0) {
306 return existing;
307 }
308
309 if( amountOfOverlay == 255) {
310 existing = overlay;
311 return existing;
312 }
313
314#if 0
315
316 fract8 amountOfKeep = 255 - amountOfOverlay;
317
324
326#else
327
328 existing.red =
blend8( existing.red, overlay.red, amountOfOverlay);
329 existing.green =
blend8( existing.green, overlay.green, amountOfOverlay);
330 existing.blue =
blend8( existing.blue, overlay.blue, amountOfOverlay);
331#endif
332
333 return existing;
334}
uint8_t fract8
ANSI: unsigned short _Fract.
LIB8STATIC uint8_t blend8(uint8_t a, uint8_t b, uint8_t amountOfB)
Blend a variable proportion (0-255) of one byte to another.
LIB8STATIC_ALWAYS_INLINE void cleanup_R1()
Clean up the r1 register after a series of *LEAVING_R1_DIRTY calls.
LIB8STATIC_ALWAYS_INLINE uint8_t scale8_LEAVING_R1_DIRTY(uint8_t i, fract8 scale)
This version of scale8() does not clean up the R1 register on AVR.