[Bf-blender-cvs] [9c29803255e] master: Transform: Draw edge considered in the slide value

Germano Cavalcante noreply at git.blender.org
Mon Jun 29 17:19:32 CEST 2020


Commit: 9c29803255e09c3b8e8f92c459374e61c251187c
Author: Germano Cavalcante
Date:   Mon Jun 29 12:18:59 2020 -0300
Branches: master
https://developer.blender.org/rB9c29803255e09c3b8e8f92c459374e61c251187c

Transform: Draw edge considered in the slide value

Useful for identifying how the value is used and which edge
is considered in the snap.

===================================================================

M	source/blender/editors/transform/transform_mode_edge_slide.c

===================================================================

diff --git a/source/blender/editors/transform/transform_mode_edge_slide.c b/source/blender/editors/transform/transform_mode_edge_slide.c
index 737b3001d62..76b45d7fd36 100644
--- a/source/blender/editors/transform/transform_mode_edge_slide.c
+++ b/source/blender/editors/transform/transform_mode_edge_slide.c
@@ -1133,129 +1133,139 @@ static eRedrawFlag handleEventEdgeSlide(struct TransInfo *t, const struct wmEven
 
 void drawEdgeSlide(TransInfo *t)
 {
-  if ((t->mode == TFM_EDGE_SLIDE) && edgeSlideFirstGet(t)) {
-    const EdgeSlideParams *slp = t->custom.mode.data;
-    EdgeSlideData *sld = edgeSlideFirstGet(t);
-    const bool is_clamp = !(t->flag & T_ALT_TRANSFORM);
+  if (t->mode != TFM_EDGE_SLIDE) {
+    return;
+  }
 
-    /* Even mode */
-    if ((slp->use_even == true) || (is_clamp == false)) {
-      const float line_size = UI_GetThemeValuef(TH_OUTLINE_WIDTH) + 0.5f;
+  EdgeSlideData *sld = edgeSlideFirstGet(t);
+  if (sld == NULL) {
+    return;
+  }
 
-      GPU_depth_test(false);
+  const EdgeSlideParams *slp = t->custom.mode.data;
+  const bool is_clamp = !(t->flag & T_ALT_TRANSFORM);
 
-      GPU_blend(true);
-      GPU_blend_set_func_separate(
-          GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
+  const float line_size = UI_GetThemeValuef(TH_OUTLINE_WIDTH) + 0.5f;
 
-      GPU_matrix_push();
-      GPU_matrix_mul(TRANS_DATA_CONTAINER_FIRST_OK(t)->obedit->obmat);
+  GPU_depth_test(false);
 
-      uint pos = GPU_vertformat_attr_add(
-          immVertexFormat(), "pos", GPU_COMP_F32, 3, GPU_FETCH_FLOAT);
+  GPU_blend(true);
+  GPU_blend_set_func_separate(
+      GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
 
-      immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
+  GPU_matrix_push();
+  GPU_matrix_mul(TRANS_DATA_CONTAINER_FIRST_OK(t)->obedit->obmat);
 
-      if (slp->use_even == true) {
-        float co_a[3], co_b[3], co_mark[3];
-        TransDataEdgeSlideVert *curr_sv = &sld->sv[sld->curr_sv_index];
-        const float fac = (slp->perc + 1.0f) / 2.0f;
-        const float ctrl_size = UI_GetThemeValuef(TH_FACEDOT_SIZE) + 1.5f;
-        const float guide_size = ctrl_size - 0.5f;
-        const int alpha_shade = -30;
+  uint pos = GPU_vertformat_attr_add(immVertexFormat(), "pos", GPU_COMP_F32, 3, GPU_FETCH_FLOAT);
 
-        add_v3_v3v3(co_a, curr_sv->v_co_orig, curr_sv->dir_side[0]);
-        add_v3_v3v3(co_b, curr_sv->v_co_orig, curr_sv->dir_side[1]);
+  immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
 
-        GPU_line_width(line_size);
-        immUniformThemeColorShadeAlpha(TH_EDGE_SELECT, 80, alpha_shade);
-        immBeginAtMost(GPU_PRIM_LINES, 4);
-        if (curr_sv->v_side[0]) {
-          immVertex3fv(pos, curr_sv->v_side[0]->co);
-          immVertex3fv(pos, curr_sv->v_co_orig);
-        }
+  if (slp->use_even == true) {
+    /* Even mode */
+    float co_a[3], co_b[3], co_mark[3];
+    TransDataEdgeSlideVert *curr_sv = &sld->sv[sld->curr_sv_index];
+    const float fac = (slp->perc + 1.0f) / 2.0f;
+    const float ctrl_size = UI_GetThemeValuef(TH_FACEDOT_SIZE) + 1.5f;
+    const float guide_size = ctrl_size - 0.5f;
+    const int alpha_shade = -30;
+
+    add_v3_v3v3(co_a, curr_sv->v_co_orig, curr_sv->dir_side[0]);
+    add_v3_v3v3(co_b, curr_sv->v_co_orig, curr_sv->dir_side[1]);
+
+    GPU_line_width(line_size);
+    immUniformThemeColorShadeAlpha(TH_EDGE_SELECT, 80, alpha_shade);
+    immBeginAtMost(GPU_PRIM_LINES, 4);
+    if (curr_sv->v_side[0]) {
+      immVertex3fv(pos, curr_sv->v_side[0]->co);
+      immVertex3fv(pos, curr_sv->v_co_orig);
+    }
+    if (curr_sv->v_side[1]) {
+      immVertex3fv(pos, curr_sv->v_side[1]->co);
+      immVertex3fv(pos, curr_sv->v_co_orig);
+    }
+    immEnd();
+
+    {
+      float *co_test = NULL;
+      if (slp->flipped) {
         if (curr_sv->v_side[1]) {
-          immVertex3fv(pos, curr_sv->v_side[1]->co);
-          immVertex3fv(pos, curr_sv->v_co_orig);
+          co_test = curr_sv->v_side[1]->co;
         }
-        immEnd();
-
-        {
-          float *co_test = NULL;
-          if (slp->flipped) {
-            if (curr_sv->v_side[1]) {
-              co_test = curr_sv->v_side[1]->co;
-            }
-          }
-          else {
-            if (curr_sv->v_side[0]) {
-              co_test = curr_sv->v_side[0]->co;
-            }
-          }
-
-          if (co_test != NULL) {
-            immUniformThemeColorShadeAlpha(TH_SELECT, -30, alpha_shade);
-            GPU_point_size(ctrl_size);
-            immBegin(GPU_PRIM_POINTS, 1);
-            immVertex3fv(pos, co_test);
-            immEnd();
-          }
+      }
+      else {
+        if (curr_sv->v_side[0]) {
+          co_test = curr_sv->v_side[0]->co;
         }
+      }
 
-        immUniformThemeColorShadeAlpha(TH_SELECT, 255, alpha_shade);
-        GPU_point_size(guide_size);
+      if (co_test != NULL) {
+        immUniformThemeColorShadeAlpha(TH_SELECT, -30, alpha_shade);
+        GPU_point_size(ctrl_size);
         immBegin(GPU_PRIM_POINTS, 1);
-        interp_line_v3_v3v3v3(co_mark, co_b, curr_sv->v_co_orig, co_a, fac);
-        immVertex3fv(pos, co_mark);
+        immVertex3fv(pos, co_test);
         immEnd();
       }
-      else {
-        if (is_clamp == false) {
-          const int side_index = sld->curr_side_unclamp;
-          TransDataEdgeSlideVert *sv;
-          int i;
-          const int alpha_shade = -160;
-
-          GPU_line_width(line_size);
-          immUniformThemeColorShadeAlpha(TH_EDGE_SELECT, 80, alpha_shade);
-          immBegin(GPU_PRIM_LINES, sld->totsv * 2);
+    }
 
-          /* TODO(campbell): Loop over all verts  */
-          sv = sld->sv;
-          for (i = 0; i < sld->totsv; i++, sv++) {
-            float a[3], b[3];
+    immUniformThemeColorShadeAlpha(TH_SELECT, 255, alpha_shade);
+    GPU_point_size(guide_size);
+    immBegin(GPU_PRIM_POINTS, 1);
+    interp_line_v3_v3v3v3(co_mark, co_b, curr_sv->v_co_orig, co_a, fac);
+    immVertex3fv(pos, co_mark);
+    immEnd();
+  }
+  else if (is_clamp == false) {
+    const int side_index = sld->curr_side_unclamp;
+    TransDataEdgeSlideVert *sv;
+    int i;
+    const int alpha_shade = -160;
 
-            if (!is_zero_v3(sv->dir_side[side_index])) {
-              copy_v3_v3(a, sv->dir_side[side_index]);
-            }
-            else {
-              copy_v3_v3(a, sv->dir_side[!side_index]);
-            }
+    GPU_line_width(line_size);
+    immUniformThemeColorShadeAlpha(TH_EDGE_SELECT, 80, alpha_shade);
+    immBegin(GPU_PRIM_LINES, sld->totsv * 2);
 
-            mul_v3_fl(a, 100.0f);
-            negate_v3_v3(b, a);
-            add_v3_v3(a, sv->v_co_orig);
-            add_v3_v3(b, sv->v_co_orig);
+    /* TODO(campbell): Loop over all verts  */
+    sv = sld->sv;
+    for (i = 0; i < sld->totsv; i++, sv++) {
+      float a[3], b[3];
 
-            immVertex3fv(pos, a);
-            immVertex3fv(pos, b);
-          }
-          immEnd();
-        }
-        else {
-          BLI_assert(0);
-        }
+      if (!is_zero_v3(sv->dir_side[side_index])) {
+        copy_v3_v3(a, sv->dir_side[side_index]);
+      }
+      else {
+        copy_v3_v3(a, sv->dir_side[!side_index]);
       }
 
-      immUnbindProgram();
-
-      GPU_matrix_pop();
-
-      GPU_blend(false);
+      mul_v3_fl(a, 100.0f);
+      negate_v3_v3(b, a);
+      add_v3_v3(a, sv->v_co_orig);
+      add_v3_v3(b, sv->v_co_orig);
 
-      GPU_depth_test(true);
+      immVertex3fv(pos, a);
+      immVertex3fv(pos, b);
     }
+    immEnd();
   }
+  else {
+    /* Common case. */
+    TransDataEdgeSlideVert *curr_sv = &sld->sv[sld->curr_sv_index];
+    const int alpha_shade = -30;
+
+    GPU_line_width(line_size);
+    immUniformThemeColorShadeAlpha(TH_EDGE_SELECT, 80, alpha_shade);
+    immBeginAtMost(GPU_PRIM_LINES, 2);
+    immVertex3fv(pos, curr_sv->v_side[sld->curr_side_unclamp]->co);
+    immVertex3fv(pos, curr_sv->v_co_orig);
+    immEnd();
+  }
+
+  immUnbindProgram();
+
+  GPU_matrix_pop();
+
+  GPU_blend(false);
+
+  GPU_depth_test(true);
 }
 
 static void edge_slide_snap_apply(TransInfo *t, float *value)



More information about the Bf-blender-cvs mailing list