Commit graph

7648 commits

Author SHA1 Message Date
Jordan Hollinger
08ea56996a Add shield symbolizer support in group symbolizer processing.
Update some test cases to use ShieldSymbolizer instead of point and text.
2014-02-25 08:53:35 -05:00
Jordan Hollinger
07dc6e37a2 Merge branch 'expr-v2' of github.com:mapnik/mapnik into expr-v2-group-symbolizer
Conflicts:
	include/mapnik/attribute_collector.hpp
2014-02-18 18:22:01 -05:00
Matt Amos
a25b480593 Python interface for group symbolizer.
Boost::Python interface, and added a test to check that it works.
Looks like it fails at the moment due to other changes - a lot of
the python symbolizer tests show the same thing.
2014-02-18 16:38:58 -05:00
Jordan Hollinger
bbd2cfd40f Grid renderer implementation for group symbolizer.
This uses common process_group_symbolizer for most of the work.
Add reference grids for visual tests.
2014-02-18 16:37:41 -05:00
Matt Amos
f81d5abe1f "Implement" group symbolizer for SVG renderer.
Note that the "implementation" for SVG renderer is the same as
for other symbolizers there - i.e: empty.
2014-02-18 15:54:32 -05:00
Matt Amos
7e25a220a8 Implement debug symbolizer for Cairo. Update tests for debug symbolizer.
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.
2014-02-18 15:53:55 -05:00
Matt Amos
44e69e9b05 Cairo renderer implementation of group symbolizer.
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.
2014-02-18 15:45:11 -05:00
Matt Amos
f8097748a4 Added more tests for group symbolizer.
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.
2014-02-18 15:06:40 -05:00
Jordan Hollinger
3d1c30db1e Extracted a lot of code from agg render process_group_symbolizer.
Move a lot of processing into a common process_group_symbolizer function.
Also, extract column collection out of process_group_symbolizer function.
This will reduce duplication needed for other renderers.
2014-02-18 15:06:40 -05:00
Matt Amos
efc29649ab Added test for group symbolizer, fixed segfault.
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.
2014-02-18 14:06:05 -05:00
Jordan Hollinger
76329028d2 Find placements and render in process_group_symbolizer.
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.
2014-02-18 14:01:04 -05:00
Matt Amos
1ccdc5b76d Added code to render frozen thunks.
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.
2014-02-18 11:11:07 -05:00
Matt Amos
b85e7d0764 Added method to extract bounding boxes for symbolizers.
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.
2014-02-18 11:11:06 -05:00
Jordan Hollinger
fbc2a0d1e3 Framework for group symbolizer.
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.
2014-02-18 11:07:52 -05:00
Dane Springmeyer
b0278d4285 fix #2156 2014-02-11 09:20:11 -08:00
Dane Springmeyer
b799395f6a remove unused code 2014-02-10 21:39:56 -08:00
Dane Springmeyer
913bcb44b3 c++11 2014-02-10 21:36:59 -08:00
Dane Springmeyer
c13448f75e collect attributes from all properties - closes #2153 2014-02-10 19:41:17 -08:00
Dane Springmeyer
1c30683f23 fix round tripping of max-char-angle-delta value 2014-02-10 19:37:40 -08:00
artemp
5b286da889 c++ : style 2014-02-10 21:56:20 +00:00
Dane Springmeyer
0a26485d28 add simple, c++ version of nik2img 2014-02-10 10:46:48 -08:00
Dane Springmeyer
7b75a24111 Merge pull request #2154 from mapnik/expr-v2-vt-conv-feature
Expr v2 vt conv feature
2014-02-10 10:44:19 -08:00
Dane Springmeyer
bcde6ae631 Merge branch 'master' of github.com:mapnik/mapnik into expr-v2 2014-02-09 13:27:24 -08:00
Dane Springmeyer
d99daff007 iwyu 2014-02-09 13:25:00 -08:00
Dane Springmeyer
9d6346aa98 fix compile - refs #2148 2014-02-09 11:30:26 -08:00
Dane Springmeyer
89f72f02e8 pass feature to vertex_converters - refs #2148/#2140 2014-02-08 22:10:14 -08:00
Dane Springmeyer
c275d5512d consistently use mapnik value types 2014-02-07 22:41:50 -08:00
Dane Springmeyer
fa762ce971 now that we only support boost >= 1.47 we can remove older phoenix support 2014-02-07 22:36:33 -08:00
Dane Springmeyer
d082732797 Merge pull request #2136 from MapQuest/mla-expr-v2-multi-line-text-alignment
Multi-line text alignment
2014-02-07 11:05:08 -08:00
Dane Springmeyer
3d90715883 only return true if plugins are actually newly registered 2014-02-06 18:24:56 -08:00
Dane Springmeyer
88613fc2ec check filesystem before trying to open plugin + only report unique directories searched - closes #2131
Conflicts:
	src/datasource_cache.cpp
2014-02-06 17:08:38 -08:00
Dane Springmeyer
f6b74ff819 fix #2141 2014-02-05 12:32:21 -08:00
Dane Springmeyer
538af2515d fix rendering of multiple styles with OGR plugin - refs #2048 and mapbox/tilemill#2202 2014-01-31 19:13:24 -08:00
Jordan Hollinger
269b038147 Extract text layout related properties (e.g. displacement, alignments) into seperate object from other placement related text symbolizer properties. 2014-01-30 06:01:57 -05:00
Dane Springmeyer
79a82cd8ff add std::string and std::valarray to array allocation benchmark 2014-01-29 13:03:35 -08:00
Dane Springmeyer
c86cf6e5f9 remove uneeded header 2014-01-29 10:42:28 -08:00
artemp
5416bd6c3a impl move ctor 2014-01-29 18:08:21 +00:00
artemp
4a2c5d84b7 make ImageData explicitly movable 2014-01-29 14:39:56 +00:00
artemp
5a1888a3b9 mapnik::color operator= 2014-01-29 09:56:44 +00:00
Dane Springmeyer
fb0dca7b54 array allocation test 2014-01-28 19:47:23 -08:00
Dane Springmeyer
f286363ad0 more consistent memset/memcpy usage 2014-01-28 15:05:10 -08:00
Matt Amos
0ad3441b68 Update tests affected by alignment change.
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.
2014-01-28 20:42:15 +00:00
Matt Amos
944f34b3df Fix unaligned multi-line labels.
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.
2014-01-28 20:33:42 +00:00
Dane Springmeyer
cd39a02d0c unhide the scons command run by make 2014-01-28 12:04:24 -08:00
Matt Amos
17626d5501 Added visual test for multi-line label alignment.
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.
2014-01-28 19:10:04 +00:00
artemp
6ccaf8beb2 1. return by ref from operator=
2. provide operator= overload
2014-01-28 16:50:41 +00:00
artemp
9b08d1ba00 unify assignment op's 2014-01-28 16:49:52 +00:00
artemp
c6b96d2f36 remove vertex_type (unused) 2014-01-28 16:19:36 +00:00
artemp
1d8d5964d4 operator= overload 2014-01-28 16:18:47 +00:00
artemp
1aa6cafea1 remove noexcept - we can't guarantee noexcept in std::swap(a,b)
and

```c++
    static_assert( noexcept ( std::swap(*this,rhs)), "throwing swap");
```

would fail at compile time
2014-01-28 14:21:58 +00:00