renderbug: first implementation of surface-based rendering

This commit is contained in:
2024-10-27 11:19:26 +01:00
parent ea5232e048
commit 4432ba7ad0
6 changed files with 380 additions and 44 deletions

View File

@ -1,23 +1,23 @@
use embedded_graphics::pixelcolor::RgbColor;
pub fn colorToMW(color : impl RgbColor) -> u32 {
const gRed_mW : u32 = 16 * 5; //< 16mA @ 5v = 80mW
const gGreen_mW : u32 = 11 * 5; //< 11mA @ 5v = 55mW
const gBlue_mW : u32 = 15 * 5; //< 15mA @ 5v = 75mW
const gDark_mW : u32 = 1 * 5; //< 1mA @ 5v = 5mW
pub fn color_to_mw<T: RgbColor>(color : &T) -> u32 {
const RED_MW : u32 = 16 * 5; //< 16mA @ 5v = 80mW
const GREEN_MW : u32 = 11 * 5; //< 11mA @ 5v = 55mW
const BLUE_MW : u32 = 15 * 5; //< 15mA @ 5v = 75mW
const DARK_MW : u32 = 1 * 5; //< 1mA @ 5v = 5mW
let redMW = (color.r() as u32 * gRed_mW).wrapping_shr(8);
let greenMW = (color.g() as u32 * gGreen_mW).wrapping_shr(8);
let blueMW = (color.b() as u32 * gBlue_mW).wrapping_shr(8);
let red = (color.r() as u32 * RED_MW).wrapping_shr(8);
let green = (color.g() as u32 * GREEN_MW).wrapping_shr(8);
let blue = (color.b() as u32 * BLUE_MW).wrapping_shr(8);
return redMW + greenMW + blueMW + gDark_mW;
return red + green + blue + DARK_MW;
}
pub fn brightnessForMW(totalMW : u32, target : u8, maxPower: u32) -> u8 {
pub fn brightness_for_mw(total_mw : u32, target : u8, max_power: u32) -> u8 {
let target32 = target as u32;
let requestedMW = (totalMW * target32) / 256;
if requestedMW > maxPower {
return ((target32 * maxPower) / requestedMW).try_into().unwrap();
let requested_mw = (total_mw * target32) / 256;
if requested_mw > max_power {
return ((target32 * max_power) / requested_mw).try_into().unwrap();
}
return target;
}