openstellaris/triangle/src/lib.rs

52 lines
1.3 KiB
Rust
Raw Normal View History

2023-12-26 01:40:37 +00:00
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 {})
}