Opened 13 years ago
Closed 8 years ago
#1410 closed defect (fixed)
scalebar displays multiples north arrows
| Reported by: | cmbarton | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.0.5 |
| Component: | Display | Version: | svn-trunk |
| Keywords: | d.barscale, ll, north arrow | Cc: | |
| CPU: | Unspecified | Platform: | All |
Description
I just tried to use the scalebar in GRASS 7. Because it is a latlon map, I picked north arrow only. It displays a new line-drawing-only north arrow (no fill now), AND it displays 3 of them in a row. Only the left-most arrow has the "N" text with it. This is with both Cairo and PNG displays. I don't know if this is a problem with d.barscale or the GUI display of it. I've attached a screenshot. Weird.
Michael
Attachments (1)
Change History (14)
by , 13 years ago
| Attachment: | multiple_northarrows.jpg added |
|---|
comment:1 by , 13 years ago
comment:2 by , 13 years ago
The north arrow does not survive any screen redraw now and it turns out that settings are not kept even if you don't close it
comment:3 by , 13 years ago
| Component: | Default → Display |
|---|---|
| Keywords: | barscale d.barscale north arrow added |
| Platform: | Unspecified → All |
The settings issue (above) turned out to be a wxGUI issue that is now solved. The multiple arrows only seem to appear in a latlon location and seem to be a d.barscale issue. Related to this, is the missing shading (black right triangle and white left triangle is now clear on both sides) intentional or accidental?
comment:4 by , 12 years ago
d.barscale is still not working in latlon regions for GRASS 7. The multiple, unfilled north arrows are still being drawn. This seems to be a d.barscale problem.
comment:5 by , 11 years ago
| Keywords: | ll added; barscale removed |
|---|
- multiples still present in lat/lon locations with grass7 for
d.barscale -n.
- infill-color for
d.barscale -ndoesn't seem to be working in all locations, you just get the wireframe.
Hamish
comment:6 by , 11 years ago
the triplicate symbols in d.barscale still happens in lat/lon locations with the new version of the module. The infill problem is fixed now.
it seems to be during this code of D_symbol():
case S_POLYGON:
...
/* again, to draw the lines */
...
D_begin();
for (k = 0; k < chain->scount; k++) {
xp = x0 + sx * chain->sx[k];
yp = y0 - sy * chain->sy[k];
if (k == 0)
D_move_abs(xp, yp);
else
D_cont_abs(xp, yp);
}
D_end();
D_stroke();
which is called only once.
adding a printf() in the loop shows the xp and yp display coords look ok:
xp=50.40 yp=368.00 xp=33.40 yp=386.00 xp=50.40 yp=316.00 xp=68.40 yp=386.00 xp=50.40 yp=368.00 xp=50.40 yp=368.00
I tried throwing in a D_close() before the D_end(), no change.
- It is unclear to me what D_end() does now, it appears to be a no-op?
trying the different north_arrow= symbol options shows the problem manifesting itself differently through a couple different scenarios. My first guess would be a missing D_stroke(), but it's right there... so my next guess is some D_move_*() or D_pos_*() function error. It's a bit unclear to me when to use D_pos_*(), I tried to add some more header comments with what I understand about them, but some clarification would be appreciated as I fear spreading misinformation.
??
thanks, Hamish
comment:8 by , 8 years ago
| Milestone: | 7.0.0 → 7.0.5 |
|---|
comment:13 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Another problem is that the settings for d.barscale disappear if you turn off the north arrow and scale bar. So you have to set them again. This is not a big deal, but they used to be kept.
Michael