Blender  V3.3
bmesh_core.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #pragma once
4 
9 BMFace *BM_face_copy(BMesh *bm_dst, BMesh *bm_src, BMFace *f, bool copy_verts, bool copy_edges);
10 
11 typedef enum eBMCreateFlag {
14  BM_CREATE_NO_DOUBLE = (1 << 1),
20  BM_CREATE_SKIP_CD = (1 << 2),
22 
27  const float co[3],
28  const BMVert *v_example,
29  eBMCreateFlag create_flag);
38  BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *e_example, eBMCreateFlag create_flag);
49  BMVert **verts,
50  BMEdge **edges,
51  int len,
52  const BMFace *f_example,
53  eBMCreateFlag create_flag);
58  BMVert **vert_arr,
59  int len,
60  const BMFace *f_example,
61  eBMCreateFlag create_flag,
62  bool create_edges);
63 
73 
79 
83 void BM_face_kill(BMesh *bm, BMFace *f);
87 void BM_edge_kill(BMesh *bm, BMEdge *e);
91 void BM_vert_kill(BMesh *bm, BMVert *v);
92 
103 bool BM_edge_splice(BMesh *bm, BMEdge *e_dst, BMEdge *e_src);
116 bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src);
122 bool BM_vert_splice_check_double(BMVert *v_a, BMVert *v_b);
123 
134  BMFace *f,
135  int cd_loop_mdisp_offset,
136  bool use_loop_mdisp_flip);
137 
143 void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b);
144 
159 BMFace *BM_faces_join(BMesh *bm, BMFace **faces, int totface, bool do_del);
164  BMVert *v,
165  BMEdge **e_in,
166  int e_in_len,
167  bool copy_select,
168  BMVert ***r_vout,
169  int *r_vout_len);
174  BMesh *bm, BMVert *v, char hflag, bool copy_select, BMVert ***r_vout, int *r_vout_len);
176  BMesh *bm, BMVert *v_dst, BMVert *v_src, bool (*testfn)(BMEdge *, void *arg), void *arg);
177 
195  BMesh *bm, BMVert *v, BMVert ***r_vout, int *r_vout_len, bool copy_select);
207 void bmesh_kernel_edge_separate(BMesh *bm, BMEdge *e, BMLoop *l_sep, bool copy_select);
208 
248  BMFace *f,
249  BMLoop *l_v1,
250  BMLoop *l_v2,
251  BMLoop **r_l,
252 #ifdef USE_BMESH_HOLES
253  ListBase *holes,
254 #endif
255  BMEdge *example,
256  bool no_double);
257 
308  BMEdge *e_kill,
309  BMVert *v_kill,
310  bool do_del,
311  bool check_edge_exists,
312  bool kill_degenerate_faces,
313  bool kill_duplicate_faces);
333  BMEdge *e_kill,
334  BMVert *v_kill,
335  bool do_del,
336  bool check_edge_exists,
337  bool kill_degenerate_faces);
370 
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b)
Definition: bmesh_core.c:2651
BMFace * bmesh_kernel_split_face_make_edge(BMesh *bm, BMFace *f, BMLoop *l_v1, BMLoop *l_v2, BMLoop **r_l, BMEdge *example, bool no_double)
Split Face Make Edge (SFME)
Definition: bmesh_core.c:1339
void BM_face_verts_kill(BMesh *bm, BMFace *f)
Definition: bmesh_core.c:811
void bmesh_kernel_vert_separate(BMesh *bm, BMVert *v, BMVert ***r_vout, int *r_vout_len, bool copy_select)
Separate Vert.
Definition: bmesh_core.c:2082
bool BM_edge_splice(BMesh *bm, BMEdge *e_dst, BMEdge *e_src)
Splice Edge.
Definition: bmesh_core.c:2332
BMFace * BM_face_create_verts(BMesh *bm, BMVert **vert_arr, int len, const BMFace *f_example, eBMCreateFlag create_flag, bool create_edges)
Definition: bmesh_core.c:464
BMVert * bmesh_kernel_unglue_region_make_vert_multi_isolated(BMesh *bm, BMLoop *l_sep)
Definition: bmesh_core.c:2642
void bmesh_kernel_loop_reverse(BMesh *bm, BMFace *f, int cd_loop_mdisp_offset, bool use_loop_mdisp_flip)
Loop Reverse.
Definition: bmesh_core.c:965
bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src)
Splice Vert.
Definition: bmesh_core.c:2046
BMVert * BM_vert_create(BMesh *bm, const float co[3], const BMVert *v_example, eBMCreateFlag create_flag)
Main function for creating a new vertex.
Definition: bmesh_core.c:41
BMFace * bmesh_kernel_join_face_kill_edge(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
Join Face Kill Edge (JFKE)
Definition: bmesh_core.c:1881
void BM_vert_kill(BMesh *bm, BMVert *v)
Definition: bmesh_core.c:939
void BM_vert_separate(BMesh *bm, BMVert *v, BMEdge **e_in, int e_in_len, bool copy_select, BMVert ***r_vout, int *r_vout_len)
Definition: bmesh_core.c:2234
void BM_face_kill(BMesh *bm, BMFace *f)
Definition: bmesh_core.c:828
BMEdge * BM_edge_create(BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *e_example, eBMCreateFlag create_flag)
Main function for creating a new edge.
Definition: bmesh_core.c:123
void BM_face_kill_loose(BMesh *bm, BMFace *f)
Definition: bmesh_core.c:872
void BM_vert_separate_tested_edges(BMesh *bm, BMVert *v_dst, BMVert *v_src, bool(*testfn)(BMEdge *, void *arg), void *arg)
BMVert * bmesh_kernel_unglue_region_make_vert(BMesh *bm, BMLoop *l_sep)
Un-glue Region Make Vert (URMV)
Definition: bmesh_core.c:2400
void BM_face_edges_kill(BMesh *bm, BMFace *f)
Definition: bmesh_core.c:794
BMVert * bmesh_kernel_unglue_region_make_vert_multi(BMesh *bm, BMLoop **larr, int larr_len)
Definition: bmesh_core.c:2462
BMFace * BM_face_copy(BMesh *bm_dst, BMesh *bm_src, BMFace *f, bool copy_verts, bool copy_edges)
Definition: bmesh_core.c:279
void BM_edge_kill(BMesh *bm, BMEdge *e)
Definition: bmesh_core.c:927
eBMCreateFlag
Definition: bmesh_core.h:11
@ BM_CREATE_NOP
Definition: bmesh_core.h:12
@ BM_CREATE_SKIP_CD
Definition: bmesh_core.h:20
@ BM_CREATE_NO_DOUBLE
Definition: bmesh_core.h:14
BMVert * bmesh_kernel_split_edge_make_vert(BMesh *bm, BMVert *tv, BMEdge *e, BMEdge **r_e)
Split Edge Make Vert (SEMV)
Definition: bmesh_core.c:1478
void BM_vert_separate_hflag(BMesh *bm, BMVert *v, char hflag, bool copy_select, BMVert ***r_vout, int *r_vout_len)
Definition: bmesh_core.c:2267
BMFace * BM_face_create(BMesh *bm, BMVert **verts, BMEdge **edges, int len, const BMFace *f_example, eBMCreateFlag create_flag)
Definition: bmesh_core.c:395
BMEdge * bmesh_kernel_join_edge_kill_vert(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, bool do_del, bool check_edge_exists, bool kill_degenerate_faces, bool kill_duplicate_faces)
Join Edge Kill Vert (JEKV)
Definition: bmesh_core.c:1631
BMVert * bmesh_kernel_join_vert_kill_edge(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, bool do_del, bool check_edge_exists, bool kill_degenerate_faces)
Join Vert Kill Edge (JVKE)
Definition: bmesh_core.c:1798
BMFace * BM_faces_join(BMesh *bm, BMFace **faces, int totface, bool do_del)
Join Connected Faces.
Definition: bmesh_core.c:1123
void bmesh_kernel_edge_separate(BMesh *bm, BMEdge *e, BMLoop *l_sep, bool copy_select)
Separate Edge.
Definition: bmesh_core.c:2365
bool BM_vert_splice_check_double(BMVert *v_a, BMVert *v_b)
Definition: bmesh_core.c:2003
ATTR_WARN_UNUSED_RESULT BMesh * bm
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
int len
Definition: draw_manager.c:108
static float verts[][3]
static char faces[256]