8d624592ae79d7eeec3ee2f924330fecaa3d424d
[blender-staging.git] / source / blender / bmesh / intern / bmesh_construct.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Joseph Eagar.
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22
23 #ifndef __BMESH_CONSTRUCT_H__
24 #define __BMESH_CONSTRUCT_H__
25
26 /** \file blender/bmesh/intern/bmesh_construct.h
27  *  \ingroup bmesh
28  */
29
30 BMFace *BM_face_create_quad_tri_v(BMesh *bm,
31                                   BMVert **verts, int len,
32                                   const BMFace *example, const int nodouble);
33
34 BMFace *BM_face_create_quad_tri(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v3, BMVert *v4,
35                                 const BMFace *example, const int nodouble);
36
37 void BM_face_copy_shared(BMesh *bm, BMFace *f);
38
39 BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, int len, int nodouble);
40
41 void BMO_remove_tagged_faces(BMesh *bm, const short oflag);
42 void BMO_remove_tagged_edges(BMesh *bm, const short oflag);
43 void BMO_remove_tagged_verts(BMesh *bm, const short oflag);
44
45 void BMO_remove_tagged_context(BMesh *bm, const short oflag, const int type);
46
47 void BM_elem_attrs_copy(BMesh *source_mesh, BMesh *target_mesh, const void *source, void *target);
48
49 BMesh *BM_mesh_copy(BMesh *bmold);
50
51 char  BM_face_flag_from_mflag(const char  mflag);
52 char  BM_edge_flag_from_mflag(const short mflag);
53 char  BM_vert_flag_from_mflag(const char  mflag);
54 char  BM_face_flag_to_mflag(BMFace *f);
55 short BM_edge_flag_to_mflag(BMEdge *e);
56 char  BM_vert_flag_to_mflag(BMVert *v);
57
58 #endif /* __BMESH_CONSTRUCT_H__ */