- let mut row_flags: Vec<u8> = Vec::with_capacity(height >> 3);
- let mut col_flags: Vec<u8> = Vec::with_capacity(width >> 3);
- if (frame_flags & 0x1000) != 0 {
- if (frame_flags & 0x8000) != 0 {
- decode_flags(br, &mut row_flags, 1, (height >> 3) - 1)?;
- }
- if (frame_flags & 0x4000) != 0 {
- decode_flags(br, &mut col_flags, 1, (width >> 3) - 1)?;
- }
+ }
+ let mut row_flags: Vec<bool> = Vec::with_capacity(bheight * 4);
+ let mut col_flags: Vec<bool> = Vec::with_capacity(bw * 4);
+ if (frame_flags & 0x10000) != 0 {
+ if (frame_flags & 0x8000) == 0 {
+ let len = (height + 15) >> 4;
+ decode_flags(br, &mut row_flags, 1, len * 2 - 1)?;
+ }
+ if (frame_flags & 0x4000) == 0 {
+ let len = (width + 15) >> 4;
+ decode_flags(br, &mut col_flags, 1, len * 2 - 1)?;
+ }
+ }
+ row_flags.resize(bheight * 4, false);
+ col_flags.resize(bw * 4, false);
+ //store frame_flags * 8 & 0x7F8
+
+ let mut start_by = 0;
+ for slice_no in 0..self.num_slices {
+ let end_by = self.slice_h[slice_no];
+ if slice_no != 0 {
+ br.seek(offsets[slice_no - 1] * 8)?;