diff --git a/src/pen-context.h b/src/pen-context.h
index e149391a9b02da04c2e36463ba1a522fdefbe4f0..c214da30ddd7b6d69479cd0b686733c3f6df7b41 100644 (file)
--- a/src/pen-context.h
+++ b/src/pen-context.h
*/
#include "draw-context.h"
-
+#include "live_effects/effect.h"
#define SP_TYPE_PEN_CONTEXT (sp_pen_context_get_type())
#define SP_PEN_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_PEN_CONTEXT, SPPenContext))
* SPPenContext: a context for pen tool events.
*/
struct SPPenContext : public SPDrawContext {
- NR::Point p[5];
+ Geom::Point p[5];
/** \invar npoints in {0, 2, 5}. */
+ // npoints somehow determines the type of the node (what does it mean, exactly? the number of Bezier handles?)
gint npoints;
unsigned int mode : 1;
unsigned int state : 2;
- unsigned int onlycurves : 1;
+
+ bool polylines_only;
+ bool polylines_paraxial;
+ int num_clicks;
+
+ unsigned int expecting_clicks_for_LPE; // if positive, finish the path after this many clicks
+ Inkscape::LivePathEffect::Effect *waiting_LPE; // if NULL, waiting_LPE_type in SPDrawContext is taken into account
+ SPLPEItem *waiting_item;
SPCanvasItem *c0, *c1, *cl0, *cl1;
GType sp_pen_context_get_type();
+inline bool sp_pen_context_has_waiting_LPE(SPPenContext *pc) {
+ // note: waiting_LPE_type is defined in SPDrawContext
+ return (pc->waiting_LPE != NULL ||
+ pc->waiting_LPE_type != Inkscape::LivePathEffect::INVALID_LPE);
+}
+
+void sp_pen_context_set_polyline_mode(SPPenContext *const pc);
+void sp_pen_context_wait_for_LPE_mouse_clicks(SPPenContext *pc, Inkscape::LivePathEffect::EffectType effect_type,
+ unsigned int num_clicks, bool use_polylines = true);
+void sp_pen_context_cancel_waiting_for_LPE(SPPenContext *pc);
+void sp_pen_context_put_into_waiting_mode(SPDesktop *desktop, Inkscape::LivePathEffect::EffectType effect_type,
+ unsigned int num_clicks, bool use_polylines = true);
#endif /* !SEEN_PEN_CONTEXT_H */