From 7aaeaacc08de60fd324646afe69f4dbed93f89d4 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 10 Jun 2018 16:20:18 +0200 Subject: Allow inkscape handle units and percent in dasharray and dashoffset. Add pref optional to scale dashes on stroke scale --- src/widgets/dash-selector.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/widgets/dash-selector.cpp') diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp index 37bf08b3d..43f5f66e9 100644 --- a/src/widgets/dash-selector.cpp +++ b/src/widgets/dash-selector.cpp @@ -27,7 +27,9 @@ #include "preferences.h" #include "display/cairo-utils.h" - +#include "util/units.h" +#include "inkscape.h" +#include "object/sp-namedview.h" #include "style.h" #include "ui/dialog-events.h" @@ -111,7 +113,12 @@ void SPDashSelector::init_dashes() { if (!dash_prefs.empty()) { SPStyle style; dashes = g_new (double *, dash_prefs.size() + 2); // +1 for custom slot, +1 for terminator slot - + SPDocument * document = SP_ACTIVE_DOCUMENT; + SPNamedView *nv = sp_document_namedview(document, NULL); + Glib::ustring display_unit = "px"; + if (nv) { + display_unit = nv->display_units->abbr; + } for (std::vector::iterator i = dash_prefs.begin(); i != dash_prefs.end(); ++i) { style.readFromPrefs( *i ); @@ -120,7 +127,7 @@ void SPDashSelector::init_dashes() { double *d = dashes[pos]; unsigned i = 0; for (; i < style.stroke_dasharray.values.size(); i++) { - d[i] = style.stroke_dasharray.values[i]; + d[i] = Inkscape::Util::Quantity::convert(style.stroke_dasharray.values[i].computed, "px", display_unit.c_str()); } d[i] = -1; } else { -- cgit v1.2.3