Add BGI Image decode support

Fix DSC decompress
This commit is contained in:
2025-06-12 21:52:01 +08:00
parent 8bed66d4f1
commit 242d501af5
13 changed files with 395 additions and 14 deletions

View File

@@ -4,17 +4,21 @@ pub trait VecExt<T> {
}
impl<T: Copy> VecExt<T> for Vec<T> {
fn copy_overlapped(&mut self, src: usize, dst: usize, len: usize) {
let src = src.min(self.len());
let dst = dst.min(self.len());
if src < dst {
let max_count = len.min(dst - src);
for i in 0..max_count {
self[dst + i] = self[src + i];
fn copy_overlapped(&mut self, src: usize, dst: usize, mut len: usize) {
let mut src = src.min(self.len());
let mut dst = dst.min(self.len());
if dst > src {
while len > 0 {
let preceding = (dst - src).min(len);
for i in 0..preceding {
self[dst + i] = self[src + i];
}
len -= preceding;
src += preceding;
dst += preceding;
}
} else {
let max_count = len.min(src - dst);
for i in (0..max_count).rev() {
for i in 0..len {
self[dst + i] = self[src + i];
}
}