summaryrefslogtreecommitdiffstats
path: root/src/measure-context.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2012-06-01 08:56:31 +0000
committerJon A. Cruz <jon@joncruz.org>2012-06-01 08:56:31 +0000
commit26c36ceb6c3ff02fa439ca1299da21e879fea81f (patch)
treea8397c0e901af267b8d71dc14c2e670495df88c0 /src/measure-context.cpp
parentAdding baseline and arc to make angle measurement visualization easier. (diff)
downloadinkscape-26c36ceb6c3ff02fa439ca1299da21e879fea81f.tar.gz
inkscape-26c36ceb6c3ff02fa439ca1299da21e879fea81f.zip
Place angle measurement along the measure arc.
(bzr r11450)
Diffstat (limited to 'src/measure-context.cpp')
-rw-r--r--src/measure-context.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/measure-context.cpp b/src/measure-context.cpp
index 31fda852b..460b3284b 100644
--- a/src/measure-context.cpp
+++ b/src/measure-context.cpp
@@ -462,16 +462,29 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv
{
// TODO cleanup memory, Glib::ustring, etc.:
gchar *angle_str = g_strdup_printf("%.2f °", angle * 180/M_PI);
+
+ CanvasTextAnchorPositionEnum anchor = TEXT_ANCHOR_LEFT;
+ Geom::Point where = end_point;
+ if (desktop->d2w(end_point - start_point).length() > 30) {
+ Geom::Affine adjust = Geom::Affine(Geom::Translate(-start_point))
+ * Geom::Affine(Geom::Rotate(-angle / 2))
+ * Geom::Affine(Geom::Translate(start_point));
+ where *= adjust;
+ anchor = TEXT_ANCHOR_CENTER;
+ } else {
+ where += desktop->w2d(Geom::Point(3*fontsize, fontsize));
+ }
+
SPCanvasText *canvas_tooltip = sp_canvastext_new(sp_desktop_tempgroup(desktop),
desktop,
- end_point + desktop->w2d(Geom::Point(3*fontsize, fontsize)),
+ where,
angle_str);
sp_canvastext_set_fontsize(canvas_tooltip, fontsize);
canvas_tooltip->rgba = 0xffffffff;
canvas_tooltip->rgba_background = 0x337f337f;
canvas_tooltip->outline = false;
canvas_tooltip->background = true;
- canvas_tooltip->anchor_position = TEXT_ANCHOR_LEFT;
+ canvas_tooltip->anchor_position = anchor;
measure_tmp_items.push_back(desktop->add_temporary_canvasitem(canvas_tooltip, 0));
g_free(angle_str);