skia_safe/core/
cpu_recorder.rs

1pub mod cpu {
2    use std::fmt;
3
4    use crate::{prelude::*, recorder, Recorder as _};
5    use skia_bindings::{self as sb, skcpu_Recorder};
6
7    #[repr(transparent)]
8    pub struct Recorder<'a>(&'a mut skcpu_Recorder);
9    require_base_type!(skcpu_Recorder, sb::SkRecorder);
10
11    impl NativeAccess for Recorder<'_> {
12        type Native = skcpu_Recorder;
13
14        fn native(&self) -> &Self::Native {
15            self.0
16        }
17
18        fn native_mut(&mut self) -> &mut Self::Native {
19            self.0
20        }
21    }
22
23    impl fmt::Debug for Recorder<'_> {
24        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25            f.debug_struct("Recorder").field("ty", &self.ty()).finish()
26        }
27    }
28
29    impl Drop for Recorder<'_> {
30        fn drop(&mut self) {
31            unsafe {
32                sb::C_SkRecorder_delete(&mut self.native_mut()._base);
33            }
34        }
35    }
36
37    impl<'a> Recorder<'a> {
38        #[allow(unused)]
39        pub(crate) fn from_owned(recorder: &'a mut skcpu_Recorder) -> Self {
40            Self(recorder)
41        }
42
43        // TODO: Wrap `makeBitmapInfo` if lifetimes can be clarified.
44    }
45
46    impl recorder::Recorder for Recorder<'_> {
47        fn ty(&self) -> crate::recorder::Type {
48            recorder::Type::CPU
49        }
50    }
51
52    impl recorder::sealed::AsRecorderRef for Recorder<'_> {
53        fn as_recorder_ref(&mut self) -> &mut recorder::RecorderRef {
54            recorder::RecorderRef::from_ref_mut(&mut self.native_mut()._base)
55        }
56    }
57}