effect.h revision 94d56a52b13080070ff669dad70d404ecc53c68e
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm * Inkscape::LivePathEffect
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm* Copyright (C) Johan Engelen 2007-2008 <j.b.c.engelen@utwente.nl>
ddc251b3cf95b0097b6a5ee39ea132bd4d7d5cbcjohanengelen * Released under GNU GPL, read the file 'COPYING' for more information
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm#define LPE_CONVERSION_TOLERANCE 0.01 // FIXME: find good solution for this.
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm// PERMANENT_FLASH,
dc98accfae7a38326b92d74fa4330ac8ccb5b778jfbarraud static Effect* New(EffectType lpenr, LivePathEffectObject *lpeobj);
dc98accfae7a38326b92d74fa4330ac8ccb5b778jfbarraud static void createAndApply(const char* name, SPDocument *doc, SPItem *item);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm static void createAndApply(EffectType type, SPDocument *doc, SPItem *item);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm int acceptsNumClicks() { return acceptsNumClicks(effectType()); }
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm * isReady() indicates whether all preparations which are necessary to apply the LPE are done,
8c39cbeab9949a0a7d6ae66b768a7352019e42f8johanengelen * e.g., waiting for a parameter path either before the effect is created or when it needs a
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen * path as argument. This is set in sp_lpe_item_add_path_effect().
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen inline void setReady(bool ready = true) { is_ready = ready; }
dc98accfae7a38326b92d74fa4330ac8ccb5b778jfbarraud virtual Gtk::Widget * newWidget(Gtk::Tooltips * tooltips);
dc98accfae7a38326b92d74fa4330ac8ccb5b778jfbarraud * Sets all parameters to their default values and writes them to SVG.
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm virtual void setup_nodepath(Inkscape::NodePath::Path *np);
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen /// /todo: is this method really necessary? it causes UI inconsistensies... (johan)
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm virtual void transform_multiply(Geom::Matrix const& postmul, bool set);
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen // /TODO: providesKnotholder() is currently used as an indicator of whether a nodepath is
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // created for an item or not. When we allow both at the same time, this needs rethinking!
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // /TODO: in view of providesOwnFlashPaths() below, this is somewhat redundant
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen // (but spiro lpe still needs it!)
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm virtual LPEPathFlashType pathFlashType() { return DEFAULT; }
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm void addHandles(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item);
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen std::vector<Geom::PathVector> getHelperPaths(SPLPEItem *lpeitem);
8d9f5d586a04809427ce1df284a5720112177991cilix inline bool providesOwnFlashPaths() {
92fe3142613d000eff89db8a983b3b18b14eee79johanengelen return provides_own_flash_paths || show_orig_path;
c169f6cddd2da06cfb761339f445bbd8866f72a8buliabyak LivePathEffectObject * getLPEObj() {return lpeobj;};
6f4a90e526af850ffc36064f58f09c190f3b633fjohanengelen void readallParameters(Inkscape::XML::Node * repr);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm void setParameter(const gchar * key, const gchar * new_value);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm void editNextParamOncanvas(SPItem * item, SPDesktop * desktop);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // provide a set of doEffect functions so the developer has a choice
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // of what kind of input/output parameters he desires.
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // the order in which they appear is the order in which they are
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // called by this base class. (i.e. doEffect(SPCurve * curve) defaults to calling
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // doEffect(std::vector<Geom::Path> )
fbb4eb8b63e74d9441220a73a8ca858425be4bd4johanengelen doEffect_path (std::vector<Geom::Path> const & path_in);
fbb4eb8b63e74d9441220a73a8ca858425be4bd4johanengelen virtual Geom::Piecewise<Geom::D2<Geom::SBasis> >
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & pwd2_in);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm void registerKnotHolderHandle(KnotHolderEntity* entity, const char* descr);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm //virtual std::vector<Geom::PathVector> getCanvasIndicators(SPLPEItem *lpeitem);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm virtual void addCanvasIndicators(SPLPEItem *lpeitem, std::vector<Geom::PathVector> &hp_vec);
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm std::vector<std::pair<KnotHolderEntity*, const char*> > kh_entity_vector;
2d107ef9730aff3f4d776ae0c2f7d983e289ce02joncruz bool show_orig_path; // set this to true in derived effects to automatically have the original
23d859f2ce09c04ed802cb4912cc9c50f512f0a2bgk // path displayed as helperpath
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // this boolean defaults to false, it concatenates the input path to one pwd2,
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm // instead of normally 'splitting' the path into continuous pwd2 paths.
5675f17bbbc00f2c970b4d4966ce55d86775f7a6johanengelen bool provides_own_flash_paths; // if true, the standard flash path is suppressed
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm} //namespace LivePathEffect
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm} //namespace Inkscape
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm Local Variables:
5675f17bbbc00f2c970b4d4966ce55d86775f7a6johanengelen c-file-style:"stroustrup"
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm indent-tabs-mode:nil
f07bfd5a05d43a6d11f7cd442f085149092dea88pjrm fill-column:99
ab5f33e91458710ed8dd2b2a1b3a53e4227d4856johanengelen// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :