core: graphics: use saturating_add for copying images

High-level language skill issue :P
This commit is contained in:
Richard Acayan 2024-07-19 17:10:28 -04:00
parent c1c92c4d5e
commit 9ec712bb69

View file

@ -16,7 +16,6 @@ use core::rgb::alt::BGR;
use core::rgb::alt::BGRA; use core::rgb::alt::BGRA;
use core::xkeysym::Keysym; use core::xkeysym::Keysym;
use std::collections::HashMap; use std::collections::HashMap;
use std::convert::TryInto;
use std::fs::File; use std::fs::File;
use std::io::Read; use std::io::Read;
use std::iter; use std::iter;
@ -26,9 +25,9 @@ fn convert_gray_to_bgrx(mut dest: ImgRefMut<BGRA<u8>>, src: ImgRef<u8>, fg_color
{ {
for (dest, src) in iter::zip(dest.rows_mut(), src.rows()) { for (dest, src) in iter::zip(dest.rows_mut(), src.rows()) {
for (dest, src) in iter::zip(dest, src) { for (dest, src) in iter::zip(dest, src) {
dest.r = ((dest.r as f32 + *src as f32 * fg_color.r) as u16).try_into().unwrap_or(255); dest.r = dest.r.saturating_add((*src as f32 * fg_color.r) as u8);
dest.g = ((dest.g as f32 + *src as f32 * fg_color.g) as u16).try_into().unwrap_or(255); dest.g = dest.g.saturating_add((*src as f32 * fg_color.g) as u8);
dest.b = ((dest.b as f32 + *src as f32 * fg_color.b) as u16).try_into().unwrap_or(255); dest.b = dest.b.saturating_add((*src as f32 * fg_color.b) as u8);
} }
} }
} }
@ -36,7 +35,7 @@ fn convert_gray_to_bgrx(mut dest: ImgRefMut<BGRA<u8>>, src: ImgRef<u8>, fg_color
fn copy_image(mut dest: ImgRefMut<u8>, src: ImgRef<u8>) fn copy_image(mut dest: ImgRefMut<u8>, src: ImgRef<u8>)
{ {
for (dest, src) in iter::zip(dest.pixels_mut(), src.pixels()) { for (dest, src) in iter::zip(dest.pixels_mut(), src.pixels()) {
*dest = (src as u16 + *dest as u16).try_into().unwrap_or(255); *dest = src.saturating_add(*dest);
} }
} }