From d205ae206fc8acac8cfc2b3e43e257895f1e86df Mon Sep 17 00:00:00 2001 From: Surma Date: Fri, 15 Feb 2019 19:47:16 +0100 Subject: [PATCH] Implement 180 and 270 --- codecs/rotate/rotate.rs | 23 +++++++++++++++++++++-- codecs/rotate/rotate.wasm | Bin 738 -> 1312 bytes 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/codecs/rotate/rotate.rs b/codecs/rotate/rotate.rs index 73317eea..5db4d10b 100644 --- a/codecs/rotate/rotate.rs +++ b/codecs/rotate/rotate.rs @@ -56,8 +56,27 @@ fn rotate(width: usize, height: usize, rotate: usize) { } } } - 180 => std::process::abort(), - 270 => std::process::abort(), + 180 => { + for i in 0..num_pixels { + *out_b.get_mut(num_pixels - 1 - i).unwrap_hard() = *in_b.get(i).unwrap_hard(); + } + } + 270 => { + let new_width = height; + let new_height = width; + for y_start in (0..height).step_by(TILE_SIZE) { + for x_start in (0..width).step_by(TILE_SIZE) { + for y in y_start..(y_start + TILE_SIZE).min(height) { + for x in x_start..(x_start + TILE_SIZE).min(width) { + let new_x = y; + let new_y = new_height - 1 - x; + *out_b.get_mut(new_y * new_width + new_x).unwrap_hard() = + *in_b.get(y * width + x).unwrap_hard(); + } + } + } + } + } _ => std::process::abort(), } } diff --git a/codecs/rotate/rotate.wasm b/codecs/rotate/rotate.wasm index 9977d58f8286fad73675f7ac6afcdc1647331ae4..6774a3b45b4f5fd9de50f316ff7052178809a570 100755 GIT binary patch literal 1312 zcmb`GL2lbH5JiWiC|jmw(~jk&@Mfr0S6z17Xki3y5#$Jtix?u=jdtrN3w&)Xm*7lQX+?cKIf6NxW86Jq&oVN=+abGMJ6(&D6;BSDP@f!AHOh_ zDz@7Pauq%8Td$({dU<_w_gRyh&p#{|xAXUl`=wEx`TT0JS*A++n-c3(v6-f(pkRx3(B_o&G_@Sn4eOVhUTcIE zQ5iHx(nV|wRpyq>ETwMb9AKMPV}I*G z^QjAT3d0XnvYp^lvzkppmvwMm<=8Po3<6Xcy7*~AA%VDelaMkr*P(~u>OSUC!EkM1ApS5h%k>0)0MGr_}I zdI32E$;#Rh!O;=-cv!-O03LB4mWN2Q&UG0wu+W$)!hPsAfDCP-8w3 zswbSv*-_5P=B(o`$}cN*@lDG~B3aYlp>B#>17C$iP#<9S4Q4Nxji8c>EB61w?4|x* zLNo&QnCs9dnEg69)X&%T>j_)D`Y*ovfAWQw=lH@aunt!>(h<(VBkm0B_k11d?GO11 zTVZ_2w=GQD4d1q~M)PA(~Gpe literal 738 zcmY+B&2G~`6ov2HnIw)UcATHafo$%0#foLObQUd&0QC`EqeenQLQCTf5|SexfT!sL z^fh41o@d}p2n!T>{&Ma)-`t^Qzf(k{QobR&(OuV(HkuTfp1M~`^|Yd*|4etv9}Z7s zJNkbfyfppYW_S1Sg~`_ShfQ-|zi;*%tZe7e=#f4FO#c7vSXMnn0_s6{7A zXj^H|txtk8eDU`u?0?YPj4=PC*BJ{z;d-Lt)EDEw1~>5J7+<1~MUbk`mncd6t56w9 z))i+)jHqi&3dc_rgjZN%yI#4W7?+Hcl_W|u1S+_p{U?P5bZ=HJ6?kqPbiUiWkqofl z_M^*?o#PuvIKtXUDY#6D^L{}65}DOfChLr>g$o7bO{Evy zRA#=5Ec5tKb6G^?LQ*Kv2^%lRR)%PQtYo~e#>=6XrB56K3h_GfU=ThraAW||2_;&V dqL1NYnD|F^g$uI(&R5TE@$GOp5LrVQ{s3;QY^DGJ