[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