From a36b851b6d1ef714b228474af87e1307be1cdce9 Mon Sep 17 00:00:00 2001 From: Felipe Corr??a da Silva Sanches Date: Mon, 13 Jun 2011 05:25:08 -0300 Subject: adding preferences page for Measure Tool with option (enabled by default) to ignore first and last points when calculating/displaying distances (bzr r10295) --- src/measure-context.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/measure-context.cpp') diff --git a/src/measure-context.cpp b/src/measure-context.cpp index 371ac3356..a4e81475e 100644 --- a/src/measure-context.cpp +++ b/src/measure-context.cpp @@ -213,7 +213,12 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv GSList *l; int counter=0; std::vector intersections; - intersections.push_back(desktop->dt2doc(start_point)); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool ignore_1st_and_last = prefs->getBool("/tools/measure/ignore_1st_and_last", true); + + if (!ignore_1st_and_last){ + intersections.push_back(desktop->dt2doc(start_point)); + } for (l = items; l != NULL; l = l->next){ item = (SPItem*) (l->data); @@ -253,10 +258,15 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv } //g_free(repr); } - intersections.push_back(desktop->dt2doc(motion_dt)); + + if (!ignore_1st_and_last){ + intersections.push_back(desktop->dt2doc(motion_dt)); + } //sort intersections - std::sort(intersections.begin(), intersections.end(), GeomPointSortPredicate); + if (intersections.size()>2){ + std::sort(intersections.begin(), intersections.end(), GeomPointSortPredicate); + } unsigned int idx; for (idx=0; idxgetInt("/tools/measure/fontsize"); - Geom::Point previous_point = intersections[0]; + Geom::Point previous_point; + if (intersections.size()>0) + previous_point = intersections[0]; + for (idx=1; idx < intersections.size(); idx++){ Geom::Point measure_text_pos = (previous_point + intersections[idx])/2; //TODO: shift label a few pixels in the y coordinate -- cgit v1.2.3