Merge branch 'master' into svg-parser-errors
This commit is contained in:
commit
42c8da72e9
34 changed files with 116 additions and 75 deletions
17
CHANGELOG.md
17
CHANGELOG.md
|
@ -6,10 +6,25 @@ Developers: Please commit along with changes.
|
||||||
|
|
||||||
For a complete change history, see the git log.
|
For a complete change history, see the git log.
|
||||||
|
|
||||||
## Future
|
## 3.0.1
|
||||||
|
|
||||||
|
Released: July 27th, 2015
|
||||||
|
|
||||||
|
(Packaged from 28f6f4d)
|
||||||
|
|
||||||
|
#### Summary
|
||||||
|
|
||||||
|
The 3.0.1 fixes a few bugs in geojson parsing, svg parsing, and rendering. It also avoids a potential hang when using `line-geometry-transform` and includes a speedup for text rendering compared to v3.0.0. It is fully back compatibility with v3.0.0 and everyone is encouraged to upgrade.
|
||||||
|
|
||||||
|
- Fixed text placement performance after #2949 (#2963)
|
||||||
|
- Fixed rendering behavior for `text-minimum-path-length` which regressed in 3.0.0 (#2990)
|
||||||
|
- Fixed handling of `xml:id` in SVG parsing (#2989)
|
||||||
|
- Fixed handling of out of range `rx` and `ry` in SVG `rect` (#2991)
|
||||||
|
- Fixed reporting of envelope from `mapnik::memory_datasource` when new features are added (#2985)
|
||||||
|
- Fixed parsing of GeoJSON when unknown properties encountered at `FeatureCollection` level (#2983)
|
||||||
- Fixed parsing of GeoJSON when properties contained `{}` (#2964)
|
- Fixed parsing of GeoJSON when properties contained `{}` (#2964)
|
||||||
- Fixed potential hang due to invalid use of `line-geometry-transform` (6d6cb15)
|
- Fixed potential hang due to invalid use of `line-geometry-transform` (6d6cb15)
|
||||||
|
- Moved unmaintained plugins out of core: `osm`, `occi`, and `rasterlite` (#2980)
|
||||||
|
|
||||||
## 3.0.0
|
## 3.0.0
|
||||||
|
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -12,6 +12,25 @@ all: mapnik
|
||||||
install:
|
install:
|
||||||
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
|
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
|
||||||
|
|
||||||
|
release:
|
||||||
|
export MAPNIK_VERSION=$(shell ./utils/mapnik-config/mapnik-config --version) && \
|
||||||
|
export TARBALL_NAME="mapnik-v$${MAPNIK_VERSION}" && \
|
||||||
|
cd /tmp/ && \
|
||||||
|
rm -rf $${TARBALL_NAME} && \
|
||||||
|
git clone --depth 1 --branch v$${MAPNIK_VERSION} git@github.com:mapnik/mapnik.git $${TARBALL_NAME} && \
|
||||||
|
cd $${TARBALL_NAME} && \
|
||||||
|
git checkout "tags/v$${MAPNIK_VERSION}" && \
|
||||||
|
git submodule update --depth 1 --init && \
|
||||||
|
rm -rf test/data/.git && \
|
||||||
|
rm -rf test/data/.gitignore && \
|
||||||
|
rm -rf test/data-visual/.git && \
|
||||||
|
rm -rf test/data-visual/.gitignore && \
|
||||||
|
rm -rf .git && \
|
||||||
|
rm -rf .gitignore && \
|
||||||
|
cd ../ && \
|
||||||
|
tar cjf $${TARBALL_NAME}.tar.bz2 $${TARBALL_NAME}/ && \
|
||||||
|
aws s3 cp --acl public-read $${TARBALL_NAME}.tar.bz2 s3://mapnik/dist/v$${MAPNIK_VERSION}/
|
||||||
|
|
||||||
python:
|
python:
|
||||||
if [ ! -d ./bindings/python ]; then git clone git@github.com:mapnik/python-mapnik.git --recursive ./bindings/python; else (cd bindings/python && git pull && git submodule update --init); fi;
|
if [ ! -d ./bindings/python ]; then git clone git@github.com:mapnik/python-mapnik.git --recursive ./bindings/python; else (cd bindings/python && git pull && git submodule update --init); fi;
|
||||||
make
|
make
|
||||||
|
|
|
@ -1897,6 +1897,8 @@ if not HELP_REQUESTED:
|
||||||
# Build the requested and able-to-be-compiled input plug-ins
|
# Build the requested and able-to-be-compiled input plug-ins
|
||||||
GDAL_BUILT = False
|
GDAL_BUILT = False
|
||||||
OGR_BUILT = False
|
OGR_BUILT = False
|
||||||
|
POSTGIS_BUILT = False
|
||||||
|
PGRASTER_BUILT = False
|
||||||
for plugin in env['PLUGINS']:
|
for plugin in env['PLUGINS']:
|
||||||
if env['PLUGIN_LINKING'] == 'static' or plugin not in env['REQUESTED_PLUGINS']:
|
if env['PLUGIN_LINKING'] == 'static' or plugin not in env['REQUESTED_PLUGINS']:
|
||||||
if os.path.exists('plugins/input/%s.input' % plugin):
|
if os.path.exists('plugins/input/%s.input' % plugin):
|
||||||
|
@ -1906,11 +1908,17 @@ if not HELP_REQUESTED:
|
||||||
if details['lib'] in env['LIBS']:
|
if details['lib'] in env['LIBS']:
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
SConscript('plugins/input/%s/build.py' % plugin)
|
SConscript('plugins/input/%s/build.py' % plugin)
|
||||||
|
# hack to avoid breaking on plugins with the same dep
|
||||||
if plugin == 'ogr': OGR_BUILT = True
|
if plugin == 'ogr': OGR_BUILT = True
|
||||||
if plugin == 'gdal': GDAL_BUILT = True
|
if plugin == 'gdal': GDAL_BUILT = True
|
||||||
|
if plugin == 'postgis': POSTGIS_BUILT = True
|
||||||
|
if plugin == 'pgraster': PGRASTER_BUILT = True
|
||||||
if plugin == 'ogr' or plugin == 'gdal':
|
if plugin == 'ogr' or plugin == 'gdal':
|
||||||
if GDAL_BUILT and OGR_BUILT:
|
if GDAL_BUILT and OGR_BUILT:
|
||||||
env['LIBS'].remove(details['lib'])
|
env['LIBS'].remove(details['lib'])
|
||||||
|
elif plugin == 'postgis' or plugin == 'pgraster':
|
||||||
|
if POSTGIS_BUILT and PGRASTER_BUILT:
|
||||||
|
env['LIBS'].remove(details['lib'])
|
||||||
else:
|
else:
|
||||||
env['LIBS'].remove(details['lib'])
|
env['LIBS'].remove(details['lib'])
|
||||||
elif not details['lib']:
|
elif not details['lib']:
|
||||||
|
|
|
@ -23,13 +23,21 @@
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/json/geometry_generator_grammar.hpp>
|
#include <mapnik/json/geometry_generator_grammar.hpp>
|
||||||
#include <mapnik/util/spirit_transform_attribute.hpp>
|
#include <mapnik/util/spirit_transform_attribute.hpp>
|
||||||
|
#include <mapnik/geometry_types.hpp>
|
||||||
|
|
||||||
// boost
|
// boost
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-local-typedef"
|
||||||
|
#pragma GCC diagnostic ignored "-Wshadow"
|
||||||
|
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||||
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
#include <boost/spirit/include/karma.hpp>
|
#include <boost/spirit/include/karma.hpp>
|
||||||
#include <boost/spirit/include/phoenix.hpp>
|
#include <boost/spirit/include/phoenix.hpp>
|
||||||
#include <boost/spirit/include/phoenix_core.hpp>
|
#include <boost/spirit/include/phoenix_core.hpp>
|
||||||
#include <boost/spirit/include/phoenix_fusion.hpp>
|
#include <boost/spirit/include/phoenix_fusion.hpp>
|
||||||
#include <boost/fusion/include/at.hpp>
|
#include <boost/fusion/include/at.hpp>
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
namespace mapnik { namespace json {
|
namespace mapnik { namespace json {
|
||||||
|
|
||||||
|
|
|
@ -211,14 +211,20 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void insert(box2d<double> const& box)
|
void insert(box2d<double> const& box)
|
||||||
|
{
|
||||||
|
if (tree_.extent().intersects(box))
|
||||||
{
|
{
|
||||||
tree_.insert(label(box), box);
|
tree_.insert(label(box), box);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void insert(box2d<double> const& box, mapnik::value_unicode_string const& text)
|
void insert(box2d<double> const& box, mapnik::value_unicode_string const& text)
|
||||||
|
{
|
||||||
|
if (tree_.extent().intersects(box))
|
||||||
{
|
{
|
||||||
tree_.insert(label(box, text), box);
|
tree_.insert(label(box, text), box);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void clear()
|
void clear()
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/text/rotation.hpp>
|
#include <mapnik/text/rotation.hpp>
|
||||||
#include <mapnik/marker_cache.hpp>
|
#include <mapnik/marker_cache.hpp>
|
||||||
|
#include <mapnik/text/glyph_info.hpp>
|
||||||
|
|
||||||
// agg
|
// agg
|
||||||
#include "agg_trans_affine.h"
|
#include "agg_trans_affine.h"
|
||||||
|
@ -37,8 +38,6 @@
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
||||||
struct glyph_info;
|
|
||||||
|
|
||||||
struct glyph_position
|
struct glyph_position
|
||||||
{
|
{
|
||||||
glyph_position(glyph_info const& _glyph, pixel_position const& _pos, rotation const& _rot)
|
glyph_position(glyph_info const& _glyph, pixel_position const& _pos, rotation const& _rot)
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct MAPNIK_DECL text_item : util::noncopyable
|
||||||
// - format
|
// - format
|
||||||
// - script (http://en.wikipedia.org/wiki/Scripts_in_Unicode)
|
// - script (http://en.wikipedia.org/wiki/Scripts_in_Unicode)
|
||||||
|
|
||||||
class MAPNIK_DECL text_itemizer
|
class MAPNIK_DECL text_itemizer : util::noncopyable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
text_itemizer();
|
text_itemizer();
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#include <mapnik/box2d.hpp>
|
#include <mapnik/box2d.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/text/text_layout.hpp>
|
#include <mapnik/text/text_layout.hpp>
|
||||||
#include <mapnik/text/placements/base.hpp>
|
|
||||||
#include <mapnik/text/glyph_positions.hpp>
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/text/rotation.hpp>
|
#include <mapnik/text/rotation.hpp>
|
||||||
#include <mapnik/util/noncopyable.hpp>
|
#include <mapnik/util/noncopyable.hpp>
|
||||||
|
|
|
@ -19,23 +19,19 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
//mapnik
|
|
||||||
#include <mapnik/debug.hpp>
|
// mapnik
|
||||||
#include <mapnik/label_collision_detector.hpp>
|
//#include <mapnik/label_collision_detector.hpp>
|
||||||
#include <mapnik/view_transform.hpp>
|
//#include <mapnik/view_transform.hpp>
|
||||||
#include <mapnik/expression_evaluator.hpp>
|
|
||||||
#include <mapnik/text/placement_finder.hpp>
|
#include <mapnik/text/placement_finder.hpp>
|
||||||
#include <mapnik/text/text_layout.hpp>
|
#include <mapnik/text/text_layout.hpp>
|
||||||
#include <mapnik/text/text_properties.hpp>
|
#include <mapnik/text/text_properties.hpp>
|
||||||
#include <mapnik/text/glyph_positions.hpp>
|
//#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/vertex_cache.hpp>
|
#include <mapnik/vertex_cache.hpp>
|
||||||
#include <mapnik/tolerance_iterator.hpp>
|
#include <mapnik/tolerance_iterator.hpp>
|
||||||
|
#include <mapnik/symbolizer_enumerations.hpp>
|
||||||
|
|
||||||
// agg
|
#include <memory>
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
|
|
||||||
// stl
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,10 +22,13 @@
|
||||||
#ifndef SYMBOLIZER_HELPERS_HPP
|
#ifndef SYMBOLIZER_HELPERS_HPP
|
||||||
#define SYMBOLIZER_HELPERS_HPP
|
#define SYMBOLIZER_HELPERS_HPP
|
||||||
|
|
||||||
//mapnik
|
// mapnik
|
||||||
#include <mapnik/text/placement_finder.hpp>
|
#include <mapnik/text/placement_finder.hpp>
|
||||||
|
#include <mapnik/text/placements/base.hpp>
|
||||||
#include <mapnik/vertex_converters.hpp>
|
#include <mapnik/vertex_converters.hpp>
|
||||||
#include <mapnik/geometry.hpp>
|
#include <mapnik/geometry.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
|
#include <mapnik/text/text_properties.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
||||||
|
|
|
@ -26,12 +26,11 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <mapnik/util/noncopyable.hpp>
|
#include <mapnik/util/noncopyable.hpp>
|
||||||
#include <mapnik/config.hpp>
|
#include <mapnik/config.hpp>
|
||||||
|
#include <mapnik/text/glyph_info.hpp>
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
||||||
struct glyph_info;
|
|
||||||
|
|
||||||
// This class stores all glyphs of a line in left to right order.
|
// This class stores all glyphs of a line in left to right order.
|
||||||
// It can be used for rendering but no text processing (like line breaking)
|
// It can be used for rendering but no text processing (like line breaking)
|
||||||
// should be done!
|
// should be done!
|
||||||
|
@ -98,6 +97,6 @@ private:
|
||||||
unsigned space_count_;
|
unsigned space_count_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} //namespace mapnik
|
} // namespace mapnik
|
||||||
|
|
||||||
#endif // MAPNIK_TEXT_LINE_HPP
|
#endif // MAPNIK_TEXT_LINE_HPP
|
||||||
|
|
|
@ -24,6 +24,20 @@
|
||||||
#define MAPNIK_UTIL_SPIRIT_TRANSFORM_ATTRIBUTE_HPP
|
#define MAPNIK_UTIL_SPIRIT_TRANSFORM_ATTRIBUTE_HPP
|
||||||
|
|
||||||
#include <mapnik/geometry.hpp>
|
#include <mapnik/geometry.hpp>
|
||||||
|
#include <mapnik/util/variant.hpp>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
// boost
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-local-typedef"
|
||||||
|
#pragma GCC diagnostic ignored "-Wshadow"
|
||||||
|
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||||
|
#pragma GCC diagnostic ignored "-Wconversion"
|
||||||
|
#include <boost/spirit/include/karma.hpp>
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
namespace boost { namespace spirit { namespace traits {
|
namespace boost { namespace spirit { namespace traits {
|
||||||
|
|
||||||
|
|
|
@ -23,13 +23,13 @@
|
||||||
#ifndef MAPNIK_VERSION_HPP
|
#ifndef MAPNIK_VERSION_HPP
|
||||||
#define MAPNIK_VERSION_HPP
|
#define MAPNIK_VERSION_HPP
|
||||||
|
|
||||||
#define MAPNIK_VERSION_IS_RELEASE 1
|
#define MAPNIK_VERSION_IS_RELEASE 0
|
||||||
|
|
||||||
#define MAPNIK_MAJOR_VERSION 3
|
#define MAPNIK_MAJOR_VERSION 3
|
||||||
#define MAPNIK_MINOR_VERSION 0
|
#define MAPNIK_MINOR_VERSION 0
|
||||||
#define MAPNIK_PATCH_VERSION 0
|
#define MAPNIK_PATCH_VERSION 1
|
||||||
|
|
||||||
// translates to 300000
|
// translates to 300001
|
||||||
#define MAPNIK_VERSION (MAPNIK_MAJOR_VERSION*100000) + (MAPNIK_MINOR_VERSION*100) + (MAPNIK_PATCH_VERSION)
|
#define MAPNIK_VERSION (MAPNIK_MAJOR_VERSION*100000) + (MAPNIK_MINOR_VERSION*100) + (MAPNIK_PATCH_VERSION)
|
||||||
|
|
||||||
#ifndef MAPNIK_STRINGIFY
|
#ifndef MAPNIK_STRINGIFY
|
||||||
|
|
|
@ -8,6 +8,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PATH=$(pwd)/utils/nik2img/:${PATH}
|
export PATH=$(pwd)/utils/nik2img/:${PATH}
|
||||||
|
export PATH=$(pwd)/utils/mapnik-config/:${PATH}
|
||||||
|
|
||||||
# mapnik-settings.env is an optional file to store
|
# mapnik-settings.env is an optional file to store
|
||||||
# environment variables that should be used before
|
# environment variables that should be used before
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <mapnik/geom_util.hpp>
|
#include <mapnik/geom_util.hpp>
|
||||||
#include <mapnik/symbolizer.hpp>
|
#include <mapnik/symbolizer.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/renderer_common/process_group_symbolizer.hpp>
|
#include <mapnik/renderer_common/process_group_symbolizer.hpp>
|
||||||
#include <mapnik/renderer_common/clipping_extent.hpp>
|
#include <mapnik/renderer_common/clipping_extent.hpp>
|
||||||
#include <mapnik/svg/svg_renderer_agg.hpp>
|
#include <mapnik/svg/svg_renderer_agg.hpp>
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
#include "agg_span_allocator.h"
|
#include "agg_span_allocator.h"
|
||||||
#include "agg_span_pattern_rgba.h"
|
#include "agg_span_pattern_rgba.h"
|
||||||
#include "agg_renderer_outline_image.h"
|
#include "agg_renderer_outline_image.h"
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
#include "agg_rasterizer_scanline_aa.h"
|
#include "agg_rasterizer_scanline_aa.h"
|
||||||
#include "agg_scanline_u.h"
|
#include "agg_scanline_u.h"
|
||||||
#include "agg_path_storage.h"
|
#include "agg_path_storage.h"
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
#include "agg_conv_transform.h"
|
#include "agg_conv_transform.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/text/renderer.hpp>
|
#include <mapnik/text/renderer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/renderer_common/clipping_extent.hpp>
|
#include <mapnik/renderer_common/clipping_extent.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <mapnik/agg_rasterizer.hpp>
|
#include <mapnik/agg_rasterizer.hpp>
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/text/renderer.hpp>
|
#include <mapnik/text/renderer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/renderer_common/clipping_extent.hpp>
|
#include <mapnik/renderer_common/clipping_extent.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <mapnik/marker.hpp>
|
#include <mapnik/marker.hpp>
|
||||||
#include <mapnik/svg/svg_path_adapter.hpp>
|
#include <mapnik/svg/svg_path_adapter.hpp>
|
||||||
#include <mapnik/make_unique.hpp>
|
#include <mapnik/make_unique.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/cairo/cairo_renderer.hpp>
|
#include <mapnik/cairo/cairo_renderer.hpp>
|
||||||
#include <mapnik/cairo/cairo_render_vector.hpp>
|
#include <mapnik/cairo/cairo_render_vector.hpp>
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/symbolizer.hpp>
|
#include <mapnik/symbolizer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <mapnik/text/placement_finder.hpp>
|
#include <mapnik/text/placement_finder.hpp>
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/text/renderer.hpp>
|
#include <mapnik/text/renderer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/svg/svg_renderer_agg.hpp>
|
#include <mapnik/svg/svg_renderer_agg.hpp>
|
||||||
#include <mapnik/svg/svg_storage.hpp>
|
#include <mapnik/svg/svg_storage.hpp>
|
||||||
#include <mapnik/svg/svg_path_adapter.hpp>
|
#include <mapnik/svg/svg_path_adapter.hpp>
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/text/renderer.hpp>
|
#include <mapnik/text/renderer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
|
|
||||||
// agg
|
// agg
|
||||||
#include "agg_trans_affine.h"
|
#include "agg_trans_affine.h"
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <mapnik/text/symbolizer_helpers.hpp>
|
#include <mapnik/text/symbolizer_helpers.hpp>
|
||||||
#include <mapnik/pixel_position.hpp>
|
#include <mapnik/pixel_position.hpp>
|
||||||
#include <mapnik/text/renderer.hpp>
|
#include <mapnik/text/renderer.hpp>
|
||||||
|
#include <mapnik/text/glyph_positions.hpp>
|
||||||
#include <mapnik/renderer_common/clipping_extent.hpp>
|
#include <mapnik/renderer_common/clipping_extent.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
|
@ -34,9 +34,6 @@
|
||||||
#include <mapnik/vertex_cache.hpp>
|
#include <mapnik/vertex_cache.hpp>
|
||||||
#include <mapnik/tolerance_iterator.hpp>
|
#include <mapnik/tolerance_iterator.hpp>
|
||||||
|
|
||||||
//agg
|
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
|
|
||||||
namespace mapnik { namespace detail {
|
namespace mapnik { namespace detail {
|
||||||
|
|
||||||
template <typename Helper>
|
template <typename Helper>
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <mapnik/view_transform.hpp>
|
#include <mapnik/view_transform.hpp>
|
||||||
#include <mapnik/expression_evaluator.hpp>
|
#include <mapnik/expression_evaluator.hpp>
|
||||||
#include <mapnik/text/placement_finder_impl.hpp>
|
#include <mapnik/text/placement_finder_impl.hpp>
|
||||||
|
#include <mapnik/text/placements/base.hpp>
|
||||||
#include <mapnik/text/text_layout.hpp>
|
#include <mapnik/text/text_layout.hpp>
|
||||||
#include <mapnik/text/glyph_info.hpp>
|
#include <mapnik/text/glyph_info.hpp>
|
||||||
#include <mapnik/text/text_properties.hpp>
|
#include <mapnik/text/text_properties.hpp>
|
||||||
|
@ -32,9 +33,6 @@
|
||||||
#include <mapnik/vertex_cache.hpp>
|
#include <mapnik/vertex_cache.hpp>
|
||||||
#include <mapnik/util/math.hpp>
|
#include <mapnik/util/math.hpp>
|
||||||
|
|
||||||
// agg
|
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
|
|
||||||
// stl
|
// stl
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,6 @@
|
||||||
#include <mapnik/text/placements/base.hpp>
|
#include <mapnik/text/placements/base.hpp>
|
||||||
#include <mapnik/text/placements/dummy.hpp>
|
#include <mapnik/text/placements/dummy.hpp>
|
||||||
|
|
||||||
//agg
|
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
|
|
||||||
namespace mapnik { namespace detail {
|
namespace mapnik { namespace detail {
|
||||||
|
|
||||||
|
@ -79,11 +77,10 @@ struct split_multi_geometries
|
||||||
{
|
{
|
||||||
using container_type = T;
|
using container_type = T;
|
||||||
split_multi_geometries(container_type & cont, view_transform const& t,
|
split_multi_geometries(container_type & cont, view_transform const& t,
|
||||||
proj_transform const& prj_trans, double minimum_path_length)
|
proj_transform const& prj_trans)
|
||||||
: cont_(cont),
|
: cont_(cont),
|
||||||
t_(t),
|
t_(t),
|
||||||
prj_trans_(prj_trans),
|
prj_trans_(prj_trans) { }
|
||||||
minimum_path_length_(minimum_path_length) {}
|
|
||||||
|
|
||||||
void operator() (geometry::geometry_empty const&) const {}
|
void operator() (geometry::geometry_empty const&) const {}
|
||||||
void operator() (geometry::multi_point<double> const& multi_pt) const
|
void operator() (geometry::multi_point<double> const& multi_pt) const
|
||||||
|
@ -94,20 +91,9 @@ struct split_multi_geometries
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void operator() (geometry::line_string<double> const& line) const
|
void operator() (geometry::line_string<double> const& line) const
|
||||||
{
|
|
||||||
if (minimum_path_length_ > 0)
|
|
||||||
{
|
|
||||||
box2d<double> bbox = t_.forward(geometry::envelope(line), prj_trans_);
|
|
||||||
if (bbox.width() >= minimum_path_length_)
|
|
||||||
{
|
{
|
||||||
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
|
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (geometry::multi_line_string<double> const& multi_line) const
|
void operator() (geometry::multi_line_string<double> const& multi_line) const
|
||||||
{
|
{
|
||||||
|
@ -118,20 +104,9 @@ struct split_multi_geometries
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator() (geometry::polygon<double> const& poly) const
|
void operator() (geometry::polygon<double> const& poly) const
|
||||||
{
|
|
||||||
if (minimum_path_length_ > 0)
|
|
||||||
{
|
|
||||||
box2d<double> bbox = t_.forward(geometry::envelope(poly), prj_trans_);
|
|
||||||
if (bbox.width() >= minimum_path_length_)
|
|
||||||
{
|
{
|
||||||
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
|
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (geometry::multi_polygon<double> const& multi_poly) const
|
void operator() (geometry::multi_polygon<double> const& multi_poly) const
|
||||||
{
|
{
|
||||||
|
@ -158,7 +133,6 @@ struct split_multi_geometries
|
||||||
container_type & cont_;
|
container_type & cont_;
|
||||||
view_transform const& t_;
|
view_transform const& t_;
|
||||||
proj_transform const& prj_trans_;
|
proj_transform const& prj_trans_;
|
||||||
double minimum_path_length_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // ns detail
|
} // ns detail
|
||||||
|
@ -207,10 +181,9 @@ struct largest_bbox_first
|
||||||
|
|
||||||
void base_symbolizer_helper::initialize_geometries() const
|
void base_symbolizer_helper::initialize_geometries() const
|
||||||
{
|
{
|
||||||
double minimum_path_length = text_props_->minimum_path_length;
|
|
||||||
auto const& geom = feature_.get_geometry();
|
auto const& geom = feature_.get_geometry();
|
||||||
util::apply_visitor(detail::split_multi_geometries<geometry_container_type>
|
util::apply_visitor(detail::split_multi_geometries<geometry_container_type>
|
||||||
(geometries_to_process_, t_, prj_trans_, minimum_path_length ), geom);
|
(geometries_to_process_, t_, prj_trans_), geom);
|
||||||
if (!geometries_to_process_.empty())
|
if (!geometries_to_process_.empty())
|
||||||
{
|
{
|
||||||
auto type = geometry::geometry_type(geom);
|
auto type = geometry::geometry_type(geom);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 80c744348de8cb03a519e451129a243610e55f52
|
Subproject commit e3d79ed493485afbb5c79cd90913c8db488561b6
|
|
@ -23,7 +23,6 @@ SECTION("layers") {
|
||||||
std::string shape_plugin("./plugins/input/shape.input");
|
std::string shape_plugin("./plugins/input/shape.input");
|
||||||
if (mapnik::util::exists(shape_plugin))
|
if (mapnik::util::exists(shape_plugin))
|
||||||
{
|
{
|
||||||
mapnik::datasource_cache::instance().register_datasources("plugins/input/shape.input");
|
|
||||||
mapnik::parameters p;
|
mapnik::parameters p;
|
||||||
p["type"]="shape";
|
p["type"]="shape";
|
||||||
p["file"]="demo/data/boundaries";
|
p["file"]="demo/data/boundaries";
|
||||||
|
|
|
@ -62,7 +62,6 @@ SECTION("handling") {
|
||||||
std::string csv_plugin("./plugins/input/csv.input");
|
std::string csv_plugin("./plugins/input/csv.input");
|
||||||
if (mapnik::util::exists(csv_plugin)) {
|
if (mapnik::util::exists(csv_plugin)) {
|
||||||
try {
|
try {
|
||||||
mapnik::datasource_cache::instance().register_datasource(csv_plugin);
|
|
||||||
mapnik::parameters p;
|
mapnik::parameters p;
|
||||||
p["type"]="csv";
|
p["type"]="csv";
|
||||||
p["inline"]="x,y\n0,0";
|
p["inline"]="x,y\n0,0";
|
||||||
|
@ -88,7 +87,6 @@ SECTION("handling") {
|
||||||
std::string shape_plugin("./plugins/input/shape.input");
|
std::string shape_plugin("./plugins/input/shape.input");
|
||||||
if (mapnik::util::exists(shape_plugin)) {
|
if (mapnik::util::exists(shape_plugin)) {
|
||||||
try {
|
try {
|
||||||
mapnik::datasource_cache::instance().register_datasource(shape_plugin);
|
|
||||||
mapnik::parameters p2;
|
mapnik::parameters p2;
|
||||||
p2["type"]="shape";
|
p2["type"]="shape";
|
||||||
p2["file"]="foo";
|
p2["file"]="foo";
|
||||||
|
|
|
@ -33,7 +33,6 @@ TEST_CASE("geojson") {
|
||||||
std::string geojson_plugin("./plugins/input/geojson.input");
|
std::string geojson_plugin("./plugins/input/geojson.input");
|
||||||
if (mapnik::util::exists(geojson_plugin))
|
if (mapnik::util::exists(geojson_plugin))
|
||||||
{
|
{
|
||||||
mapnik::datasource_cache::instance().register_datasources("plugins/input/geojson.input");
|
|
||||||
SECTION("json feature cache-feature=\"true\"")
|
SECTION("json feature cache-feature=\"true\"")
|
||||||
{
|
{
|
||||||
// Create datasource
|
// Create datasource
|
||||||
|
@ -50,6 +49,7 @@ TEST_CASE("geojson") {
|
||||||
query.add_property_name(field.get_name());
|
query.add_property_name(field.get_name());
|
||||||
}
|
}
|
||||||
auto features = ds->features(query);
|
auto features = ds->features(query);
|
||||||
|
REQUIRE(features != nullptr);
|
||||||
auto feature = features->next();
|
auto feature = features->next();
|
||||||
REQUIRE(feature != nullptr);
|
REQUIRE(feature != nullptr);
|
||||||
}
|
}
|
||||||
|
@ -69,11 +69,11 @@ TEST_CASE("geojson") {
|
||||||
query.add_property_name(field.get_name());
|
query.add_property_name(field.get_name());
|
||||||
}
|
}
|
||||||
auto features = ds->features(query);
|
auto features = ds->features(query);
|
||||||
|
REQUIRE(features != nullptr);
|
||||||
auto feature = features->next();
|
auto feature = features->next();
|
||||||
REQUIRE(feature != nullptr);
|
REQUIRE(feature != nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
mapnik::datasource_cache::instance().register_datasources("plugins/input/geojson.input");
|
|
||||||
SECTION("json extra properties cache-feature=\"true\"")
|
SECTION("json extra properties cache-feature=\"true\"")
|
||||||
{
|
{
|
||||||
// Create datasource
|
// Create datasource
|
||||||
|
@ -90,12 +90,12 @@ TEST_CASE("geojson") {
|
||||||
query.add_property_name(field.get_name());
|
query.add_property_name(field.get_name());
|
||||||
}
|
}
|
||||||
auto features = ds->features(query);
|
auto features = ds->features(query);
|
||||||
|
REQUIRE(features != nullptr);
|
||||||
auto feature = features->next();
|
auto feature = features->next();
|
||||||
REQUIRE(feature != nullptr);
|
REQUIRE(feature != nullptr);
|
||||||
REQUIRE(feature->envelope() == mapnik::box2d<double>(123,456,123,456));
|
REQUIRE(feature->envelope() == mapnik::box2d<double>(123,456,123,456));
|
||||||
}
|
}
|
||||||
|
|
||||||
mapnik::datasource_cache::instance().register_datasources("plugins/input/geojson.input");
|
|
||||||
SECTION("json extra properties cache-feature=\"false\"")
|
SECTION("json extra properties cache-feature=\"false\"")
|
||||||
{
|
{
|
||||||
// Create datasource
|
// Create datasource
|
||||||
|
@ -112,6 +112,7 @@ TEST_CASE("geojson") {
|
||||||
query.add_property_name(field.get_name());
|
query.add_property_name(field.get_name());
|
||||||
}
|
}
|
||||||
auto features = ds->features(query);
|
auto features = ds->features(query);
|
||||||
|
REQUIRE(features != nullptr);
|
||||||
auto feature = features->next();
|
auto feature = features->next();
|
||||||
REQUIRE(feature != nullptr);
|
REQUIRE(feature != nullptr);
|
||||||
REQUIRE(feature->envelope() == mapnik::box2d<double>(123,456,123,456));
|
REQUIRE(feature->envelope() == mapnik::box2d<double>(123,456,123,456));
|
||||||
|
|
|
@ -21,8 +21,6 @@ SECTION("painting") {
|
||||||
std::string csv_plugin("./plugins/input/csv.input");
|
std::string csv_plugin("./plugins/input/csv.input");
|
||||||
if (mapnik::util::exists(csv_plugin))
|
if (mapnik::util::exists(csv_plugin))
|
||||||
{
|
{
|
||||||
datasource_cache::instance().register_datasources(csv_plugin);
|
|
||||||
|
|
||||||
Map m(256, 256);
|
Map m(256, 256);
|
||||||
|
|
||||||
feature_type_style lines_style;
|
feature_type_style lines_style;
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
#define CATCH_CONFIG_RUNNER
|
#define CATCH_CONFIG_RUNNER
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include <mapnik/datasource_cache.hpp>
|
||||||
|
|
||||||
#include "cleanup.hpp" // run_cleanup()
|
#include "cleanup.hpp" // run_cleanup()
|
||||||
|
|
||||||
int main (int argc, char* const argv[])
|
int main (int argc, char* const argv[])
|
||||||
{
|
{
|
||||||
|
mapnik::datasource_cache::instance().register_datasources("plugins/input/");
|
||||||
|
|
||||||
int result = Catch::Session().run( argc, argv );
|
int result = Catch::Session().run( argc, argv );
|
||||||
|
|
||||||
testing::run_cleanup();
|
testing::run_cleanup();
|
||||||
|
|
Loading…
Reference in a new issue