Commit: 9abdafe840e5eaa29153565bd7c121f02e1d1fb1
Author: Antonio Vazquez
Date:   Wed Aug 12 12:05:11 2020 +0200
Branches: master
https://developer.blender.org/rB9abdafe840e5eaa29153565bd7c121f02e1d1fb1

GPencil: Add parameters to scale thickness when convert Curves

This parameter allows to scale the thickness.

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

M       source/blender/blenkernel/BKE_gpencil_curve.h
M       source/blender/blenkernel/intern/gpencil_curve.c
M       source/blender/editors/object/object_add.c
M       source/blender/makesrna/intern/rna_object_api.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil_curve.h 
b/source/blender/blenkernel/BKE_gpencil_curve.h
index 3fbd0ce1a51..952f5115707 100644
--- a/source/blender/blenkernel/BKE_gpencil_curve.h
+++ b/source/blender/blenkernel/BKE_gpencil_curve.h
@@ -37,7 +37,8 @@ void BKE_gpencil_convert_curve(struct Main *bmain,
                                struct Object *ob_cu,
                                const bool gpencil_lines,
                                const bool use_collections,
-                               const bool only_stroke);
+                               const bool only_stroke,
+                               const float scale_thickness);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/blenkernel/intern/gpencil_curve.c 
b/source/blender/blenkernel/intern/gpencil_curve.c
index 988ae05e323..3ee74ed11c9 100644
--- a/source/blender/blenkernel/intern/gpencil_curve.c
+++ b/source/blender/blenkernel/intern/gpencil_curve.c
@@ -172,6 +172,7 @@ static void gpencil_convert_spline(Main *bmain,
                                    Object *ob_cu,
                                    const bool gpencil_lines,
                                    const bool only_stroke,
+                                   const float scale_thickness,
                                    bGPDframe *gpf,
                                    Nurb *nu)
 {
@@ -342,8 +343,11 @@ static void gpencil_convert_spline(Main *bmain,
           copy_v3_v3(init_co, &coord_array[0]);
         }
         /* Add points to the stroke */
+        float radius_start = prevbezt->radius * scale_thickness;
+        float radius_end = bezt->radius * scale_thickness;
+
         gpencil_add_new_points(
-            gps, coord_array, prevbezt->radius, bezt->radius, init, resolu, 
init_co, last);
+            gps, coord_array, radius_start, radius_end, init, resolu, init_co, 
last);
         /* Free memory. */
         MEM_SAFE_FREE(coord_array);
 
@@ -403,6 +407,7 @@ static void gpencil_convert_spline(Main *bmain,
  * \param gpencil_lines: Use lines for strokes.
  * \param use_collections: Create layers using collection names.
  * \param only_stroke: The material must be only stroke without fill.
+ * \param scale_thickness: Scale thickness factor.
  */
 void BKE_gpencil_convert_curve(Main *bmain,
                                Scene *scene,
@@ -410,7 +415,8 @@ void BKE_gpencil_convert_curve(Main *bmain,
                                Object *ob_cu,
                                const bool gpencil_lines,
                                const bool use_collections,
-                               const bool only_stroke)
+                               const bool only_stroke,
+                               const float scale_thickness)
 {
   if (ELEM(NULL, ob_gp, ob_cu) || (ob_gp->type != OB_GPENCIL) || (ob_gp->data 
== NULL)) {
     return;
@@ -448,7 +454,8 @@ void BKE_gpencil_convert_curve(Main *bmain,
 
   /* Read all splines of the curve and create a stroke for each. */
   LISTBASE_FOREACH (Nurb *, nu, &cu->nurb) {
-    gpencil_convert_spline(bmain, ob_gp, ob_cu, gpencil_lines, only_stroke, 
gpf, nu);
+    gpencil_convert_spline(
+        bmain, ob_gp, ob_cu, gpencil_lines, only_stroke, scale_thickness, gpf, 
nu);
   }
 
   /* Tag for recalculation */
diff --git a/source/blender/editors/object/object_add.c 
b/source/blender/editors/object/object_add.c
index 81b8cd70353..41757579817 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -2647,7 +2647,7 @@ static int object_convert_exec(bContext *C, wmOperator 
*op)
           ob_gpencil = ED_gpencil_add_object(C, ob->loc, local_view_bits);
           copy_v3_v3(ob_gpencil->rot, ob->rot);
           copy_v3_v3(ob_gpencil->scale, ob->scale);
-          BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, false, 
false, true);
+          BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, false, 
false, true, 1.0f);
           gpencilConverted = true;
         }
       }
diff --git a/source/blender/makesrna/intern/rna_object_api.c 
b/source/blender/makesrna/intern/rna_object_api.c
index 3b80714bcc5..9e698b2b398 100644
--- a/source/blender/makesrna/intern/rna_object_api.c
+++ b/source/blender/makesrna/intern/rna_object_api.c
@@ -714,7 +714,8 @@ bool rna_Object_generate_gpencil_strokes(Object *ob,
                                          ReportList *reports,
                                          Object *ob_gpencil,
                                          bool gpencil_lines,
-                                         bool use_collections)
+                                         bool use_collections,
+                                         float scale_thickness)
 {
   if (ob->type != OB_CURVE) {
     BKE_reportf(reports,
@@ -726,7 +727,8 @@ bool rna_Object_generate_gpencil_strokes(Object *ob,
   Main *bmain = CTX_data_main(C);
   Scene *scene = CTX_data_scene(C);
 
-  BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, gpencil_lines, 
use_collections, false);
+  BKE_gpencil_convert_curve(
+      bmain, scene, ob_gpencil, ob, gpencil_lines, use_collections, false, 
scale_thickness);
 
   WM_main_add_notifier(NC_GPENCIL | ND_DATA, NULL);
 
@@ -1190,12 +1192,16 @@ void RNA_api_object(StructRNA *srna)
   RNA_def_function_ui_description(func, "Convert a curve object to grease 
pencil strokes.");
   RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
 
-  parm = RNA_def_pointer(
-      func, "ob_gpencil", "Object", "", "Grease Pencil object used to create 
new strokes");
+  parm = RNA_def_pointer(func,
+                         "grease_pencil_object",
+                         "Object",
+                         "",
+                         "Grease Pencil object used to create new strokes");
   RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
-  parm = RNA_def_boolean(func, "gpencil_lines", 0, "", "Create Lines");
-  parm = RNA_def_boolean(func, "use_collections", 1, "", "Use Collections");
-
+  parm = RNA_def_boolean(func, "gpencil_lines", false, "", "Create Lines");
+  parm = RNA_def_boolean(func, "use_collections", true, "", "Use Collections");
+  parm = RNA_def_float(
+      func, "scale_thickness", 1.0f, 0.0f, FLT_MAX, "", "Thickness scaling 
factor", 0.0f, 100.0f);
   parm = RNA_def_boolean(func, "result", 0, "", "Result");
   RNA_def_function_return(func, parm);
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to