Code

lpe-skeleton: add boilerplate code to create knotholder handles for LPEs
authorcilix42 <cilix42@users.sourceforge.net>
Wed, 2 Jul 2008 17:40:36 +0000 (17:40 +0000)
committercilix42 <cilix42@users.sourceforge.net>
Wed, 2 Jul 2008 17:40:36 +0000 (17:40 +0000)
src/live_effects/lpe-skeleton.cpp
src/live_effects/lpe-skeleton.h

index c1a3e2601d521136026d0d5642d9f3eab127ea5f..ff601ef70bfb3e44d7996d56c51a563fc2e65aad 100644 (file)
@@ -37,6 +37,9 @@ LPESkeleton::LPESkeleton(LivePathEffectObject *lpeobject) :
 
     /* register all your parameters here, so Inkscape knows which parameters this effect has: */
     registerParameter( dynamic_cast<Parameter *>(&number) );
+
+    /* register all your knotholder handles here: */
+    //registerKnotHolderHandle(new Skeleton::KnotHolderEntityAttachMyHandle(), _("help message"));
 }
 
 LPESkeleton::~LPESkeleton()
@@ -77,6 +80,25 @@ LPESkeleton::doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & pwd
     return output;
 }
 
+/* ########################
+ *  Define the classes for your knotholder handles here
+ */
+
+namespace Skeleton {
+
+class KnotHolderEntityMyHandle : public KnotHolderEntity
+{
+public:
+    virtual bool isLPEParam() { return true; } // this is always needed
+
+    // the set() and get() methods must be implemented, click() is optional
+    virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state);
+    virtual NR::Point knot_get();
+    //virtual void knot_click(guint state);
+};
+
+} // namespace Skeleton
+
 /* ######################## */
 
 } //namespace LivePathEffect
index 532176a231e962fd23fac30f5a539e5527d224fd..d961ad9543c0815156f51731343f90ebd455e568 100644 (file)
 namespace Inkscape {
 namespace LivePathEffect {
 
+// each knotholder handle for your LPE requires a separate class derived from KnotHolderEntity;
+// define it in lpe-skeleton.cpp and register it in the effect's constructor
+/**
+namespace Skeleton {
+  // we need a separate namespace to avoid clashes with other LPEs
+  class KnotHolderEntityMyHandle;
+}
+**/
+
 class LPESkeleton : public Effect {
 public:
     LPESkeleton(LivePathEffectObject *lpeobject);
@@ -30,6 +39,9 @@ public:
 //    virtual std::vector<Geom::Path> doEffect_path (std::vector<Geom::Path> const & path_in);
     virtual Geom::Piecewise<Geom::D2<Geom::SBasis> > doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & pwd2_in);
 
+    /* the knotholder entity classes (if any) must be declared friends */
+    //friend class Skeleton::KnotHolderEntityMyHandle;
+
 private:
     // add the parameters for your effect here:
     ScalarParam number;