[Bf-blender-cvs] [e055c0e285b] soc-2020-greasepencil-curve: GPencil: Use error_threshold parameter in gpd

Falk David noreply at git.blender.org
Tue Jun 16 09:47:53 CEST 2020


Commit: e055c0e285b303a341c2674ee6ac5f6735287232
Author: Falk David
Date:   Tue Jun 16 09:45:32 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rBe055c0e285b303a341c2674ee6ac5f6735287232

GPencil: Use error_threshold parameter in gpd

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

M	source/blender/blenkernel/BKE_gpencil_curve.h
M	source/blender/blenkernel/intern/gpencil_curve.c
M	source/blender/editors/gpencil/gpencil_utils.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil_curve.h b/source/blender/blenkernel/BKE_gpencil_curve.h
index 1d9c0f04477..2e8ba51e95d 100644
--- a/source/blender/blenkernel/BKE_gpencil_curve.h
+++ b/source/blender/blenkernel/BKE_gpencil_curve.h
@@ -43,8 +43,9 @@ void BKE_gpencil_convert_curve(struct Main *bmain,
                                const bool use_collections,
                                const bool only_stroke);
 
-struct bGPDcurve *BKE_gpencil_stroke_editcurve_generate(struct bGPDstroke *gps);
-void BKE_gpencil_stroke_editcurve_update(struct bGPDstroke *gps);
+struct bGPDcurve *BKE_gpencil_stroke_editcurve_generate(struct bGPDstroke *gps,
+                                                        float error_threshold);
+void BKE_gpencil_stroke_editcurve_update(struct bGPDstroke *gps, float error_threshold);
 void BKE_gpencil_selected_strokes_editcurve_update(struct bGPdata *gpd);
 void BKE_gpencil_stroke_update_geometry_from_editcurve(struct bGPDstroke *gps);
 
diff --git a/source/blender/blenkernel/intern/gpencil_curve.c b/source/blender/blenkernel/intern/gpencil_curve.c
index 0b26defec4e..3591894d36a 100644
--- a/source/blender/blenkernel/intern/gpencil_curve.c
+++ b/source/blender/blenkernel/intern/gpencil_curve.c
@@ -456,15 +456,12 @@ void BKE_gpencil_convert_curve(Main *bmain,
 /**
  * Creates a bGPDcurve by doing a cubic curve fitting on the grease pencil stroke points.
  */
-bGPDcurve *BKE_gpencil_stroke_editcurve_generate(bGPDstroke *gps)
+bGPDcurve *BKE_gpencil_stroke_editcurve_generate(bGPDstroke *gps, float error_threshold)
 {
   if (gps->totpoints < 1) {
     return NULL;
   }
 
-  /* TODO: GPXX this should be a parameter */
-  float error_threshold = 0.1f;
-
   float *points = MEM_callocN(sizeof(float) * gps->totpoints * POINT_DIM, __func__);
   for (int i = 0; i < gps->totpoints; i++) {
     bGPDspoint *pt = &gps->points[i];
@@ -527,9 +524,9 @@ bGPDcurve *BKE_gpencil_stroke_editcurve_generate(bGPDstroke *gps)
 /**
  * Updates the editcurve for a stroke.
  */
-void BKE_gpencil_stroke_editcurve_update(bGPDstroke *gps)
+void BKE_gpencil_stroke_editcurve_update(bGPDstroke *gps, float error_threshold)
 {
-  if (gps == NULL || gps->totpoints < 0 || gps->editcurve != NULL) {
+  if (gps == NULL || gps->totpoints < 0) {
     return;
   }
 
@@ -537,7 +534,7 @@ void BKE_gpencil_stroke_editcurve_update(bGPDstroke *gps)
     BKE_gpencil_free_stroke_editcurve(gps);
   }
 
-  bGPDcurve *editcurve = BKE_gpencil_stroke_editcurve_generate(gps);
+  bGPDcurve *editcurve = BKE_gpencil_stroke_editcurve_generate(gps, error_threshold);
   if (editcurve == NULL) {
     return;
   }
@@ -568,7 +565,7 @@ void BKE_gpencil_selected_strokes_editcurve_update(bGPdata *gpd)
             continue;
           }
 
-          BKE_gpencil_stroke_editcurve_update(gps);
+          BKE_gpencil_stroke_editcurve_update(gps, gpd->curve_edit_threshold);
           if (gps->editcurve != NULL) {
             gps->editcurve->resolution = gpd->editcurve_resolution;
             gps->editcurve->flag |= GP_CURVE_RECALC_GEOMETRY;
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index 782cf032c26..534ee6b151d 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -2639,11 +2639,13 @@ void ED_gpencil_select_curve_toggle_all(bContext *C, int action)
   }
   else {
     CTX_DATA_BEGIN (C, bGPDstroke *, gps, editable_gpencil_strokes) {
+      Object *ob = CTX_data_active_object(C);
+      bGPdata *gpd = ob->data;
       bool selected = false;
 
       /* Make sure stroke has a curve */
       if (gps->editcurve == NULL) {
-        BKE_gpencil_stroke_editcurve_update(gps);
+        BKE_gpencil_stroke_editcurve_update(gps, gpd->curve_edit_threshold);
       }
 
       bGPDcurve *gpc = gps->editcurve;



More information about the Bf-blender-cvs mailing list