Load palette
This commit is contained in:
parent
f68ef48296
commit
fb1ecf17c5
|
@ -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())
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue