diff options
| author | Maximilian Albert <maximilian.albert@gmail.com> | 2008-06-04 13:14:45 +0000 |
|---|---|---|
| committer | cilix42 <cilix42@users.sourceforge.net> | 2008-06-04 13:14:45 +0000 |
| commit | b87784976d14ec1fbde6dd3335f45f7fb1137cff (patch) | |
| tree | ea70749ce8d8d440c46a40481e5961dd93af3e7c /src | |
| parent | Factor out 'create and apply' code for LPEs so that it can be called from eve... (diff) | |
| download | inkscape-b87784976d14ec1fbde6dd3335f45f7fb1137cff.tar.gz inkscape-b87784976d14ec1fbde6dd3335f45f7fb1137cff.zip | |
Groundwork to allow automatic application of an LPE to a newly drawn path
(bzr r5799)
Diffstat (limited to 'src')
| -rw-r--r-- | src/draw-context.cpp | 14 | ||||
| -rw-r--r-- | src/draw-context.h | 6 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/draw-context.cpp b/src/draw-context.cpp index 9a2c1215c..0130f2378 100644 --- a/src/draw-context.cpp +++ b/src/draw-context.cpp @@ -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); } diff --git a/src/draw-context.h b/src/draw-context.h index 5ac1a7d09..c1166dcbd 100644 --- a/src/draw-context.h +++ b/src/draw-context.h @@ -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 |
