diff --git a/src/knotholder.h b/src/knotholder.h
index 6980e2fdd327cc40029b4e9270bf74019ac756f6..76142ed9826b14b8c9433b9d303a28c35df3ac85 100644 (file)
--- a/src/knotholder.h
+++ b/src/knotholder.h
#define __SP_KNOTHOLDER_H__
/*
#define __SP_KNOTHOLDER_H__
/*
- * SPKnotHolder - Hold SPKnot list and manage signals
+ * KnotHolder - Hold SPKnot list and manage signals
*
* Author:
* Mitsuru Oka <oka326@parkcity.ne.jp>
*
* Author:
* Mitsuru Oka <oka326@parkcity.ne.jp>
+ * Maximilian Albert <maximilian.albert@gmail.com>
*
* Copyright (C) 1999-2001 Lauris Kaplinski
* Copyright (C) 2000-2001 Ximian, Inc.
* Copyright (C) 2001 Mitsuru Oka
*
* Copyright (C) 1999-2001 Lauris Kaplinski
* Copyright (C) 2000-2001 Ximian, Inc.
* Copyright (C) 2001 Mitsuru Oka
+ * Copyright (C) 2008 Maximilian Albert
*
* Released under GNU GPL
*
*
* Released under GNU GPL
*
#include "knot-enums.h"
#include "forward.h"
#include "libnr/nr-forward.h"
#include "knot-enums.h"
#include "forward.h"
#include "libnr/nr-forward.h"
+#include <2geom/forward.h>
+#include "knot-holder-entity.h"
+#include <list>
namespace Inkscape {
namespace XML {
namespace Inkscape {
namespace XML {
}
}
}
}
+class KnotHolder {
+public:
+ KnotHolder() {} // do nothing in the default constructor
+ KnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~KnotHolder();
-typedef void (* SPKnotHolderSetFunc) (SPItem *item, NR::Point const &p, NR::Point const &origin, guint state);
-typedef NR::Point (* SPKnotHolderGetFunc) (SPItem *item);
-/* fixme: Think how to make callbacks most sensitive (Lauris) */
-typedef void (* SPKnotHolderReleasedFunc) (SPItem *item);
+ void update_knots();
-struct SPKnotHolder {
- SPDesktop *desktop;
- SPItem *item;
- GSList *entity;
+ void knot_moved_handler(SPKnot *knot, Geom::Point const &p, guint state);
+ void knot_clicked_handler(SPKnot *knot, guint state);
+ void knot_ungrabbed_handler(SPKnot *knot);
- SPKnotHolderReleasedFunc released;
+ void add(KnotHolderEntity *e);
- Inkscape::XML::Node *repr; ///< repr of the item, for setting and releasing listeners.
+ void add_pattern_knotholder();
- gboolean local_change; ///< if true, no need to recreate knotholder if repr was changed.
-};
+ const SPItem *getItem() { return item; }
+ bool knot_mouseover();
-/* fixme: As a temporary solution, if released is NULL knotholder flushes undo itself (Lauris) */
-SPKnotHolder *sp_knot_holder_new(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ friend class ShapeEditor;
-void sp_knot_holder_destroy(SPKnotHolder *knots);
+protected:
+ SPDesktop *desktop;
+ SPItem *item; // TODO: Remove this and keep the actual item (e.g., SPRect etc.) in the item-specific knotholders
+ Inkscape::XML::Node *repr; ///< repr of the item, for setting and releasing listeners.
+ std::list<KnotHolderEntity *> entity;
-void sp_knot_holder_add(SPKnotHolder *knot_holder,
- SPKnotHolderSetFunc knot_set,
- SPKnotHolderGetFunc knot_get,
- void (* knot_click) (SPItem *item, guint state),
- gchar const *tip);
+ SPKnotHolderReleasedFunc released;
-void sp_knot_holder_add_full(SPKnotHolder *knot_holder,
- SPKnotHolderSetFunc knot_set,
- SPKnotHolderGetFunc knot_get,
- void (* knot_click) (SPItem *item, guint state),
- SPKnotShapeType shape,
- SPKnotModeType mode,
- gchar const *tip);
+ gboolean local_change; ///< if true, no need to recreate knotholder if repr was changed.
+
+ bool dragging;
+};
+/**
+void knot_clicked_handler(SPKnot *knot, guint state, gpointer data);
+void knot_moved_handler(SPKnot *knot, Geom::Point const *p, guint state, gpointer data);
+void knot_ungrabbed_handler(SPKnot *knot, unsigned int state, KnotHolder *kh);
+**/
#endif /* !__SP_KNOTHOLDER_H__ */
#endif /* !__SP_KNOTHOLDER_H__ */
fill-column:99
End:
*/
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :