#![allow(unused)]
use crate::Image;
use k4a_sys_temp as k4a_sys;
use std::ptr::null_mut;
#[derive(Debug)]
pub struct Capture(pub k4a_sys::k4a_capture_t);
unsafe impl Send for Capture{}
impl Drop for Capture {
fn drop(&mut self) {
unsafe {
k4a_sys::k4a_capture_release(self.0);
self.0 = null_mut();
}
}
}
impl Clone for Capture {
fn clone(&self) -> Self {
let handle = self.get_handle();
unsafe {
k4a_sys::k4a_capture_reference(handle);
}
Self {
0: handle,
}
}
fn clone_from(&mut self, source: &Self) {
let handle = source.get_handle();
unsafe {
k4a_sys::k4a_capture_reference(handle);
}
unsafe {
k4a_sys::k4a_capture_release(self.0);
}
self.0 = handle;
}
}
impl Capture {
pub fn get_depth_image(&self) -> Option<Image> {
let image = unsafe {
k4a_sys::k4a_capture_get_depth_image(self.0)
};
if image.is_null() {
return None;
}
Some(Image(image))
}
pub fn get_color_image(&self) -> Option<Image> {
let image = unsafe {
k4a_sys::k4a_capture_get_color_image(self.0)
};
if image.is_null() {
return None;
}
Some(Image(image))
}
pub fn get_ir_image(&self) -> Option<Image> {
let image = unsafe {
k4a_sys::k4a_capture_get_ir_image(self.0)
};
if image.is_null() {
return None;
}
Some(Image(image))
}
pub fn get_handle(&self) -> k4a_sys::k4a_capture_t {
self.0
}
}