use std::os::raw::{c_char, c_void};
use libc::{ptrdiff_t, size_t};
use crate::{Error, Result, core, sys, types};
use crate::core::{_InputArray, _OutputArray};
pub const Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL: i32 = 3;
pub const Stitcher_ERR_HOMOGRAPHY_EST_FAIL: i32 = 2;
pub const Stitcher_ERR_NEED_MORE_IMGS: i32 = 1;
pub const Stitcher_OK: i32 = 0;
pub const Stitcher_PANORAMA: i32 = 0;
pub const Stitcher_SCANS: i32 = 1;
#[repr(C)]
#[derive(Debug)]
pub enum Stitcher_Mode {
PANORAMA = Stitcher_PANORAMA as isize,
SCANS = Stitcher_SCANS as isize,
}
#[repr(C)]
#[derive(Debug)]
pub enum Stitcher_Status {
OK = Stitcher_OK as isize,
ERR_NEED_MORE_IMGS = Stitcher_ERR_NEED_MORE_IMGS as isize,
ERR_HOMOGRAPHY_EST_FAIL = Stitcher_ERR_HOMOGRAPHY_EST_FAIL as isize,
ERR_CAMERA_PARAMS_ADJUST_FAIL = Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL as isize,
}
#[deprecated = "use Stitcher::create"]
pub fn create_stitcher_scans(try_use_gpu: bool) -> Result<types::PtrOfStitcher> {
unsafe { sys::cv_createStitcherScans_bool(try_use_gpu) }.into_result().map(|ptr| types::PtrOfStitcher { ptr })
}
#[deprecated = "use Stitcher::create"]
pub fn create_stitcher(try_use_gpu: bool) -> Result<types::PtrOfStitcher> {
unsafe { sys::cv_createStitcher_bool(try_use_gpu) }.into_result().map(|ptr| types::PtrOfStitcher { ptr })
}
pub struct AffineWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::AffineWarper {
fn drop(&mut self) {
unsafe { sys::cv_AffineWarper_delete(self.ptr) };
}
}
impl crate::stitching::AffineWarper {
#[inline(always)] pub fn as_raw_AffineWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for AffineWarper {}
impl crate::stitching::WarperCreator for AffineWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl AffineWarper {
}
pub struct CompressedRectilinearPortraitWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::CompressedRectilinearPortraitWarper {
fn drop(&mut self) {
unsafe { sys::cv_CompressedRectilinearPortraitWarper_delete(self.ptr) };
}
}
impl crate::stitching::CompressedRectilinearPortraitWarper {
#[inline(always)] pub fn as_raw_CompressedRectilinearPortraitWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for CompressedRectilinearPortraitWarper {}
impl crate::stitching::WarperCreator for CompressedRectilinearPortraitWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl CompressedRectilinearPortraitWarper {
pub fn new(a: f32, b: f32) -> Result<crate::stitching::CompressedRectilinearPortraitWarper> {
unsafe { sys::cv_CompressedRectilinearPortraitWarper_CompressedRectilinearPortraitWarper_float_float(a, b) }.into_result().map(|ptr| crate::stitching::CompressedRectilinearPortraitWarper { ptr })
}
}
pub struct CompressedRectilinearWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::CompressedRectilinearWarper {
fn drop(&mut self) {
unsafe { sys::cv_CompressedRectilinearWarper_delete(self.ptr) };
}
}
impl crate::stitching::CompressedRectilinearWarper {
#[inline(always)] pub fn as_raw_CompressedRectilinearWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for CompressedRectilinearWarper {}
impl crate::stitching::WarperCreator for CompressedRectilinearWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl CompressedRectilinearWarper {
pub fn new(a: f32, b: f32) -> Result<crate::stitching::CompressedRectilinearWarper> {
unsafe { sys::cv_CompressedRectilinearWarper_CompressedRectilinearWarper_float_float(a, b) }.into_result().map(|ptr| crate::stitching::CompressedRectilinearWarper { ptr })
}
}
pub struct CylindricalWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::CylindricalWarper {
fn drop(&mut self) {
unsafe { sys::cv_CylindricalWarper_delete(self.ptr) };
}
}
impl crate::stitching::CylindricalWarper {
#[inline(always)] pub fn as_raw_CylindricalWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for CylindricalWarper {}
impl crate::stitching::WarperCreator for CylindricalWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl CylindricalWarper {
}
pub struct FisheyeWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::FisheyeWarper {
fn drop(&mut self) {
unsafe { sys::cv_FisheyeWarper_delete(self.ptr) };
}
}
impl crate::stitching::FisheyeWarper {
#[inline(always)] pub fn as_raw_FisheyeWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FisheyeWarper {}
impl crate::stitching::WarperCreator for FisheyeWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl FisheyeWarper {
}
pub struct MercatorWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::MercatorWarper {
fn drop(&mut self) {
unsafe { sys::cv_MercatorWarper_delete(self.ptr) };
}
}
impl crate::stitching::MercatorWarper {
#[inline(always)] pub fn as_raw_MercatorWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for MercatorWarper {}
impl crate::stitching::WarperCreator for MercatorWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl MercatorWarper {
}
pub struct PaniniPortraitWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::PaniniPortraitWarper {
fn drop(&mut self) {
unsafe { sys::cv_PaniniPortraitWarper_delete(self.ptr) };
}
}
impl crate::stitching::PaniniPortraitWarper {
#[inline(always)] pub fn as_raw_PaniniPortraitWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for PaniniPortraitWarper {}
impl crate::stitching::WarperCreator for PaniniPortraitWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl PaniniPortraitWarper {
pub fn new(a: f32, b: f32) -> Result<crate::stitching::PaniniPortraitWarper> {
unsafe { sys::cv_PaniniPortraitWarper_PaniniPortraitWarper_float_float(a, b) }.into_result().map(|ptr| crate::stitching::PaniniPortraitWarper { ptr })
}
}
pub struct PaniniWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::PaniniWarper {
fn drop(&mut self) {
unsafe { sys::cv_PaniniWarper_delete(self.ptr) };
}
}
impl crate::stitching::PaniniWarper {
#[inline(always)] pub fn as_raw_PaniniWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for PaniniWarper {}
impl crate::stitching::WarperCreator for PaniniWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl PaniniWarper {
pub fn new(a: f32, b: f32) -> Result<crate::stitching::PaniniWarper> {
unsafe { sys::cv_PaniniWarper_PaniniWarper_float_float(a, b) }.into_result().map(|ptr| crate::stitching::PaniniWarper { ptr })
}
}
pub struct PlaneWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::PlaneWarper {
fn drop(&mut self) {
unsafe { sys::cv_PlaneWarper_delete(self.ptr) };
}
}
impl crate::stitching::PlaneWarper {
#[inline(always)] pub fn as_raw_PlaneWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for PlaneWarper {}
impl crate::stitching::WarperCreator for PlaneWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl PlaneWarper {
}
pub struct PyRotationWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::PyRotationWarper {
fn drop(&mut self) {
unsafe { sys::cv_PyRotationWarper_delete(self.ptr) };
}
}
impl crate::stitching::PyRotationWarper {
#[inline(always)] pub fn as_raw_PyRotationWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for PyRotationWarper {}
impl PyRotationWarper {
pub fn new(_type: &str, scale: f32) -> Result<crate::stitching::PyRotationWarper> {
string_arg!(mut _type);
unsafe { sys::cv_PyRotationWarper_PyRotationWarper_String_float(_type.as_ptr() as _, scale) }.into_result().map(|ptr| crate::stitching::PyRotationWarper { ptr })
}
pub fn default() -> Result<crate::stitching::PyRotationWarper> {
unsafe { sys::cv_PyRotationWarper_PyRotationWarper() }.into_result().map(|ptr| crate::stitching::PyRotationWarper { ptr })
}
pub fn warp_point(&mut self, pt: core::Point2f, k: &dyn core::ToInputArray, r: &dyn core::ToInputArray) -> Result<core::Point2f> {
input_array_arg!(k);
input_array_arg!(r);
unsafe { sys::cv_PyRotationWarper_warpPoint_Point2f__InputArray__InputArray(self.as_raw_PyRotationWarper(), pt, k.as_raw__InputArray(), r.as_raw__InputArray()) }.into_result()
}
pub fn build_maps(&mut self, src_size: core::Size, k: &dyn core::ToInputArray, r: &dyn core::ToInputArray, xmap: &mut dyn core::ToOutputArray, ymap: &mut dyn core::ToOutputArray) -> Result<core::Rect> {
input_array_arg!(k);
input_array_arg!(r);
output_array_arg!(xmap);
output_array_arg!(ymap);
unsafe { sys::cv_PyRotationWarper_buildMaps_Size__InputArray__InputArray__OutputArray__OutputArray(self.as_raw_PyRotationWarper(), src_size, k.as_raw__InputArray(), r.as_raw__InputArray(), xmap.as_raw__OutputArray(), ymap.as_raw__OutputArray()) }.into_result()
}
pub fn warp(&mut self, src: &dyn core::ToInputArray, k: &dyn core::ToInputArray, r: &dyn core::ToInputArray, interp_mode: i32, border_mode: i32, dst: &mut dyn core::ToOutputArray) -> Result<core::Point> {
input_array_arg!(src);
input_array_arg!(k);
input_array_arg!(r);
output_array_arg!(dst);
unsafe { sys::cv_PyRotationWarper_warp__InputArray__InputArray__InputArray_int_int__OutputArray(self.as_raw_PyRotationWarper(), src.as_raw__InputArray(), k.as_raw__InputArray(), r.as_raw__InputArray(), interp_mode, border_mode, dst.as_raw__OutputArray()) }.into_result()
}
pub fn warp_backward(&mut self, src: &dyn core::ToInputArray, k: &dyn core::ToInputArray, r: &dyn core::ToInputArray, interp_mode: i32, border_mode: i32, dst_size: core::Size, dst: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(src);
input_array_arg!(k);
input_array_arg!(r);
output_array_arg!(dst);
unsafe { sys::cv_PyRotationWarper_warpBackward__InputArray__InputArray__InputArray_int_int_Size__OutputArray(self.as_raw_PyRotationWarper(), src.as_raw__InputArray(), k.as_raw__InputArray(), r.as_raw__InputArray(), interp_mode, border_mode, dst_size, dst.as_raw__OutputArray()) }.into_result()
}
pub fn warp_roi(&mut self, src_size: core::Size, k: &dyn core::ToInputArray, r: &dyn core::ToInputArray) -> Result<core::Rect> {
input_array_arg!(k);
input_array_arg!(r);
unsafe { sys::cv_PyRotationWarper_warpRoi_Size__InputArray__InputArray(self.as_raw_PyRotationWarper(), src_size, k.as_raw__InputArray(), r.as_raw__InputArray()) }.into_result()
}
pub fn get_scale(&self) -> Result<f32> {
unsafe { sys::cv_PyRotationWarper_getScale_const(self.as_raw_PyRotationWarper()) }.into_result()
}
pub fn set_scale(&mut self, unnamed_arg: f32) -> Result<()> {
unsafe { sys::cv_PyRotationWarper_setScale_float(self.as_raw_PyRotationWarper(), unnamed_arg) }.into_result()
}
}
pub struct SphericalWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::SphericalWarper {
fn drop(&mut self) {
unsafe { sys::cv_SphericalWarper_delete(self.ptr) };
}
}
impl crate::stitching::SphericalWarper {
#[inline(always)] pub fn as_raw_SphericalWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for SphericalWarper {}
impl crate::stitching::WarperCreator for SphericalWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl SphericalWarper {
}
pub struct StereographicWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::StereographicWarper {
fn drop(&mut self) {
unsafe { sys::cv_StereographicWarper_delete(self.ptr) };
}
}
impl crate::stitching::StereographicWarper {
#[inline(always)] pub fn as_raw_StereographicWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for StereographicWarper {}
impl crate::stitching::WarperCreator for StereographicWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl StereographicWarper {
}
pub struct Stitcher {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::Stitcher {
fn drop(&mut self) {
unsafe { sys::cv_Stitcher_delete(self.ptr) };
}
}
impl crate::stitching::Stitcher {
#[inline(always)] pub fn as_raw_Stitcher(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for Stitcher {}
impl Stitcher {
pub fn create(mode: crate::stitching::Stitcher_Mode) -> Result<types::PtrOfStitcher> {
unsafe { sys::cv_Stitcher_create_Stitcher_Mode(mode) }.into_result().map(|ptr| types::PtrOfStitcher { ptr })
}
pub fn registration_resol(&self) -> Result<f64> {
unsafe { sys::cv_Stitcher_registrationResol_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_registration_resol(&mut self, resol_mpx: f64) -> Result<()> {
unsafe { sys::cv_Stitcher_setRegistrationResol_double(self.as_raw_Stitcher(), resol_mpx) }.into_result()
}
pub fn seam_estimation_resol(&self) -> Result<f64> {
unsafe { sys::cv_Stitcher_seamEstimationResol_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_seam_estimation_resol(&mut self, resol_mpx: f64) -> Result<()> {
unsafe { sys::cv_Stitcher_setSeamEstimationResol_double(self.as_raw_Stitcher(), resol_mpx) }.into_result()
}
pub fn compositing_resol(&self) -> Result<f64> {
unsafe { sys::cv_Stitcher_compositingResol_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_compositing_resol(&mut self, resol_mpx: f64) -> Result<()> {
unsafe { sys::cv_Stitcher_setCompositingResol_double(self.as_raw_Stitcher(), resol_mpx) }.into_result()
}
pub fn pano_confidence_thresh(&self) -> Result<f64> {
unsafe { sys::cv_Stitcher_panoConfidenceThresh_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_pano_confidence_thresh(&mut self, conf_thresh: f64) -> Result<()> {
unsafe { sys::cv_Stitcher_setPanoConfidenceThresh_double(self.as_raw_Stitcher(), conf_thresh) }.into_result()
}
pub fn wave_correction(&self) -> Result<bool> {
unsafe { sys::cv_Stitcher_waveCorrection_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_wave_correction(&mut self, flag: bool) -> Result<()> {
unsafe { sys::cv_Stitcher_setWaveCorrection_bool(self.as_raw_Stitcher(), flag) }.into_result()
}
pub fn interpolation_flags(&self) -> Result<crate::imgproc::InterpolationFlags> {
unsafe { sys::cv_Stitcher_interpolationFlags_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn set_interpolation_flags(&mut self, interp_flags: crate::imgproc::InterpolationFlags) -> Result<()> {
unsafe { sys::cv_Stitcher_setInterpolationFlags_InterpolationFlags(self.as_raw_Stitcher(), interp_flags) }.into_result()
}
pub fn features_finder(&mut self) -> Result<types::PtrOfFeature2D> {
unsafe { sys::cv_Stitcher_featuresFinder(self.as_raw_Stitcher()) }.into_result().map(|ptr| types::PtrOfFeature2D { ptr })
}
pub fn features_finder_1(&self) -> Result<types::PtrOfFeature2D> {
unsafe { sys::cv_Stitcher_featuresFinder_const(self.as_raw_Stitcher()) }.into_result().map(|ptr| types::PtrOfFeature2D { ptr })
}
pub fn set_features_finder(&mut self, features_finder: &types::PtrOfFeature2D) -> Result<()> {
unsafe { sys::cv_Stitcher_setFeaturesFinder_PtrOfFeature2D(self.as_raw_Stitcher(), features_finder.as_raw_PtrOfFeature2D()) }.into_result()
}
pub fn matching_mask(&self) -> Result<core::UMat> {
unsafe { sys::cv_Stitcher_matchingMask_const(self.as_raw_Stitcher()) }.into_result().map(|ptr| core::UMat { ptr })
}
pub fn set_matching_mask(&mut self, mask: &core::UMat) -> Result<()> {
unsafe { sys::cv_Stitcher_setMatchingMask_UMat(self.as_raw_Stitcher(), mask.as_raw_UMat()) }.into_result()
}
pub fn estimate_transform(&mut self, images: &dyn core::ToInputArray, masks: &dyn core::ToInputArray) -> Result<crate::stitching::Stitcher_Status> {
input_array_arg!(images);
input_array_arg!(masks);
unsafe { sys::cv_Stitcher_estimateTransform__InputArray__InputArray(self.as_raw_Stitcher(), images.as_raw__InputArray(), masks.as_raw__InputArray()) }.into_result()
}
pub fn compose_panorama(&mut self, pano: &mut dyn core::ToOutputArray) -> Result<crate::stitching::Stitcher_Status> {
output_array_arg!(pano);
unsafe { sys::cv_Stitcher_composePanorama__OutputArray(self.as_raw_Stitcher(), pano.as_raw__OutputArray()) }.into_result()
}
pub fn compose_panorama_images(&mut self, images: &dyn core::ToInputArray, pano: &mut dyn core::ToOutputArray) -> Result<crate::stitching::Stitcher_Status> {
input_array_arg!(images);
output_array_arg!(pano);
unsafe { sys::cv_Stitcher_composePanorama__InputArray__OutputArray(self.as_raw_Stitcher(), images.as_raw__InputArray(), pano.as_raw__OutputArray()) }.into_result()
}
pub fn stitch(&mut self, images: &dyn core::ToInputArray, pano: &mut dyn core::ToOutputArray) -> Result<crate::stitching::Stitcher_Status> {
input_array_arg!(images);
output_array_arg!(pano);
unsafe { sys::cv_Stitcher_stitch__InputArray__OutputArray(self.as_raw_Stitcher(), images.as_raw__InputArray(), pano.as_raw__OutputArray()) }.into_result()
}
pub fn stitch_mask(&mut self, images: &dyn core::ToInputArray, masks: &dyn core::ToInputArray, pano: &mut dyn core::ToOutputArray) -> Result<crate::stitching::Stitcher_Status> {
input_array_arg!(images);
input_array_arg!(masks);
output_array_arg!(pano);
unsafe { sys::cv_Stitcher_stitch__InputArray__InputArray__OutputArray(self.as_raw_Stitcher(), images.as_raw__InputArray(), masks.as_raw__InputArray(), pano.as_raw__OutputArray()) }.into_result()
}
pub fn component(&self) -> Result<types::VectorOfint> {
unsafe { sys::cv_Stitcher_component_const(self.as_raw_Stitcher()) }.into_result().map(|ptr| types::VectorOfint { ptr })
}
pub fn work_scale(&self) -> Result<f64> {
unsafe { sys::cv_Stitcher_workScale_const(self.as_raw_Stitcher()) }.into_result()
}
pub fn result_mask(&self) -> Result<core::UMat> {
unsafe { sys::cv_Stitcher_resultMask_const(self.as_raw_Stitcher()) }.into_result().map(|ptr| core::UMat { ptr })
}
}
pub struct TransverseMercatorWarper {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::stitching::TransverseMercatorWarper {
fn drop(&mut self) {
unsafe { sys::cv_TransverseMercatorWarper_delete(self.ptr) };
}
}
impl crate::stitching::TransverseMercatorWarper {
#[inline(always)] pub fn as_raw_TransverseMercatorWarper(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for TransverseMercatorWarper {}
impl crate::stitching::WarperCreator for TransverseMercatorWarper {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void { self.ptr }
}
impl TransverseMercatorWarper {
}
pub trait WarperCreator {
#[inline(always)] fn as_raw_WarperCreator(&self) -> *mut c_void;
}