Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/bmesh/tools/bmesh_separate.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/bmesh/tools/bmesh_separate.c')
-rw-r--r--source/blender/bmesh/tools/bmesh_separate.c177
1 files changed, 87 insertions, 90 deletions
diff --git a/source/blender/bmesh/tools/bmesh_separate.c b/source/blender/bmesh/tools/bmesh_separate.c
index 9e8163c167b..59c82448fa9 100644
--- a/source/blender/bmesh/tools/bmesh_separate.c
+++ b/source/blender/bmesh/tools/bmesh_separate.c
@@ -30,100 +30,97 @@
#include "bmesh.h"
#include "intern/bmesh_private.h"
-#include "bmesh_separate.h" /* own include */
+#include "bmesh_separate.h" /* own include */
/**
* Split all faces that match `filter_fn`.
* \note
*/
-void BM_mesh_separate_faces(
- BMesh *bm,
- BMFaceFilterFunc filter_fn, void *user_data)
+void BM_mesh_separate_faces(BMesh *bm, BMFaceFilterFunc filter_fn, void *user_data)
{
- BMFace **faces_array_all = MEM_mallocN(bm->totface * sizeof(BMFace *), __func__);
- /*
- * - Create an array of faces based on 'filter_fn'.
- * First part of array for match, for non-match.
- *
- * - Enable all vertex tags, then clear all tagged vertices from 'faces_b'.
- *
- * - Loop over 'faces_a', checking each vertex,
- * splitting out any which aren't tagged (and therefor shared), disabling tags as we go.
- */
-
- BMFace *f;
- BMIter iter;
-
- uint faces_a_len = 0;
- uint faces_b_len = 0;
- {
- int i_a = 0;
- int i_b = bm->totface;
- BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
- faces_array_all[filter_fn(f, user_data) ? i_a++ : --i_b] = f;
- }
- faces_a_len = i_a;
- faces_b_len = bm->totface - i_a;
- }
-
- BMFace **faces_a = faces_array_all;
- BMFace **faces_b = faces_array_all + faces_a_len;
-
- /* Enable for all */
- BM_mesh_elem_hflag_enable_all(bm, BM_VERT, BM_ELEM_TAG, false);
-
- /* Disable vert tag on faces_b */
- for (uint i = 0; i < faces_b_len; i++) {
- BMLoop *l_iter, *l_first;
- l_iter = l_first = BM_FACE_FIRST_LOOP(faces_b[i]);
- do {
- BM_elem_flag_disable(l_iter->v, BM_ELEM_TAG);
- } while ((l_iter = l_iter->next) != l_first);
- }
-
-
- BLI_buffer_declare_static(BMLoop **, loop_split, 0, 128);
-
- /* Check shared verts ('faces_a' tag and disable) */
- for (uint i = 0; i < faces_a_len; i++) {
- BMLoop *l_iter, *l_first;
- l_iter = l_first = BM_FACE_FIRST_LOOP(faces_a[i]);
- do {
- if (!BM_elem_flag_test(l_iter->v, BM_ELEM_TAG)) {
- BMVert *v = l_iter->v;
- /* Enable, since we may visit this vertex again on other faces */
- BM_elem_flag_enable(v, BM_ELEM_TAG);
-
- /* We know the vertex is shared, collect all vertices and split them off. */
-
- /* Fill 'loop_split' */
- {
- BMEdge *e_first, *e_iter;
- e_iter = e_first = l_iter->e;
- do {
- if (e_iter->l != NULL) {
- BMLoop *l_radial_first, *l_radial_iter;
- l_radial_first = l_radial_iter = e_iter->l;
- do {
- if (l_radial_iter->v == v) {
- if (filter_fn(l_radial_iter->f, user_data)) {
- BLI_buffer_append(&loop_split, BMLoop *, l_radial_iter);
- }
- }
- } while ((l_radial_iter = l_radial_iter->radial_next) != l_radial_first);
- }
- } while ((e_iter = bmesh_disk_edge_next(e_iter, v)) != e_first);
- }
-
- /* Perform the split */
- BM_face_loop_separate_multi(bm, loop_split.data, loop_split.count);
-
- BLI_buffer_clear(&loop_split);
- }
- } while ((l_iter = l_iter->next) != l_first);
- }
-
- BLI_buffer_free(&loop_split);
-
- MEM_freeN(faces_array_all);
+ BMFace **faces_array_all = MEM_mallocN(bm->totface * sizeof(BMFace *), __func__);
+ /*
+ * - Create an array of faces based on 'filter_fn'.
+ * First part of array for match, for non-match.
+ *
+ * - Enable all vertex tags, then clear all tagged vertices from 'faces_b'.
+ *
+ * - Loop over 'faces_a', checking each vertex,
+ * splitting out any which aren't tagged (and therefor shared), disabling tags as we go.
+ */
+
+ BMFace *f;
+ BMIter iter;
+
+ uint faces_a_len = 0;
+ uint faces_b_len = 0;
+ {
+ int i_a = 0;
+ int i_b = bm->totface;
+ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ faces_array_all[filter_fn(f, user_data) ? i_a++ : --i_b] = f;
+ }
+ faces_a_len = i_a;
+ faces_b_len = bm->totface - i_a;
+ }
+
+ BMFace **faces_a = faces_array_all;
+ BMFace **faces_b = faces_array_all + faces_a_len;
+
+ /* Enable for all */
+ BM_mesh_elem_hflag_enable_all(bm, BM_VERT, BM_ELEM_TAG, false);
+
+ /* Disable vert tag on faces_b */
+ for (uint i = 0; i < faces_b_len; i++) {
+ BMLoop *l_iter, *l_first;
+ l_iter = l_first = BM_FACE_FIRST_LOOP(faces_b[i]);
+ do {
+ BM_elem_flag_disable(l_iter->v, BM_ELEM_TAG);
+ } while ((l_iter = l_iter->next) != l_first);
+ }
+
+ BLI_buffer_declare_static(BMLoop **, loop_split, 0, 128);
+
+ /* Check shared verts ('faces_a' tag and disable) */
+ for (uint i = 0; i < faces_a_len; i++) {
+ BMLoop *l_iter, *l_first;
+ l_iter = l_first = BM_FACE_FIRST_LOOP(faces_a[i]);
+ do {
+ if (!BM_elem_flag_test(l_iter->v, BM_ELEM_TAG)) {
+ BMVert *v = l_iter->v;
+ /* Enable, since we may visit this vertex again on other faces */
+ BM_elem_flag_enable(v, BM_ELEM_TAG);
+
+ /* We know the vertex is shared, collect all vertices and split them off. */
+
+ /* Fill 'loop_split' */
+ {
+ BMEdge *e_first, *e_iter;
+ e_iter = e_first = l_iter->e;
+ do {
+ if (e_iter->l != NULL) {
+ BMLoop *l_radial_first, *l_radial_iter;
+ l_radial_first = l_radial_iter = e_iter->l;
+ do {
+ if (l_radial_iter->v == v) {
+ if (filter_fn(l_radial_iter->f, user_data)) {
+ BLI_buffer_append(&loop_split, BMLoop *, l_radial_iter);
+ }
+ }
+ } while ((l_radial_iter = l_radial_iter->radial_next) != l_radial_first);
+ }
+ } while ((e_iter = bmesh_disk_edge_next(e_iter, v)) != e_first);
+ }
+
+ /* Perform the split */
+ BM_face_loop_separate_multi(bm, loop_split.data, loop_split.count);
+
+ BLI_buffer_clear(&loop_split);
+ }
+ } while ((l_iter = l_iter->next) != l_first);
+ }
+
+ BLI_buffer_free(&loop_split);
+
+ MEM_freeN(faces_array_all);
}