Readd rotation cases

This commit is contained in:
Surma
2019-02-15 19:25:32 +01:00
parent 1a63387408
commit fadb53f075
2 changed files with 21 additions and 9 deletions

View File

@@ -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.