Create a group_symbolizer_helper for group placments, and extract some code from
text_symbolizer_helper into a base class to share with group_symbolizer_helper.
Also, move tolerance_iterator into its own header file. Use helper in
process_group_symbolizer to find placement positions.
This renders the saved information from previous calls to the
bounding box extraction code, offset by some amount which should
be determined from running the `placement_finder`. Note that this
doesn't implement that bit, just the rendering.
This is done by creating a fake 'virtual' environment at a fake
point and running the symbolizer render code. The actual render
is saved in a thunk for after the group layout has been done.
This includes XML parsing of group symbolizer and related objects and
process_group_symbolizer method in the AGG renderer. This also includes
code to collect group symbolizer indexed columns, create sub features,
and match them to group rules.
- 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.
This forces offset lines to be aligned to the closest point to
the anchor point on the original line, meaning that they are
aligned where the offset line and original run parallel, or nearly
so.