diff options
Diffstat (limited to 'src/decode.rs')
-rw-r--r-- | src/decode.rs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/decode.rs b/src/decode.rs index 9c6a065..2202116 100644 --- a/src/decode.rs +++ b/src/decode.rs | |||
@@ -18,8 +18,8 @@ pub fn decode_image(obi_data: &mut Cursor<Vec<u8>>) -> OBIResult<Image> { | |||
18 | .read_u32::<LittleEndian>() | 18 | .read_u32::<LittleEndian>() |
19 | .map_err(|_| OBIError::Decode)?; | 19 | .map_err(|_| OBIError::Decode)?; |
20 | let file_header = FileHeader { | 20 | let file_header = FileHeader { |
21 | version, | ||
22 | file_size, | 21 | file_size, |
22 | version, | ||
23 | data_offset, | 23 | data_offset, |
24 | }; | 24 | }; |
25 | 25 | ||
@@ -59,8 +59,7 @@ pub fn decode_image(obi_data: &mut Cursor<Vec<u8>>) -> OBIResult<Image> { | |||
59 | obi_data | 59 | obi_data |
60 | .read_to_end(&mut rest) | 60 | .read_to_end(&mut rest) |
61 | .map_err(|_| OBIError::Decode)?; | 61 | .map_err(|_| OBIError::Decode)?; |
62 | let data_points = rest | 62 | rest.iter() |
63 | .iter() | ||
64 | .map(|&b| { | 63 | .map(|&b| { |
65 | BitVec::<Lsb0, u8>::from_element(b) | 64 | BitVec::<Lsb0, u8>::from_element(b) |
66 | .into_iter() | 65 | .into_iter() |
@@ -68,23 +67,18 @@ pub fn decode_image(obi_data: &mut Cursor<Vec<u8>>) -> OBIResult<Image> { | |||
68 | .collect::<Vec<bool>>() | 67 | .collect::<Vec<bool>>() |
69 | }) | 68 | }) |
70 | .flatten() | 69 | .flatten() |
71 | .collect::<Vec<bool>>(); | ||
72 | |||
73 | let data = data_points | ||
74 | .into_iter() | 70 | .into_iter() |
75 | .zip(lengths) | 71 | .zip(lengths) |
76 | .map(|(d, l)| vec![d; l as usize]) | 72 | .map(|(d, l)| vec![d; l as usize]) |
77 | .flatten() | 73 | .flatten() |
78 | .collect::<Vec<bool>>(); | 74 | .collect::<Vec<bool>>() |
79 | data | ||
80 | } | 75 | } |
81 | _ => { | 76 | _ => { |
82 | let mut rest = vec![]; | 77 | let mut rest = vec![]; |
83 | obi_data | 78 | obi_data |
84 | .read_to_end(&mut rest) | 79 | .read_to_end(&mut rest) |
85 | .map_err(|_| OBIError::Decode)?; | 80 | .map_err(|_| OBIError::Decode)?; |
86 | let data_points = rest | 81 | rest.iter() |
87 | .iter() | ||
88 | .map(|&b| { | 82 | .map(|&b| { |
89 | BitVec::<Lsb0, u8>::from_element(b) | 83 | BitVec::<Lsb0, u8>::from_element(b) |
90 | .into_iter() | 84 | .into_iter() |
@@ -92,13 +86,12 @@ pub fn decode_image(obi_data: &mut Cursor<Vec<u8>>) -> OBIResult<Image> { | |||
92 | .collect::<Vec<bool>>() | 86 | .collect::<Vec<bool>>() |
93 | }) | 87 | }) |
94 | .flatten() | 88 | .flatten() |
95 | .collect::<Vec<_>>(); | 89 | .collect::<Vec<_>>() |
96 | data_points | ||
97 | } | 90 | } |
98 | }; | 91 | }; |
99 | return Ok(Image { | 92 | Ok(Image { |
100 | file_header, | 93 | file_header, |
101 | image_info_header, | 94 | image_info_header, |
102 | data, | 95 | data, |
103 | }); | 96 | }) |
104 | } | 97 | } |