- for i in 0..4 {
- let off = (i & 1) * 2 + (i & 2) * dstride;
- let cur_flg = (bstate.clr8_flags >> (i * 4)) & 0xF;
- dst[off] = clr8[i][( !cur_flg & 1) as usize];
- dst[off + 1] = clr8[i][((!cur_flg >> 1) & 1) as usize];
- dst[off + dstride] = clr8[i][((!cur_flg >> 2) & 1) as usize];
- dst[off + 1 + dstride] = clr8[i][((!cur_flg >> 3) & 1) as usize];
+ let mut clr8_flags = bstate.clr8_flags;
+ for (j, line) in dst.chunks_mut(dstride).take(4).enumerate() {
+ for (i, el) in line.iter_mut().take(4).enumerate() {
+ let blk_no = (i >> 1) + (j & 2);
+ *el = clr8[blk_no][(!clr8_flags & 1) as usize];
+ clr8_flags >>= 1;
+ }