Use structs with Drawable trait instead of methods on shm_pool

This commit is contained in:
2025-05-13 21:54:59 -07:00
parent 7dcf3d80bb
commit 9d0b9b97b5
5 changed files with 111 additions and 85 deletions

31
src/graphics/drawable.rs Normal file
View File

@@ -0,0 +1,31 @@
use crate::wayland::shm::ShmPool;
pub fn color_blend(col1: u32, col2: u32, diff: f64) -> u32 {
// TODO: Account for alpha channel
let r1 = (col1 & 0x00ff0000) >> 16;
let g1 = (col1 & 0x0000ff00) >> 8;
let b1 = col1 & 0x000000ff;
let r2 = (col2 & 0x00ff0000) >> 16;
let g2 = (col2 & 0x0000ff00) >> 8;
let b2 = col2 & 0x000000ff;
let r3 = if r1 < r2 {
r1 + ((r2 - r1) as f64 * diff) as u32
} else {
r1 - ((r1 - r2) as f64 * diff) as u32
};
let g3 = if g1 < g2 {
g1 + ((g2 - g1) as f64 * diff) as u32
} else {
g1 - ((g1 - g2) as f64 * diff) as u32
};
let b3 = if b1 < b2 {
b1 + ((b2 - b1) as f64 * diff) as u32
} else {
b1 - ((b1 - b2) as f64 * diff) as u32
};
return 0xff000000 + (r3 << 16) + (g3 << 8) + b3;
}
pub trait Drawable {
fn draw(&self, shm_pool: &mut ShmPool);
}