use crate::{
core::{_InputArray, _InputOutputArray, _InputOutputArrayTrait, _OutputArray},
Result,
sys,
};
pub trait ToInputArray {
fn input_array(&self) -> Result<_InputArray>;
}
impl ToInputArray for f64 {
#[inline]
fn input_array(&self) -> Result<_InputArray> {
_InputArray::from_f64(self)
}
}
impl ToInputArray for &f64 {
#[inline]
fn input_array(&self) -> Result<_InputArray> {
(*self).input_array()
}
}
pub trait ToOutputArray {
fn output_array(&mut self) -> Result<_OutputArray>;
}
pub trait ToInputOutputArray {
fn input_output_array(&mut self) -> Result<_InputOutputArray>;
}
impl<T: _InputOutputArrayTrait> ToInputArray for T {
fn input_array(&self) -> Result<_InputArray> {
let me = self.as_raw__InputOutputArray();
cpp!(unsafe [me as "cv::_InputOutputArray*"] -> sys::cv_return_value_const_void_X as "cv_return_value_const_void_X" {
try {
return { Error::Code::StsOk, NULL, new _InputArray(*me) };
} CVRS_CATCH(cv_return_value_const_void_X)
}).into_result()
.map(|ptr| _InputArray { ptr })
}
}
impl<T: _InputOutputArrayTrait> ToOutputArray for T {
fn output_array(&mut self) -> Result<_OutputArray> {
let me = self.as_raw__InputOutputArray();
cpp!(unsafe [me as "cv::_InputOutputArray*"] -> sys::cv_return_value_const_void_X as "cv_return_value_const_void_X" {
try {
return { Error::Code::StsOk, NULL, new _OutputArray(*me) };
} CVRS_CATCH(cv_return_value_const_void_X)
}).into_result()
.map(|ptr| _OutputArray { ptr })
}
}
impl<T: _InputOutputArrayTrait> ToInputOutputArray for T {
fn input_output_array(&mut self) -> Result<_InputOutputArray> {
let me = self.as_raw__InputOutputArray();
cpp!(unsafe [me as "cv::_InputOutputArray*"] -> sys::cv_return_value_const_void_X as "cv_return_value_const_void_X" {
try {
return { Error::Code::StsOk, NULL, new _InputOutputArray(*me) };
} CVRS_CATCH(cv_return_value_const_void_X)
}).into_result()
.map(|ptr| _InputOutputArray { ptr })
}
}