52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
|
use anyhow::Result;
|
||
|
use std::{ffi::CString, mem::MaybeUninit, ptr};
|
||
|
|
||
|
extern crate triangle_sys as sys;
|
||
|
|
||
|
pub struct TrianglulateOptions {}
|
||
|
|
||
|
pub struct TriangulateResult {}
|
||
|
|
||
|
pub fn triangulate(opts: TrianglulateOptions) -> Result<TriangulateResult> {
|
||
|
let switches = CString::new("")?;
|
||
|
|
||
|
let mut input = sys::triangulateio {
|
||
|
pointlist: todo!(),
|
||
|
pointattributelist: todo!(),
|
||
|
pointmarkerlist: todo!(),
|
||
|
numberofpoints: todo!(),
|
||
|
numberofpointattributes: todo!(),
|
||
|
trianglelist: todo!(),
|
||
|
triangleattributelist: todo!(),
|
||
|
trianglearealist: todo!(),
|
||
|
neighborlist: todo!(),
|
||
|
numberoftriangles: todo!(),
|
||
|
numberofcorners: todo!(),
|
||
|
numberoftriangleattributes: todo!(),
|
||
|
segmentlist: todo!(),
|
||
|
segmentmarkerlist: todo!(),
|
||
|
numberofsegments: todo!(),
|
||
|
holelist: todo!(),
|
||
|
numberofholes: todo!(),
|
||
|
regionlist: todo!(),
|
||
|
numberofregions: todo!(),
|
||
|
edgelist: todo!(),
|
||
|
edgemarkerlist: todo!(),
|
||
|
normlist: todo!(),
|
||
|
numberofedges: todo!(),
|
||
|
};
|
||
|
let mut output = MaybeUninit::<sys::triangulateio>::uninit();
|
||
|
let mut vorout = ptr::null::<sys::triangulateio>();
|
||
|
|
||
|
unsafe {
|
||
|
sys::triangulate(
|
||
|
switches.as_ptr() as *mut _,
|
||
|
&mut input as *mut _,
|
||
|
output.as_mut_ptr(),
|
||
|
vorout as *mut _,
|
||
|
)
|
||
|
};
|
||
|
|
||
|
Ok(TriangulateResult {})
|
||
|
}
|