X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fpen-context.h;h=c214da30ddd7b6d69479cd0b686733c3f6df7b41;hb=19f2d6797853686cf668528be392548100e92025;hp=29938e923ca79ce9878d40004f70a24761d6d5be;hpb=44804318ece44d0c7256381d1ec3dfd63ee2a43c;p=inkscape.git diff --git a/src/pen-context.h b/src/pen-context.h index 29938e923..c214da30d 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)) @@ -30,16 +30,22 @@ enum { * 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; @@ -51,6 +57,18 @@ 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_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 */