summaryrefslogtreecommitdiffstats
path: root/src/live_effects/lpe-fillet-chamfer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/live_effects/lpe-fillet-chamfer.cpp')
-rw-r--r--src/live_effects/lpe-fillet-chamfer.cpp62
1 files changed, 18 insertions, 44 deletions
diff --git a/src/live_effects/lpe-fillet-chamfer.cpp b/src/live_effects/lpe-fillet-chamfer.cpp
index 6c07f246c..1981c6983 100644
--- a/src/live_effects/lpe-fillet-chamfer.cpp
+++ b/src/live_effects/lpe-fillet-chamfer.cpp
@@ -43,14 +43,12 @@ LPEFilletChamfer::LPEFilletChamfer(LivePathEffectObject *lpeobject)
"method", FMConverter, &wr, this, FM_AUTO),
mode(_("Mode:"), _("Mode, fillet or chamfer"),
"mode", &wr, this, "F", true),
- radius(_("Radius (unit or %):"), _("Radius, in unit or %"), "radius", &wr,
+ radius(_("Radius:"), _("Radius, in unit or %"), "radius", &wr,
this, 0.0),
chamfer_steps(_("Chamfer steps:"), _("Chamfer steps"), "chamfer_steps",
&wr, this, 1),
- flexible(_("Flexible radius size (%)"), _("Flexible radius size (%)"),
+ flexible(_("Radius in %"), _("Flexible radius size (%)"),
"flexible", &wr, this, false),
- mirror_knots(_("Mirror Knots"), _("Mirror Knots"), "mirror_knots", &wr,
- this, true),
only_selected(_("Change only selected nodes"),
_("Change only selected nodes"), "only_selected", &wr, this,
false),
@@ -61,8 +59,6 @@ LPEFilletChamfer::LPEFilletChamfer(LivePathEffectObject *lpeobject)
false),
apply_no_radius(_("Apply changes if radius = 0"), _("Apply changes if radius = 0"), "apply_no_radius", &wr, this, true),
apply_with_radius(_("Apply changes if radius > 0"), _("Apply changes if radius > 0"), "apply_with_radius", &wr, this, true),
- helper_size(_("Helper path size with direction to node:"),
- _("Helper path size with direction to node"), "helper_size", &wr, this, 0),
_pathvector_satellites(nullptr),
_degenerate_hide(false)
{
@@ -72,10 +68,8 @@ LPEFilletChamfer::LPEFilletChamfer(LivePathEffectObject *lpeobject)
registerParameter(&mode);
registerParameter(&radius);
registerParameter(&chamfer_steps);
- registerParameter(&helper_size);
registerParameter(&flexible);
registerParameter(&use_knot_distance);
- registerParameter(&mirror_knots);
registerParameter(&apply_no_radius);
registerParameter(&apply_with_radius);
registerParameter(&only_selected);
@@ -88,10 +82,14 @@ LPEFilletChamfer::LPEFilletChamfer(LivePathEffectObject *lpeobject)
chamfer_steps.param_set_range(1, 999);
chamfer_steps.param_set_increments(1, 1);
chamfer_steps.param_set_digits(0);
- helper_size.param_set_range(0, 999);
- helper_size.param_set_increments(5, 5);
- helper_size.param_set_digits(0);
_provides_knotholder_entities = true;
+ previous_unit = NULL;
+}
+
+LPEFilletChamfer::~LPEFilletChamfer() {
+ if(previous_unit) {
+ g_free(previous_unit);
+ }
}
void LPEFilletChamfer::doOnApply(SPLPEItem const *lpeItem)
@@ -131,7 +129,7 @@ void LPEFilletChamfer::doOnApply(SPLPEItem const *lpeItem)
satellite.setSteps(chamfer_steps);
satellite.setAmount(power);
satellite.setIsTime(flexible);
- satellite.setHasMirror(mirror_knots);
+ satellite.setHasMirror(true);
satellite.setHidden(hide_knots);
subpath_satellites.push_back(satellite);
}
@@ -144,7 +142,7 @@ void LPEFilletChamfer::doOnApply(SPLPEItem const *lpeItem)
satellite.setSteps(chamfer_steps);
satellite.setAmount(power);
satellite.setIsTime(flexible);
- satellite.setHasMirror(mirror_knots);
+ satellite.setHasMirror(true);
satellite.setHidden(hide_knots);
subpath_satellites.push_back(satellite);
}
@@ -187,13 +185,6 @@ Gtk::Widget *LPEFilletChamfer::newWidget()
Gtk::Entry *entry_widget = dynamic_cast<Gtk::Entry *>(childList[1]);
entry_widget->set_width_chars(6);
}
-// } else if (param->param_key == "unit") {
-// Inkscape::UI::Widget::RegisteredUnitMenu* widg_registered =
-// Gtk::manage(dynamic_cast< Inkscape::UI::Widget::RegisteredUnitMenu *>(widg));
-// widg_registered->setUnit(unit.get_abbreviation());
-// widg_registered->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change unit parameter"));
-// widg_registered->getUnitMenu()->signal_changed().connect(sigc::mem_fun(*this, &LPEFilletChamfer::convertUnit));
-// widg = widg_registered;
} else if (param->param_key == "chamfer_steps") {
Inkscape::UI::Widget::Scalar *widg_registered =
Gtk::manage(dynamic_cast<Inkscape::UI::Widget::Scalar *>(widg));
@@ -206,11 +197,6 @@ Gtk::Widget *LPEFilletChamfer::newWidget()
Gtk::Entry *entry_widget = dynamic_cast<Gtk::Entry *>(childList[1]);
entry_widget->set_width_chars(3);
}
- } else if (param->param_key == "helper_size") {
- Inkscape::UI::Widget::Scalar *widg_registered =
- Gtk::manage(dynamic_cast<Inkscape::UI::Widget::Scalar *>(widg));
- widg_registered->signal_value_changed().connect(
- sigc::mem_fun(*this, &LPEFilletChamfer::refreshKnots));
} else if (param->param_key == "only_selected") {
Gtk::manage(widg);
}
@@ -280,15 +266,6 @@ void LPEFilletChamfer::updateAmount()
satellites_param.setPathVectorSatellites(_pathvector_satellites);
}
-//void LPEFilletChamfer::convertUnit()
-//{
-// SPDocument * document = SP_ACTIVE_DOCUMENT;
-// SPNamedView *nv = sp_document_namedview(document, NULL);
-// Glib::ustring display_unit = nv->display_units->abbr;
-// _pathvector_satellites->convertUnit(unit.get_abbreviation(), display_unit, apply_no_radius, apply_with_radius);
-// satellites_param.setPathVectorSatellites(_pathvector_satellites);
-//}
-
void LPEFilletChamfer::updateChamferSteps()
{
setSelected(_pathvector_satellites);
@@ -363,7 +340,7 @@ void LPEFilletChamfer::doBeforeEffect(SPLPEItem const *lpeItem)
satellite.setSteps(chamfer_steps);
satellite.setAmount(power);
satellite.setIsTime(flexible);
- satellite.setHasMirror(mirror_knots);
+ satellite.setHasMirror(true);
satellite.setHidden(hide_knots);
_pathvector_satellites->recalculateForNewPathVector(pathv, satellite);
satellites = _pathvector_satellites->getSatellites();
@@ -375,12 +352,7 @@ void LPEFilletChamfer::doBeforeEffect(SPLPEItem const *lpeItem)
} else {
satellites_param.setGlobalKnotHide(false);
}
- if (hide_knots) {
- satellites_param.setHelperSize(0);
- } else {
- satellites_param.setHelperSize(helper_size);
- }
- for (size_t i = 0; i < satellites.size(); ++i) {
+ for (size_t i = 0; i < satellites.size(); ++i) {
for (size_t j = 0; j < satellites[i].size(); ++j) {
if (j >= pathv[i].size()) {
continue;
@@ -397,9 +369,6 @@ void LPEFilletChamfer::doBeforeEffect(SPLPEItem const *lpeItem)
satellites[i][j].amount = size;
}
}
- if (satellites[i][j].has_mirror != mirror_knots) {
- satellites[i][j].has_mirror = mirror_knots;
- }
satellites[i][j].hidden = hide_knots;
if (only_selected && isNodePointSelected(curve_in.initialPoint()) ){
satellites[i][j].setSelected(true);
@@ -413,6 +382,11 @@ void LPEFilletChamfer::doBeforeEffect(SPLPEItem const *lpeItem)
_pathvector_satellites->setSatellites(satellites);
satellites_param.setPathVectorSatellites(_pathvector_satellites, write);
refreshKnots();
+ gchar const *current_unit = unit.get_abbreviation();
+ if (previous_unit && strcmp(previous_unit, current_unit) ) {
+ updateAmount();
+ }
+ previous_unit = const_cast<gchar *>(current_unit);
} else {
g_warning("LPE Fillet can only be applied to shapes (not groups).");
}