index ea90c4254926df649f3648f89890e26f73c77218..1f5ea8e2c98330a38e1a53848e45da5af4c91e1e 100644 (file)
--- a/src/knot-holder-entity.h
+++ b/src/knot-holder-entity.h
#include <glib/gtypes.h>
#include "knot.h"
+#include <2geom/forward.h>
struct SPItem;
struct SPKnot;
-namespace NR {
-class Point;
-}
class SPDesktop;
class KnotHolder;
-typedef void (* SPKnotHolderSetFunc) (SPItem *item, NR::Point const &p, NR::Point const &origin, guint state);
-typedef NR::Point (* SPKnotHolderGetFunc) (SPItem *item);
+typedef void (* SPKnotHolderSetFunc) (SPItem *item, Geom::Point const &p, Geom::Point const &origin, guint state);
+typedef Geom::Point (* SPKnotHolderGetFunc) (SPItem *item);
/* fixme: Think how to make callbacks most sensitive (Lauris) */
typedef void (* SPKnotHolderReleasedFunc) (SPItem *item);
SPKnotModeType mode = SP_KNOT_MODE_XOR,
guint32 color = 0xffffff00);
- /* derived classes like PointParam for LPEs use this, e.g., to indicate that we must not call
- delete on their pointer when a knotholder is destroyed */
- virtual bool isLPEParam() { return false; }
+ /* derived classes used for LPE knotholder handles use this to indicate that they
+ must not be deleted when a knotholder is destroyed */
+ // TODO: it would be nice to ditch this but then we need to dynamically create instances of different
+ // KnotHolderEntity classes in Effect::addKnotHolderEntities. How to do this???
+ virtual bool isDeletable() { return true; }
/* the get/set/click handlers are virtual functions; each handler class for a knot
should be derived from KnotHolderEntity and override these functions */
- virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state) = 0;
- virtual NR::Point knot_get() = 0;
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) = 0;
+ virtual Geom::Point knot_get() = 0;
virtual void knot_click(guint /*state*/) {}
- virtual void onKnotUngrabbed() {}
void update_knot();
//private:
+ Geom::Point snap_knot_position(Geom::Point const &p);
+
SPKnot *knot;
SPItem *item;
+ SPDesktop *desktop;
KnotHolder *parent_holder;
sigc::connection _ungrabbed_connection;
};
+// derived KnotHolderEntity class for LPEs
+class LPEKnotHolderEntity : public KnotHolderEntity {
+ virtual bool isDeletable() { return false; }
+};
+
/* pattern manipulation */
class PatternKnotHolderEntityXY : public KnotHolderEntity {
public:
- virtual NR::Point knot_get();
- virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class PatternKnotHolderEntityAngle : public KnotHolderEntity {
public:
- virtual NR::Point knot_get();
- virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class PatternKnotHolderEntityScale : public KnotHolderEntity {
public:
- virtual NR::Point knot_get();
- virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
#endif /* !SEEN_KNOT_HOLDER_ENTITY_H */