From 262d0c3f05130d86368d95f110aa8ccab5f83e5c Mon Sep 17 00:00:00 2001 From: cilix42 Date: Sun, 18 May 2008 21:02:43 +0000 Subject: [PATCH] Add a function doOnApply() for LPEs which is executed once when the effect is applied to an item (contrary to doBeforeEffect() which is executed, e.g., each time a parameter changes --- src/live_effects/effect.cpp | 6 ++++++ src/live_effects/effect.h | 2 ++ src/sp-lpe-item.cpp | 10 +++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 9f74af3d9..1d4481415 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -162,6 +162,12 @@ Effect::effectType() { return lpeobj->effecttype; } +void +Effect::doOnApply (SPLPEItem */*lpeitem*/) +{ + // This is performed once when the effect is freshly applied to a path +} + void Effect::doBeforeEffect (SPLPEItem */*lpeitem*/) { diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h index 496d4cbdf..b5c1d6aeb 100644 --- a/src/live_effects/effect.h +++ b/src/live_effects/effect.h @@ -83,6 +83,8 @@ public: EffectType effectType (); + virtual void doOnApply (SPLPEItem *lpeitem); + virtual void doBeforeEffect (SPLPEItem *lpeitem); virtual void doEffect (SPCurve * curve); diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index b6a63e9b9..87e737435 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -362,11 +362,15 @@ void sp_lpe_item_set_path_effect(SPLPEItem *lpeitem, gchar *value, bool reset) SP_OBJECT_REPR(lpeitem)->setAttribute("inkscape:path-effect", value); // Ask the path effect to reset itself if it doesn't have parameters yet - if (lpeitem->path_effect_ref && reset) { + if (lpeitem->path_effect_ref) { LivePathEffectObject *lpeobj = lpeitem->path_effect_ref->lpeobject; if (lpeobj && lpeobj->lpe) { - // has to be called when all the subitems have their lpes applied - lpeobj->lpe->resetDefaults(lpeitem); + if(reset) { + // has to be called when all the subitems have their lpes applied + lpeobj->lpe->resetDefaults(lpeitem); + } + // perform this once when the effect is applied + lpeobj->lpe->doOnApply(SP_LPE_ITEM(lpeitem)); } } -- 2.30.2