[Bf-blender-cvs] [b03a479efda] soc-2020-greasepencil-curve: GPencil: Add curve point RNA structure
Falk David
noreply at git.blender.org
Wed Jun 3 22:28:11 CEST 2020
Commit: b03a479efdac4064c3ed109f87478ab82e31f414
Author: Falk David
Date: Wed Jun 3 19:06:18 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rBb03a479efdac4064c3ed109f87478ab82e31f414
GPencil: Add curve point RNA structure
===================================================================
M source/blender/makesrna/intern/rna_gpencil.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 3685fed9b03..4f5c0c22f15 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -940,6 +940,42 @@ static char *rna_GreasePencilGrid_path(PointerRNA *UNUSED(ptr))
return BLI_strdup("grid");
}
+static void rna_BezTriple_handle1_get(PointerRNA *ptr, float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(values, bezt->vec[0]);
+}
+
+static void rna_BezTriple_handle1_set(PointerRNA *ptr, const float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(bezt->vec[0], values);
+}
+
+static void rna_BezTriple_handle2_get(PointerRNA *ptr, float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(values, bezt->vec[2]);
+}
+
+static void rna_BezTriple_handle2_set(PointerRNA *ptr, const float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(bezt->vec[2], values);
+}
+
+static void rna_BezTriple_ctrlpoint_get(PointerRNA *ptr, float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(values, bezt->vec[1]);
+}
+
+static void rna_BezTriple_ctrlpoint_set(PointerRNA *ptr, const float *values)
+{
+ BezTriple *bezt = (BezTriple *)ptr->data;
+ copy_v3_v3(bezt->vec[1], values);
+}
+
#else
static void rna_def_gpencil_stroke_point(BlenderRNA *brna)
@@ -1071,6 +1107,61 @@ static void rna_def_gpencil_triangle(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
}
+static void rna_def_gpencil_curve_point(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "GPencilEditCurvePoint", NULL);
+ RNA_def_struct_sdna(srna, "BezTriple");
+ RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles");
+
+ /* Boolean values */
+ prop = RNA_def_property(srna, "select_left_handle", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "f1", 0);
+ RNA_def_property_ui_text(prop, "Handle 1 selected", "Handle 1 selection status");
+
+ prop = RNA_def_property(srna, "select_right_handle", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "f3", 0);
+ RNA_def_property_ui_text(prop, "Handle 2 selected", "Handle 2 selection status");
+
+ prop = RNA_def_property(srna, "select_control_point", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "f2", 0);
+ RNA_def_property_ui_text(prop, "Control Point selected", "Control point selection status");
+
+ prop = RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "hide", 0);
+ RNA_def_property_ui_text(prop, "Hide", "Visibility status");
+
+ /* Vector values */
+ prop = RNA_def_property(srna, "handle_left", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_float_funcs(
+ prop, "rna_BezTriple_handle1_get", "rna_BezTriple_handle1_set", NULL);
+ RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+
+ prop = RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_float_funcs(
+ prop, "rna_BezTriple_ctrlpoint_get", "rna_BezTriple_ctrlpoint_set", NULL);
+ RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+
+ prop = RNA_def_property(srna, "handle_right", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_float_funcs(
+ prop, "rna_BezTriple_handle2_get", "rna_BezTriple_handle2_set", NULL);
+ RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle");
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+
+ /* Number values */
+ prop = RNA_def_property(srna, "radius", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "radius");
+ RNA_def_property_range(prop, 0.0f, FLT_MAX);
+ RNA_def_property_ui_text(prop, "Radius", "Radius");
+}
+
/* Editing Curve data. */
static void rna_def_gpencil_curve(BlenderRNA *brna)
{
@@ -1083,9 +1174,15 @@ static void rna_def_gpencil_curve(BlenderRNA *brna)
prop = RNA_def_property(srna, "curve_points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "curve_points", "tot_curve_points");
- RNA_def_property_struct_type(prop, "BezierSplinePoint");
+ RNA_def_property_struct_type(prop, "GPencilEditCurvePoint");
RNA_def_property_ui_text(prop, "Curve Points", "Curve data points");
+ // RNA_def_property_srna(prop, "GPencilStrokePoints");
+ // srna = RNA_def_struct(brna, "GPencilStrokePoints", NULL);
+ // RNA_def_struct_sdna(srna, "bGPDstroke");
+ // RNA_def_struct_ui_text(
+ // srna, "Grease Pencil Stroke Points", "Collection of grease pencil stroke points");
+
/* Curve. TODO: make BezTriple collection */
// prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
// RNA_def_property_pointer_sdna(prop, NULL, "curve");
@@ -2168,6 +2265,7 @@ void RNA_def_gpencil(BlenderRNA *brna)
rna_def_gpencil_stroke_point(brna);
rna_def_gpencil_triangle(brna);
rna_def_gpencil_curve(brna);
+ rna_def_gpencil_curve_point(brna);
rna_def_gpencil_mvert_group(brna);
}
More information about the Bf-blender-cvs
mailing list