Code

Fix change in revision 9947 to be consistent with rest of the codebase.
[inkscape.git] / src / pen-context.h
index d0392134b0cd78a0b40360c83e5ab834022c6b33..1026369d1cae7f7a353c00b457fbf2937ad23eda 100644 (file)
@@ -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,26 @@ 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;
+    
+    unsigned int events_disabled : 1;
 };
 
 /// The SPPenContext vtable (empty).
@@ -47,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 */
 
@@ -59,4 +81,4 @@ GType sp_pen_context_get_type();
   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 :