1
0
Fork 0
forked from wry/wry
wry/src/it/test_ifs/test_shm_buffer.rs
2024-09-06 11:08:22 +02:00

38 lines
803 B
Rust

use {
crate::{
it::{test_ifs::test_buffer::TestBuffer, test_mem::TestMem},
theme::Color,
utils::windows::WindowsExt,
},
std::{
cell::Cell,
ops::{Deref, Range},
rc::Rc,
},
};
pub struct TestShmBuffer {
pub buffer: Rc<TestBuffer>,
pub range: Range<usize>,
pub mem: Rc<TestMem>,
}
impl TestShmBuffer {
pub fn fill(&self, color: Color) {
let [cr, cg, cb, ca] = color.to_rgba_premultiplied();
for [b, g, r, a] in self.deref().array_chunks_ext::<4>() {
r.set(cr);
g.set(cg);
b.set(cb);
a.set(ca);
}
}
}
impl Deref for TestShmBuffer {
type Target = [Cell<u8>];
fn deref(&self) -> &Self::Target {
&self.mem[self.range.clone()]
}
}