summaryrefslogtreecommitdiffstats
path: root/src/measure-context.cpp
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2011-06-13 08:25:08 +0000
committerFelipe C. da S. Sanches <juca@members.fsf.org>2011-06-13 08:25:08 +0000
commita36b851b6d1ef714b228474af87e1307be1cdce9 (patch)
tree7cb05206be0783df6929e21ef1fe3b6d360d3e13 /src/measure-context.cpp
parentcmake: (diff)
downloadinkscape-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.cpp22
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