From e0597baed57fa7a9dfaf6dff6d0fa120784d21ea Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 7 Feb 2018 14:44:59 +0100 Subject: Remove Carve boolean We've got quite comprehensive BMesh based implementation, which is way easier for maintenance than abandoned Carve library. After all the time BMesh implementation was working on the same level of limitations about manifold meshes and touching edges than Carve. Is better to focus on maintaining one boolean implementation now. Reviewers: campbellbarton Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D3050 --- extern/carve/carve-capi.h | 164 ---------------------------------------------- 1 file changed, 164 deletions(-) delete mode 100644 extern/carve/carve-capi.h (limited to 'extern/carve/carve-capi.h') diff --git a/extern/carve/carve-capi.h b/extern/carve/carve-capi.h deleted file mode 100644 index f08ce418762..00000000000 --- a/extern/carve/carve-capi.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2014 Blender Foundation. - * All rights reserved. - * - * Contributor(s): Blender Foundation, - * Sergey Sharybin - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef __CARVE_CAPI_H__ -#define __CARVE_CAPI_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -struct CarveMeshDescr; - -// -// Importer from external storage to Carve module -// - -struct ImportMeshData; - -// Get number of vertices. -typedef int (*CarveImporter_GetNumVerts) (struct ImportMeshData *import_data); - -// Get number of edges. -typedef int (*CarveImporter_GetNumEdges) (struct ImportMeshData *import_data); - -// Get number of loops. -typedef int (*CarveImporter_GetNumLoops) (struct ImportMeshData *import_data); - -// Get number of polys. -typedef int (*CarveImporter_GetNumPolys) (struct ImportMeshData *import_data); - -// Get 3D coordinate of vertex with given index. -typedef void (*CarveImporter_GetVertCoord) (struct ImportMeshData *import_data, int vert_index, float coord[3]); - -// Get index of vertices which are adjacent to edge specified by its index. -typedef void (*CarveImporter_GetEdgeVerts) (struct ImportMeshData *import_data, int edge_index, int *v1, int *v2); - -// Get number of adjacent vertices to the poly specified by its index. -typedef int (*CarveImporter_GetPolyNumVerts) (struct ImportMeshData *import_data, int poly_index); - -// Get list of adjacent vertices to the poly specified by its index. -typedef void (*CarveImporter_GetPolyVerts) (struct ImportMeshData *import_data, int poly_index, int *verts); - -// Triangulate 2D polygon. -typedef int (*CarveImporter_Triangulate2DPoly) (struct ImportMeshData *import_data, - const float (*vertices)[2], int num_vertices, - unsigned int (*triangles)[3]); - -typedef struct CarveMeshImporter { - CarveImporter_GetNumVerts getNumVerts; - CarveImporter_GetNumEdges getNumEdges; - CarveImporter_GetNumLoops getNumLoops; - CarveImporter_GetNumPolys getNumPolys; - CarveImporter_GetVertCoord getVertCoord; - CarveImporter_GetEdgeVerts getEdgeVerts; - CarveImporter_GetPolyNumVerts getNumPolyVerts; - CarveImporter_GetPolyVerts getPolyVerts; - CarveImporter_Triangulate2DPoly triangulate2DPoly; -} CarveMeshImporter; - -// -// Exporter from Carve module to external storage -// - -struct ExportMeshData; - -// Initialize arrays for geometry. -typedef void (*CarveExporter_InitGeomArrays) (struct ExportMeshData *export_data, - int num_verts, int num_edges, - int num_loops, int num_polys); - -// Set coordinate of vertex with given index. -typedef void (*CarveExporter_SetVert) (struct ExportMeshData *export_data, - int vert_index, float coord[3], - int which_orig_mesh, int orig_vert_index); - -// Set vertices which are adjacent to the edge specified by its index. -typedef void (*CarveExporter_SetEdge) (struct ExportMeshData *export_data, - int edge_index, int v1, int v2, - int which_orig_mesh, int orig_edge_index); - -// Set adjacent loops to the poly specified by its index. -typedef void (*CarveExporter_SetPoly) (struct ExportMeshData *export_data, - int poly_index, int start_loop, int num_loops, - int which_orig_mesh, int orig_poly_index); - -// Set list vertex and edge which are adjacent to loop with given index. -typedef void (*CarveExporter_SetLoop) (struct ExportMeshData *export_data, - int loop_index, int vertex, int edge, - int which_orig_mesh, int orig_loop_index); - -// Get edge index from a loop index for a given original mesh. -// -// A bit of a bummer to access original operands data on export stage, -// but Blender side still does have this information in derived meshes -// and we use API to get this data instead of duplicating it in Carve -// API side. This is because of optimizations reasons. -typedef int (*CarveExporter_MapLoopToEdge) (struct ExportMeshData *export_data, - int which_mesh, int loop_index); - -typedef struct CarveMeshExporter { - CarveExporter_InitGeomArrays initGeomArrays; - CarveExporter_SetVert setVert; - CarveExporter_SetEdge setEdge; - CarveExporter_SetPoly setPoly; - CarveExporter_SetLoop setLoop; - CarveExporter_MapLoopToEdge mapLoopToEdge; -} CarveMeshExporter; - -enum { - CARVE_OP_UNION, - CARVE_OP_INTERSECTION, - CARVE_OP_A_MINUS_B, -}; - -enum { - CARVE_MESH_NONE, - CARVE_MESH_LEFT, - CARVE_MESH_RIGHT -}; - -struct CarveMeshDescr *carve_addMesh(struct ImportMeshData *import_data, - CarveMeshImporter *mesh_importer); - -void carve_deleteMesh(struct CarveMeshDescr *mesh_descr); - -bool carve_performBooleanOperation(struct CarveMeshDescr *left_mesh, - struct CarveMeshDescr *right_mesh, - int operation, - struct CarveMeshDescr **output_mesh); - -void carve_exportMesh(struct CarveMeshDescr *mesh_descr, - CarveMeshExporter *mesh_exporter, - struct ExportMeshData *export_data); - -void carve_unionIntersections(struct CarveMeshDescr **left_mesh_r, struct CarveMeshDescr **right_mesh_r); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // __CARVE_CAPI_H__ -- cgit v1.2.3