diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2011-06-13 08:25:08 +0000 |
|---|---|---|
| committer | Felipe C. da S. Sanches <juca@members.fsf.org> | 2011-06-13 08:25:08 +0000 |
| commit | a36b851b6d1ef714b228474af87e1307be1cdce9 (patch) | |
| tree | 7cb05206be0783df6929e21ef1fe3b6d360d3e13 /src/measure-context.cpp | |
| parent | cmake: (diff) | |
| download | inkscape-a36b851b6d1ef714b228474af87e1307be1cdce9.tar.gz inkscape-a36b851b6d1ef714b228474af87e1307be1cdce9.zip | |
adding preferences page for Measure Tool with option (enabled by default) to ignore first and last points when calculating/displaying distances
(bzr r10295)
Diffstat (limited to 'src/measure-context.cpp')
| -rw-r--r-- | src/measure-context.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
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<Geom::Point> 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; idx<measure_tmp_items.size(); idx++){ @@ -282,10 +292,12 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); double fontsize = prefs->getInt("/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 |
