Code

Groundwork to allow automatic application of an LPE to a newly drawn path
authorcilix42 <cilix42@users.sourceforge.net>
Wed, 4 Jun 2008 13:14:45 +0000 (13:14 +0000)
committercilix42 <cilix42@users.sourceforge.net>
Wed, 4 Jun 2008 13:14:45 +0000 (13:14 +0000)
src/draw-context.cpp
src/draw-context.h

index 9a2c1215c0f3bf2692dccd970db816e3fcc28a07..0130f2378a6b2f5409dae49dcfe073860bba623d 100644 (file)
@@ -115,6 +115,8 @@ sp_draw_context_init(SPDrawContext *dc)
     dc->green_color = 0x00ff007f;
     dc->red_curve_is_valid = false;
 
+    dc->waiting_LPE = Inkscape::LivePathEffect::INVALID_LPE;
+
     new (&dc->sel_changed_connection) sigc::connection();
     new (&dc->sel_modified_connection) sigc::connection();
 }
@@ -241,6 +243,16 @@ sp_draw_context_root_handler(SPEventContext *ec, GdkEvent *event)
     return ret;
 }
 
+/*
+ * If we have an item and a waiting LPE, apply the effect to the item
+ */
+void
+spdc_check_for_and_apply_waiting_LPE(SPDrawContext *dc, SPItem *item)
+{
+    if (item && dc->waiting_LPE != Inkscape::LivePathEffect::INVALID_LPE) {
+        Inkscape::LivePathEffect::Effect::createAndApply(dc->waiting_LPE, dc->desktop->doc(), item);
+    }
+}
 
 /*
  * Selection handlers
@@ -249,6 +261,8 @@ sp_draw_context_root_handler(SPEventContext *ec, GdkEvent *event)
 static void
 spdc_selection_changed(Inkscape::Selection *sel, SPDrawContext *dc)
 {
+    spdc_check_for_and_apply_waiting_LPE(dc, sel->singleItem());
+
     if (dc->attach) {
         spdc_attach_selection(dc, sel);
     }
index 5ac1a7d0978fe42a2d89eef2a563d4765f524dec..c1166dcbd0fed2b516f6891365bf284dc24c0c19 100644 (file)
@@ -19,6 +19,7 @@
 #include <forward.h>
 #include <display/display-forward.h>
 #include <libnr/nr-point.h>
+#include "live_effects/effect.h"
 
 /* Freehand context */
 
@@ -68,6 +69,9 @@ struct SPDrawContext : public SPEventContext{
     /* End anchor */
     SPDrawAnchor *ea;
 
+    /* type of the LPE that is to be applied automatically to a finished path (if any) */
+    Inkscape::LivePathEffect::EffectType waiting_LPE;
+
     sigc::connection sel_changed_connection;
     sigc::connection sel_modified_connection;
 
@@ -83,7 +87,7 @@ SPDrawAnchor *spdc_test_inside(SPDrawContext *dc, NR::Point p);
 void spdc_concat_colors_and_flush(SPDrawContext *dc, gboolean forceclosed);
 void spdc_endpoint_snap_rotation(SPEventContext const *const ec, NR::Point &p, NR::Point const o, guint state);
 void spdc_endpoint_snap_free(SPEventContext const *ec, NR::Point &p, guint state);
-
+void spdc_check_for_and_apply_waiting_LPE(SPDrawContext *dc, SPItem *item);
 
 #endif