mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 09:39:15 +00:00
Readd rotation cases
This commit is contained in:
@@ -23,7 +23,7 @@ impl<T> HardUnwrap<T> for Option<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
fn rotate(width: usize, height: usize, _rotate: usize) {
|
fn rotate(width: usize, height: usize, rotate: usize) {
|
||||||
let num_pixels = width * height;
|
let num_pixels = width * height;
|
||||||
let in_b: &mut [u32];
|
let in_b: &mut [u32];
|
||||||
let out_b: &mut [u32];
|
let out_b: &mut [u32];
|
||||||
@@ -32,14 +32,26 @@ fn rotate(width: usize, height: usize, _rotate: usize) {
|
|||||||
out_b = from_raw_parts_mut::<u32>((num_pixels * 4 + 8) as *mut u32, num_pixels);
|
out_b = from_raw_parts_mut::<u32>((num_pixels * 4 + 8) as *mut u32, num_pixels);
|
||||||
}
|
}
|
||||||
|
|
||||||
let new_width = height;
|
match rotate {
|
||||||
let _new_height = width;
|
0 => {
|
||||||
for y in 0..height {
|
for i in 0..num_pixels {
|
||||||
for x in 0..width {
|
*out_b.get_mut(i).unwrap_hard() = *in_b.get(i).unwrap_hard();
|
||||||
let new_x = (new_width - 1) - y;
|
}
|
||||||
let new_y = x;
|
|
||||||
*out_b.get_mut(new_y * new_width + new_x).unwrap_hard() =
|
|
||||||
*in_b.get(y * width + x).unwrap_hard();
|
|
||||||
}
|
}
|
||||||
|
90 => {
|
||||||
|
let new_width = height;
|
||||||
|
let _new_height = width;
|
||||||
|
for y in 0..height {
|
||||||
|
for x in 0..width {
|
||||||
|
let new_x = (new_width - 1) - y;
|
||||||
|
let new_y = x;
|
||||||
|
*out_b.get_mut(new_y * new_width + new_x).unwrap_hard() =
|
||||||
|
*in_b.get(y * width + x).unwrap_hard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
180 => std::process::abort(),
|
||||||
|
270 => std::process::abort(),
|
||||||
|
_ => std::process::abort(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user