Load palette

This commit is contained in:
Jaby 2025-02-17 11:29:47 +01:00
parent f68ef48296
commit fb1ecf17c5
1 changed files with 17 additions and 1 deletions

View File

@ -71,6 +71,22 @@ impl TIMInfo {
} }
pub fn get_slint_images(&self) -> (slint::Image, Option<slint::Image>) { pub fn get_slint_images(&self) -> (slint::Image, Option<slint::Image>) {
(slint::Image::from_rgba8_premultiplied(self.image_data.clone()), None) (slint::Image::from_rgba8_premultiplied(self.image_data.clone()), if let Some(palette) = &self.palette {
let width = if palette.len() <= 16 {16} else {256};
Some(Self::get_palette_image(palette, width, 1))
} else {
None
})
}
fn get_palette_image(palette: &Vec<Rgba8Pixel>, width: u32, height: u32) -> slint::Image {
let mut image_data = SharedPixelBuffer::new(width, height);
let dst_pixels = image_data.make_mut_slice();
for (idx, byte) in dst_pixels.iter_mut().enumerate() {
*byte = if idx < palette.len() {palette[idx]} else {Rgba8Pixel::new(0, 0, 0, 0xFF)};
}
slint::Image::from_rgba8_premultiplied(image_data.clone())
} }
} }