[Bf-blender-cvs] [ceec9a6ddd1] temp-gpencil-bezier-stroke-type: GPencil: Fix drawing for Bezier weight paint

Antonio Vazquez noreply at git.blender.org
Mon Apr 26 16:14:09 CEST 2021


Commit: ceec9a6ddd1496e83ccb0919760df11dd91c2bda
Author: Antonio Vazquez
Date:   Mon Apr 26 16:14:03 2021 +0200
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rBceec9a6ddd1496e83ccb0919760df11dd91c2bda

GPencil: Fix drawing for Bezier weight paint

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

M	source/blender/draw/intern/draw_cache_impl_gpencil.c

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

diff --git a/source/blender/draw/intern/draw_cache_impl_gpencil.c b/source/blender/draw/intern/draw_cache_impl_gpencil.c
index 49b5e0fecd3..e18aaa4deb1 100644
--- a/source/blender/draw/intern/draw_cache_impl_gpencil.c
+++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c
@@ -696,16 +696,16 @@ typedef struct gpEditCurveIterData {
   int vgindex;
 } gpEditCurveIterData;
 
-static uint32_t gpencil_point_edit_flag(const bool layer_lock,
-                                        const bGPDspoint *pt,
-                                        int v,
-                                        int v_len)
+static uint32_t gpencil_point_edit_flag(
+    const bool layer_lock, const bool is_bezier, const bGPDspoint *pt, int v, int v_len)
 {
   uint32_t sflag = 0;
   SET_FLAG_FROM_TEST(sflag, (!layer_lock) && pt->flag & GP_SPOINT_SELECT, GP_EDIT_POINT_SELECTED);
   SET_FLAG_FROM_TEST(sflag, v == 0, GP_EDIT_STROKE_START);
   SET_FLAG_FROM_TEST(sflag, v == (v_len - 1), GP_EDIT_STROKE_END);
-  SET_FLAG_FROM_TEST(sflag, pt->runtime.pt_orig == NULL, GP_EDIT_POINT_DIMMED);
+  if (!is_bezier) {
+    SET_FLAG_FROM_TEST(sflag, pt->runtime.pt_orig == NULL, GP_EDIT_POINT_DIMMED);
+  }
   return sflag;
 }
 
@@ -724,6 +724,7 @@ static void gpencil_edit_stroke_iter_cb(bGPDlayer *gpl,
   const int v = gps->runtime.stroke_start + 1;
   MDeformVert *dvert = ((iter->vgindex > -1) && gps->dvert) ? gps->dvert : NULL;
   gpEditVert *vert_ptr = iter->verts + v;
+  const bool is_bezier = GPENCIL_STROKE_TYPE_BEZIER(gps);
 
   const bool layer_lock = (gpl->flag & GP_LAYER_LOCKED);
   uint32_t sflag = 0;
@@ -732,12 +733,14 @@ static void gpencil_edit_stroke_iter_cb(bGPDlayer *gpl,
   SET_FLAG_FROM_TEST(sflag, gpf->runtime.onion_id != 0.0f, GP_EDIT_MULTIFRAME);
 
   for (int i = 0; i < v_len; i++) {
-    vert_ptr->vflag = sflag | gpencil_point_edit_flag(layer_lock, &gps->points[i], i, v_len);
+    vert_ptr->vflag = sflag |
+                      gpencil_point_edit_flag(layer_lock, is_bezier, &gps->points[i], i, v_len);
     vert_ptr->weight = gpencil_point_edit_weight(dvert, i, iter->vgindex);
     vert_ptr++;
   }
   /* Draw line to first point to complete the loop for cyclic strokes. */
-  vert_ptr->vflag = sflag | gpencil_point_edit_flag(layer_lock, &gps->points[0], 0, v_len);
+  vert_ptr->vflag = sflag |
+                    gpencil_point_edit_flag(layer_lock, is_bezier, &gps->points[0], 0, v_len);
   vert_ptr->weight = gpencil_point_edit_weight(dvert, 0, iter->vgindex);
 }



More information about the Bf-blender-cvs mailing list