From f5224918b38064da2feaf8f92116c5fe114240a4 Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Wed, 16 Jan 2019 16:49:50 +0100 Subject: [PATCH] adg: fix quote alignment on AdgRDim --- src/adg/adg-dim.c | 2 +- src/adg/adg-rdim.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/adg/adg-dim.c b/src/adg/adg-dim.c index ee4cf603..69b9622e 100644 --- a/src/adg/adg-dim.c +++ b/src/adg/adg-dim.c @@ -1635,7 +1635,7 @@ _adg_quote_angle(gdouble angle) { angle = cpml_angle(angle); - if (angle > G_PI_4 * 4 / 3 || angle <= -G_PI_4 * 3) + if (angle > G_PI / 3 || angle <= -G_PI_4 * 3) angle = cpml_angle(angle + G_PI); return angle; diff --git a/src/adg/adg-rdim.c b/src/adg/adg-rdim.c index 88994fa2..472f437b 100644 --- a/src/adg/adg-rdim.c +++ b/src/adg/adg-rdim.c @@ -127,6 +127,7 @@ adg_rdim_init(AdgRDim *rdim) data->trail = NULL; data->marker = NULL; data->radius = -1.; + data->angle = 0.; data->shift.base.x = data->shift.base.y = 0; cairo_matrix_init_identity(&data->quote.global_map); @@ -409,12 +410,15 @@ _adg_arrange(AdgEntity *entity) /* Arrange the quote */ if (quote != NULL) { cairo_matrix_t map; + gdouble x_align; + gdouble quote_angle = adg_dim_quote_angle(dim, data->angle); - adg_alignment_set_factor_explicit(quote, 1, 0); + x_align = cpml_angle_distance(quote_angle, data->angle) > G_PI_2 ? 0 : 1; + adg_alignment_set_factor_explicit(quote, x_align, 0); cpml_pair_from_cairo(&pair, &data->cairo.data[1]); cairo_matrix_init_translate(&map, pair.x, pair.y); - cairo_matrix_rotate(&map, data->angle); + cairo_matrix_rotate(&map, quote_angle); adg_entity_set_global_map(quote_entity, &map); adg_entity_arrange(quote_entity); cpml_extents_add(&extents, adg_entity_get_extents(quote_entity)); @@ -553,7 +557,7 @@ _adg_compute_geometry(AdgDim *dim) data->radius = cpml_pair_distance(&vector, NULL); /* angle */ - data->angle = adg_dim_quote_angle(dim, cpml_vector_angle(&vector)); + data->angle = cpml_vector_angle(&vector); /* point.base */ cpml_pair_copy(&data->point.base, &vector); -- 2.11.4.GIT