diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2012-06-01 08:56:31 +0000 |
|---|---|---|
| committer | Jon A. Cruz <jon@joncruz.org> | 2012-06-01 08:56:31 +0000 |
| commit | 26c36ceb6c3ff02fa439ca1299da21e879fea81f (patch) | |
| tree | a8397c0e901af267b8d71dc14c2e670495df88c0 /src/measure-context.cpp | |
| parent | Adding baseline and arc to make angle measurement visualization easier. (diff) | |
| download | inkscape-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.cpp | 17 |
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); |
