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