Debug symbolizer is useful, and used in a bunch of tests. This
adds debug symbolizer support for Cairo to make it closer to the
capabilities of AGG.
Adding debug symbolizer for Cairo meant that red boxes appeared in
many of the visual test outputs. This commit replaces them with
the output, after visual inspection. They should now be closer to
the output of the AGG test cases.
This uses the renderer_common header to do most of the heavy
lifting, but otherwise is very similar to the AGG renderer
implementation.
Add cairo ref images for group symbolizer tests.
The first test shows how an obstacle under the group being displayed
will cause the whole group to not display. Above is an replica of
the same layout using non-grouped symbolizers, which shows that
only the parts which intersect the obstacle will not be drawn.
The second is a line placement test, which just tests placement
of groups on a line with variable spacing.
The third is a test of repeat key in group symbolizer.
The test shows two items with different repeat keys ("foo" and "bar")
and rows of other group symbolizers sensitive to either one. The
reference images show that the "bar"-sensitive rows are displaced
by the "bar" item, but not the "foo" item.
Segfault was due to `glyph_position` structs keeping a pointer to
`glyph_info` objects which went out of scope at a different time.
The (rather ugly) fix for the moment is to copy that information
into the thunk object.
- there are two versions:
- point-symbolizer-expressions: file
- point-symbolizer-expressions-all: additionally test
allow-overlap, opacity, transform, ignore-placement, comp-op
which are not supported right now
- there are two versions:
- polygon-symbolizer-expressions: fill, fill-opacity, gamma
- polygon-symbolizer-expressions-all: additionally test
comp-op which is not supported right now
- there are two versions:
- line-symbolizer-expressions: stroke, stroke-width, stroke-opacity, offset
- line-symbolizer-expressions-all: additionally test
stroke-dasharray, stroke-linecap, stroke-linejoin, comp-op
which are not supported right now
These are mostly text affected because it is multi-line. The
"lines-5" test case text is improved - it lines up now. The
"line-offset" test case is not multi-line, but the differences
appear to be minimal.
Calculation of label alignment in multi-line labels seems to be
off. This test reproduces it by laying out a series of multi-line
labels along an S-shaped curve. In all these cases, the vertical
bar character should, to within a few pixels, line up. The
orientation at sharper corners is still a little off, but likely
due to discontinuities.
Both are rendering the same SVG marker, at the same size. The
output should (and does, for Cairo & Grid renderers) look like
identical rows of spots. But the AGG one does not.
This is an attempt to create a test case for issue #2117.
- Implementation by @herm for GSOC 2012 (http://mapnik.org/news/2012/10/06/gsoc2012-status9/)
- C++11 port, improvements, optimizations by @artemp
- Testing and integration with master by @springmeyer
- Thank you to all the support from @behdad along the way
- Thanks for help testing @toton6868, @stephankn, @nirvn, @mfrasca, @simonsonc and many others
Refs: #2073,#2070,#2038,#2037,#1953,#1820,#1819,#1714,#1634,#1547,#1532,#1319,#1208,#1154,#1146