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 04:32:05 +0000
committerFelipe C. da S. Sanches <juca@members.fsf.org>2011-06-13 04:32:05 +0000
commit222476b91dd4f70d8d1f5580435d381b81ce9773 (patch)
tree2de1fe7fe4962b3b7b4d62debe22a51991e9d70a /src/measure-context.cpp
parentreplace local CheckStructMember.cmake with cmake's (diff)
downloadinkscape-222476b91dd4f70d8d1f5580435d381b81ce9773.tar.gz
inkscape-222476b91dd4f70d8d1f5580435d381b81ce9773.zip
display angle info in the measurement tool
(bzr r10288)
Diffstat (limited to 'src/measure-context.cpp')
-rw-r--r--src/measure-context.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/measure-context.cpp b/src/measure-context.cpp
index 6870786f2..5560be335 100644
--- a/src/measure-context.cpp
+++ b/src/measure-context.cpp
@@ -193,6 +193,10 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv
p.appendNew<Geom::LineSegment>(desktop->dt2doc(motion_dt));
lineseg.push_back(p);
+ double deltax = motion_dt[Geom::X] - start_point[Geom::X];
+ double deltay = motion_dt[Geom::Y] - start_point[Geom::Y];
+ double angle = atan2(deltay, deltax);
+
//TODO: calculate NPOINTS
//800 seems to be a good value for 800x600 resolution
#define NPOINTS 800
@@ -278,6 +282,9 @@ 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];
for (idx=1; idx < intersections.size(); idx++){
Geom::Point measure_text_pos = (previous_point + intersections[idx])/2;
@@ -287,10 +294,6 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv
sprintf(measure_str, "%.2f", (intersections[idx] - previous_point).length());
SPCanvasItem *canvas_tooltip = sp_canvastext_new(sp_desktop_tempgroup(desktop), desktop, desktop->dt2doc(measure_text_pos), measure_str);
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- double fontsize = prefs->getInt("/tools/measure/fontsize");
-
- //TODO: get font size option from toolbar
sp_canvastext_set_fontsize (SP_CANVASTEXT(canvas_tooltip), fontsize);
measure_tmp_items.push_back(desktop->add_temporary_canvasitem(canvas_tooltip, 0));
@@ -298,6 +301,14 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv
previous_point = intersections[idx];
}
+ char* angle_str = (char*) malloc(sizeof(char)*20);
+ sprintf(angle_str, "%.2f degrees", angle * 180/3.1415 );
+ SPCanvasItem *canvas_tooltip = sp_canvastext_new(sp_desktop_tempgroup(desktop), desktop, motion_dt + desktop->w2d(Geom::Point(50,0)), angle_str);
+ sp_canvastext_set_fontsize (SP_CANVASTEXT(canvas_tooltip), fontsize);
+
+ measure_tmp_items.push_back(desktop->add_temporary_canvasitem(canvas_tooltip, 0));
+ free(angle_str);
+
gobble_motion_events(GDK_BUTTON1_MASK);
}
break;