[GRASS-dev] things to do before the 6.3.0 release
Glynn Clements
glynn at gclements.plus.com
Mon Dec 3 03:39:49 EST 2007
Hamish wrote:
> > What's wrong with r, d and c?
>
> I have now done some more tests. Scripts for easy comparison attached.
>
> The first is with spearfish's vector streams; adjusting d.vect width=:
>
> PNG driver (results seem to be identical)
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_0_PNGdriver.png
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_1_PNGdriver.png
>
> bonus problem:
> I am not sure what's causing the frame breakage at the bottom of the "D"
> frame. 90% of the time it looks ok in XDRIVER but not in PNG driver.
> Happens in both sometimes. I would blame d.frame.quarter math but that only
> runs once and the problem can come and go with d.redraw or d.out.file
> format=png, so I begin to suspect d.frame, with some race condition which
> makes the different speed of the PNG/X drivers trigger it or not??
> Perhaps it is d.resize or d.save? Resizing to the same dimensions as the
> monitor was opened with (d.resize w=800 h=900) causes it to happen.
> ?
Sorry, I don't understand. Can you clarify?
> back to d.vect rendering though,
>
> XDRIVER: (for r,d,l width=1 polylines render poorly, as seem in original
> examples from quoted link at the top of this email.
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_0_Xdriver.png
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_1_Xdriver.png
>
> ok so that's the tiny gaps in lines for XDRIVER polylines with width=1.
I can't reproduce this.
Does it occur with the PNG driver, or with a different X server?
> next problem- r,d inverse fill a small bay upon zoom in.
> Also, "l" in XDRIVER fill is badly broken. "g" is correct in all cases.
> (the vector map for that section of coastline available upon request)
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_fill_Xdriver.png
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_fill_PNGdriver.png
Please specify the region, so that I can attempt to reproduce this.
> next problem- in the PNG driver for all rendering methods but "g" the
> boundaries and fills don't line up. It's obvious if you look with xmag.
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_C_and_all_but_G_xmag_PNGdriver.png
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/dvect_render_fill_PNGdriver.png
Okay, I think I know about this. Points and line vertices need to use
floor(), while polygon vertices need round().
> next problem- (xdriver) g & l methods don't line up:
> d.vect Coast_isl type=area color=red fcolor=220:220:220 render=g
> d.vect Coast_isl type=area color=blue fcolor=none render=l
> d.grid -n 1000
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/dec2008/d_vect_gl_overlay.png
render=l selects culling, not clipping. It simply discards segments
which are entirely outside the clip window. It relies upon the
raster-level clip window (R_set_window()) being set appropriately,
which isn't the case for d.vect at present.
> and finally- "c" still has 1 pixel of white at the top and bottom of the
> display:
> http://bambi.otago.ac.nz/hamish/grass/bugs/d.vect/
I'll look into this later.
> > g should only be used if none of the others can be made to work.
>
> currently 'g' is still the only one that works properly in all cases for
> both XDRIVER and PNG driver. But the bugs in the others are probably not
> so hard to fix.
>
> Do you have any objections to using "g" as the default for the 6.3.0
> release? (and leaving as-is [a work in progress] in 6.3.cvs)
Yes, as it only works with the raster drivers (and may not work right
with the cairo driver if using anti-aliasing).
> > To get rid of the problem with render=l drawing beyond the edge of the
> > region, d.vect needs to set the raster clip window (R_set_window()) to
> > match the region (D_setup() sets it to match the frame), but it needs
> > to be set back afterwards (D_setup(0) should suffice).
>
> Should we wait to know if "l" will be the default before adding that?
I would recommend using l as the default, as it should be the fastest.
[Actually, I also need to add code to remove 0-length segments. When
zooming in, there could be a lot of these.]
> > Also:
> >
> > 1. d.vect uses the same rendering mode for both fills and strokes,
> > which isn't necessarily desirable.
>
> Once we have finished this debugging and all methods are rendering
> crisply we can pick winners, remove the render= option from d.vect,
> and use the multiple best methods for each task directly in the code,
> yes?
Some methods may have better performance with different types of data.
E.g. g will be quicker if the data doesn't need to be clipped, while l
will be quicker at high zoom.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list