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/modifiers/intern/MOD_edgesplit.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/modifiers/intern/MOD_edgesplit.c')
-rw-r--r--source/blender/modifiers/intern/MOD_edgesplit.c203
1 files changed, 97 insertions, 106 deletions
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c
index 751a70916ab..9c2ad13db94 100644
--- a/source/blender/modifiers/intern/MOD_edgesplit.c
+++ b/source/blender/modifiers/intern/MOD_edgesplit.c
@@ -43,124 +43,115 @@
static Mesh *doEdgeSplit(Mesh *mesh, EdgeSplitModifierData *emd)
{
- Mesh *result;
- BMesh *bm;
- BMIter iter;
- BMEdge *e;
- const float threshold = cosf(emd->split_angle + 0.000000175f);
- const bool do_split_angle = (emd->flags & MOD_EDGESPLIT_FROMANGLE) != 0 && emd->split_angle < (float)M_PI;
- const bool do_split_all = do_split_angle && emd->split_angle < FLT_EPSILON;
- const bool calc_face_normals = do_split_angle && !do_split_all;
-
- bm = BKE_mesh_to_bmesh_ex(
- mesh,
- &(struct BMeshCreateParams){0},
- &(struct BMeshFromMeshParams){
- .calc_face_normal = calc_face_normals,
- .add_key_index = false,
- .use_shapekey = false,
- .active_shapekey = 0,
- .cd_mask_extra = {.vmask = CD_MASK_ORIGINDEX, .emask = CD_MASK_ORIGINDEX, .pmask = CD_MASK_ORIGINDEX},
- });
-
- if (do_split_angle) {
- BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- /* check for 1 edge having 2 face users */
- BMLoop *l1, *l2;
- if ((l1 = e->l) &&
- (l2 = e->l->radial_next) != l1)
- {
- if (/* 3+ faces on this edge, always split */
- UNLIKELY(l1 != l2->radial_next) ||
- /* O° angle setting, we want to split on all edges. */
- do_split_all ||
- /* 2 face edge - check angle*/
- (dot_v3v3(l1->f->no, l2->f->no) < threshold))
- {
- BM_elem_flag_enable(e, BM_ELEM_TAG);
- }
- }
- }
- }
-
- if (emd->flags & MOD_EDGESPLIT_FROMFLAG) {
- BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- /* check for 2 or more edge users */
- if ((e->l) &&
- (e->l->next != e->l))
- {
- if (!BM_elem_flag_test(e, BM_ELEM_SMOOTH)) {
- BM_elem_flag_enable(e, BM_ELEM_TAG);
- }
- }
- }
- }
-
- BM_mesh_edgesplit(bm, false, true, false);
-
- /* BM_mesh_validate(bm); */ /* for troubleshooting */
-
- result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL);
- BM_mesh_free(bm);
-
- result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
- return result;
+ Mesh *result;
+ BMesh *bm;
+ BMIter iter;
+ BMEdge *e;
+ const float threshold = cosf(emd->split_angle + 0.000000175f);
+ const bool do_split_angle = (emd->flags & MOD_EDGESPLIT_FROMANGLE) != 0 &&
+ emd->split_angle < (float)M_PI;
+ const bool do_split_all = do_split_angle && emd->split_angle < FLT_EPSILON;
+ const bool calc_face_normals = do_split_angle && !do_split_all;
+
+ bm = BKE_mesh_to_bmesh_ex(mesh,
+ &(struct BMeshCreateParams){0},
+ &(struct BMeshFromMeshParams){
+ .calc_face_normal = calc_face_normals,
+ .add_key_index = false,
+ .use_shapekey = false,
+ .active_shapekey = 0,
+ .cd_mask_extra = {.vmask = CD_MASK_ORIGINDEX,
+ .emask = CD_MASK_ORIGINDEX,
+ .pmask = CD_MASK_ORIGINDEX},
+ });
+
+ if (do_split_angle) {
+ BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
+ /* check for 1 edge having 2 face users */
+ BMLoop *l1, *l2;
+ if ((l1 = e->l) && (l2 = e->l->radial_next) != l1) {
+ if (/* 3+ faces on this edge, always split */
+ UNLIKELY(l1 != l2->radial_next) ||
+ /* O° angle setting, we want to split on all edges. */
+ do_split_all ||
+ /* 2 face edge - check angle*/
+ (dot_v3v3(l1->f->no, l2->f->no) < threshold)) {
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ }
+ }
+ }
+ }
+
+ if (emd->flags & MOD_EDGESPLIT_FROMFLAG) {
+ BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
+ /* check for 2 or more edge users */
+ if ((e->l) && (e->l->next != e->l)) {
+ if (!BM_elem_flag_test(e, BM_ELEM_SMOOTH)) {
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ }
+ }
+ }
+ }
+
+ BM_mesh_edgesplit(bm, false, true, false);
+
+ /* BM_mesh_validate(bm); */ /* for troubleshooting */
+
+ result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL);
+ BM_mesh_free(bm);
+
+ result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
+ return result;
}
static void initData(ModifierData *md)
{
- EdgeSplitModifierData *emd = (EdgeSplitModifierData *) md;
+ EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md;
- /* default to 30-degree split angle, sharpness from both angle & flag */
- emd->split_angle = DEG2RADF(30.0f);
- emd->flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG;
+ /* default to 30-degree split angle, sharpness from both angle & flag */
+ emd->split_angle = DEG2RADF(30.0f);
+ emd->flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG;
}
-static Mesh *applyModifier(
- ModifierData *md,
- const ModifierEvalContext *UNUSED(ctx),
- Mesh *mesh)
+static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
{
- Mesh *result;
- EdgeSplitModifierData *emd = (EdgeSplitModifierData *) md;
+ Mesh *result;
+ EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md;
- if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG)))
- return mesh;
+ if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG)))
+ return mesh;
- result = doEdgeSplit(mesh, emd);
+ result = doEdgeSplit(mesh, emd);
- return result;
+ return result;
}
-
ModifierTypeInfo modifierType_EdgeSplit = {
- /* name */ "EdgeSplit",
- /* structName */ "EdgeSplitModifierData",
- /* structSize */ sizeof(EdgeSplitModifierData),
- /* type */ eModifierTypeType_Constructive,
- /* flags */ eModifierTypeFlag_AcceptsMesh |
- eModifierTypeFlag_AcceptsCVs |
- eModifierTypeFlag_SupportsMapping |
- eModifierTypeFlag_SupportsEditmode |
- eModifierTypeFlag_EnableInEditmode,
-
- /* copyData */ modifier_copyData_generic,
-
- /* deformVerts */ NULL,
- /* deformMatrices */ NULL,
- /* deformVertsEM */ NULL,
- /* deformMatricesEM */ NULL,
- /* applyModifier */ applyModifier,
-
- /* initData */ initData,
- /* requiredDataMask */ NULL,
- /* freeData */ NULL,
- /* isDisabled */ NULL,
- /* updateDepsgraph */ NULL,
- /* dependsOnTime */ NULL,
- /* dependsOnNormals */ NULL,
- /* foreachObjectLink */ NULL,
- /* foreachIDLink */ NULL,
- /* foreachTexLink */ NULL,
- /* freeRuntimeData */ NULL,
+ /* name */ "EdgeSplit",
+ /* structName */ "EdgeSplitModifierData",
+ /* structSize */ sizeof(EdgeSplitModifierData),
+ /* type */ eModifierTypeType_Constructive,
+ /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs |
+ eModifierTypeFlag_SupportsMapping | eModifierTypeFlag_SupportsEditmode |
+ eModifierTypeFlag_EnableInEditmode,
+
+ /* copyData */ modifier_copyData_generic,
+
+ /* deformVerts */ NULL,
+ /* deformMatrices */ NULL,
+ /* deformVertsEM */ NULL,
+ /* deformMatricesEM */ NULL,
+ /* applyModifier */ applyModifier,
+
+ /* initData */ initData,
+ /* requiredDataMask */ NULL,
+ /* freeData */ NULL,
+ /* isDisabled */ NULL,
+ /* updateDepsgraph */ NULL,
+ /* dependsOnTime */ NULL,
+ /* dependsOnNormals */ NULL,
+ /* foreachObjectLink */ NULL,
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
+ /* freeRuntimeData */ NULL,
};