From 26c36ceb6c3ff02fa439ca1299da21e879fea81f Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Fri, 1 Jun 2012 01:56:31 -0700 Subject: Place angle measurement along the measure arc. (bzr r11450) --- src/measure-context.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/measure-context.cpp') 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); -- cgit v1.2.3