[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59348] trunk/blender/source/blender: bmesh api cleanup, face creation args now accept an example face ( as with vertex and edge),
Campbell Barton
ideasman42 at gmail.com
Wed Aug 21 09:51:48 CEST 2013
Revision: 59348
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59348
Author: campbellbarton
Date: 2013-08-21 07:51:47 +0000 (Wed, 21 Aug 2013)
Log Message:
-----------
bmesh api cleanup, face creation args now accept an example face (as with vertex and edge),
also replace BM_face_create_quad_tri_v with BM_face_create_verts
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
trunk/blender/source/blender/bmesh/bmesh.h
trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
trunk/blender/source/blender/bmesh/intern/bmesh_construct.h
trunk/blender/source/blender/bmesh/intern/bmesh_core.c
trunk/blender/source/blender/bmesh/intern/bmesh_core.h
trunk/blender/source/blender/bmesh/intern/bmesh_log.c
trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
trunk/blender/source/blender/bmesh/operators/bmo_bridge.c
trunk/blender/source/blender/bmesh/operators/bmo_create.c
trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
trunk/blender/source/blender/bmesh/operators/bmo_fill_edgeloop.c
trunk/blender/source/blender/bmesh/operators/bmo_fill_grid.c
trunk/blender/source/blender/bmesh/operators/bmo_hull.c
trunk/blender/source/blender/bmesh/operators/bmo_inset.c
trunk/blender/source/blender/bmesh/operators/bmo_removedoubles.c
trunk/blender/source/blender/bmesh/operators/bmo_symmetrize.c
trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c
trunk/blender/source/blender/bmesh/tools/bmesh_edgenet.c
trunk/blender/source/blender/editors/mesh/editmesh_rip.c
trunk/blender/source/blender/modifiers/intern/MOD_skin.c
trunk/blender/source/blender/python/bmesh/bmesh_py_types.c
Modified: trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c 2013-08-21 07:51:47 UTC (rev 59348)
@@ -52,7 +52,7 @@
edges[j] = etable[ml->e];
}
- return BM_face_create(bm, verts, edges, mp->totloop, BM_CREATE_SKIP_CD);
+ return BM_face_create(bm, verts, edges, mp->totloop, NULL, BM_CREATE_SKIP_CD);
}
/**
Modified: trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-08-21 07:51:47 UTC (rev 59348)
@@ -302,9 +302,7 @@
/* ensure we never add existing face */
BLI_assert(BM_face_exists(v_tri, 3, NULL) == false);
- f = BM_face_create(bvh->bm, v_tri, e_tri, 3, BM_CREATE_NOP);
- // BM_elem_attrs_copy(bvh->bm, bvh->bm, f_example, f);
- f->mat_nr = f_example->mat_nr;
+ f = BM_face_create(bvh->bm, v_tri, e_tri, 3, f_example, BM_CREATE_NOP);
if (!BLI_ghash_haskey(bvh->bm_face_to_node, f)) {
Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/bmesh/bmesh.h 2013-08-21 07:51:47 UTC (rev 59348)
@@ -251,8 +251,8 @@
#include "intern/bmesh_operator_api.h"
#include "intern/bmesh_error.h"
+#include "intern/bmesh_core.h"
#include "intern/bmesh_construct.h"
-#include "intern/bmesh_core.h"
#include "intern/bmesh_edgeloop.h"
#include "intern/bmesh_interp.h"
#include "intern/bmesh_iterators.h"
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2013-08-21 07:51:47 UTC (rev 59348)
@@ -65,66 +65,12 @@
BMFace *BM_face_create_quad_tri(BMesh *bm,
BMVert *v1, BMVert *v2, BMVert *v3, BMVert *v4,
- const BMFace *example, const bool no_double)
+ const BMFace *f_example, const eBMCreateFlag create_flag)
{
BMVert *vtar[4] = {v1, v2, v3, v4};
- return BM_face_create_quad_tri_v(bm, vtar, v4 ? 4 : 3, example, no_double);
+ return BM_face_create_verts(bm, vtar, v4 ? 4 : 3, f_example, create_flag, true);
}
-BMFace *BM_face_create_quad_tri_v(BMesh *bm, BMVert **verts, int len, const BMFace *example, const bool no_double)
-{
- BMFace *f = NULL;
- bool is_overlap = false;
-
- /* sanity check - debug mode only */
- if (len == 3) {
- BLI_assert(verts[0] != verts[1]);
- BLI_assert(verts[0] != verts[2]);
- BLI_assert(verts[1] != verts[2]);
- }
- else if (len == 4) {
- BLI_assert(verts[0] != verts[1]);
- BLI_assert(verts[0] != verts[2]);
- BLI_assert(verts[0] != verts[3]);
-
- BLI_assert(verts[1] != verts[2]);
- BLI_assert(verts[1] != verts[3]);
-
- BLI_assert(verts[2] != verts[3]);
- }
- else {
- BLI_assert(0);
- }
-
-
- if (no_double) {
- /* check if face exists or overlaps */
- is_overlap = BM_face_exists(verts, len, &f);
- }
-
- /* make new face */
- if ((f == NULL) && (!is_overlap)) {
- BMEdge *edar[4] = {NULL};
- edar[0] = BM_edge_create(bm, verts[0], verts[1], NULL, BM_CREATE_NO_DOUBLE);
- edar[1] = BM_edge_create(bm, verts[1], verts[2], NULL, BM_CREATE_NO_DOUBLE);
- if (len == 4) {
- edar[2] = BM_edge_create(bm, verts[2], verts[3], NULL, BM_CREATE_NO_DOUBLE);
- edar[3] = BM_edge_create(bm, verts[3], verts[0], NULL, BM_CREATE_NO_DOUBLE);
- }
- else {
- edar[2] = BM_edge_create(bm, verts[2], verts[0], NULL, BM_CREATE_NO_DOUBLE);
- }
-
- f = BM_face_create(bm, verts, edar, len, BM_CREATE_NOP);
-
- if (example && f) {
- BM_elem_attrs_copy(bm, bm, example, f);
- }
- }
-
- return f;
-}
-
/**
* \brief copies face loop data from shared adjacent faces.
*
@@ -199,7 +145,8 @@
* #BM_face_create should be considered over this function as it
* avoids some unnecessary work.
*/
-BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, const int len, const int create_flag)
+BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, const int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag)
{
BMEdge **edges_sort = BLI_array_alloca(edges_sort, len);
BMVert **verts_sort = BLI_array_alloca(verts_sort, len + 1);
@@ -318,7 +265,7 @@
BM_ELEM_API_FLAG_DISABLE(verts_sort[i], _FLAG_MV);
}
- f = BM_face_create(bm, verts_sort, edges_sort, len, create_flag);
+ f = BM_face_create(bm, verts_sort, edges_sort, len, f_example, create_flag);
/* clean up flags */
for (i = 0; i < len; i++) {
@@ -346,7 +293,8 @@
* - Optionally create edges between vertices.
* - Uses verts so no need to find edges (handy when you only have verts)
*/
-BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len, const int create_flag,
+BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag,
const bool calc_winding, const bool create_edges)
{
BMEdge **edge_arr = BLI_array_alloca(edge_arr, len);
@@ -406,7 +354,8 @@
bm,
v_winding[winding[0]],
v_winding[winding[1]],
- edge_arr, len, create_flag);
+ edge_arr, len,
+ f_example, create_flag);
}
@@ -439,7 +388,8 @@
*
* \note Since this is a vcloud there is no direction.
*/
-BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len, const int create_flag)
+BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag)
{
AngleIndexPair *vang = BLI_array_alloca(vang, len);
BMVert **vert_arr_map = BLI_array_alloca(vert_arr_map, len);
@@ -552,7 +502,7 @@
vert_arr_map[i] = vert_arr[vang[i].index];
}
- f = BM_face_create_ngon_verts(bm, vert_arr_map, len, create_flag, true, true);
+ f = BM_face_create_ngon_verts(bm, vert_arr_map, len, f_example, create_flag, true, true);
return f;
}
@@ -923,7 +873,7 @@
j++;
} while ((l_iter = l_iter->next) != l_first);
- f_new = BM_face_create(bm_new, verts, edges, f->len, BM_CREATE_SKIP_CD);
+ f_new = BM_face_create(bm_new, verts, edges, f->len, NULL, BM_CREATE_SKIP_CD);
if (UNLIKELY(f_new == NULL)) {
return NULL;
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.h 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.h 2013-08-21 07:51:47 UTC (rev 59348)
@@ -29,21 +29,20 @@
struct BMAllocTemplate;
-BMFace *BM_face_create_quad_tri_v(BMesh *bm,
- BMVert **verts, int len,
- const BMFace *example, const bool no_double);
-
BMFace *BM_face_create_quad_tri(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v3, BMVert *v4,
- const BMFace *example, const bool no_double);
+ const BMFace *f_example, const eBMCreateFlag create_flag);
void BM_face_copy_shared(BMesh *bm, BMFace *f,
BMElemFilterFunc filter_fn, void *user_data);
-BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, const int len, const int create_flag);
-BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len, const int create_flag,
+BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, const int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag);
+BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag,
const bool calc_winding, const bool create_edges);
-BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len, const int create_flag);
+BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len,
+ const BMFace *f_example, const eBMCreateFlag create_flag);
void BMO_remove_tagged_faces(BMesh *bm, const short oflag);
void BMO_remove_tagged_edges(BMesh *bm, const short oflag);
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2013-08-21 07:40:19 UTC (rev 59347)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2013-08-21 07:51:47 UTC (rev 59348)
@@ -56,7 +56,8 @@
/**
* \brief Main function for creating a new vertex.
*/
-BMVert *BM_vert_create(BMesh *bm, const float co[3], const BMVert *example, const eBMCreateFlag create_flag)
+BMVert *BM_vert_create(BMesh *bm, const float co[3],
+ const BMVert *v_example, const eBMCreateFlag create_flag)
{
BMVert *v = BLI_mempool_calloc(bm->vpool);
@@ -86,10 +87,10 @@
}
if (!(create_flag & BM_CREATE_SKIP_CD)) {
- if (example) {
+ if (v_example) {
int *keyi;
- BM_elem_attrs_copy(bm, bm, example, v);
+ BM_elem_attrs_copy(bm, bm, v_example, v);
/* exception: don't copy the original shapekey index */
keyi = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_SHAPE_KEYINDEX);
@@ -113,7 +114,8 @@
* \note Duplicate edges are supported by the API however users should _never_ see them.
* so unless you need a unique edge or know the edge won't exist, you should call with \a no_double = true
*/
-BMEdge *BM_edge_create(BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *example, const eBMCreateFlag create_flag)
+BMEdge *BM_edge_create(BMesh *bm, BMVert *v1, BMVert *v2,
+ const BMEdge *e_example, const eBMCreateFlag create_flag)
{
BMEdge *e;
@@ -148,8 +150,8 @@
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list