[Bf-blender-cvs] [559d01e1294] blender-v2.82-release: Improve error message converting nurb to bezier

Philipp Oeser noreply at git.blender.org
Tue Feb 4 21:23:52 CET 2020


Commit: 559d01e12949a730f3497fdfbe79a11f532f3afe
Author: Philipp Oeser
Date:   Tue Nov 19 12:05:03 2019 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rB559d01e12949a730f3497fdfbe79a11f532f3afe

Improve error message converting nurb to bezier

BKE_nurb_type_convert now takes r_err_msg and is more specific in the
error message...

ref T71672.

Maniphest Tasks: T71672

Differential Revision: https://developer.blender.org/D6275

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

M	source/blender/blenkernel/BKE_curve.h
M	source/blender/blenkernel/intern/curve.c
M	source/blender/editors/curve/editcurve.c
M	source/blender/editors/gpencil/gpencil_convert.c
M	source/blender/makesrna/intern/rna_curve.c

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

diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index e03780cc027..cf516c630c5 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -220,7 +220,10 @@ bool BKE_nurb_order_clamp_u(struct Nurb *nu);
 bool BKE_nurb_order_clamp_v(struct Nurb *nu);
 
 void BKE_nurb_direction_switch(struct Nurb *nu);
-bool BKE_nurb_type_convert(struct Nurb *nu, const short type, const bool use_handles);
+bool BKE_nurb_type_convert(struct Nurb *nu,
+                           const short type,
+                           const bool use_handles,
+                           const char **r_err_msg);
 
 void BKE_nurb_points_add(struct Nurb *nu, int number);
 void BKE_nurb_bezierPoints_add(struct Nurb *nu, int number);
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 12bb7b573bd..8d9052c942a 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -4872,7 +4872,10 @@ bool BKE_nurb_order_clamp_v(struct Nurb *nu)
 /**
  * \note caller must ensure active vertex remains valid.
  */
-bool BKE_nurb_type_convert(Nurb *nu, const short type, const bool use_handles)
+bool BKE_nurb_type_convert(Nurb *nu,
+                           const short type,
+                           const bool use_handles,
+                           const char **r_err_msg)
 {
   BezTriple *bezt;
   BPoint *bp;
@@ -4979,6 +4982,9 @@ bool BKE_nurb_type_convert(Nurb *nu, const short type, const bool use_handles)
       nr = nu->pntsu / 3;
 
       if (nr < 2) {
+        if (r_err_msg != NULL) {
+          *r_err_msg = "At least 6 points required for conversion";
+        }
         return false; /* conversion impossible */
       }
       else {
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index e7803fdaafb..f5920bfb258 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -4002,14 +4002,15 @@ static int set_spline_type_exec(bContext *C, wmOperator *op)
     for (nu = editnurb->first; nu; nu = nu->next) {
       if (ED_curve_nurb_select_check(v3d, nu)) {
         const int pntsu_prev = nu->pntsu;
-        if (BKE_nurb_type_convert(nu, type, use_handles)) {
+        const char *err_msg = NULL;
+        if (BKE_nurb_type_convert(nu, type, use_handles, &err_msg)) {
           changed = true;
           if (pntsu_prev != nu->pntsu) {
             changed_size = true;
           }
         }
         else {
-          BKE_report(op->reports, RPT_ERROR, "No conversion possible");
+          BKE_report(op->reports, RPT_ERROR, err_msg);
         }
       }
     }
diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c
index 1ce4ffbbd46..e1b13747ee0 100644
--- a/source/blender/editors/gpencil/gpencil_convert.c
+++ b/source/blender/editors/gpencil/gpencil_convert.c
@@ -1385,7 +1385,7 @@ static void gp_layer_to_curve(bContext *C,
 
   if (mode == GP_STROKECONVERT_POLY) {
     for (nu = cu->nurb.first; nu; nu = nu->next) {
-      BKE_nurb_type_convert(nu, CU_POLY, false);
+      BKE_nurb_type_convert(nu, CU_POLY, false, NULL);
     }
   }
 
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index e900160a653..104bc3bd745 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -388,7 +388,7 @@ static void rna_Nurb_type_set(PointerRNA *ptr, int value)
   Nurb *nu = (Nurb *)ptr->data;
   const int pntsu_prev = nu->pntsu;
 
-  if (BKE_nurb_type_convert(nu, value, true)) {
+  if (BKE_nurb_type_convert(nu, value, true, NULL)) {
     if (nu->pntsu != pntsu_prev) {
       cu->actvert = CU_ACT_NONE;
     }



More information about the Bf-blender-cvs mailing list