From 93d20b815cc0f3c73c19dc1a0f026aa9d80c616d Mon Sep 17 00:00:00 2001 From: lecoanet Date: Thu, 15 Mar 2001 09:05:10 +0000 Subject: Correction des instabilit�s de position entre les diff�rents composants de la pise et l'�tiquette (arrondis syst�matiques). Correction d'un bug sur le pattern de remplissage. On ne repositionnait pas le pattern ce qui entrainait des marqueurs hachur�s. --- generic/Track.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'generic/Track.c') diff --git a/generic/Track.c b/generic/Track.c index d85f71c..fb6a587 100644 --- a/generic/Track.c +++ b/generic/Track.c @@ -484,7 +484,7 @@ Destroy(Item item) { TrackItem track = (TrackItem) item; WidgetInfo *wi = item->wi; - + if (track->leader_points) { ZnListFree(track->leader_points); } @@ -661,7 +661,6 @@ Query(Item item, * ********************************************************************************** */ - static void ComputeCoordinates(Item item, ZnBool force) @@ -695,6 +694,8 @@ ComputeCoordinates(Item item, old_pos = track->dev; ZnTransformPoint(wi->current_transfo, &track->pos, &track->dev); + track->dev.x = REAL_TO_INT(track->dev.x); + track->dev.y = REAL_TO_INT(track->dev.y); /*printf("track pos %g %g --> %g %g\n", track->pos.x, track->pos.y, track->dev.x, track->dev.y);*/ if (track->symbol != ZnUnspecifiedPattern) { Tk_SizeOfBitmap(wi->dpy, track->symbol, &w, &h); @@ -736,7 +737,9 @@ ComputeCoordinates(Item item, if (item->class == ZnTrack) { p.x = track->pos.x + track->speed_vector.x * wi->speed_vector_length; p.y = track->pos.y + track->speed_vector.y * wi->speed_vector_length; - ZnTransformPoint(wi->current_transfo, &p, &track->speed_vector_dev); + ZnTransformPoint(wi->current_transfo, &p, &track->speed_vector_dev); + track->speed_vector_dev.x = REAL_TO_INT(track->speed_vector_dev.x); + track->speed_vector_dev.y = REAL_TO_INT(track->speed_vector_dev.y); AddPointToBBox(&item->item_bounding_box, track->speed_vector_dev.x, track->speed_vector_dev.y); } @@ -762,6 +765,7 @@ ComputeCoordinates(Item item, xp.x = xp.x - track->dev.x; xp.y = xp.y - track->dev.y; track->marker_size_dev = sqrt(xp.x*xp.x + xp.y*xp.y); + track->marker_size_dev = REAL_TO_INT(track->marker_size_dev); if (track->marker_size_dev > PRECISION_LIMIT) { AddPointToBBox(&item->item_bounding_box, track->dev.x - (ZnPos) track->marker_size_dev, @@ -809,7 +813,9 @@ ComputeCoordinates(Item item, field_set->label_pos.y = track->dev.y - track->label_dy; Anchor2Origin(&field_set->label_pos, bb_width, bb_height, track->label_anchor, &field_set->label_pos); - + field_set->label_pos.x = REAL_TO_INT(field_set->label_pos.x); + field_set->label_pos.y = REAL_TO_INT(field_set->label_pos.y); + AddPointToBBox(&item->item_bounding_box, field_set->label_pos.x, field_set->label_pos.y); AddPointToBBox(&item->item_bounding_box, @@ -1036,7 +1042,6 @@ Draw(Item item) int h_side_size, side_size, width=0, height=0; int i, nb_hist, num_acc_pos; - /* Draw the marker */ if (track->marker_size_dev != 0) { SetLineStyle(wi->dpy, wi->gc, track->marker_style); @@ -1062,7 +1067,8 @@ Draw(Item item) 0, 360 * 64); } else { - XChangeGC(wi->dpy, wi->gc, GCLineWidth | GCForeground, &values); + values.fill_style = FillSolid; + XChangeGC(wi->dpy, wi->gc, GCFillStyle | GCLineWidth | GCForeground, &values); XDrawArc(wi->dpy, wi->draw_buffer, wi->gc, track->dev.x - (ZnPos) track->marker_size_dev, track->dev.y - (ZnPos) track->marker_size_dev, -- cgit v1.1