From fb1ecf17c5c7406f884a60b3b21462f0c068b529 Mon Sep 17 00:00:00 2001 From: Jaby Date: Mon, 17 Feb 2025 11:29:47 +0100 Subject: [PATCH] Load palette --- src/Tools/tim_tool/src/logic/tim.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Tools/tim_tool/src/logic/tim.rs b/src/Tools/tim_tool/src/logic/tim.rs index 025eed4e..571953a7 100644 --- a/src/Tools/tim_tool/src/logic/tim.rs +++ b/src/Tools/tim_tool/src/logic/tim.rs @@ -71,6 +71,22 @@ impl TIMInfo { } pub fn get_slint_images(&self) -> (slint::Image, Option) { - (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, 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()) } } \ No newline at end of file