(foreground: Color, background: Color, num: u16, den: u16)
| 20 | } |
| 21 | |
| 22 | fn blend(foreground: Color, background: Color, num: u16, den: u16) -> Color { |
| 23 | if den == 0 || num >= den { |
| 24 | return foreground; |
| 25 | } |
| 26 | |
| 27 | match (foreground, background) { |
| 28 | (Color::Rgb(fr, fg, fb), Color::Rgb(br, bg, bb)) => { |
| 29 | let inv = den - num; |
| 30 | let r = ((u16::from(fr) * inv) + (u16::from(br) * num)) / den; |
| 31 | let g = ((u16::from(fg) * inv) + (u16::from(bg) * num)) / den; |
| 32 | let b = ((u16::from(fb) * inv) + (u16::from(bb) * num)) / den; |
| 33 | Color::Rgb(r as u8, g as u8, b as u8) |
| 34 | } |
| 35 | _ => foreground, |
| 36 | } |
| 37 | } |
no outgoing calls
no test coverage detected