From: Dima K. <gn...@di...> - 2017-11-05 04:43:20
|
Ethan Merritt <eam...@gm...> writes: > Here's a start. I'll probably commit these changes to CVS when the > current turmoil settles. After applying this patch there is only one > call site for term->arrow() in the code base, in draw_clip_arrow(). > Could be I'm missing some complication, but it looks to me that any > changes needed for your heads-only implementation can be limited to > this one routine. Here's a new patch series. These assume your use_draw_clip_arrow.patch is applied. Again, please apply with 'git am', or let me know what is unsatisfactory, so that I can address it. The updates are similar to the last patch series in that some functions took integers previously, but now they take floating-point values. In a number of cases, this patch series makes available both flavors: integer and floating-point. Is this what you had in mind? And two more related points: 1. This patch uncovered an inconsistency in much of our code: when converting a floating-point terminal coordinate to an integer one, sometimes we round (either with (int)(x+0.5) or by calling axis_map_toint()) and sometimes we floor ( (int)(x) ). Looks like it's more or less random which one we pick. We should always round, I suspect. This patch series doesn't attempt to resolve this, but a future set of patches should. 2. I discovered the issue with the vector fields manifests in two different ways. For very short vectors, they simply disappear, as we discussed. For vectors that are short, but not 0-pixels-short, the arrowheads are still plotted, but the angular resolution becomes very poor. The patches here resolve both of these. Thanks. |