[Bf-blender-cvs] [abdce7f6acb] greasepencil-object: New simplify fixed operator

Antonio Vazquez noreply at git.blender.org
Thu Jan 4 11:29:33 CET 2018


Commit: abdce7f6acbce17f338f837a2ecf360b4801949b
Author: Antonio Vazquez
Date:   Thu Jan 4 11:29:25 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBabdce7f6acbce17f338f837a2ecf360b4801949b

New simplify fixed operator

This simplify used the same algorithm used in modifier.

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

M	release/scripts/startup/bl_ui/properties_grease_pencil_common.py
M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/gpencil/gpencil_intern.h
M	source/blender/editors/gpencil/gpencil_ops.c

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

diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
index 2f5da9bd6d2..67a85e6535f 100644
--- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -229,6 +229,7 @@ class GreasePencilStrokeEditPanel:
         col = layout.column(align=True)
         col.operator("gpencil.stroke_subdivide", text="Subdivide")
         col.operator("gpencil.stroke_simplify", text="Simplify")
+        col.operator("gpencil.stroke_simplify_fixed", text="Simplify Fixed")
         col.operator("gpencil.stroke_join", text="Join").type = 'JOIN'
         col.operator("gpencil.stroke_join", text="Join & Copy").type = 'JOINCOPY'
         col.operator("gpencil.stroke_flip", text="Flip Direction")
@@ -971,6 +972,7 @@ class GPENCIL_MT_gpencil_edit_specials(Menu):
 
         layout.operator("gpencil.stroke_subdivide", text="Subdivide")
         layout.operator("gpencil.stroke_simplify", text="Simplify")
+        layout.operator("gpencil.stroke_simplify_fixed", text="Simplify Fixed")
 
         layout.separator()
 
@@ -1002,6 +1004,7 @@ class GPENCIL_MT_gpencil_sculpt_specials(Menu):
 
         layout.operator("gpencil.stroke_subdivide", text="Subdivide")
         layout.operator("gpencil.stroke_simplify", text="Simplify")
+        layout.operator("gpencil.stroke_simplify_fixed", text="Simplify Fixed")
 
 
 class GPENCIL_MT_gpencil_draw_specials(Menu):
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index b658823e3bc..fdfe8a31553 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -3011,3 +3011,55 @@ void GPENCIL_OT_stroke_simplify(wmOperatorType *ot)
 	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
 
 }
+
+/* ** simplify stroke using fixed algorith *** */
+static int gp_stroke_simplify_fixed_exec(bContext *C, wmOperator *op)
+{
+	bGPdata *gpd = ED_gpencil_data_get_active(C);
+	int steps = RNA_int_get(op->ptr, "step");
+
+	/* sanity checks */
+	if (ELEM(NULL, gpd))
+		return OPERATOR_CANCELLED;
+
+	/* Go through each editable + selected stroke */
+	GP_EDITABLE_STROKES_BEGIN(C, gpl, gps)
+	{
+		if (gps->flag & GP_STROKE_SELECT) {
+			for (int i = 0; i < steps; i++) {
+				BKE_gpencil_simplify_fixed(gpl, gps);
+			}
+		}
+	}
+	GP_EDITABLE_STROKES_END;
+
+	/* notifiers */
+	BKE_gpencil_batch_cache_dirty(gpd);
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
+
+	return OPERATOR_FINISHED;
+}
+
+void GPENCIL_OT_stroke_simplify_fixed(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+
+	/* identifiers */
+	ot->name = "Simplify Fixed Stroke";
+	ot->idname = "GPENCIL_OT_stroke_simplify_fixed";
+	ot->description = "Simplify selected stroked reducing number of points using fixed algorithm";
+
+	/* api callbacks */
+	ot->exec = gp_stroke_simplify_fixed_exec;
+	ot->poll = gp_active_layer_poll;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_BLOCKING;
+
+	/* properties */
+	prop = RNA_def_int(ot->srna, "step", 1, 1, 100, "Steps", "Number of simplify steps", 1, 10);
+	
+	/* avoid re-using last var */
+	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
+
+}
diff --git a/source/blender/editors/gpencil/gpencil_intern.h b/source/blender/editors/gpencil/gpencil_intern.h
index 8a9a33250b0..408e2f22d38 100644
--- a/source/blender/editors/gpencil/gpencil_intern.h
+++ b/source/blender/editors/gpencil/gpencil_intern.h
@@ -266,6 +266,7 @@ void GPENCIL_OT_stroke_join(struct wmOperatorType *ot);
 void GPENCIL_OT_stroke_flip(struct wmOperatorType *ot);
 void GPENCIL_OT_stroke_subdivide(struct wmOperatorType *ot);
 void GPENCIL_OT_stroke_simplify(struct wmOperatorType *ot);
+void GPENCIL_OT_stroke_simplify_fixed(struct wmOperatorType *ot);
 
 void GPENCIL_OT_brush_add(struct wmOperatorType *ot);
 void GPENCIL_OT_brush_remove(struct wmOperatorType *ot);
diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c
index fa95e6e627c..be3393e092e 100644
--- a/source/blender/editors/gpencil/gpencil_ops.c
+++ b/source/blender/editors/gpencil/gpencil_ops.c
@@ -749,6 +749,7 @@ void ED_operatortypes_gpencil(void)
 	WM_operatortype_append(GPENCIL_OT_stroke_flip);
 	WM_operatortype_append(GPENCIL_OT_stroke_subdivide);
 	WM_operatortype_append(GPENCIL_OT_stroke_simplify);
+	WM_operatortype_append(GPENCIL_OT_stroke_simplify_fixed);
 
 	WM_operatortype_append(GPENCIL_OT_brush_add);
 	WM_operatortype_append(GPENCIL_OT_brush_remove);



More information about the Bf-blender-cvs mailing list