Peter Harman
da3f323113
(C bindings) Pass additional data to level set SDF function ( #427 )
...
Allows a developer to pass some context to the level set function in the C FFI bindings, such as a pointer to an object in the host language, so that parallel calls can be threadsafe.
2023-07-13 12:50:40 -07:00
Geoff deRosenroll
709021d9d2
Remove RectClip API + Rect::AsCrossSection fix ( #478 )
...
Following discussion on #455 , this removes RectClip from our API, as it does not provide the same guarantees that Clipper2's regular boolean clipping operations give us (that make sure that CrossSections can be extruded successfully).
Also, this fixes AsCrossSection which was returning empty CrossSections due to incorrect winding followed by a Positive fill rule union operation. Now it is working as advertised, while skipping over the needless clipping by implementing it as a CrossSection constructor (building a PathsD directly).
2023-07-05 10:41:03 -07:00
Geoff deRosenroll
2f8e3174f7
Update C bindings to curvature and set properites additions ( #451 )
...
Add C bindings to `Manifold::ReserveIDs`, `Manifold::SetProperties`, and `Manifold::CalculateCurvature`.
2023-06-14 23:08:53 -07:00
Emmett Lalish
e727b115c0
Change curvature API ( #448 )
...
* new curvature API compiles
* tests pass
* update JS example and fix bindings
2023-06-09 22:36:15 -07:00
Geoff deRosenroll
2643c291ed
Use quality globals instead of arc tolerance for offset ( #444 )
2023-06-01 11:52:55 -07:00
Geoff deRosenroll
e1ebc66425
(C) Only link MeshIO when MANIFOLD_EXPORT is on ( #436 )
...
Only link MeshIO in C bindings when `MANIFOLD_EXPORT` is defined. MeshIO related code has been better consolidated to limit the number of `#ifdef` blocks required.
2023-05-21 00:14:36 -07:00
Geoff deRosenroll
812ca5c30f
Add manifold_import_meshgl ( #434 )
...
Adds missing C binding to MeshIO::ImportMesh
2023-05-16 16:48:40 -07:00
Geoff deRosenroll
cdce9e7618
Improve handling of invalid shape construction. ( #385 )
...
Add `InvalidConstruction` to `Manifold::Error` and return empty manifolds with it set when manifold construction is attempted with invalid parameters
- zero / negative dimensions for Cube
- zero / negative radius for Sphere
- zero / negative height for Extrude
- empty CrossSection for Extrude/Revolve
Also, Circle and Square have been updated to return empty CrossSections for similar arguments.
2023-03-22 21:39:26 -07:00
Geoff deRosenroll
2a63971983
Add missing C bindings + revamp composition with opaque vectors ( #382 )
...
- Add bindings to `CrossSection::{Compose,Decompose,NumVert,NumContour,Warp}`
- Add bindings to `Boolean` and `BatchBoolean` for both `Manifold` and `CrossSection`
- Add `ManifoldManifoldVec` and `ManifoldCrossSectionVec` opaque types for `std::vector` pointers to help clean up bindings involving vectors (particularly when they are returned with dynamic size, *e.g.* `manifold_decompose`
- Remove two-step Components workaround previously introduced to allow return of C array from `manifold_decompose`
2023-03-19 22:19:19 -07:00
Geoff deRosenroll
61d87c503c
SimplePolygon/Polygons accessors for C bindings ( #369 )
2023-03-14 22:11:48 -07:00
Geoff deRosenroll
83131c672e
Add Mirror transformation method to Manifold ( #354 )
...
Add Mirror transformation (over plane through origin described by given normal) method to Manifold and corresponding C binding.
2023-03-07 23:54:27 -08:00
Geoff deRosenroll
bd8da6ce1e
Add CrossSection and Rect to C bindings ( #353 )
...
* + CrossSection and Rect type interfaces and method functions
* `manifold_extrude` and `manifold_revolve` take `ManifoldCrossSection*`
* fix manifoldc extrude test (`ManifoldCrossSection*` argument)
2023-03-07 12:30:28 -08:00
Emmett Lalish
2c597d1eef
make PolyVert private ( #343 )
...
* make PolyVert private
* fix python
2023-02-28 10:03:34 -08:00
Emmett Lalish
e6bb87b2bb
change enum case ( #325 )
...
* change enum case
* fix C enums
* more fixes
* another fix
2023-02-16 13:32:28 -08:00
Rafael
5331b68485
Added missing JS bindings (from discussion in #317 ) ( #320 )
...
* Added missing JS bindings (from discussion in #317 )
* Fix formatting
* Add reserveIDs JS bindings
* Use numRun instead of numMatrix
* Make numProp, triVerts and vertProperties required options in Mesh ctor.
* Rename MeshJS originalID to runOriginalID, and transform to runTransform
* Fix formatting with clang-format
* Trigger CI
* Added missing C bindings
* Rename matrix to transform in JS type definitions
* Rename numMatrix to numRun in JS type defs
almost forgot this one again
* JS bindings, transform index -> run
2023-02-14 20:52:23 -08:00
Emmett Lalish
4415cfce46
Transform relations ( #315 )
...
* added transforms output
* removed meshids
* read MeshGL runs, IDs, and transforms
* cleanup
* replaced lambdas
* refactor reserveIDs
* refactored reference initialization
* added round-trip test
* added multi-material round trip test
* added faceID round trip test
* back to const inputs
* added missing error types
* shorten CI timeouts
* update docs
2023-02-07 09:50:43 -08:00
Geoff deRosenroll
bbb1fabcac
Remove Mesh from interface + memcpy depuplication ( #313 )
2023-01-29 08:34:56 -08:00
Emmett Lalish and Geoff deRosenroll
f43dded234
Multi-material example ( #309 )
...
* removed BufferGeometryUtils
* replaced three.js with gltf-transform
* textured sphere working
* added cubeUV
* added textures
* added relation and sorting to MeshGL
* working textures example!
* added faceID
* removed MeshRelation
* some more removal
* fix output for no properties
* test cleanup
* Add new MeshGL accessors (replacing MeshRelation) (#311 )
+ new meshgl accessors + remove mesh_relation_size
* removed meshID from public API
* added input checking for MeshGL
* remove C api
---------
Co-authored-by: Geoff deRosenroll <geoffderosenroll@gmail.com >
2023-01-28 13:02:37 -08:00
Geoff deRosenroll
05f9ceb999
Remove manifold_meshgl_vert_normal from header (impl gone) ( #310 )
...
Remove meshgl_vert_normal from header (impl gone)
2023-01-26 08:03:29 -08:00
Emmett Lalish and Geoff deRosenroll
422c7f26d9
Property output ( #290 )
...
* first pass, boolean math needs refactor to work
* refactored property interpolation
* finished edge_op update
* updated sort
* updated MeshGL
* meshGL -> manifold
* existing tests pass
* prod CI
* fixed floating point error
* construct MeshGL from Mesh
* size fix
* added basic testing
* added property refinement test
* added property boolean test
* bug fix?
* fixed tolerance chacking
* fixed segfault
* fixed more bugs
* fixed mod bug
* basic properties tests passing
* added test
* fixed shared properties
* fixed duplicate merge entries
* compacting property verts
* tightened tests, fixed bug
* added MeshGL export
* fixed more bugs
* fixed coplanar tests
* removed old mesh relation from tests
* fixed property output, but still have extra propVerts
* removed barycentric from MeshRelation
* rename BaryRef to TriRef
* refactored boolean property creation
* moved GetBarycentric back out of the public API
* CreateProperties handles continuous and discontinuous properties
* avoid nan
* widened testing precision
* Update manifoldc to MeshGL breaking changes (#306 )
* Update manifoldc to MeshGL breaking changes
* Update to latest MeshRelation/TriRef changes
* updated WASM bindings
* attempt at updating three.js example
* updated JS
* fixed examples
Co-authored-by: Geoff deRosenroll <geoffderosenroll@gmail.com >
2023-01-21 21:41:33 -08:00
Geoff deRosenroll
a7b457db74
C bindings to facilitate static FFI bindings ( #292 )
...
* + c bindings to facilitate static FFI bindings
Squashed commit of the following:
commit a05f9b0e0ab079b95c29b4641ae928f02be219f4
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Dec 10 16:21:47 2022 -0800
Add flag (default on) for python bindings
Signed-off-by: Geoff deRosenroll <geoffderosenroll@gmail.com >
commit ce5b601fc7578fa43edbf7363a7b625d1d27a1de
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Dec 9 23:45:29 2022 -0800
conv function naming consistency
commit 1b50cf077dada8c3bc13d77bfa1c8f0a406c047d
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Tue Dec 6 17:42:18 2022 -0800
manifold_level_set_seq to C API (force sequential)
commit 77e06daf92e7014ce153a336ed685b9370e965c0
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Tue Dec 6 17:24:10 2022 -0800
Use an optional executionpolicy param in LevelSet
This allows bindings to avoid breaking their runtime locks while passing
in function pointers without introducing another compile flag.
commit 12c62b1e33cdacd07f056859fa2038dfd1f62170
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Dec 5 15:09:41 2022 -0800
Better section comments
commit 24f1d5107e24f41d3860fe6dea4832a523989eb9
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Dec 2 12:01:50 2022 -0800
Add missing management functions for Components
commit a7d5aae8550c4ace458e78314eab04a3cf5f2053
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Thu Dec 1 23:45:45 2022 -0800
Break Decompose up to avoid repetition in C binds
commit a650a1531dc52610db8e6009e82e247d7f256d3e
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sun Nov 27 22:41:38 2022 -0800
Add manifold_get_properties
commit 97a58396cd8e6c5fad698f1280d02d78e0b51ded
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 26 22:53:42 2022 -0800
circular segment functions corrected to static
commit c9c1ca7ec599b5f14401c85efde19481d86226f8
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Thu Nov 24 21:19:11 2022 -0800
polygons from dbl ptr of SimplePolygon
commit 8e5390aa729817d0cc652f92a64e6850e4e16e9b
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Wed Nov 23 12:16:44 2022 -0800
compose and decompose switched to double ptrs
commit 45c78c3e1aa0eaab8622c77b69221226af06861c
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Tue Nov 22 11:40:32 2022 -0800
Add manifold copy and empty constructors
commit cfc06fe55cd4a508005385bcdb4037ed89695f80
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 21 15:03:00 2022 -0800
Add MANIFOLD_SEQ_SDF to avoid runtime lock
commit e0f9d09e5ced6fcb2b83722542e99b20d0799e25
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sun Nov 20 16:56:50 2022 -0800
Add missing export related contructors.
commit 0cbaa4a6090c402f2a2483c35f5b3b7e82d8cf52
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sun Nov 20 16:03:43 2022 -0800
Add separate destruct functions
commit fd6c1c250e6b91114b0203b40a941fa73e3473ec
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 17:29:12 2022 -0800
More consistent array handling
commit ec1eef84153b13bba0b5ae78a42084b634a9d9b1
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 16:52:07 2022 -0800
Replace array args with pointers
commit 9079cbf7bb788e1b8eb992cbe1e3e51dfc36f1ce
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 15:00:47 2022 -0800
Revert "Switch back to funptr struct args for simplicity"
This reverts commit dc78841af654bf81c41e74795bac0f724af59dd0.
commit 62c1078fe9b10c88df86da0a5275f47581dad275
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 14:52:37 2022 -0800
Switch back to funptr struct args for simplicity
commit d30992db9a4224235246531a5ddf1a034e8e0c1a
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 14:06:12 2022 -0800
Avoid needing to pass in vec struct for funptrs
commit 2ba7bec1653a655c68bba3d2961fd280bc8e8f32
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Sat Nov 19 00:32:09 2022 -0800
Use template spec to avoid fun ptr to cuda
commit 1faf58b3887747af8659eb1be660e2fc40ff17f9
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 21:54:56 2022 -0800
Make fPIC more conditional.
commit 6215f89447f63753ca0dd2f2fcee88c7aaf5e548
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 21:35:09 2022 -0800
Avoid passing dynamic lambda to GPU
commit 30fa3dc323df8962e3802a58f346b813a8a759f5
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 18:02:04 2022 -0800
note and temporary hack RE cuda compilation
commit bb4dfe93cb8e0e7b582450f6d0c0d8d5ba5cef9a
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 17:21:25 2022 -0800
Set graphlite library to OBJECT
commit e803da50b983c931c69e42fe3fea30aff534034b
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 16:04:28 2022 -0800
Convert sublibraries to OBJECT to avoid archives
commit d0e9d176e79f18c645e538a5df19263d11630fcd
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Fri Nov 18 15:28:15 2022 -0800
Add missing polygon size and deletion funcs
commit 7db72848b9012d9f1a69b28ad878fb65f4524fc3
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Tue Nov 15 22:26:17 2022 -0800
Remove static flag (control with shared flag)
commit 5ae33f34716998e3d8b3368c619b81f145e34cfe
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Tue Nov 15 22:16:27 2022 -0800
Add options to avoid python bindings
commit 4181a586288db47acbd55f8e94e94ec4a7fcd252
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 14 22:02:10 2022 -0800
Rename to manifoldc
commit c4b14d64655ca2fb3ce8ac80af7390b959fed3c7
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 14 21:51:45 2022 -0800
Cleanup unused typedefs and simplify names
commit a282c90f1f62141ee5c2cd9303ccc8649f2a6bb3
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 14 21:23:07 2022 -0800
Placeholder (terrible) decompose binding
commit 9409e81abb2c3ba3ffb0983aa0c14e261d032cc2
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 14 20:37:02 2022 -0800
Turn on export in CLI instead
commit 9dad24b787af0420ef32719c86fb42e11af9a8c1
Author: Geoff deRosenroll <geoffderosenroll@gmail.com >
Date: Mon Nov 14 20:33:17 2022 -0800
"Rebased" WIP cbindings
* Turn on -fPIC whenever shared libs are being built
* Add parens to disambiguate sdf policy logic
* Bump public std from 14 to 17
* Add binding flags to workflow builds
* Add export when building cbindings
* Bump ubuntu version (PBR material deprecation)
* Select no-param overload of Decompose
* Add missing const to decompose sig overload
* Re-organize
* variable capitalization consistency
* Drop to std14 to test for regression fix
* Attempted old libassimp compatibility hack
* Rebump to std_17
* Temporarily disabled
TODO: investigate why this is failing on Mac, but not other backends.
* Remove unused tuple include
* Remove uneccesary auto-includes
* Properly disable Boolean_Close
* rename discrete -> numComponents + early return
* Rename discrete -> numComponents
* Rename conv.hh -> conv.h
* Prune auto-includes
* Note on level_set vs level_set_seq
* Set export on for c-bindings
* Adding C binding tests.
* Separate and don't require CBIND build/test
* Remove bad flag
* Take const char ptr for filename
* Remove testc executable
* Add tests from removed testc
2022-12-18 21:59:36 +01:00