libraw/
rawimage.rs

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}