X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flive_effects%2Feffect.h;h=6acba000ce5f9376dc7802190dfcaf37f68a1959;hb=0dc33d4ce43e0bb49c63aa53b826ec4a1ff68e28;hp=37170eae0897d6b2a274f4b749ab5b3131f943c2;hpb=2e2b8bd323e3693f9d86f545ce049d3f1b45d1c2;p=inkscape.git diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h index 37170eae0..6acba000c 100644 --- a/src/live_effects/effect.h +++ b/src/live_effects/effect.h @@ -10,27 +10,25 @@ */ -#include "display/display-forward.h" #include #include -#include <2geom/path.h> #include <2geom/forward.h> #include "ui/widget/registry.h" -#include "util/enums.h" -#include "sp-lpe-item.h" -#include "knotholder.h" #include "parameter/bool.h" +#include "effect-enum.h" #define LPE_CONVERSION_TOLERANCE 0.01 // FIXME: find good solution for this. -#define LPE_ENABLE_TEST_EFFECTS - struct SPDocument; struct SPDesktop; struct SPItem; class SPNodeContext; -class NArtBpath; struct LivePathEffectObject; +class SPLPEItem; +class KnotHolder; +class KnotHolderEntity; +class SPPath; +struct SPCurve; namespace Gtk { class Widget; @@ -50,41 +48,6 @@ namespace NodePath { namespace LivePathEffect { -enum EffectType { - BEND_PATH = 0, - PATTERN_ALONG_PATH, - FREEHAND_SHAPE, - SKETCH, - VONKOCH, - KNOT, -#ifdef LPE_ENABLE_TEST_EFFECTS - DOEFFECTSTACK_TEST, -#endif - GEARS, - CURVE_STITCH, - CIRCLE_WITH_RADIUS, - PERSPECTIVE_PATH, - SPIRO, - LATTICE, - ENVELOPE, - CONSTRUCT_GRID, - PERP_BISECTOR, - TANGENT_TO_CURVE, - MIRROR_SYMMETRY, - CIRCLE_3PTS, - ANGLE_BISECTOR, - PARALLEL, - COPY_ROTATE, - OFFSET, - RULER, - BOOLOPS, - INTERPOLATE, - INVALID_LPE // This must be last -}; - -extern const Util::EnumData LPETypeData[]; -extern const Util::EnumDataConverter LPETypeConverter; - enum LPEPathFlashType { SUPPRESS_FLASH, // PERMANENT_FLASH, @@ -107,25 +70,34 @@ public: void writeParamsToSVG(); virtual void acceptParamPath (SPPath *param_path); - virtual int acceptsNumParams() { return 0; } + static int acceptsNumClicks(EffectType type); + int acceptsNumClicks() { return acceptsNumClicks(effectType()); } void doAcceptPathPreparations(SPLPEItem *lpeitem); - inline bool pathParamAccepted() { return done_pathparam_set; } + /* + * isReady() indicates whether all preparations which are necessary to apply the LPE are done, + * e.g., waiting for a parameter path either before the effect is created or when it needs a + * path as argument. This is set in sp_lpe_item_add_path_effect(). + */ + inline bool isReady() { return is_ready; } + inline void setReady(bool ready = true) { is_ready = ready; } virtual void doEffect (SPCurve * curve); virtual Gtk::Widget * newWidget(Gtk::Tooltips * tooltips); + /** + * Sets all parameters to their default values and writes them to SVG. + */ virtual void resetDefaults(SPItem * item); - virtual void setup_nodepath(Inkscape::NodePath::Path *np); - + /// /todo: is this method really necessary? it causes UI inconsistensies... (johan) virtual void transform_multiply(Geom::Matrix const& postmul, bool set); - // TODO: providesKnotholder() is currently used as an indicator of whether a nodepath is + // /TODO: providesKnotholder() is currently used as an indicator of whether a nodepath is // created for an item or not. When we allow both at the same time, this needs rethinking! bool providesKnotholder(); - // TODO: in view of providesOwnFlashPaths() below, this is somewhat redundant + // /TODO: in view of providesOwnFlashPaths() below, this is somewhat redundant // (but spiro lpe still needs it!) virtual LPEPathFlashType pathFlashType() { return DEFAULT; } void addHandles(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); @@ -176,7 +148,6 @@ protected: std::vector > kh_entity_vector; int oncanvasedit_it; BoolParam is_visible; - bool done_pathparam_set; bool show_orig_path; // set this to true in derived effects to automatically have the original // path displayed as helperpath @@ -192,6 +163,8 @@ protected: private: bool provides_own_flash_paths; // if true, the standard flash path is suppressed + bool is_ready; + Effect(const Effect&); Effect& operator=(const Effect&); };