1use crate::{Processor, Sizes};
2use std::ops::Deref;
3use std::slice;
4
5pub struct RawImage {
6 processor: Processor,
7}
8
9impl RawImage {
10 pub(crate) fn new(processor: Processor) -> Self {
11 debug_assert!(!unsafe { (*processor.inner).rawdata.raw_alloc }.is_null());
12
13 Self { processor }
14 }
15
16 pub fn sizes(&self) -> Sizes {
17 Sizes::new(unsafe { (*self.processor.inner).sizes })
18 }
19}
20
21impl Deref for RawImage {
22 type Target = [u16];
23
24 fn deref(&self) -> &Self::Target {
25 let sizes = self.sizes();
26
27 unsafe {
28 slice::from_raw_parts(
29 (*self.processor.inner).rawdata.raw_image,
30 sizes.raw_width as usize * sizes.raw_height as usize,
31 )
32 }
33 }
34}