From b363482ca06fc72ffedd0fd05f5663b128352f89 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Mon, 13 Nov 2017 00:24:23 +0100 Subject: Added speed improbements --- src/ui/tools/freehand-base.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/ui/tools/freehand-base.cpp') diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp index e6b55b6ce..52f578d13 100644 --- a/src/ui/tools/freehand-base.cpp +++ b/src/ui/tools/freehand-base.cpp @@ -235,14 +235,18 @@ static void spdc_apply_powerstroke_shape(std::vector points, Freeha Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (dc->input_has_pressure) { SPShape *sp_shape = dynamic_cast(item); - Geom::Path path; + Geom::PathVector pathv; if (sp_shape) { SPCurve * c = sp_shape->getCurve(); if (!c) { pt->points.clear(); return; } - path = c->get_pathvector()[0]; + pathv = c->get_pathvector(); + SPCurve * tmp_curve_to_adjust = new SPCurve(); + tmp_curve_to_adjust->set_pathvector(pt->pressure_pv); + sp_shape->setCurve(tmp_curve_to_adjust, true); + tmp_curve_to_adjust->unref(); } pt->removePowerStrokePreview(); double zoom = SP_EVENT_CONTEXT(dc)->desktop->current_zoom() * 5.0; @@ -262,7 +266,17 @@ static void spdc_apply_powerstroke_shape(std::vector points, Freeha Effect::createAndApply(POWERSTROKE, dc->desktop->doc(), item); Effect* lpe = SP_LPE_ITEM(item)->getCurrentLPE(); lpe->getRepr()->setAttribute("interpolator_type" , "CubicBezierSmooth"); - static_cast(lpe)->offset_points.param_set_and_write_new_value(pt->points); + LPEPowerStroke* pslpe = static_cast(lpe); + if (pslpe) { + pslpe->offset_points.param_set_and_write_new_value(pt->points); + if (sp_shape) { + SPCurve * tmp_curve_to_adjust = new SPCurve(); + tmp_curve_to_adjust->set_pathvector(pathv); + sp_shape->setCurve(tmp_curve_to_adjust, true); + tmp_curve_to_adjust->unref(); + pslpe->adjustForNewPath(pt->pressure_pv); + } + } pt->points.clear(); return; } -- cgit v1.2.3