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_bevel.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_bevel.c')
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c350
1 files changed, 183 insertions, 167 deletions
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index 567c74effe0..32a020a35ff 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -45,38 +45,40 @@
static void initData(ModifierData *md)
{
- BevelModifierData *bmd = (BevelModifierData *) md;
-
- bmd->value = 0.1f;
- bmd->res = 1;
- bmd->flags = 0;
- bmd->val_flags = MOD_BEVEL_AMT_OFFSET;
- bmd->lim_flags = 0;
- bmd->e_flags = 0;
- bmd->edge_flags = 0;
- bmd->face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE;
- bmd->miter_inner = MOD_BEVEL_MITER_SHARP;
- bmd->miter_outer = MOD_BEVEL_MITER_SHARP;
- bmd->spread = 0.1f;
- bmd->mat = -1;
- bmd->profile = 0.5f;
- bmd->bevel_angle = DEG2RADF(30.0f);
- bmd->defgrp_name[0] = '\0';
+ BevelModifierData *bmd = (BevelModifierData *)md;
+
+ bmd->value = 0.1f;
+ bmd->res = 1;
+ bmd->flags = 0;
+ bmd->val_flags = MOD_BEVEL_AMT_OFFSET;
+ bmd->lim_flags = 0;
+ bmd->e_flags = 0;
+ bmd->edge_flags = 0;
+ bmd->face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE;
+ bmd->miter_inner = MOD_BEVEL_MITER_SHARP;
+ bmd->miter_outer = MOD_BEVEL_MITER_SHARP;
+ bmd->spread = 0.1f;
+ bmd->mat = -1;
+ bmd->profile = 0.5f;
+ bmd->bevel_angle = DEG2RADF(30.0f);
+ bmd->defgrp_name[0] = '\0';
}
static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag)
{
- modifier_copyData_generic(md_src, md_dst, flag);
+ modifier_copyData_generic(md_src, md_dst, flag);
}
-static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
+static void requiredDataMask(Object *UNUSED(ob),
+ ModifierData *md,
+ CustomData_MeshMasks *r_cddata_masks)
{
- BevelModifierData *bmd = (BevelModifierData *)md;
+ BevelModifierData *bmd = (BevelModifierData *)md;
- /* ask for vertexgroups if we need them */
- if (bmd->defgrp_name[0] != '\0') {
- r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT;
- }
+ /* ask for vertexgroups if we need them */
+ if (bmd->defgrp_name[0] != '\0') {
+ r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT;
+ }
}
/*
@@ -84,154 +86,168 @@ static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_Me
*/
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
{
- Mesh *result;
- BMesh *bm;
- BMIter iter;
- BMEdge *e;
- BMVert *v;
- float weight, weight2;
- int vgroup = -1;
- MDeformVert *dvert = NULL;
- BevelModifierData *bmd = (BevelModifierData *) md;
- const float threshold = cosf(bmd->bevel_angle + 0.000000175f);
- const bool vertex_only = (bmd->flags & MOD_BEVEL_VERT) != 0;
- const bool do_clamp = !(bmd->flags & MOD_BEVEL_OVERLAP_OK);
- const int offset_type = bmd->val_flags;
- const float value = bmd->value;
- const int mat = CLAMPIS(bmd->mat, -1, ctx->object->totcol - 1);
- const bool loop_slide = (bmd->flags & MOD_BEVEL_EVEN_WIDTHS) == 0;
- const bool mark_seam = (bmd->edge_flags & MOD_BEVEL_MARK_SEAM);
- const bool mark_sharp = (bmd->edge_flags & MOD_BEVEL_MARK_SHARP);
- bool harden_normals = (bmd->flags & MOD_BEVEL_HARDEN_NORMALS);
- const int face_strength_mode = bmd->face_str_mode;
- const int miter_outer = bmd->miter_outer;
- const int miter_inner = bmd->miter_inner;
- const float spread = bmd->spread;
-
- bm = BKE_mesh_to_bmesh_ex(
- mesh,
- &(struct BMeshCreateParams){0},
- &(struct BMeshFromMeshParams){
- .calc_face_normal = true,
- .add_key_index = false,
- .use_shapekey = false,
- .active_shapekey = 0,
- /* XXX We probably can use CD_MASK_BAREMESH_ORIGDINDEX here instead (also for other modifiers cases)? */
- .cd_mask_extra = {.vmask = CD_MASK_ORIGINDEX, .emask = CD_MASK_ORIGINDEX, .pmask = CD_MASK_ORIGINDEX},
- });
-
- if ((bmd->lim_flags & MOD_BEVEL_VGROUP) && bmd->defgrp_name[0])
- MOD_get_vgroup(ctx->object, mesh, bmd->defgrp_name, &dvert, &vgroup);
-
- if (vertex_only) {
- BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
- if (!BM_vert_is_manifold(v))
- continue;
- if (bmd->lim_flags & MOD_BEVEL_WEIGHT) {
- weight = BM_elem_float_data_get(&bm->vdata, v, CD_BWEIGHT);
- if (weight == 0.0f)
- continue;
- }
- else if (vgroup != -1) {
- weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(v), vgroup);
- /* Check is against 0.5 rather than != 0.0 because cascaded bevel modifiers will
- * interpolate weights for newly created vertices, and may cause unexpected "selection" */
- if (weight < 0.5f)
- continue;
- }
- BM_elem_flag_enable(v, BM_ELEM_TAG);
- }
- }
- else if (bmd->lim_flags & MOD_BEVEL_ANGLE) {
- BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- /* check for 1 edge having 2 face users */
- BMLoop *l_a, *l_b;
- if (BM_edge_loop_pair(e, &l_a, &l_b)) {
- if (dot_v3v3(l_a->f->no, l_b->f->no) < threshold) {
- BM_elem_flag_enable(e, BM_ELEM_TAG);
- BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
- BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
- }
- }
- }
- }
- else {
- /* crummy, is there a way just to operator on all? - campbell */
- BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
- if (BM_edge_is_manifold(e)) {
- if (bmd->lim_flags & MOD_BEVEL_WEIGHT) {
- weight = BM_elem_float_data_get(&bm->edata, e, CD_BWEIGHT);
- if (weight == 0.0f)
- continue;
- }
- else if (vgroup != -1) {
- weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v1), vgroup);
- weight2 = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v2), vgroup);
- if (weight < 0.5f || weight2 < 0.5f)
- continue;
- }
- BM_elem_flag_enable(e, BM_ELEM_TAG);
- BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
- BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
- }
- }
- }
-
- if (harden_normals && !(((Mesh *)ctx->object->data)->flag & ME_AUTOSMOOTH)) {
- modifier_setError(md, "Enable 'Auto Smooth' option in mesh settings for hardening");
- harden_normals = false;
- }
-
- BM_mesh_bevel(bm, value, offset_type, bmd->res, bmd->profile,
- vertex_only, bmd->lim_flags & MOD_BEVEL_WEIGHT, do_clamp,
- dvert, vgroup, mat, loop_slide, mark_seam, mark_sharp,
- harden_normals, face_strength_mode,
- miter_outer, miter_inner, spread, mesh->smoothresh);
-
- result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL);
-
- BLI_assert(bm->vtoolflagpool == NULL &&
- bm->etoolflagpool == NULL &&
- bm->ftoolflagpool == NULL); /* make sure we never alloc'd these */
- BM_mesh_free(bm);
-
- result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
-
- return result;
+ Mesh *result;
+ BMesh *bm;
+ BMIter iter;
+ BMEdge *e;
+ BMVert *v;
+ float weight, weight2;
+ int vgroup = -1;
+ MDeformVert *dvert = NULL;
+ BevelModifierData *bmd = (BevelModifierData *)md;
+ const float threshold = cosf(bmd->bevel_angle + 0.000000175f);
+ const bool vertex_only = (bmd->flags & MOD_BEVEL_VERT) != 0;
+ const bool do_clamp = !(bmd->flags & MOD_BEVEL_OVERLAP_OK);
+ const int offset_type = bmd->val_flags;
+ const float value = bmd->value;
+ const int mat = CLAMPIS(bmd->mat, -1, ctx->object->totcol - 1);
+ const bool loop_slide = (bmd->flags & MOD_BEVEL_EVEN_WIDTHS) == 0;
+ const bool mark_seam = (bmd->edge_flags & MOD_BEVEL_MARK_SEAM);
+ const bool mark_sharp = (bmd->edge_flags & MOD_BEVEL_MARK_SHARP);
+ bool harden_normals = (bmd->flags & MOD_BEVEL_HARDEN_NORMALS);
+ const int face_strength_mode = bmd->face_str_mode;
+ const int miter_outer = bmd->miter_outer;
+ const int miter_inner = bmd->miter_inner;
+ const float spread = bmd->spread;
+
+ bm = BKE_mesh_to_bmesh_ex(
+ mesh,
+ &(struct BMeshCreateParams){0},
+ &(struct BMeshFromMeshParams){
+ .calc_face_normal = true,
+ .add_key_index = false,
+ .use_shapekey = false,
+ .active_shapekey = 0,
+ /* XXX We probably can use CD_MASK_BAREMESH_ORIGDINDEX here instead (also for other modifiers cases)? */
+ .cd_mask_extra = {.vmask = CD_MASK_ORIGINDEX,
+ .emask = CD_MASK_ORIGINDEX,
+ .pmask = CD_MASK_ORIGINDEX},
+ });
+
+ if ((bmd->lim_flags & MOD_BEVEL_VGROUP) && bmd->defgrp_name[0])
+ MOD_get_vgroup(ctx->object, mesh, bmd->defgrp_name, &dvert, &vgroup);
+
+ if (vertex_only) {
+ BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
+ if (!BM_vert_is_manifold(v))
+ continue;
+ if (bmd->lim_flags & MOD_BEVEL_WEIGHT) {
+ weight = BM_elem_float_data_get(&bm->vdata, v, CD_BWEIGHT);
+ if (weight == 0.0f)
+ continue;
+ }
+ else if (vgroup != -1) {
+ weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(v), vgroup);
+ /* Check is against 0.5 rather than != 0.0 because cascaded bevel modifiers will
+ * interpolate weights for newly created vertices, and may cause unexpected "selection" */
+ if (weight < 0.5f)
+ continue;
+ }
+ BM_elem_flag_enable(v, BM_ELEM_TAG);
+ }
+ }
+ else if (bmd->lim_flags & MOD_BEVEL_ANGLE) {
+ BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
+ /* check for 1 edge having 2 face users */
+ BMLoop *l_a, *l_b;
+ if (BM_edge_loop_pair(e, &l_a, &l_b)) {
+ if (dot_v3v3(l_a->f->no, l_b->f->no) < threshold) {
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
+ BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
+ }
+ }
+ }
+ }
+ else {
+ /* crummy, is there a way just to operator on all? - campbell */
+ BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
+ if (BM_edge_is_manifold(e)) {
+ if (bmd->lim_flags & MOD_BEVEL_WEIGHT) {
+ weight = BM_elem_float_data_get(&bm->edata, e, CD_BWEIGHT);
+ if (weight == 0.0f)
+ continue;
+ }
+ else if (vgroup != -1) {
+ weight = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v1), vgroup);
+ weight2 = defvert_array_find_weight_safe(dvert, BM_elem_index_get(e->v2), vgroup);
+ if (weight < 0.5f || weight2 < 0.5f)
+ continue;
+ }
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
+ BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
+ }
+ }
+ }
+
+ if (harden_normals && !(((Mesh *)ctx->object->data)->flag & ME_AUTOSMOOTH)) {
+ modifier_setError(md, "Enable 'Auto Smooth' option in mesh settings for hardening");
+ harden_normals = false;
+ }
+
+ BM_mesh_bevel(bm,
+ value,
+ offset_type,
+ bmd->res,
+ bmd->profile,
+ vertex_only,
+ bmd->lim_flags & MOD_BEVEL_WEIGHT,
+ do_clamp,
+ dvert,
+ vgroup,
+ mat,
+ loop_slide,
+ mark_seam,
+ mark_sharp,
+ harden_normals,
+ face_strength_mode,
+ miter_outer,
+ miter_inner,
+ spread,
+ mesh->smoothresh);
+
+ result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL);
+
+ BLI_assert(bm->vtoolflagpool == NULL && bm->etoolflagpool == NULL &&
+ bm->ftoolflagpool == NULL); /* make sure we never alloc'd these */
+ BM_mesh_free(bm);
+
+ result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
+
+ return result;
}
static bool dependsOnNormals(ModifierData *UNUSED(md))
{
- return true;
+ return true;
}
ModifierTypeInfo modifierType_Bevel = {
- /* name */ "Bevel",
- /* structName */ "BevelModifierData",
- /* structSize */ sizeof(BevelModifierData),
- /* type */ eModifierTypeType_Constructive,
- /* flags */ eModifierTypeFlag_AcceptsMesh |
- eModifierTypeFlag_SupportsEditmode |
- eModifierTypeFlag_EnableInEditmode |
- eModifierTypeFlag_AcceptsCVs,
-
- /* copyData */ copyData,
-
- /* deformVerts */ NULL,
- /* deformMatrices */ NULL,
- /* deformVertsEM */ NULL,
- /* deformMatricesEM */ NULL,
- /* applyModifier */ applyModifier,
-
- /* initData */ initData,
- /* requiredDataMask */ requiredDataMask,
- /* freeData */ NULL,
- /* isDisabled */ NULL,
- /* updateDepsgraph */ NULL,
- /* dependsOnTime */ NULL,
- /* dependsOnNormals */ dependsOnNormals,
- /* foreachObjectLink */ NULL,
- /* foreachIDLink */ NULL,
- /* foreachTexLink */ NULL,
- /* freeRuntimeData */ NULL,
+ /* name */ "Bevel",
+ /* structName */ "BevelModifierData",
+ /* structSize */ sizeof(BevelModifierData),
+ /* type */ eModifierTypeType_Constructive,
+ /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode |
+ eModifierTypeFlag_EnableInEditmode | eModifierTypeFlag_AcceptsCVs,
+
+ /* copyData */ copyData,
+
+ /* deformVerts */ NULL,
+ /* deformMatrices */ NULL,
+ /* deformVertsEM */ NULL,
+ /* deformMatricesEM */ NULL,
+ /* applyModifier */ applyModifier,
+
+ /* initData */ initData,
+ /* requiredDataMask */ requiredDataMask,
+ /* freeData */ NULL,
+ /* isDisabled */ NULL,
+ /* updateDepsgraph */ NULL,
+ /* dependsOnTime */ NULL,
+ /* dependsOnNormals */ dependsOnNormals,
+ /* foreachObjectLink */ NULL,
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
+ /* freeRuntimeData */ NULL,
};