[Bf-blender-cvs] [0a5cb8d8c9f] temp-lineart-contained: LineArt: involk/exec fix for operators
YimingWu
noreply at git.blender.org
Wed Mar 10 06:20:05 CET 2021
Commit: 0a5cb8d8c9f3978d5ce37cf870c126beace5367b
Author: YimingWu
Date: Wed Mar 10 13:19:31 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB0a5cb8d8c9f3978d5ce37cf870c126beace5367b
LineArt: involk/exec fix for operators
===================================================================
M source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
M source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
M source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 32df51bd614..71e6a6ddd2f 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -392,9 +392,9 @@ static void baking_panel_draw(const bContext *UNUSED(C), Panel *panel)
uiItemO(layout,
IFACE_("Bake All Line Art Objects"),
ICON_NONE,
- "OBJECT_OT_lineart_bake_strokes_all_gp");
+ "OBJECT_OT_lineart_bake_strokes_all");
uiItemO(layout, IFACE_("Clear Current Object"), ICON_NONE, "OBJECT_OT_lineart_clear_strokes");
- uiItemO(layout, IFACE_("Clear All Objects"), ICON_NONE, "OBJECT_OT_lineart_clear_all_strokes");
+ uiItemO(layout, IFACE_("Clear All Objects"), ICON_NONE, "OBJECT_OT_lineart_clear_strokes_all");
}
static void panelRegister(ARegionType *region_type)
diff --git a/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
index c5b3c742325..e6235e4f286 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
@@ -579,8 +579,8 @@ struct wmOperatorType;
/* Operator types */
void OBJECT_OT_lineart_bake_strokes(struct wmOperatorType *ot);
-void OBJECT_OT_lineart_bake_strokes_all_gp(struct wmOperatorType *ot);
+void OBJECT_OT_lineart_bake_strokes_all(struct wmOperatorType *ot);
void OBJECT_OT_lineart_clear_strokes(struct wmOperatorType *ot);
-void OBJECT_OT_lineart_clear_all_strokes(struct wmOperatorType *ot);
+void OBJECT_OT_lineart_clear_strokes_all(struct wmOperatorType *ot);
void ED_operatortypes_lineart(void);
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
index 845e141b703..91d909a4af7 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
@@ -197,7 +197,10 @@ static void lineart_gpencil_bake_endjob(void *customdata)
WM_main_add_notifier(NC_GPENCIL | ND_DATA | NA_EDITED, bj->ob);
}
-static int lineart_gpencil_bake_common_invoke(bContext *C, wmOperator *op, bool bake_all_targets)
+static int lineart_gpencil_bake_common(bContext *C,
+ wmOperator *op,
+ bool bake_all_targets,
+ bool do_background)
{
LineartBakeJob *bj = MEM_callocN(sizeof(LineartBakeJob), "LineartBakeJob");
@@ -218,41 +221,58 @@ static int lineart_gpencil_bake_common_invoke(bContext *C, wmOperator *op, bool
bj->frame_increment = scene->r.frame_step;
bj->overwrite_frames = true;
- wmJob *wm_job = WM_jobs_get(CTX_wm_manager(C),
- CTX_wm_window(C),
- CTX_data_scene(C),
- "Line Art",
- WM_JOB_PROGRESS,
- WM_JOB_TYPE_LINEART);
+ if (do_background) {
+ wmJob *wm_job = WM_jobs_get(CTX_wm_manager(C),
+ CTX_wm_window(C),
+ CTX_data_scene(C),
+ "Line Art",
+ WM_JOB_PROGRESS,
+ WM_JOB_TYPE_LINEART);
- WM_jobs_customdata_set(wm_job, bj, MEM_freeN);
- WM_jobs_timer(wm_job, 0.1, NC_GPENCIL | ND_DATA | NA_EDITED, NC_GPENCIL | ND_DATA | NA_EDITED);
- WM_jobs_callbacks(
- wm_job, lineart_gpencil_bake_startjob, NULL, NULL, lineart_gpencil_bake_endjob);
+ WM_jobs_customdata_set(wm_job, bj, MEM_freeN);
+ WM_jobs_timer(wm_job, 0.1, NC_GPENCIL | ND_DATA | NA_EDITED, NC_GPENCIL | ND_DATA | NA_EDITED);
+ WM_jobs_callbacks(
+ wm_job, lineart_gpencil_bake_startjob, NULL, NULL, lineart_gpencil_bake_endjob);
- WM_set_locked_interface(CTX_wm_manager(C), true);
+ WM_set_locked_interface(CTX_wm_manager(C), true);
- WM_jobs_start(CTX_wm_manager(C), wm_job);
+ WM_jobs_start(CTX_wm_manager(C), wm_job);
- WM_event_add_modal_handler(C, op);
+ WM_event_add_modal_handler(C, op);
- return OPERATOR_RUNNING_MODAL;
+ return OPERATOR_RUNNING_MODAL;
+ }
+ else {
+ float pseduo_progress;
+ lineart_gpencil_bake_startjob(bj, NULL, NULL, &pseduo_progress);
+ MEM_freeN(bj);
+
+ return OPERATOR_FINISHED;
+ }
}
-static int lineart_gpencil_bake_all_strokes_invoke(bContext *C,
- wmOperator *op,
- const wmEvent *UNUSED(event))
+static int lineart_gpencil_bake_strokes_all_targets_invoke(bContext *C,
+ wmOperator *op,
+ const wmEvent *UNUSED(event))
{
- return lineart_gpencil_bake_common_invoke(C, op, true);
+ return lineart_gpencil_bake_common(C, op, true, true);
+}
+static int lineart_gpencil_bake_strokes_all_targets_exec(bContext *C, wmOperator *op)
+{
+ return lineart_gpencil_bake_common(C, op, true, false);
}
-
static int lineart_gpencil_bake_strokes_invoke(bContext *C,
wmOperator *op,
const wmEvent *UNUSED(event))
{
- return lineart_gpencil_bake_common_invoke(C, op, false);
+ return lineart_gpencil_bake_common(C, op, false, true);
}
+static int lineart_gpencil_bake_strokes_exec(bContext *C, wmOperator *op)
+{
+ return lineart_gpencil_bake_common(C, op, false, false);
+ return OPERATOR_FINISHED;
+}
static int lineart_gpencil_bake_strokes_commom_modal(bContext *C,
wmOperator *op,
const wmEvent *UNUSED(event))
@@ -267,9 +287,7 @@ static int lineart_gpencil_bake_strokes_commom_modal(bContext *C,
return OPERATOR_PASS_THROUGH;
}
-static int lineart_gpencil_clear_strokes_invoke(bContext *C,
- wmOperator *op,
- const wmEvent *UNUSED(event))
+static int lineart_gpencil_clear_strokes_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_active_object(C);
if (ob->type != OB_GPENCIL) {
@@ -293,17 +311,7 @@ static int lineart_gpencil_clear_strokes_invoke(bContext *C,
WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
return OPERATOR_FINISHED;
}
-
-static int lineart_gpencil_clear_strokes_exec(bContext *C, wmOperator *UNUSED(op))
-{
- Scene *scene = CTX_data_scene(C);
-
- return OPERATOR_FINISHED;
-}
-
-static int lineart_gpencil_clear_all_strokes_invoke(bContext *C,
- wmOperator *op,
- const wmEvent *UNUSED(event))
+static int lineart_gpencil_clear_strokes_all_targets_exec(bContext *C, wmOperator *op)
{
CTX_DATA_BEGIN (C, Object *, ob, visible_objects) {
if (ob->type != OB_GPENCIL) {
@@ -330,13 +338,6 @@ static int lineart_gpencil_clear_all_strokes_invoke(bContext *C,
return OPERATOR_FINISHED;
}
-static int lineart_gpencil_clear_all_strokes_exec(bContext *C, wmOperator *UNUSED(op))
-{
- Scene *scene = CTX_data_scene(C);
-
- return OPERATOR_FINISHED;
-}
-
/* Bake all line art modifiers on the current object. */
void OBJECT_OT_lineart_bake_strokes(wmOperatorType *ot)
{
@@ -345,17 +346,19 @@ void OBJECT_OT_lineart_bake_strokes(wmOperatorType *ot)
ot->idname = "OBJECT_OT_lineart_bake_strokes";
ot->invoke = lineart_gpencil_bake_strokes_invoke;
+ ot->exec = lineart_gpencil_bake_strokes_exec;
ot->modal = lineart_gpencil_bake_strokes_commom_modal;
}
/* Bake all lineart objects in the scene. */
-void OBJECT_OT_lineart_bake_strokes_all_gp(wmOperatorType *ot)
+void OBJECT_OT_lineart_bake_strokes_all(wmOperatorType *ot)
{
- ot->name = "Bake All Line Art Strokes";
- ot->description = "Bake All Line Art Modifiers In The Scene";
- ot->idname = "OBJECT_OT_lineart_bake_strokes_all_gp";
+ ot->name = "Bake Line Art For All Targets";
+ ot->description = "Bake all Line Art targets in the scene";
+ ot->idname = "OBJECT_OT_lineart_bake_strokes_all";
- ot->invoke = lineart_gpencil_bake_all_strokes_invoke;
+ ot->invoke = lineart_gpencil_bake_strokes_all_targets_invoke;
+ ot->exec = lineart_gpencil_bake_strokes_all_targets_exec;
ot->modal = lineart_gpencil_bake_strokes_commom_modal;
}
@@ -363,28 +366,26 @@ void OBJECT_OT_lineart_bake_strokes_all_gp(wmOperatorType *ot)
void OBJECT_OT_lineart_clear_strokes(wmOperatorType *ot)
{
ot->name = "Clear Line Art Strokes";
- ot->description = "Clear Line Art grease pencil strokes for all frames";
+ ot->description = "Clear Line Art grease pencil strokes for this target";
ot->idname = "OBJECT_OT_lineart_clear_strokes";
- ot->invoke = lineart_gpencil_clear_strokes_invoke;
ot->exec = lineart_gpencil_clear_strokes_exec;
}
/* clear all lineart objects in the scene. */
-void OBJECT_OT_lineart_clear_all_strokes(wmOperatorType *ot)
+void OBJECT_OT_lineart_clear_strokes_all_targets(wmOperatorType *ot)
{
ot->name = "Clear All Line Art Strokes";
- ot->description = "Clear All Line Art Modifiers In The Scene";
- ot->idname = "OBJECT_OT_lineart_clear_all_strokes";
+ ot->description = "Clear all Line Art targets in the scene";
+ ot->idname = "OBJECT_OT_lineart_clear_strokes_all";
- ot->invoke = lineart_gpencil_clear_all_strokes_invoke;
- ot->exec = lineart_gpencil_clear_all_strokes_exec;
+ ot->exec = lineart_gpencil_clear_strokes_all_targets_exec;
}
void ED_operatortypes_lineart(void)
{
WM_operatortype_append(OBJECT_OT_lineart_bake_strokes);
- WM_operatortype_append(OBJECT_OT_lineart_bake_strokes_all_gp);
+ WM_operatortype_append(OBJECT_OT_lineart_bake_strokes_all);
WM_operatortype_append(OBJECT_OT_lineart_clear_strokes);
- WM_operatortype_append(OBJECT_OT_lineart_clear_all_strokes);
+ WM_operatortype_append(OBJECT_OT_lineart_clear_strokes_all_targets);
}
More information about the Bf-blender-cvs
mailing list