X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fpen-context.h;h=a358126acad8e5074d0f636160637c095d96126e;hb=0f51f94e09af3ab07d55c057a09b44f0790599b9;hp=d0392134b0cd78a0b40360c83e5ab834022c6b33;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/pen-context.h b/src/pen-context.h index d0392134b..a358126ac 100644 --- a/src/pen-context.h +++ b/src/pen-context.h @@ -6,7 +6,7 @@ */ #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)) @@ -33,13 +33,23 @@ struct SPPenContext : public SPDrawContext { NR::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; + + unsigned int events_disabled : 1; }; /// The SPPenContext vtable (empty). @@ -47,6 +57,17 @@ struct SPPenContextClass : public SPEventContextClass { }; 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_put_into_waiting_mode(SPDesktop *desktop, Inkscape::LivePathEffect::EffectType effect_type, + unsigned int num_clicks, bool use_polylines = true); #endif /* !SEEN_PEN_CONTEXT_H */