#![allow(non_camel_case_types)]
use std::os::raw::c_int;
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldManifold {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldManifoldVec {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldPolygons {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldSimplePolygon {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldRayHitVec {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldTriangulation {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldMeshGL {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldMeshGL64 {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldBox {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldCrossSection {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldCrossSectionVec {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldRect {
_private: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldManifoldPair {
pub first: *mut ManifoldManifold,
pub second: *mut ManifoldManifold,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldVec2 {
pub x: f64,
pub y: f64,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldVec3 {
pub x: f64,
pub y: f64,
pub z: f64,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldIVec3 {
pub x: c_int,
pub y: c_int,
pub z: c_int,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldVec4 {
pub x: f64,
pub y: f64,
pub z: f64,
pub w: f64,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldProperties {
pub surface_area: f64,
pub volume: f64,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ManifoldRayHit {
pub face_id: u64,
pub distance: f64,
pub position: ManifoldVec3,
pub normal: ManifoldVec3,
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldMeshGLOptions {
pub run_indices: *mut u32,
pub run_indices_length: usize,
pub run_original_ids: *mut u32,
pub run_original_ids_length: usize,
pub merge_from_vert: *mut u32,
pub merge_to_vert: *mut u32,
pub merge_verts_length: usize,
pub halfedge_tangents: *mut f32,
}
#[repr(C)]
#[derive(Debug)]
pub struct ManifoldMeshGL64Options {
pub run_indices: *mut u64,
pub run_indices_length: usize,
pub run_original_ids: *mut u32,
pub run_original_ids_length: usize,
pub merge_from_vert: *mut u64,
pub merge_to_vert: *mut u64,
pub merge_verts_length: usize,
pub halfedge_tangents: *mut f64,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ManifoldOpType {
Add = 0,
Subtract = 1,
Intersect = 2,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ManifoldFillRule {
EvenOdd = 0,
NonZero = 1,
Positive = 2,
Negative = 3,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ManifoldJoinType {
Square = 0,
Round = 1,
Miter = 2,
Bevel = 3,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ManifoldError {
NoError = 0,
NonFiniteVertex = 1,
NotManifold = 2,
VertexOutOfBounds = 3,
PropertiesWrongLength = 4,
MissingPositionProperties = 5,
MergeVectorsDifferentLengths = 6,
MergeIndexOutOfBounds = 7,
TransformWrongLength = 8,
RunIndexWrongLength = 9,
FaceIdWrongLength = 10,
InvalidConstruction = 11,
ResultTooLarge = 12,
}
pub type ManifoldSdf = Option<unsafe extern "C" fn(f64, f64, f64, *mut std::ffi::c_void) -> f64>;
unsafe extern "C" {
pub fn manifold_manifold_size() -> usize;
pub fn manifold_manifold_vec_size() -> usize;
pub fn manifold_cross_section_size() -> usize;
pub fn manifold_cross_section_vec_size() -> usize;
pub fn manifold_simple_polygon_size() -> usize;
pub fn manifold_polygons_size() -> usize;
pub fn manifold_manifold_pair_size() -> usize;
pub fn manifold_meshgl_size() -> usize;
pub fn manifold_meshgl64_size() -> usize;
pub fn manifold_box_size() -> usize;
pub fn manifold_rect_size() -> usize;
pub fn manifold_triangulation_size() -> usize;
pub fn manifold_ray_hit_vec_size() -> usize;
pub fn manifold_alloc_manifold() -> *mut ManifoldManifold;
pub fn manifold_alloc_manifold_vec() -> *mut ManifoldManifoldVec;
pub fn manifold_alloc_cross_section() -> *mut ManifoldCrossSection;
pub fn manifold_alloc_cross_section_vec() -> *mut ManifoldCrossSectionVec;
pub fn manifold_alloc_simple_polygon() -> *mut ManifoldSimplePolygon;
pub fn manifold_alloc_polygons() -> *mut ManifoldPolygons;
pub fn manifold_alloc_meshgl() -> *mut ManifoldMeshGL;
pub fn manifold_alloc_meshgl64() -> *mut ManifoldMeshGL64;
pub fn manifold_alloc_box() -> *mut ManifoldBox;
pub fn manifold_alloc_rect() -> *mut ManifoldRect;
pub fn manifold_alloc_triangulation() -> *mut ManifoldTriangulation;
pub fn manifold_alloc_ray_hit_vec() -> *mut ManifoldRayHitVec;
pub fn manifold_destruct_manifold(m: *mut ManifoldManifold);
pub fn manifold_destruct_manifold_vec(ms: *mut ManifoldManifoldVec);
pub fn manifold_destruct_cross_section(m: *mut ManifoldCrossSection);
pub fn manifold_destruct_cross_section_vec(csv: *mut ManifoldCrossSectionVec);
pub fn manifold_destruct_simple_polygon(p: *mut ManifoldSimplePolygon);
pub fn manifold_destruct_polygons(p: *mut ManifoldPolygons);
pub fn manifold_destruct_meshgl(m: *mut ManifoldMeshGL);
pub fn manifold_destruct_meshgl64(m: *mut ManifoldMeshGL64);
pub fn manifold_destruct_box(b: *mut ManifoldBox);
pub fn manifold_destruct_rect(b: *mut ManifoldRect);
pub fn manifold_destruct_triangulation(m: *mut ManifoldTriangulation);
pub fn manifold_destruct_ray_hit_vec(v: *mut ManifoldRayHitVec);
pub fn manifold_delete_manifold(m: *mut ManifoldManifold);
pub fn manifold_delete_manifold_vec(ms: *mut ManifoldManifoldVec);
pub fn manifold_delete_cross_section(cs: *mut ManifoldCrossSection);
pub fn manifold_delete_cross_section_vec(csv: *mut ManifoldCrossSectionVec);
pub fn manifold_delete_simple_polygon(p: *mut ManifoldSimplePolygon);
pub fn manifold_delete_polygons(p: *mut ManifoldPolygons);
pub fn manifold_delete_meshgl(m: *mut ManifoldMeshGL);
pub fn manifold_delete_meshgl64(m: *mut ManifoldMeshGL64);
pub fn manifold_delete_box(b: *mut ManifoldBox);
pub fn manifold_delete_rect(b: *mut ManifoldRect);
pub fn manifold_delete_triangulation(m: *mut ManifoldTriangulation);
pub fn manifold_delete_ray_hit_vec(v: *mut ManifoldRayHitVec);
pub fn manifold_simple_polygon(
mem: *mut ManifoldSimplePolygon,
ps: *const ManifoldVec2,
length: usize,
) -> *mut ManifoldSimplePolygon;
pub fn manifold_polygons(
mem: *mut ManifoldPolygons,
ps: *const *mut ManifoldSimplePolygon,
length: usize,
) -> *mut ManifoldPolygons;
pub fn manifold_simple_polygon_length(p: *const ManifoldSimplePolygon) -> usize;
pub fn manifold_polygons_length(ps: *const ManifoldPolygons) -> usize;
pub fn manifold_polygons_simple_length(ps: *const ManifoldPolygons, idx: usize) -> usize;
pub fn manifold_simple_polygon_get_point(
p: *const ManifoldSimplePolygon,
idx: usize,
) -> ManifoldVec2;
pub fn manifold_polygons_get_simple(
mem: *mut ManifoldSimplePolygon,
ps: *const ManifoldPolygons,
idx: usize,
) -> *mut ManifoldSimplePolygon;
pub fn manifold_polygons_get_point(
ps: *const ManifoldPolygons,
simple_idx: usize,
pt_idx: usize,
) -> ManifoldVec2;
pub fn manifold_meshgl(
mem: *mut ManifoldMeshGL,
vert_props: *const f32,
n_verts: usize,
n_props: usize,
tri_verts: *const u32,
n_tris: usize,
) -> *mut ManifoldMeshGL;
pub fn manifold_meshgl_w_tangents(
mem: *mut ManifoldMeshGL,
vert_props: *const f32,
n_verts: usize,
n_props: usize,
tri_verts: *const u32,
n_tris: usize,
halfedge_tangent: *const f32,
) -> *mut ManifoldMeshGL;
pub fn manifold_meshgl_w_options(
mem: *mut ManifoldMeshGL,
vert_props: *const f32,
n_verts: usize,
n_props: usize,
tri_verts: *const u32,
n_tris: usize,
options: *const ManifoldMeshGLOptions,
) -> *mut ManifoldMeshGL;
pub fn manifold_of_meshgl(
mem: *mut ManifoldManifold,
mesh: *const ManifoldMeshGL,
) -> *mut ManifoldManifold;
pub fn manifold_get_meshgl(
mem: *mut ManifoldMeshGL,
m: *const ManifoldManifold,
) -> *mut ManifoldMeshGL;
pub fn manifold_get_meshgl_w_normals(
mem: *mut ManifoldMeshGL,
m: *const ManifoldManifold,
normal_idx: i32,
) -> *mut ManifoldMeshGL;
pub fn manifold_meshgl_copy(
mem: *mut ManifoldMeshGL,
m: *const ManifoldMeshGL,
) -> *mut ManifoldMeshGL;
pub fn manifold_meshgl_merge(
mem: *mut ManifoldMeshGL,
m: *const ManifoldMeshGL,
) -> *mut ManifoldMeshGL;
pub fn manifold_meshgl_num_prop(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_num_vert(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_num_tri(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_vert_properties_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_tri_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_merge_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_run_index_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_run_original_id_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_run_transform_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_face_id_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_tangent_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_vert_properties(mem: *mut f32, m: *const ManifoldMeshGL) -> *mut f32;
pub fn manifold_meshgl_tri_verts(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_merge_from_vert(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_merge_to_vert(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_run_index(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_run_original_id(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_run_transform(mem: *mut f32, m: *const ManifoldMeshGL) -> *mut f32;
pub fn manifold_meshgl_face_id(mem: *mut u32, m: *const ManifoldMeshGL) -> *mut u32;
pub fn manifold_meshgl_halfedge_tangent(mem: *mut f32, m: *const ManifoldMeshGL) -> *mut f32;
pub fn manifold_meshgl_tolerance(m: *const ManifoldMeshGL) -> f32;
pub fn manifold_meshgl_run_flags_length(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_run_flags(mem: *mut u8, m: *const ManifoldMeshGL) -> *mut u8;
pub fn manifold_meshgl_num_run(m: *const ManifoldMeshGL) -> usize;
pub fn manifold_meshgl_update_normals(m: *mut ManifoldMeshGL, normal_idx: c_int);
pub fn manifold_meshgl64(
mem: *mut ManifoldMeshGL64,
vert_props: *const f64,
n_verts: usize,
n_props: usize,
tri_verts: *const u64,
n_tris: usize,
) -> *mut ManifoldMeshGL64;
pub fn manifold_meshgl64_w_tangents(
mem: *mut ManifoldMeshGL64,
vert_props: *const f64,
n_verts: usize,
n_props: usize,
tri_verts: *const u64,
n_tris: usize,
halfedge_tangent: *const f64,
) -> *mut ManifoldMeshGL64;
pub fn manifold_meshgl64_w_options(
mem: *mut ManifoldMeshGL64,
vert_props: *const f64,
n_verts: usize,
n_props: usize,
tri_verts: *const u64,
n_tris: usize,
options: *const ManifoldMeshGL64Options,
) -> *mut ManifoldMeshGL64;
pub fn manifold_of_meshgl64(
mem: *mut ManifoldManifold,
mesh: *const ManifoldMeshGL64,
) -> *mut ManifoldManifold;
pub fn manifold_get_meshgl64(
mem: *mut ManifoldMeshGL64,
m: *const ManifoldManifold,
) -> *mut ManifoldMeshGL64;
pub fn manifold_get_meshgl64_w_normals(
mem: *mut ManifoldMeshGL64,
m: *const ManifoldManifold,
normal_idx: i32,
) -> *mut ManifoldMeshGL64;
pub fn manifold_meshgl64_copy(
mem: *mut ManifoldMeshGL64,
m: *const ManifoldMeshGL64,
) -> *mut ManifoldMeshGL64;
pub fn manifold_meshgl64_merge(
mem: *mut ManifoldMeshGL64,
m: *const ManifoldMeshGL64,
) -> *mut ManifoldMeshGL64;
pub fn manifold_meshgl64_num_prop(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_num_vert(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_num_tri(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_vert_properties_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_tri_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_merge_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_run_index_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_run_original_id_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_run_transform_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_face_id_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_tangent_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_vert_properties(mem: *mut f64, m: *const ManifoldMeshGL64)
-> *mut f64;
pub fn manifold_meshgl64_tri_verts(mem: *mut u64, m: *const ManifoldMeshGL64) -> *mut u64;
pub fn manifold_meshgl64_merge_from_vert(mem: *mut u64, m: *const ManifoldMeshGL64)
-> *mut u64;
pub fn manifold_meshgl64_merge_to_vert(mem: *mut u64, m: *const ManifoldMeshGL64) -> *mut u64;
pub fn manifold_meshgl64_run_index(mem: *mut u64, m: *const ManifoldMeshGL64) -> *mut u64;
pub fn manifold_meshgl64_run_original_id(mem: *mut u32, m: *const ManifoldMeshGL64)
-> *mut u32;
pub fn manifold_meshgl64_run_transform(mem: *mut f64, m: *const ManifoldMeshGL64) -> *mut f64;
pub fn manifold_meshgl64_face_id(mem: *mut u64, m: *const ManifoldMeshGL64) -> *mut u64;
pub fn manifold_meshgl64_halfedge_tangent(
mem: *mut f64,
m: *const ManifoldMeshGL64,
) -> *mut f64;
pub fn manifold_meshgl64_tolerance(m: *const ManifoldMeshGL64) -> f64;
pub fn manifold_meshgl64_run_flags_length(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_run_flags(mem: *mut u8, m: *const ManifoldMeshGL64) -> *mut u8;
pub fn manifold_meshgl64_num_run(m: *const ManifoldMeshGL64) -> usize;
pub fn manifold_meshgl64_update_normals(m: *mut ManifoldMeshGL64, normal_idx: c_int);
pub fn manifold_level_set(
mem: *mut ManifoldManifold,
sdf: ManifoldSdf,
bounds: *mut ManifoldBox,
edge_length: f64,
level: f64,
tolerance: f64,
ctx: *mut std::ffi::c_void,
) -> *mut ManifoldManifold;
pub fn manifold_level_set_seq(
mem: *mut ManifoldManifold,
sdf: ManifoldSdf,
bounds: *mut ManifoldBox,
edge_length: f64,
level: f64,
tolerance: f64,
ctx: *mut std::ffi::c_void,
) -> *mut ManifoldManifold;
pub fn manifold_manifold_empty_vec(mem: *mut ManifoldManifoldVec) -> *mut ManifoldManifoldVec;
pub fn manifold_manifold_vec(
mem: *mut ManifoldManifoldVec,
sz: usize,
) -> *mut ManifoldManifoldVec;
pub fn manifold_manifold_vec_reserve(ms: *mut ManifoldManifoldVec, sz: usize);
pub fn manifold_manifold_vec_length(ms: *const ManifoldManifoldVec) -> usize;
pub fn manifold_manifold_vec_get(
mem: *mut ManifoldManifold,
ms: *const ManifoldManifoldVec,
idx: usize,
) -> *mut ManifoldManifold;
pub fn manifold_manifold_vec_set(
ms: *mut ManifoldManifoldVec,
idx: usize,
m: *mut ManifoldManifold,
);
pub fn manifold_manifold_vec_push_back(ms: *mut ManifoldManifoldVec, m: *mut ManifoldManifold);
pub fn manifold_boolean(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
op: ManifoldOpType,
) -> *mut ManifoldManifold;
pub fn manifold_batch_boolean(
mem: *mut ManifoldManifold,
ms: *mut ManifoldManifoldVec,
op: ManifoldOpType,
) -> *mut ManifoldManifold;
pub fn manifold_union(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_difference(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_intersection(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_split(
mem_first: *mut ManifoldManifold,
mem_second: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> ManifoldManifoldPair;
pub fn manifold_minkowski_sum(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_minkowski_difference(
mem: *mut ManifoldManifold,
a: *const ManifoldManifold,
b: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_split_by_plane(
mem_first: *mut ManifoldManifold,
mem_second: *mut ManifoldManifold,
m: *const ManifoldManifold,
normal_x: f64,
normal_y: f64,
normal_z: f64,
offset: f64,
) -> ManifoldManifoldPair;
pub fn manifold_trim_by_plane(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
normal_x: f64,
normal_y: f64,
normal_z: f64,
offset: f64,
) -> *mut ManifoldManifold;
pub fn manifold_slice(
mem: *mut ManifoldPolygons,
m: *const ManifoldManifold,
height: f64,
) -> *mut ManifoldPolygons;
pub fn manifold_project(
mem: *mut ManifoldPolygons,
m: *const ManifoldManifold,
) -> *mut ManifoldPolygons;
pub fn manifold_hull(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_batch_hull(
mem: *mut ManifoldManifold,
ms: *mut ManifoldManifoldVec,
) -> *mut ManifoldManifold;
pub fn manifold_hull_pts(
mem: *mut ManifoldManifold,
ps: *const ManifoldVec3,
length: usize,
) -> *mut ManifoldManifold;
pub fn manifold_translate(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
x: f64,
y: f64,
z: f64,
) -> *mut ManifoldManifold;
pub fn manifold_rotate(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
x: f64,
y: f64,
z: f64,
) -> *mut ManifoldManifold;
pub fn manifold_scale(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
x: f64,
y: f64,
z: f64,
) -> *mut ManifoldManifold;
pub fn manifold_transform(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
x1: f64,
y1: f64,
z1: f64,
x2: f64,
y2: f64,
z2: f64,
x3: f64,
y3: f64,
z3: f64,
x4: f64,
y4: f64,
z4: f64,
) -> *mut ManifoldManifold;
pub fn manifold_mirror(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
nx: f64,
ny: f64,
nz: f64,
) -> *mut ManifoldManifold;
pub fn manifold_warp(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
fun: Option<unsafe extern "C" fn(f64, f64, f64, *mut std::ffi::c_void) -> ManifoldVec3>,
ctx: *mut std::ffi::c_void,
) -> *mut ManifoldManifold;
pub fn manifold_smooth_by_normals(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
normal_idx: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_smooth_out(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
min_sharp_angle: f64,
min_smoothness: f64,
) -> *mut ManifoldManifold;
pub fn manifold_refine(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
refine: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_refine_to_length(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
length: f64,
) -> *mut ManifoldManifold;
pub fn manifold_refine_to_tolerance(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
tolerance: f64,
) -> *mut ManifoldManifold;
pub fn manifold_set_tolerance(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
tolerance: f64,
) -> *mut ManifoldManifold;
pub fn manifold_simplify(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
tolerance: f64,
) -> *mut ManifoldManifold;
pub fn manifold_empty(mem: *mut ManifoldManifold) -> *mut ManifoldManifold;
pub fn manifold_copy(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_tetrahedron(mem: *mut ManifoldManifold) -> *mut ManifoldManifold;
pub fn manifold_cube(
mem: *mut ManifoldManifold,
x: f64,
y: f64,
z: f64,
center: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_cylinder(
mem: *mut ManifoldManifold,
height: f64,
radius_low: f64,
radius_high: f64,
circular_segments: c_int,
center: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_sphere(
mem: *mut ManifoldManifold,
radius: f64,
circular_segments: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_smooth(
mem: *mut ManifoldManifold,
mesh: *const ManifoldMeshGL,
half_edges: *const usize,
smoothness: *const f64,
n_idxs: usize,
) -> *mut ManifoldManifold;
pub fn manifold_smooth64(
mem: *mut ManifoldManifold,
mesh: *const ManifoldMeshGL64,
half_edges: *const usize,
smoothness: *const f64,
n_idxs: usize,
) -> *mut ManifoldManifold;
pub fn manifold_extrude(
mem: *mut ManifoldManifold,
cs: *const ManifoldPolygons,
height: f64,
slices: c_int,
twist_degrees: f64,
scale_x: f64,
scale_y: f64,
) -> *mut ManifoldManifold;
pub fn manifold_revolve(
mem: *mut ManifoldManifold,
cs: *const ManifoldPolygons,
circular_segments: c_int,
revolve_degrees: f64,
) -> *mut ManifoldManifold;
pub fn manifold_compose(
mem: *mut ManifoldManifold,
ms: *mut ManifoldManifoldVec,
) -> *mut ManifoldManifold;
pub fn manifold_decompose(
mem: *mut ManifoldManifoldVec,
m: *const ManifoldManifold,
) -> *mut ManifoldManifoldVec;
pub fn manifold_as_original(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
) -> *mut ManifoldManifold;
pub fn manifold_is_empty(m: *const ManifoldManifold) -> c_int;
pub fn manifold_status(m: *const ManifoldManifold) -> ManifoldError;
pub fn manifold_num_vert(m: *const ManifoldManifold) -> usize;
pub fn manifold_num_edge(m: *const ManifoldManifold) -> usize;
pub fn manifold_num_tri(m: *const ManifoldManifold) -> usize;
pub fn manifold_num_prop(m: *const ManifoldManifold) -> usize;
pub fn manifold_volume(m: *const ManifoldManifold) -> f64;
pub fn manifold_surface_area(m: *const ManifoldManifold) -> f64;
pub fn manifold_epsilon(m: *const ManifoldManifold) -> f64;
pub fn manifold_get_tolerance(m: *const ManifoldManifold) -> f64;
pub fn manifold_num_prop_vert(m: *const ManifoldManifold) -> usize;
pub fn manifold_genus(m: *const ManifoldManifold) -> c_int;
pub fn manifold_original_id(m: *const ManifoldManifold) -> c_int;
pub fn manifold_get_circular_segments(radius: f64) -> c_int;
pub fn manifold_reserve_ids(n: u32) -> u32;
pub fn manifold_set_properties(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
num_prop: c_int,
fun: Option<
unsafe extern "C" fn(*mut f64, ManifoldVec3, *const f64, *mut std::ffi::c_void),
>,
ctx: *mut std::ffi::c_void,
) -> *mut ManifoldManifold;
pub fn manifold_calculate_curvature(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
gaussian_idx: c_int,
mean_idx: c_int,
) -> *mut ManifoldManifold;
pub fn manifold_min_gap(
m: *const ManifoldManifold,
other: *const ManifoldManifold,
search_length: f64,
) -> f64;
pub fn manifold_calculate_normals(
mem: *mut ManifoldManifold,
m: *const ManifoldManifold,
normal_idx: c_int,
min_sharp_angle: f64,
) -> *mut ManifoldManifold;
pub fn manifold_ray_cast(
mem: *mut ManifoldRayHitVec,
m: *const ManifoldManifold,
origin_x: f64,
origin_y: f64,
origin_z: f64,
end_x: f64,
end_y: f64,
end_z: f64,
) -> *mut ManifoldRayHitVec;
pub fn manifold_ray_hit_vec_length(v: *const ManifoldRayHitVec) -> usize;
pub fn manifold_ray_hit_vec_get(v: *const ManifoldRayHitVec, idx: usize) -> ManifoldRayHit;
pub fn manifold_bounding_box(
mem: *mut ManifoldBox,
m: *const ManifoldManifold,
) -> *mut ManifoldBox;
pub fn manifold_box(
mem: *mut ManifoldBox,
x1: f64,
y1: f64,
z1: f64,
x2: f64,
y2: f64,
z2: f64,
) -> *mut ManifoldBox;
pub fn manifold_box_min(b: *const ManifoldBox) -> ManifoldVec3;
pub fn manifold_box_max(b: *const ManifoldBox) -> ManifoldVec3;
pub fn manifold_box_dimensions(b: *const ManifoldBox) -> ManifoldVec3;
pub fn manifold_box_center(b: *const ManifoldBox) -> ManifoldVec3;
pub fn manifold_box_scale(b: *const ManifoldBox) -> f64;
pub fn manifold_box_contains_pt(b: *const ManifoldBox, x: f64, y: f64, z: f64) -> c_int;
pub fn manifold_box_contains_box(a: *const ManifoldBox, b: *const ManifoldBox) -> c_int;
pub fn manifold_box_include_pt(b: *mut ManifoldBox, x: f64, y: f64, z: f64);
pub fn manifold_box_union(
mem: *mut ManifoldBox,
a: *const ManifoldBox,
b: *const ManifoldBox,
) -> *mut ManifoldBox;
pub fn manifold_box_transform(
mem: *mut ManifoldBox,
b: *const ManifoldBox,
x1: f64,
y1: f64,
z1: f64,
x2: f64,
y2: f64,
z2: f64,
x3: f64,
y3: f64,
z3: f64,
x4: f64,
y4: f64,
z4: f64,
) -> *mut ManifoldBox;
pub fn manifold_box_translate(
mem: *mut ManifoldBox,
b: *const ManifoldBox,
x: f64,
y: f64,
z: f64,
) -> *mut ManifoldBox;
pub fn manifold_box_mul(
mem: *mut ManifoldBox,
b: *const ManifoldBox,
x: f64,
y: f64,
z: f64,
) -> *mut ManifoldBox;
pub fn manifold_box_does_overlap_pt(b: *const ManifoldBox, x: f64, y: f64, z: f64) -> c_int;
pub fn manifold_box_does_overlap_box(a: *const ManifoldBox, b: *const ManifoldBox) -> c_int;
pub fn manifold_box_is_finite(b: *const ManifoldBox) -> c_int;
pub fn manifold_cross_section_empty(
mem: *mut ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_copy(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_of_simple_polygon(
mem: *mut ManifoldCrossSection,
p: *const ManifoldSimplePolygon,
fr: ManifoldFillRule,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_of_polygons(
mem: *mut ManifoldCrossSection,
p: *const ManifoldPolygons,
fr: ManifoldFillRule,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_square(
mem: *mut ManifoldCrossSection,
x: f64,
y: f64,
center: c_int,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_circle(
mem: *mut ManifoldCrossSection,
radius: f64,
circular_segments: c_int,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_compose(
mem: *mut ManifoldCrossSection,
csv: *mut ManifoldCrossSectionVec,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_decompose(
mem: *mut ManifoldCrossSectionVec,
cs: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSectionVec;
pub fn manifold_cross_section_empty_vec(
mem: *mut ManifoldCrossSectionVec,
) -> *mut ManifoldCrossSectionVec;
pub fn manifold_cross_section_vec(
mem: *mut ManifoldCrossSectionVec,
sz: usize,
) -> *mut ManifoldCrossSectionVec;
pub fn manifold_cross_section_vec_reserve(csv: *mut ManifoldCrossSectionVec, sz: usize);
pub fn manifold_cross_section_vec_length(csv: *const ManifoldCrossSectionVec) -> usize;
pub fn manifold_cross_section_vec_get(
mem: *mut ManifoldCrossSection,
csv: *const ManifoldCrossSectionVec,
idx: usize,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_vec_set(
csv: *mut ManifoldCrossSectionVec,
idx: usize,
cs: *mut ManifoldCrossSection,
);
pub fn manifold_cross_section_vec_push_back(
csv: *mut ManifoldCrossSectionVec,
cs: *mut ManifoldCrossSection,
);
pub fn manifold_cross_section_boolean(
mem: *mut ManifoldCrossSection,
a: *const ManifoldCrossSection,
b: *const ManifoldCrossSection,
op: ManifoldOpType,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_batch_boolean(
mem: *mut ManifoldCrossSection,
csv: *mut ManifoldCrossSectionVec,
op: ManifoldOpType,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_union(
mem: *mut ManifoldCrossSection,
a: *const ManifoldCrossSection,
b: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_difference(
mem: *mut ManifoldCrossSection,
a: *const ManifoldCrossSection,
b: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_intersection(
mem: *mut ManifoldCrossSection,
a: *const ManifoldCrossSection,
b: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_hull(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_batch_hull(
mem: *mut ManifoldCrossSection,
css: *mut ManifoldCrossSectionVec,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_hull_simple_polygon(
mem: *mut ManifoldCrossSection,
ps: *const ManifoldSimplePolygon,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_hull_polygons(
mem: *mut ManifoldCrossSection,
ps: *const ManifoldPolygons,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_translate(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
x: f64,
y: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_rotate(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
deg: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_scale(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
x: f64,
y: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_mirror(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
ax_x: f64,
ax_y: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_transform(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
x1: f64,
y1: f64,
x2: f64,
y2: f64,
x3: f64,
y3: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_warp_context(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
fun: Option<unsafe extern "C" fn(f64, f64, *mut std::ffi::c_void) -> ManifoldVec2>,
ctx: *mut std::ffi::c_void,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_simplify(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
epsilon: f64,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_offset(
mem: *mut ManifoldCrossSection,
cs: *const ManifoldCrossSection,
delta: f64,
jt: ManifoldJoinType,
miter_limit: f64,
circular_segments: c_int,
) -> *mut ManifoldCrossSection;
pub fn manifold_cross_section_area(cs: *const ManifoldCrossSection) -> f64;
pub fn manifold_cross_section_num_vert(cs: *const ManifoldCrossSection) -> usize;
pub fn manifold_cross_section_num_contour(cs: *const ManifoldCrossSection) -> usize;
pub fn manifold_cross_section_is_empty(cs: *const ManifoldCrossSection) -> c_int;
pub fn manifold_cross_section_bounds(
mem: *mut ManifoldRect,
cs: *const ManifoldCrossSection,
) -> *mut ManifoldRect;
pub fn manifold_cross_section_to_polygons(
mem: *mut ManifoldPolygons,
cs: *const ManifoldCrossSection,
) -> *mut ManifoldPolygons;
pub fn manifold_rect(
mem: *mut ManifoldRect,
x1: f64,
y1: f64,
x2: f64,
y2: f64,
) -> *mut ManifoldRect;
pub fn manifold_rect_min(r: *const ManifoldRect) -> ManifoldVec2;
pub fn manifold_rect_max(r: *const ManifoldRect) -> ManifoldVec2;
pub fn manifold_rect_dimensions(r: *const ManifoldRect) -> ManifoldVec2;
pub fn manifold_rect_center(r: *const ManifoldRect) -> ManifoldVec2;
pub fn manifold_rect_scale(r: *const ManifoldRect) -> f64;
pub fn manifold_rect_contains_pt(r: *const ManifoldRect, x: f64, y: f64) -> c_int;
pub fn manifold_rect_contains_rect(a: *const ManifoldRect, b: *const ManifoldRect) -> c_int;
pub fn manifold_rect_include_pt(r: *mut ManifoldRect, x: f64, y: f64);
pub fn manifold_rect_union(
mem: *mut ManifoldRect,
a: *const ManifoldRect,
b: *const ManifoldRect,
) -> *mut ManifoldRect;
pub fn manifold_rect_transform(
mem: *mut ManifoldRect,
r: *const ManifoldRect,
x1: f64,
y1: f64,
x2: f64,
y2: f64,
x3: f64,
y3: f64,
) -> *mut ManifoldRect;
pub fn manifold_rect_translate(
mem: *mut ManifoldRect,
r: *const ManifoldRect,
x: f64,
y: f64,
) -> *mut ManifoldRect;
pub fn manifold_rect_mul(
mem: *mut ManifoldRect,
r: *const ManifoldRect,
x: f64,
y: f64,
) -> *mut ManifoldRect;
pub fn manifold_rect_does_overlap_rect(a: *const ManifoldRect, r: *const ManifoldRect)
-> c_int;
pub fn manifold_rect_is_empty(r: *const ManifoldRect) -> c_int;
pub fn manifold_rect_is_finite(r: *const ManifoldRect) -> c_int;
pub fn manifold_triangulate(
mem: *mut ManifoldTriangulation,
ps: *const ManifoldPolygons,
epsilon: f64,
) -> *mut ManifoldTriangulation;
pub fn manifold_triangulation_num_tri(m: *const ManifoldTriangulation) -> usize;
pub fn manifold_triangulation_tri_verts(
mem: *mut i32,
m: *const ManifoldTriangulation,
) -> *mut i32;
pub fn manifold_set_min_circular_angle(degrees: f64);
pub fn manifold_set_min_circular_edge_length(length: f64);
pub fn manifold_set_circular_segments(number: c_int);
pub fn manifold_reset_to_circular_defaults();
#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
pub fn manifold_read_obj(
mem: *mut ManifoldManifold,
obj_file: *const std::ffi::c_char,
) -> *mut ManifoldManifold;
#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
pub fn manifold_meshgl64_read_obj(
mem: *mut ManifoldMeshGL64,
obj_file: *const std::ffi::c_char,
) -> *mut ManifoldMeshGL64;
#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
pub fn manifold_write_obj(
manifold: *const ManifoldManifold,
callback: Option<unsafe extern "C" fn(*mut std::ffi::c_char, *mut std::ffi::c_void)>,
args: *mut std::ffi::c_void,
);
#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
pub fn manifold_meshgl64_write_obj(
mesh: *const ManifoldMeshGL64,
callback: Option<unsafe extern "C" fn(*mut std::ffi::c_char, *mut std::ffi::c_void)>,
args: *mut std::ffi::c_void,
);
}