1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::{Header, Points, Reader, Spacing};
pub struct VoxelSpaceReader {
reader: Reader,
}
impl VoxelSpaceReader {
pub fn new<P: AsRef<std::path::Path>>(path: P, spacing: Spacing) -> (Header, VoxelSpaceReader) {
let mut reader = Reader::new(path).unwrap();
reader.apply_transform_to_voxel_space(spacing);
let header = reader.header.clone();
(header, VoxelSpaceReader { reader })
}
}
impl Iterator for VoxelSpaceReader {
type Item = Points;
fn next(&mut self) -> Option<Points> {
if let Some((points, _, _)) = self.reader.next() {
return Some(points);
} else {
return None;
}
}
}