diff options
author | Stefan Wildemann <gta04@metalstrolche.de> | 2021-12-24 13:24:54 +0100 |
---|---|---|
committer | Stefan Wildemann <gta04@metalstrolche.de> | 2021-12-24 13:24:54 +0100 |
commit | 195ed01b2ac1dc5b6818c17a82fe48608135572e (patch) | |
tree | ade88ff515cba3763fc9ac00ec2f0a392ec32ba5 | |
parent | 54ffa09cb9bfcd32a85a7681270b17e8f5443de1 (diff) | |
download | navit-cliff_spike_graphic.tar.gz |
review fixes.cliff_spike_graphic
Add changes requested by review, plus add paranoia check on xml
parameter.
-rw-r--r-- | navit/graphics.c | 11 | ||||
-rw-r--r-- | navit/layout.c | 7 |
2 files changed, 11 insertions, 7 deletions
diff --git a/navit/graphics.c b/navit/graphics.c index 46abe062f..08de16a1e 100644 --- a/navit/graphics.c +++ b/navit/graphics.c @@ -1723,9 +1723,9 @@ static void display_draw_arrows(struct graphics *gra, struct display_context *dc static void display_draw_spike(struct point *p, navit_float dx, navit_float dy, navit_float width, struct display_context *dc, struct graphics *gra) { - struct point pnt[3]; + struct point pnt[2]; navit_float l=navit_sqrt(dx*dx+dy*dy); - pnt[0]=pnt[1]=pnt[2]=*p; + pnt[0]=pnt[1]=*p; pnt[1].x+=(-dy/l)*width; pnt[1].y+=(dx/l)*width; graphics_draw_lines(gra, dc->gc, pnt, 2); @@ -1758,16 +1758,17 @@ static void display_draw_spikes(struct graphics *gra, struct display_context *dc dw=width[i+1] - width[i]; /* calculate the length of the way segment */ l=navit_sqrt(dx*dx+dy*dy); - if (l) { + if (l != 0) { /* length is not zero */ if(l > width[i]) { - int a =0; + /* length is bigger than the length of one spike */ + int a; int spike_count = l / distance; /* calculate the vector per spike */ dx=dx/spike_count; dy=dy/spike_count; dw=dw/spike_count; - for( a=0; a < spike_count; a+=1 ) { + for( a=0; a < spike_count; a++ ) { p=pnt[i]; p.x+=dx*a; p.y+=dy*a; diff --git a/navit/layout.c b/navit/layout.c index dcc8b099d..2300ab68d 100644 --- a/navit/layout.c +++ b/navit/layout.c @@ -459,9 +459,12 @@ static void element_set_spikes_width(struct element *e, struct attr **attrs) { static void element_set_spikes_distance(struct element *e, struct attr **attrs) { struct attr *distance; distance=attr_search(attrs, attr_distance); - if (distance) + if (distance) { e->u.spikes.distance=distance->u.num; - else + /* paranoia check. We divide with that value */ + if(e->u.spikes.distance < 1) + e->u.spikes.distance = 1; + } else e->u.spikes.distance=10; } |