|
Blender
V2.59
|
00001 /* 00002 * BME_private.h jan 2007 00003 * 00004 * low level, 'private' function prototypes for bmesh kernel. 00005 * 00006 * $Id: bmesh_private.h 35247 2011-02-27 20:40:57Z jesterking $ 00007 * 00008 * ***** BEGIN GPL LICENSE BLOCK ***** 00009 * 00010 * This program is free software; you can redistribute it and/or 00011 * modify it under the terms of the GNU General Public License 00012 * as published by the Free Software Foundation; either version 2 00013 * of the License, or (at your option) any later version. The Blender 00014 * Foundation also sells licenses for use in proprietary software under 00015 * the Blender License. See http://www.blender.org/BL/ for information 00016 * about this. 00017 * 00018 * This program is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 * GNU General Public License for more details. 00022 * 00023 * You should have received a copy of the GNU General Public License 00024 * along with this program; if not, write to the Free Software Foundation, 00025 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00026 * 00027 * The Original Code is Copyright (C) 2004 Blender Foundation. 00028 * All rights reserved. 00029 * 00030 * The Original Code is: all of this file. 00031 * 00032 * Contributor(s): Geoffrey Bantle. 00033 * 00034 * ***** END GPL LICENSE BLOCK ***** 00035 */ 00036 00042 #ifndef BMESH_PRIVATE 00043 #define BMESH_PRIVATE 00044 00045 #include "BKE_bmesh.h" 00046 00047 /*ALLOCATION/DEALLOCATION*/ 00048 struct BME_Vert *BME_addvertlist(struct BME_Mesh *bm, struct BME_Vert *example); 00049 struct BME_Edge *BME_addedgelist(struct BME_Mesh *bm, struct BME_Vert *v1, struct BME_Vert *v2, struct BME_Edge *example); 00050 struct BME_Poly *BME_addpolylist(struct BME_Mesh *bm, struct BME_Poly *example); 00051 struct BME_Loop *BME_create_loop(struct BME_Mesh *bm, struct BME_Vert *v, struct BME_Edge *e, struct BME_Poly *f, struct BME_Loop *example); 00052 00053 void BME_free_vert(struct BME_Mesh *bm, struct BME_Vert *v); 00054 void BME_free_edge(struct BME_Mesh *bm, struct BME_Edge *e); 00055 void BME_free_poly(struct BME_Mesh *bm, struct BME_Poly *f); 00056 void BME_free_loop(struct BME_Mesh *bm, struct BME_Loop *l); 00057 00058 /*DOUBLE CIRCULAR LINKED LIST FUNCTIONS*/ 00059 void BME_cycle_append(void *h, void *nt); 00060 int BME_cycle_remove(void *h, void *remn); 00061 int BME_cycle_validate(int len, void *h); 00062 /*DISK CYCLE MANAGMENT*/ 00063 int BME_disk_append_edge(struct BME_Edge *e, struct BME_Vert *v); 00064 void BME_disk_remove_edge(struct BME_Edge *e, struct BME_Vert *v); 00065 /*RADIAL CYCLE MANAGMENT*/ 00066 void BME_radial_append(struct BME_Edge *e, struct BME_Loop *l); 00067 void BME_radial_remove_loop(struct BME_Loop *l, struct BME_Edge *e); 00068 00069 /*MISC FUNCTIONS*/ 00070 int BME_edge_swapverts(struct BME_Edge *e, struct BME_Vert *orig, struct BME_Vert *new); /*relink edge*/ 00071 int BME_disk_hasedge(struct BME_Vert *v, struct BME_Edge *e); 00072 00073 /*Error reporting. Shouldnt be called by tools ever.*/ 00074 void BME_error(void); 00075 #endif