Compare commits

...

5136 commits

Author SHA1 Message Date
Artem Pavlenko
bb3106d04f
Merge pull request #4480 from mapnik/configure-unbound-variable
Check for if VARS is set (ref #4478)
2024-11-04 18:21:55 +00:00
Artem Pavlenko
8ebd792258 Check for if VARS is set (ref #4478) 2024-11-04 16:39:09 +00:00
Artem Pavlenko
e7a2bacb5d update CHANGELOG for mapnik v4.0.3 release [skip ci] 2024-10-30 08:45:55 +00:00
Artem Pavlenko
05389e3c73 setting up for mapnik v4.0.3 release [skip ci] 2024-10-30 08:44:01 +00:00
Artem Pavlenko
abeace5167
Merge pull request #4479 from mapnik/empty_featureset
Empty featureset
2024-10-29 11:04:26 +00:00
Artem Pavlenko
92b1ea9ceb Commit staged changes 2024-10-29 10:19:22 +00:00
Artem Pavlenko
cd082c5872 Update version to 4.0.3 2024-10-29 09:56:03 +00:00
Artem Pavlenko
c1117a4d33 Empty featureset instead of invalid + bool is_empty(featureset_ptr) 2024-10-29 09:52:35 +00:00
Artem Pavlenko
20b154ae49 Remove 'final' specifier as it was breaking dynamic_cast<invalid_featureset*> in 'is_valid' test when building on macOS arm64
```
Apple clang version 16.0.0 (clang-1600.0.26.3)
Target: arm64-apple-darwin24.0.0
```
Also remove empty dtor as not required
2024-10-28 11:02:08 +00:00
Artem Pavlenko
379261434b Upgrade to SCons v4.8.1 2024-09-09 10:56:17 +01:00
Artem Pavlenko
3d172b94f7 Unit tests - fix #endif statement (via @bgardner-noggin) 2024-09-04 09:39:11 +01:00
Artem Pavlenko
5f327ff3c8 update CHANGELOG for mapnik v4.0.2 release [skip ci] 2024-08-21 14:00:44 +01:00
Artem Pavlenko
dc97085b31 Upgrade SCons to v4.8.0 [skip ci] 2024-08-21 13:57:11 +01:00
Artem Pavlenko
7a1663f0a2 Update version to 4.0.2 2024-08-15 11:07:05 +01:00
Artem Pavlenko
924123e9c7
Merge pull request #4470 from mapnik/cmake-soversion
CMake - set `SOVERSION` to `${MAPNIK_MAJOR_VERSION}.${MAPNIK_MINOR_VERSION}`
2024-07-31 15:34:43 +01:00
Artem Pavlenko
75756b33f3 CMake - set SOVERSION to ${MAPNIK_MAJOR_VERSION}.${MAPNIK_MINOR_VERSION} 2024-07-31 10:30:50 +01:00
Artem Pavlenko
f1a3d6d7da Update CHANGELOG [skip ci] 2024-07-30 11:12:51 +01:00
Artem Pavlenko
3348f97c76
Merge pull request #4468 from mapnik/bounding-box-split
Split bounding box along (0, 0) before reprojecting  [WIP] [skip ci]
2024-07-30 10:27:47 +01:00
Artem Pavlenko
a982e69525 clang-format 2024-07-29 12:35:31 +01:00
Artem Pavlenko
4f6a7a2571 Add basic forward/backward test for reprojection bounding box for epsg:3995 (WGS 84 / Arctic Polar Stereographic) 2024-07-29 11:23:39 +01:00
Artem Pavlenko
7358a66c2f mapnik::projection - add area_of_use method returning std::optional<mapnik::box2d<double>> (WGS84) [WIP] [skip ci] 2024-07-29 11:21:54 +01:00
Artem Pavlenko
727e3a1ca7 Split bounding box along (0, 0) before reprojecting [WIP] [skip ci]
(improves handling stereographic projections e.g epsg:3995)
2024-07-26 14:28:41 +01:00
Artem Pavlenko
fc029ae5a5 Update Coopyright year 2024-07-22 10:20:47 +01:00
Artem Pavlenko
4df58036aa Update version to 4.0.1 2024-07-22 09:53:04 +01:00
Artem Pavlenko
5e7b478627
Merge pull request #4456 from hummeltech/GCC14
Fix building with GCC 14
2024-07-15 15:54:03 +01:00
David Hummel
0526c603d4 Workaround for Windows builds with GCC 14 patches 2024-06-26 08:44:30 -07:00
David Hummel
2ef5003283 Fix building with GCC 14
Co-authored-by: Tom Hughes <tom@compton.nu>
2024-06-26 08:44:30 -07:00
Artem Pavlenko
eb99057a47
Merge pull request #4466 from hummeltech/GitHubActionsVCPkgCache
Speed up the GitHub Actions CI jobs
2024-06-26 10:29:52 +01:00
David Hummel
d9a6494858 Minor change to demonstrate cache usage 2024-06-25 13:23:11 -07:00
David Hummel
7f743210a0 Speed up the GitHub Actions jobs 2024-06-25 11:33:45 -07:00
Artem Pavlenko
53900d359c use MAPNIK_LIB_DIR via @hummeltech 2024-06-20 16:41:45 +01:00
Artem Pavlenko
507a834264 Merge branch 'tomhughes-libdir' 2024-06-20 16:40:52 +01:00
Tom Hughes
0e0aed3bde Use CMAKE_INSTALL_LIBDIR for libdir in pkg-config files 2024-06-19 19:44:01 +01:00
Artem Pavlenko
e7d0b85dbc
Merge pull request #4462 from hummeltech/InstallDoc
Update `INSTALL.md`
2024-06-17 09:06:20 +01:00
David Hummel
1a878af2f7 Update INSTALL.md 2024-06-16 13:01:46 -07:00
Artem Pavlenko
85801bd402 Mapnik 4.0.0 release. 2024-06-16 14:56:13 +01:00
Artem Pavlenko
02049bb811 Update publish_release.sh script [skip ci] 2024-06-16 14:53:46 +01:00
Artem Pavlenko
52bde246d2 Fix escape char (python >= v3.12) 2024-06-14 14:36:25 +01:00
Artem Pavlenko
ffcf059556
Merge pull request #4461 from hummeltech/MapnikTestsTempDir
Use `temp_directory_path` rather than hard-coded `/tmp` for `image io` tests
2024-06-14 12:45:19 +01:00
Artem Pavlenko
054c2a18a9 Downgrade to ubuntu-22.04 2024-06-14 09:41:49 +01:00
Artem Pavlenko
f91f522e71 runners - use explicit versioning + remove macos-13 2024-06-14 09:30:55 +01:00
David Hummel
9a0d7445be Use temp_directory_path rather than hard-coded /tmp for tests 2024-06-13 08:31:12 -07:00
Artem Pavlenko
63d7e51b84 Update data-visual (cairo) 2024-06-13 10:05:59 +01:00
Artem Pavlenko
3da7a3b1a1 Fix year :) 2024-06-12 16:06:42 +01:00
Artem Pavlenko
cde255852d Attempting to address #4460 by swithing to windows-19 runner 2024-06-12 16:04:48 +01:00
Artem Pavlenko
8c3048bf99 Use python3 by default 2024-06-10 15:39:10 +01:00
Artem Pavlenko
9610c4e2ad SConstruct - use pkg-config proj --variable=datadir ro determine PROJ_LIB directory 2024-06-10 15:35:30 +01:00
Artem Pavlenko
b8166f81a6 Update vcpkg-sha to ad25766aefb5313b6bc4e2a4b78a2946f84fbf66 2024-06-10 09:34:09 +01:00
Artem Pavlenko
84cd5864e7 demo/viewer - use std::optional 2024-06-07 14:12:24 +01:00
Artem Pavlenko
61cb187dbb Check if text_symbolizer has 'placement finder'(keys::text_placements) before any text processing 2024-06-04 12:15:10 +01:00
Artem Pavlenko
d7a8f1d04a clang-format 2024-06-04 12:13:02 +01:00
Artem Pavlenko
f5acdb3efd Update comment. 2024-06-04 12:11:28 +01:00
Artem Pavlenko
c87b245f71 Remove unused 'simplify_prefilter_' parameter (ref #4459) 2024-06-04 12:09:24 +01:00
Artem Pavlenko
4798be914c Set default font-size -> 16px/1em 2024-06-03 12:47:34 +01:00
Artem Pavlenko
653d8b7310 grid_view - delete assignment op 2024-05-30 09:17:14 +01:00
Artem Pavlenko
d7a490ffc2
Merge pull request #4445 from mapnik/feature/drop_boost_cpp17
replace majority of boost->std optional and boost->std string_view
2024-05-22 14:10:17 +01:00
Artem Pavlenko
2c9e55b770
Merge pull request #4458 from mapnik/delete_unused
Delete unused files
2024-05-22 11:11:21 +01:00
Mathis Logemann
9510cd68a3 delete appveyor.yml 2024-05-21 21:17:49 +02:00
Mathis Logemann
0a10de3827 delete bootstrap.sh 2024-05-21 21:17:32 +02:00
Mathis Logemann
b3dd7a0e7d delete .travis.yml 2024-05-21 21:17:16 +02:00
Artem Pavlenko
34bb44e490 clang-format 2024-05-21 09:41:19 +01:00
Artem Pavlenko
658a8bb080 symbolizer_property_value_string - handle value_bool, value_integer, value_double + dash_array 2024-05-21 09:15:50 +01:00
Mathis Logemann
21276ab2a0 use explicit type for std::array 2024-05-18 10:47:51 +02:00
Mathis Logemann
9292899240 remove boost-fileystem from vcpkg, since c++17 is min req. 2024-05-18 10:22:29 +02:00
Mathis Logemann
ab626ac052 update pre-commit and format sources 2024-05-18 10:22:29 +02:00
Mathis Logemann
7ef431ece2 use std::optional instead of boost::optional 2024-05-18 10:22:29 +02:00
Mathis Logemann
e1feef5a79 Use std::string_view instead of boost::string_view 2024-05-18 10:22:29 +02:00
Artem Pavlenko
4114824e6b pre-commit run --show-diff-on-failure --color=always --all-files 2024-05-15 10:29:13 +01:00
Artem Pavlenko
99aa246b73 Remove comment - duplicate names are OK 2024-05-15 10:25:47 +01:00
Artem Pavlenko
3a461630f7 remove extra space character for ouput (tidy) 2024-05-15 10:25:14 +01:00
Artem Pavlenko
1283ca5b77 Revive Symbolizer to json functionality 2024-05-15 10:24:27 +01:00
Artem Pavlenko
454837070d Fix typo 2024-05-14 09:10:51 +01:00
Artem Pavlenko
f89f221445
Merge pull request #4449 from hummeltech/macOSCI
`macos-latest` was migrated from `macOS 12` on `amd64` to `macOS 14` on `arm64`
2024-05-06 11:14:29 +01:00
David Hummel
09067f55fa Account for difference of PROJ_LIB 2024-05-05 13:04:14 -07:00
Artem Pavlenko
f84c30f20c
Merge pull request #4450 from mapnik/svg-refactor
Svg refactor
2024-04-30 10:07:21 +01:00
Artem Pavlenko
3176749613 clang-format
(pre-commit run --show-diff-on-failure --color=always --all-files)
2024-04-30 10:04:57 +01:00
Artem Pavlenko
e412e12599 svg_parser - cleanup + consistent push/pop attributes 2024-04-30 10:01:02 +01:00
Artem Pavlenko
77cd733258 svg_group - check parent is not nullptr 2024-04-30 09:59:35 +01:00
David Hummel
bbeac846d7 Address issues after recent upgrade to LCOV v2.1 2024-04-26 14:01:39 -07:00
David Hummel
e18643ed08 Install missing libtool package on macos-14 2024-04-26 13:16:47 -07:00
David Hummel
8afed63683 macos-latest changed from macOS 12 on amd64 to arm64
This seems to have happened around 2024.04.23

https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/
2024-04-26 12:03:16 -07:00
Artem Pavlenko
6e81004cfb add const qualifier to comparison operator 2024-04-25 10:55:04 +01:00
Artem Pavlenko
0d0c471eb5
Merge pull request #4446 from hummeltech/GitHubActionsNodeJS16
Resolve `Node.js 16 actions are deprecated` GitHub Actions warnings
2024-04-23 14:16:38 +01:00
Artem Pavlenko
751c96ec4a tidy [skip ci] 2024-04-22 15:33:11 +01:00
Artem Pavlenko
7350d0a653
Merge pull request #4447 from hummeltech/MapnikTestVisual
No need to install `mapnik-test-visual`
2024-04-22 15:29:51 +01:00
Artem Pavlenko
e1d7d3deb5 Fix dasharray grammar 2024-04-22 15:22:19 +01:00
Artem Pavlenko
6e44fb052c Expose parse_dasharray method (+MAPNIK_DECL), needed by python-bindings 2024-04-22 15:05:05 +01:00
David Hummel
7c45369e88 No need to install mapnik-test-visual 2024-04-21 16:54:28 -07:00
David Hummel
754b12b008 Resolve Node.js 16 actions are deprecated warnings 2024-04-19 16:27:48 -07:00
Mathis Logemann
a85bc95135
Merge pull request #4444 from mapnik/feature/increase_min_cxx_standard
Increase min cxx standard to 17
2024-04-19 20:04:58 +02:00
Mathis Logemann
15abda8b3e [workflow] Remove unused matrix options 2024-04-19 18:20:33 +02:00
Mathis Logemann
dc5ad24ef8 Increase min cxx standard to 17 2024-04-19 18:17:01 +02:00
Artem Pavlenko
e3b0044f8e github actions - build shared libs 2024-04-19 14:17:12 +01:00
Artem Pavlenko
a8d1797bcf
Merge pull request #4442 from hummeltech/macOSLCOV
Address `lcov`/`geninfo` errors on macOS CI builds
2024-04-19 08:57:01 +01:00
Artem Pavlenko
283e2762d4
Merge pull request #4443 from hummeltech/png_io.hppMissingString
Add missing `#include <string>` to `include/mapnik/png_io.hpp`
2024-04-18 09:09:50 +01:00
David Hummel
3ef2e8e3da Address lcov/geninfo error on macOS 2024-04-17 18:12:40 -07:00
David Hummel
0ffd196010 Add missing #include <string> to include/mapnik/png_io.hpp 2024-04-17 13:43:02 -07:00
Artem Pavlenko
15f6745223
Merge pull request #4441 from mapnik/bugfix/dont_pollute_global_install
don't pollute global include dir when installing agg
2024-04-17 09:13:45 +01:00
Mathis Logemann
6c58ae3ae1 don't pollute global include dir when installing agg 2024-04-16 20:05:38 +02:00
Artem Pavlenko
0897271a8e upgrade vcpkg-sha : b4a3d89125e45bc8f80fb94bef9761d4f4e14fb9 + reduce number of runners for now. 2024-04-16 09:24:55 +01:00
Artem Pavlenko
d6fc3b1ddc Upgrade SCons to latest production release (v4.7.0) [skip ci] 2024-04-15 14:35:35 +01:00
Artem Pavlenko
5cc57566cc Fix typo in CSS color unit test 2024-04-15 14:28:22 +01:00
Artem Pavlenko
658d5e69a4
Merge pull request #4438 from mapnik/css_color_fractional_percent
css color fractional percentage values
2024-04-15 14:17:10 +01:00
Artem Pavlenko
7afaa7e6cc clang-format 2024-04-15 14:13:14 +01:00
Artem Pavlenko
5ac45af78e Allow percentage values with a fractional component (implements https://github.com/mapnik/mapnik/issues/4437)
(https://www.w3.org/TR/css-color-4/#funcdef-rgba)
2024-04-15 14:09:04 +01:00
Artem Pavlenko
93ab8b4690 Fix compiler warning - definition of implicit copy constructor for 'enumeration<mapnik::colorizer_mode_enum, &mapnik::colorizer_mode_to_string, &mapnik::colorizer_mode_from_string, &mapnik::colorizer_mode_lookup>' is deprecated because it has a user-provided copy assignment operator [-Wdeprecated-copy-with-user-provided-copy] void operator=(const enumeration& other) { value_ = other.value_; } 2024-04-12 14:20:23 +01:00
Artem Pavlenko
7864289291 Update data-visual 2024-04-04 17:37:02 +01:00
Artem Pavlenko
0708ee8724 Use pkg-config to determine static linking dependencies, default to original behaviour. 2024-04-04 11:01:17 +01:00
Artem Pavlenko
c2c6d2ed60 gdal-config - use both --libs and --dep-libs when RUNTIME_LINK
+ `ogr.input` needs `pkg-config libpq --libs --static`
2024-04-03 18:18:13 +01:00
Artem Pavlenko
83f833f1ce clang-format 2024-03-28 16:49:57 +00:00
Artem Pavlenko
7aceade7c5 Update visual-data [skip ci] 2024-03-28 16:17:05 +00:00
Artem Pavlenko
a9e0bf5bee Link to sharpyuv when 'RUNTIME_LINK'=='static' (webp) 2024-03-28 15:57:14 +00:00
Artem Pavlenko
1e4c17256a WEBP - add fallback pkg-config check if WEBP_INCLUDES and/or WEBP_LIBS aren't set. 2024-03-28 15:55:30 +00:00
Artem Pavlenko
6479059c7e Add specialisation for nodata->rgba8 conversion for mapnik::image_gray8
( fixes gdal-overview-gray8 visual test)
2024-03-28 15:33:41 +00:00
Artem Pavlenko
e394db6c8f add boost-format 2024-03-13 09:10:17 +00:00
Artem Pavlenko
fb61b3fb12 Upgrade to actions/setup-python@v5 (node 20) 2024-03-12 14:29:59 +00:00
Artem Pavlenko
493c7fd5a1 Attempting to fix deb package path 2024-03-12 13:55:23 +00:00
Artem Pavlenko
ba2125b095 Fix -> pre-commit/action@v3.0.1 2024-03-12 13:28:14 +00:00
Artem Pavlenko
6d420b0911 Upgrade to node20 actions e.g @v4 2024-03-12 13:24:34 +00:00
Artem Pavlenko
f9b9261d53 Update vcpkg-sha : e105a86c97b8ab13d4dbe3f7bd9ebc17ece31634 2024-03-12 10:58:56 +00:00
Artem Pavlenko
61b5ff26f2 tidy - remoce PROJ.4 references [skip ci] 2024-03-12 10:58:36 +00:00
Artem Pavlenko
2b932be0ca Update test data (GDAL/OGR 3.5.3) 2024-03-07 09:23:03 +00:00
Artem Pavlenko
02e3b1577c Use __APPLE__ to check OS platform 2024-03-07 09:09:56 +00:00
Artem Pavlenko
8d2388870a
Merge pull request #4364 from mapnik/svg-group-render
Svg group renderer [WIP]
2024-03-01 09:13:49 +00:00
Artem Pavlenko
62c449e6d1 Use the same flags when calling FT_Load_Glyph
+ `revive missing check_object_status_and_throw_exceptiona` in `set_font_face`
2024-03-01 09:05:05 +00:00
Artem Pavlenko
d4173b022d Merge branch 'master' into svg-group-render [skip ci] 2024-02-27 09:05:50 +00:00
Artem Pavlenko
34c95df267
Merge pull request #4432 from mapnik/geojson-empty-geometries
Geojson - empty positions arrays handling
2024-02-27 09:04:24 +00:00
Artem Pavlenko
5b08c21eb0 Actually enable 'is_empty' test + cleanup 2024-02-26 16:25:40 +00:00
Artem Pavlenko
38193817de pre-commit run --show-diff-on-failure --color=always --all-files [skip ci] 2024-02-26 14:48:49 +00:00
Artem Pavlenko
c067399041 GeoJSON unit tests - require expected geometries are "empty". 2024-02-26 14:45:59 +00:00
Artem Pavlenko
0e9f8b06a3 Fix is_empty unit test e.g if multi geometry consists of empty geometries it is "empty". 2024-02-26 14:44:19 +00:00
Artem Pavlenko
b911464472 correct 'is_empty' implementation for multi geometries 2024-02-26 14:40:36 +00:00
Artem Pavlenko
127f9ba143 add missing copy 2024-02-26 14:39:41 +00:00
Artem Pavlenko
995d3044a4 GeoJSON - allow empty arrays in "coordinates" element for Multi* geometries (ref #4431) 2024-02-26 14:01:09 +00:00
Artem Pavlenko
1da533b5e5 Fix building on Ubuntu 23.10 (add <cstdint>) [skip ci] 2024-02-23 14:11:04 +00:00
Artem Pavlenko
6350e1b259 Update test data (+visual) 2024-02-21 16:06:53 +00:00
Artem Pavlenko
dcfb2d692c SVG - improve handling of gradientUnits and gradientTransform attributes (radial gradient) + correct default values [skip ci] 2024-02-15 11:47:57 +00:00
Artem Pavlenko
1c6d14eb85 viewer.app - Increase max scale factor to 10 2024-02-09 09:19:26 +00:00
Artem Pavlenko
cc1c990a2a clang-format : pre-commit run --show-diff-on-failure --color=always --all-files
xsx
2024-02-06 09:37:48 +00:00
Artem Pavlenko
45f954c578 Merge branch 'master' into svg-group-render 2024-02-05 09:41:31 +00:00
Artem Pavlenko
4f6ab6a4a2 Fix spurious ',' in operator== 2024-02-05 09:36:56 +00:00
Artem Pavlenko
2e1b32512b
Merge pull request #4421 from hummeltech/ogr-open-options-CMake
Fix CMake build issues after OGR open_options support addition
2023-11-28 08:54:08 +00:00
Artem Pavlenko
9d5c458405
Merge pull request #4426 from geofabrik/configure-fix
Fix bugs in configure script
2023-11-24 14:05:45 +00:00
Michael Reichert
ee76817d14 Fix bugs in configure script
The script expected that the shell supports arrays but only Z shell and
Bash do so. Other shells return syntax errors.

In addition, the script expected the mapnik-settings.env file to exist
and crashed otherwise.
2023-11-24 13:46:29 +01:00
Artem Pavlenko
88652012a9
Merge pull request #4424 from geofabrik/configure
Fix configure script for variables read from mapnik-settings.env
2023-11-24 08:50:04 +00:00
Michael Reichert
a5a96aacad Fix configure script for variables read from mapnik-settings.env
Custom build variables (e.g. CXX_STD or CXX) read from
mapnik-settings.env have to be provided as command line arguments
because SCons does not respect the environment variables.
2023-11-23 22:04:58 +01:00
David Hummel
c8fd548133 Fix build issues after addition of OGR open_options support 2023-11-22 09:45:23 -07:00
Artem Pavlenko
437feebaf1
Merge pull request #4423 from hummeltech/LibXML2_2.12.0_Support
Fix broken builds with libxml2 >= v2.12.0
2023-11-21 09:16:08 +00:00
David Hummel
8cdca5f5be Fix broken builds with libxml2 >= v2.12.0
**I.E.**
```
src/libxml2_loader.cpp:91:50: error: invalid conversion from ‘const xmlError*’ {aka ‘const _xmlError*’} to ‘xmlError*’ {aka ‘_xmlError*’} [-fpermissive]
src/libxml2_loader.cpp:131:50: error: invalid conversion from ‘const xmlError*’ {aka ‘const _xmlError*’} to ‘xmlError*’ {aka ‘_xmlError*’} [-fpermissive]
```
2023-11-20 10:21:12 -07:00
Artem Pavlenko
d745e43eb1 pre-commit run --show-diff-on-failure --color=always --all-files 2023-11-17 16:33:01 +00:00
Artem Pavlenko
7d2029165e Merge branch 'geofabrik-ogr-open-options-pr' 2023-11-17 16:31:13 +00:00
Michael Reichert
2d20d5a3c5 Add support for open options in OGR input plugin 2023-11-17 11:06:18 +01:00
Artem Pavlenko
738a7f19b7 Merge branch 'master' into svg-group-render 2023-11-17 09:43:02 +00:00
Artem Pavlenko
279acf4c36
Merge pull request #4419 from geofabrik/drop-old-gdal-pr
Drop support for old versions of GDAL/OGR (older than 2.0)
2023-11-17 09:10:49 +00:00
Michael Reichert
bff4fdde77 Drop support for old versions of GDAL/OGR (older than 2.0)
Fixes #4403.

GDAL 2.0.0 was released in March 2018 (more than five years ago).
Almost all Linux distributions (apart from few long-term support versions)
should come with at least GDAL >= 2.0.
2023-11-16 20:16:05 +01:00
Artem Pavlenko
f391178af0 Upgrade to SCons 4.5.2 2023-09-22 14:38:30 +01:00
Artem Pavlenko
50f1b05f86 boost/algorithm/string/trim.hpp is needed for `trim_if' (boost 1.83) 2023-09-22 14:37:34 +01:00
Artem Pavlenko
47f7f6bd4d Merge branch 'master' into svg-group-render 2023-09-15 14:48:44 +01:00
Artem Pavlenko
d69a0902d4 Forward declaration of 'mapnik::rule' is not sufficient when building on macOS :
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
2023-09-15 14:46:29 +01:00
Artem Pavlenko
cb352ac609 Remove unused local variable 2023-09-15 14:45:18 +01:00
Artem Pavlenko
388d3fd8da Add missing scons-local-4.5.1 2023-09-15 12:34:31 +01:00
Artem Pavlenko
b7332b07a1
Merge pull request #4404 from hummeltech/include_mapnik_geometry_cstdint_header
Add cstdint header include to `include/mapnik/geometry/boost_spirit_karma_adapter.hpp`
2023-09-15 09:12:49 +01:00
David Hummel
b1282fe32c Add cstdint header include to include/mapnik/geometry/boost_spirit_karma_adapter.hpp 2023-09-14 17:38:27 -07:00
Artem Pavlenko
ee8c403779 Merge branch 'master' into svg-group-render 2023-06-12 08:29:49 +01:00
Artem Pavlenko
123232ffde
Merge pull request #4390 from mapnik/feature/updateVcpkg
Update vcpkg commit ref in the ci
2023-06-12 08:29:12 +01:00
Mathis Logemann
2445dbe063 remove boost foreach include 2023-06-11 20:10:50 +02:00
Artem Pavlenko
ed0f8dcb48 Add missing scons-local-4.5.1 2023-06-11 11:31:23 +01:00
Artem Pavlenko
f226d4fd93 Conditionally apply BOOST_SPIRIT_X3_HIDE_CXX17_WARNING if cxx_std < 17 2023-06-11 11:22:49 +01:00
Artem Pavlenko
708e2a4009 Include rule.hpp as fwd decl no longer sufficient with clang++-14
(Apple clang version 14.0.3 (clang-1403.0.22.14.1)
2023-06-11 11:20:16 +01:00
Artem Pavlenko
92426bfc8e Merge branch 'master' into svg-group-render 2023-06-11 09:49:37 +01:00
Artem Pavlenko
20acc0e656
Merge pull request #4389 from MoeSzyslak98/gcc-13-fix
add cstdint header for gcc13 compilation.
2023-06-11 09:44:02 +01:00
Mathis Logemann
6003293e25
Update build_and_test.yml 2023-06-11 08:30:42 +02:00
kian
76c5fd047d add cstdint header for gcc13 compilation. 2023-06-09 15:32:59 +03:30
Artem Pavlenko
3b81effb3e remove unused local variable 2023-04-25 14:23:08 +01:00
Artem Pavlenko
35d901072b mapnik-render: use mapnik/filesystem.hpp 2023-03-27 09:34:03 +01:00
Artem Pavlenko
e847bb738b Set USE_BOOST_FILESYSTEM=True if CXX_STD < 17 + fix typo 2023-03-26 11:36:14 +01:00
Artem Pavlenko
cd4069f91e Merge branch 'master' into svg-group-render 2023-03-20 09:03:18 +00:00
Artem Pavlenko
c4aa24496a
Merge pull request #4385 from hummeltech/C++17Build
Add build & test for `CXX_STANDARD=17` to GitHub Actions
2023-03-20 09:01:13 +00:00
Hummeltech
63f33eed4b
List advanced cached variables in CI [skip ci] 2023-03-19 14:05:58 -07:00
Hummeltech
bc09efb8f5
Fixed typo USE_BOOST_FILESYSYTEM 2023-03-19 14:01:14 -07:00
Hummeltech
bb280a2815
Fixing issues with USE_BOOST_FILESYSTEM definition 2023-03-19 13:39:20 -07:00
Hummeltech
93e488a6cf
Only test for !defined(USE_BOOST_FILESYSTEM) in filesystem.hpp 2023-03-19 09:39:13 -07:00
Hummeltech
9f88d4c3a4
Revert CMAKE_CXX_FLAGS msvc-cl change 2023-03-19 09:38:27 -07:00
David Hummel
f6cd056552 Attempting to fix Windows build with C++17 2023-03-18 09:06:34 -07:00
David Hummel
0e9996dde0 Add build & test for CXX_STANDARD=17 to GitHub Actions 2023-03-18 08:03:58 -07:00
Artem Pavlenko
fc2d27d349
Merge pull request #4384 from hummeltech/cplusplus17
Fixed check for `__cpp_lib_filesystem` in `filesystem.hpp`
2023-03-18 14:35:07 +00:00
David Hummel
e4557c016f Oops, it looks like <version> does not exist until C++20 2023-03-17 10:31:30 -07:00
David Hummel
edec46e8c3 Fixed check for '__cpp_lib_filesystem' always false until after '#include <filesystem>' 2023-03-17 10:20:24 -07:00
Artem Pavlenko
b7fdeeeb02 Move rotation struct definition into pixel_position.hpp 2023-03-15 10:29:30 +00:00
Artem Pavlenko
ecfccdd36c Merge branch 'master' into svg-group-render 2023-03-15 08:37:06 +00:00
Artem Pavlenko
338942b490
Merge pull request #4383 from mapnik/std-filesystem 2023-03-15 07:47:55 +00:00
Artem Pavlenko
00199754a2
Update test/visual/CMakeLists.txt
Co-authored-by: Mathis Logemann <mathisloge@gmail.com>
2023-03-14 16:54:04 +00:00
Artem Pavlenko
49912a423e
Update CMakeLists.txt
Co-authored-by: Mathis Logemann <mathisloge@gmail.com>
2023-03-14 16:53:37 +00:00
Artem Pavlenko
5504aea704 clang-format 2023-03-14 14:53:44 +00:00
Artem Pavlenko
779c04af06 demo/viewer - fix currentIndexChanged signal signature 2023-03-14 14:44:45 +00:00
Artem Pavlenko
a244effa91 Add mapnik/filesystem.hpp ref:https://github.com/mapnik/mapnik/pull/4383#discussion_r1131405532 2023-03-13 14:27:02 +00:00
Artem Pavlenko
45b48721fa replace std::tmpnam (deprecated) with make_unique 2023-03-13 09:34:58 +00:00
Artem Pavlenko
106a46bbf6
Update CMakeLists.txt
Co-authored-by: Mathis Logemann <mathisloge@gmail.com>
2023-03-09 21:14:54 +00:00
Artem Pavlenko
96a6fcd941
Update CMakeLists.txt
Co-authored-by: Mathis Logemann <mathisloge@gmail.com>
2023-03-09 21:14:45 +00:00
Artem Pavlenko
d680d1d7f5
Update CMakeLists.txt
Co-authored-by: Mathis Logemann <mathisloge@gmail.com>
2023-03-09 21:14:28 +00:00
Artem Pavlenko
be0b537f52 Use std::filesystem when CXX_STD >= 17 and not USE_BOOST_FILESYSTEM 2023-03-09 13:17:28 +00:00
Artem Pavlenko
a3f65197dd Merge branch 'master' into svg-group-render 2023-03-08 12:02:34 +00:00
Artem Pavlenko
c646d245b4 Upgrade SCons to v4.5.1 2023-03-08 12:01:16 +00:00
Artem Pavlenko
f36ac22f82 MAPNIK_DECL only on __GNUC__ builds
ref: error C2491: 'mapnik::feature_style_processor<Processor>::prepare_layers': definition of dllimport function not allowed
2023-03-07 11:25:52 +00:00
Artem Pavlenko
87ac079bb6 Add -fvisibility=hidden -fvisibility-inlines-hidden to mapnik target (CMake) 2023-03-07 10:02:50 +00:00
Artem Pavlenko
accb28eb80 external linking (MAPNIK_DECL) requires for -fvisibility=hidden -fvisibility-inlines-hidden to work for GCC/g++ builds 2023-03-07 10:00:18 +00:00
Artem Pavlenko
7035b3e399 small typo 2023-03-07 09:57:36 +00:00
Artem Pavlenko
692c2faa0e
Merge pull request #4382 from hummeltech/master
Add `fonts_dir` & `plugins_dir` variables to `libmapnik.pc`
2023-03-02 15:48:40 +00:00
David Hummel
db9c4bc340 Add fonts & input_plugins variables to libmapnik.pc 2023-03-01 14:48:30 -07:00
Artem Pavlenko
52b5cab584 Update data-visual 2023-02-28 10:37:15 +00:00
Artem Pavlenko
41bb612e5d Merge branch 'master' into svg-group-render 2023-02-27 11:18:48 +00:00
Artem Pavlenko
3dbeb1ee4f Use explicit boost::filesystem::path::value_type to std::string conversion (win) 2023-02-27 09:22:17 +00:00
Artem Pavlenko
21d31bf62e Fix deprecated headers warning 2023-02-27 09:17:55 +00:00
Artem Pavlenko
02445f43ed mini cleanup 2023-02-27 09:17:37 +00:00
Artem Pavlenko
1351d90d51 Use boost::filesystem when __cplusplus < 201703L 2023-02-26 14:40:00 +00:00
Artem Pavlenko
8839f5774a pre-commit run --all-files 2023-02-24 18:07:09 +00:00
Artem Pavlenko
a499989b1d add missing header 2023-02-24 18:05:01 +00:00
Artem Pavlenko
d1f16479d1 pre-commit run --all-files 2023-02-24 17:51:40 +00:00
Artem Pavlenko
5e980ec853 mapnik-render
New options :
 * --bbox -- bounding box to zoom in (expected in Map's SRS unless "--geographic" is used)
 * --geographic,-g  -- bounding box is in WGS 84 lon/lat
 * --plugins-dir -- directory contaning input plugins (default:./plugins/input)
 * --fonts-dir -- directory containing fonts (default: relative to plugins-dir or ./fonts if no plugins-dir specified)
2023-02-24 11:23:26 +00:00
Artem Pavlenko
8efaa959f0 projection - rename 'expanded' to 'definition' (PJ_PROJ_INFO) + add 'description' method 2023-02-24 09:23:52 +00:00
Artem Pavlenko
e0da4468d2
Merge pull request #4379 from mapnik/update/vcpkg-sha
Update vcpkg-sha
2023-02-03 13:54:16 +00:00
Mathis Logemann
b4f1bc09f8
Update vcpkg-sha 2023-02-03 12:38:51 +01:00
Artem Pavlenko
ce073c64c7 Merge branch 'master' into svg-group-render 2023-01-24 14:30:28 +00:00
Artem Pavlenko
b9175100bd
Merge pull request #4378 from tomhughes/stdint
Include cstdint for uint16_t
2023-01-24 14:22:21 +00:00
Artem Pavlenko
fb97fb10f7
Merge pull request #4377 from mathisloge/fix/python-mapnik-findings
move datasource_plugin into mapnik target
2023-01-24 14:21:17 +00:00
Tom Hughes
c62e03344f Include cstdint for uint16_t 2023-01-23 22:37:16 +00:00
Mathis Logemann
ccbf27400c move datasource_plugin into mapnik target 2023-01-23 16:13:32 +01:00
Artem Pavlenko
00e2027d86 Merge branch 'master' into svg-group-render 2023-01-18 09:52:43 +00:00
Artem Pavlenko
43a7d7e455 Fix compiler warning (consistent class or struct declarations) 2023-01-18 09:50:26 +00:00
Artem Pavlenko
edddd08d73 Merge branch 'master' into svg-group-render 2023-01-18 09:48:29 +00:00
Artem Pavlenko
4e064b8b8e
Merge pull request #4291 from mathisloge/feature/cmake-static
Feature/cmake static plugins
2023-01-17 11:27:42 +00:00
Mathis Logemann
7cce5ce346 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2023-01-16 19:55:02 +01:00
Artem Pavlenko
e811958745
Merge pull request #4372 from mathisloge/refactor/enumarations
Refactor/enumerations
2022-12-19 12:37:32 +00:00
Mathis Logemann
64a031a19b changelog 2022-12-16 15:36:22 +01:00
Artem Pavlenko
51b5c9604a including <memory> - "src/test_png_encoding2.cpp:6:10: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type" 2022-12-12 14:23:39 +00:00
Artem Pavlenko
6afcb73135 Merge branch 'master' into svg-group-render 2022-12-12 12:10:43 +00:00
Artem Pavlenko
e27bc63887 SVG parser - update test data 2022-12-12 11:48:45 +00:00
Artem Pavlenko
f4eec2e24f pre-commit run --all-files 2022-12-12 10:46:41 +00:00
Artem Pavlenko
d29aeb2ddb SVG parser unit test - add attribute comparison framework + test data 2022-12-11 10:24:14 +00:00
Mathis Logemann
dd38dd18f9 rework enumeration<...> 2022-12-10 16:55:24 +01:00
Mathis Logemann
bc38652079 Finalize static plugins 2022-12-09 14:48:52 +01:00
Mathis Logemann
be46202511 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-11-28 08:29:20 +01:00
Artem Pavlenko
d417b8933a
Merge pull request #4366 from mathisloge/feature/refactor_actions
[CI] refactor github actions
2022-11-26 17:27:17 +00:00
Mathis Logemann
2ff1f4228d [CI] fail-fast: false 2022-11-26 16:40:16 +01:00
Mathis Logemann
d949acb925 [CI] only build if the check source code step is succesfull 2022-11-26 16:10:16 +01:00
Mathis Logemann
cbb80aa0db refactor actions 2022-11-26 16:07:44 +01:00
Artem Pavlenko
0b62415225 Export comp_op_rgba_xxx to fix linking on Windows via @mathisloge 2022-11-26 15:01:39 +00:00
Artem Pavlenko
d436c94c25 SVG cairo - push/pop group 2022-11-26 12:50:57 +00:00
Artem Pavlenko
0e5e77121c SVG - implement Cairo group renderer [WIP] [skip ci] 2022-11-26 11:13:37 +00:00
Mathis Logemann
0071eb1163 fix vcpkg for static 2022-11-26 08:36:42 +01:00
Mathis Logemann
df1ff425b7 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-11-26 08:32:20 +01:00
Artem Pavlenko
7c24ff09ee clang-format 2022-11-25 13:54:41 +00:00
Artem Pavlenko
e790aa6c06 Merge branch 'master' into svg-group-render 2022-11-25 13:48:36 +00:00
Artem Pavlenko
b7953fa68b
Merge pull request #4368 from mathisloge/fix/win-error
Fix windows build error
2022-11-25 10:57:01 +00:00
Mathis Logemann
9c873d0e95
Update ubuntu.yml 2022-11-24 22:36:17 +01:00
Artem Pavlenko
0968e12b5e
Merge pull request #4367 from mapnik/ci/vcpkg-json 2022-11-24 19:26:24 +00:00
Mathis Logemann
ae5e283df9 update proj db ref 2022-11-24 20:16:35 +01:00
Mathis Logemann
2770657ba1 fix windows build error 2022-11-24 19:41:21 +01:00
Mathis Logemann
b26d0757b7 add .cache to gitignore 2022-11-24 19:41:15 +01:00
Artem Pavlenko
8bc1aad37f SVG - convert USER_SPACE_ON_USE radial gradient values to % (fix) [WIP] [skip ci] 2022-11-24 10:35:19 +00:00
Artem Pavlenko
c3aec439a7 svg2png - check for valid opacity range 0..1 [WIP] [skip ci] 2022-11-24 10:25:09 +00:00
Artem Pavlenko
b3ed2280b6 Merge branch 'master' into svg-group-render 2022-11-24 09:55:44 +00:00
Artem Pavlenko
bfdab8879c svg2png - add top level "opacity" option e.g similar to <svg opacity="<val>"/> [WIP] [skip ci] 2022-11-23 16:18:18 +00:00
Artem Pavlenko
5f4711a019 SVG - refactor and minimise internal group usage [WIP] [skip ci] 2022-11-23 15:53:08 +00:00
Mathis Logemann
7d267b47fe Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-11-22 20:14:33 +01:00
Mathis Logemann
56312c68ad
Update vcpkg.json 2022-11-22 20:08:32 +01:00
Mathis Logemann
4fc828cf29
Merge pull request #4365 from mathisloge/ci/update_vcpkg
[CI] update vcpkg
2022-11-22 12:24:50 +01:00
Artem Pavlenko
8c04fb1262 Use feature_id in render_id [WIP] [skip ci] 2022-11-22 10:57:05 +00:00
Mathis Logemann
07789ad3cc
Update .pre-commit-config.yaml 2022-11-22 11:45:23 +01:00
Mathis Logemann
817f644c6d update pre-commit versions 2022-11-21 22:40:46 +01:00
Mathis Logemann
6183005baf [CI] update gh action runners 2022-11-21 22:28:44 +01:00
Mathis Logemann
7d414450c1 update vcpkg hash 2022-11-21 22:09:04 +01:00
Artem Pavlenko
4ef05da536 Revive 'push_explicit_style' logic. [WIP] [skip ci] 2022-11-21 19:10:12 +00:00
Artem Pavlenko
5347a1d939 format identation 2022-11-21 19:08:05 +00:00
Artem Pavlenko
0da7efdbac Fix - blend using correct 'opacity' 2022-11-21 19:06:53 +00:00
Artem Pavlenko
d4ae5ac653 SVG group renderer implementation (WIP) [skip ci] 2022-11-18 15:17:58 +00:00
Artem Pavlenko
a65d65a5ab Update .clang-format to BraceWrapping: BeforeCatch : true
run `pre-commit`
2022-11-10 15:57:38 +00:00
Artem Pavlenko
1d75721a46 Fix compiler warning -
```
include/mapnik/markers_placements/vertex_last.hpp:49:18: warning: variable 'cmd1' set but not used [-Wunused-but-set-variable]
        unsigned cmd1 = SEG_END;
                 ^
1 warning generated.
```
2022-11-04 14:39:54 +00:00
Artem Pavlenko
2a71903c75 Remove redundant BOOST_VERSION #if/endif 2022-11-04 14:07:28 +00:00
Artem Pavlenko
7e5655eef4 Use snprintf instead of sprintf (ref #4361) 2022-11-04 13:46:10 +00:00
Artem Pavlenko
5522cdd201 pre-commit run --all-files 2022-11-04 09:46:00 +00:00
Artem Pavlenko
bd018ef5ab git-clang-format 2022-11-03 11:29:50 +00:00
Artem Pavlenko
b438edd8da SVG path parser unit tests - update expected arc paths ref:98e5e64d80d921a02bc57f05c55c2e0e2426ab4d 2022-11-03 11:13:09 +00:00
Artem Pavlenko
05661e5439 Merge branch 'kkaefer-fix-svg-smooth-curve-after-arc' 2022-10-18 14:14:57 +01:00
Artem Pavlenko
02af1f606c Apply fix from #4357 to agg_path_storage 2022-10-18 14:13:35 +01:00
Artem Pavlenko
618ddef663 Merge branch 'fix-svg-smooth-curve-after-arc' of github.com:kkaefer/mapnik into kkaefer-fix-svg-smooth-curve-after-arc 2022-10-18 14:11:22 +01:00
Artem Pavlenko
fa9ee1fc61 Issue warning not an error when font face not found (ref #4354) 2022-10-18 13:56:05 +01:00
Konstantin Käfer
98e5e64d80 SVG: Fix reflection points for smooth curves after arcs
Internally, Agg/Mapnik converts arcs to curves. This means that the detection logic in the “smooth curve” command, which looks at the previous points for calculating the reflection point, mistakenly assumes that the previous commands were curve commands, even though they were in reality arc commands. To fix this, we add an explicit lineto command after every arc.
2022-10-18 12:17:05 +02:00
Artem Pavlenko
53a8e2ec2c Remove docbook directory from local SCons distribution and avoid referencing jQuery
(ref: Cross-site scripting (XSS) vulnerability in jQuery before 1.6.3)
2022-09-23 10:03:14 +01:00
Artem Pavlenko
9cf40a6144 Fix radial-distance simplification algorithm to always oupput last vertex (ref #4347) 2022-09-23 09:41:11 +01:00
Artem Pavlenko
9e8e178160 Re-enable simplify_converter tests + add radial-distance tests (#4348) 2022-09-23 09:32:06 +01:00
Artem Pavlenko
81103491b4 Fix building with boost_1_80 (#4340) 2022-08-30 10:40:25 +01:00
Mathis Logemann
ce8bd250dd better export [wip] 2022-08-25 19:59:29 +02:00
Mathis Logemann
4cd4985e75 resolve double defined symbol 2022-08-23 21:37:06 +02:00
Mathis Logemann
b9379f9024 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-08-18 20:38:47 +02:00
Mathis Logemann
e6553ef652 simplify cmake 2022-08-18 20:38:21 +02:00
Artem Pavlenko
019af0ad1d
Merge pull request #4338 from mathisloge/fix/ci-run
[CI] only run on master pushes and all PRs
2022-08-18 11:08:37 +01:00
Mathis Logemann
13c4719912 [CI] only run on master pushes and all PRs 2022-08-17 18:26:19 +02:00
Mathis Logemann
cf78c2a129 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-08-17 18:23:19 +02:00
Artem Pavlenko
a1596e4dad
Merge pull request #4333 from mapnik/cmake-install-fonts
Fix font installation logic
2022-08-17 17:19:34 +01:00
Artem Pavlenko
c8cff17fb6 Merge remote-tracking branch 'origin/cmake-install-fonts' into cmake-install-fonts 2022-08-17 17:05:19 +01:00
Artem Pavlenko
7d8be299f3 Fix font installation logic 2022-08-17 17:00:24 +01:00
Mathis Logemann
3ab8e80f2a depend on formatting 2022-08-17 17:37:43 +02:00
Mathis Logemann
eb3823aa4a precommit 2022-08-17 17:35:25 +02:00
Mathis Logemann
213be3777c Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-08-17 17:34:52 +02:00
Mathis Logemann
2b7456f54b Revert "precommit"
This reverts commit f48589738f.
2022-08-17 17:22:07 +02:00
Mathis Logemann
f48589738f precommit 2022-08-17 17:19:59 +02:00
Mathis Logemann
f6bcdac258 default crt = 0N 2022-08-17 17:16:32 +02:00
Artem Pavlenko
14a5cc7e1a
Merge pull request #4334 from mathisloge/cmake-linting
adding auto formatting
2022-08-17 14:15:13 +01:00
Mathis Logemann
54b0381f4d wip 2022-08-16 21:03:56 +02:00
Mathis Logemann
e3d8e55a79 pre-commit run -a 2022-08-16 19:00:16 +02:00
Mathis Logemann
df141876d0 disable clang-format for external deps 2022-08-16 19:00:15 +02:00
Artem Pavlenko
8abad1843a
Merge pull request #4336 from mathisloge/fix/viewer-ini
[CMake] fix generated viewer ini file
2022-08-16 14:08:20 +01:00
Mathis Logemann
13c96ab7d0 [CMake] fix generated viewer ini file 2022-08-15 21:14:16 +02:00
Mathis Logemann
69d682ef02 [clang-format] more compact extern c 2022-08-14 22:26:32 +02:00
Mathis Logemann
eb16e7a647 fix all files
format files
2022-08-14 22:26:31 +02:00
Mathis Logemann
88052447b9 pre-commit
add more hooks

add workflow
2022-08-11 22:53:03 +02:00
Artem Pavlenko
b6161dd439 Merge branch 'master' into cmake-install-fonts 2022-08-04 14:40:38 +01:00
Artem Pavlenko
9627432723 Fix -Wdeprecated-enum-enum-conversion warnings (AGG) 2022-08-04 11:25:35 +01:00
Artem Pavlenko
a9c98dff5d Fix deprecation warning (libtiff)
/usr/include/x86_64-linux-gnu/tiff.h:81:45: note: 'uint16' has been explicitly marked deprecated here
typedef TIFF_MSC_DEPRECATED uint16_t uint16 TIFF_GCC_DEPRECATED;
2022-08-04 11:01:56 +01:00
Artem Pavlenko
322f6cd805 Fix font installation logic 2022-08-03 16:19:07 +01:00
Mathis Logemann
34df24f4e2 [CMake] use pkgconfig for webp; make some statements more clearly 2022-04-22 21:10:42 +02:00
Mathis Logemann
c85f8462fd [CMake] fixes for windows (WIP) 2022-04-22 15:10:49 +02:00
Mathis Logemann
59d2f21369 [CMake] remove FindCairo and use pkgconfig 2022-04-22 15:10:02 +02:00
Mathis Logemann
25012517aa [CI] add static builds 2022-04-16 11:26:34 +02:00
Mathis Logemann
503fe35817 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-04-16 11:21:05 +02:00
Artem Pavlenko
1ba1278b42
Merge pull request #4307 from josch/proj-debug
src/proj_transform.cpp: only use proj_context_errno_string for proj >= 8.0.0
2022-04-14 14:14:48 +01:00
Johannes Schauer Marin Rodrigues
01e018eb0a
src/proj_transform.cpp: only use proj_context_errno_string for proj >= 8.0.0 2022-04-14 11:52:25 +02:00
Artem Pavlenko
5c06098caf
Merge pull request #4300 from mathisloge/ci/vcpkg_2022-03-18
[CI] update vcpkg to latest hash
2022-04-13 10:00:08 +01:00
Mathis Logemann
a963ae5ea6 [CI] trigger 2022-04-12 20:51:52 +02:00
Mathis Logemann
ca269f425c Revert "[CI] update vcpkg deps"
This reverts commit 75ad499fb5.
2022-04-12 14:42:19 +02:00
Mathis Logemann
75ad499fb5 [CI] update vcpkg deps 2022-04-12 14:21:45 +02:00
Mathis Logemann
8c9e61373e Merge branch 'master' of https://github.com/mapnik/mapnik into ci/vcpkg_2022-03-18 2022-04-11 15:24:45 +02:00
Artem Pavlenko
1ce18f6698
Merge pull request #4305 from josch/proj-debug 2022-04-11 14:20:14 +01:00
Artem Pavlenko
85997107af
Merge pull request #4304 from mathisloge/fix/cairo-1.17.6 2022-04-11 14:19:20 +01:00
Mathis Logemann
2259f8da6f use unnamed workflows, move vcpkg into preset update vcpkg 2022-04-11 15:04:30 +02:00
Johannes Schauer Marin Rodrigues
4f72043bcd
src/proj_transform.cpp: improve error handling of proj_transform()
- set proj log level to PJ_LOG_ERROR
 - let error message indicate whether proj_create_crs_to_crs or
   proj_normalize_for_visualization failed
 - output proj_context_errno_string when an error is thrown
2022-04-10 11:55:04 +02:00
Mathis Logemann
6afdc89894 fix test for newer cairo 2022-04-05 10:31:26 +02:00
Mathis Logemann
1bba69b108 [CI] update vcpkg to latest hash
notable changes: * proj => v9
[CI] fix sqlite dep

[vcpkg] update hash

update vcpkg cache
2022-04-02 18:05:03 +02:00
Mathis Logemann
e00847e711 [CI] fix sqlite dep 2022-03-19 10:27:34 +01:00
Mathis Logemann
2b8eec969b PluginInfo: remove static init and exit methods
those aren't used.
2022-03-15 21:12:43 +01:00
Mathis Logemann
5ee7571761 add dlerror for plugin loading 2022-03-15 21:12:43 +01:00
Mathis Logemann
4493a06878 call mapnik::setup automatically 2022-03-15 21:12:43 +01:00
Mathis Logemann
515a7e8279 changelog 2022-03-15 21:12:43 +01:00
Mathis Logemann
bb1bc2f07b [CMake] enable msvc static crt 2022-02-18 18:48:27 +01:00
Artem Pavlenko
2d03db8ef1 Fix scons build 2022-02-15 15:40:16 +00:00
Mathis Logemann
45568e8895 [datasource] call after_load for static plugins 2022-02-14 17:34:20 +01:00
Mathis Logemann
ee63a6f055 [tests] also test when using static 2022-02-14 10:15:09 +01:00
Mathis Logemann
0f0e06c6b8 [datasource] add plugin_registered function 2022-02-14 10:14:59 +01:00
Mathis Logemann
6fcdccaf83 [CMake] fix rename MAPNIK_STATIC_PLUGINS => BUILD_SHARED_PLUGINS 2022-02-09 15:57:03 +01:00
Mathis Logemann
c0d52ced18 [Changelog] describe breaking changes 2022-02-08 16:55:42 +01:00
Mathis Logemann
f9e69b4090 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-02-08 16:49:51 +01:00
Artem Pavlenko
f3da900c35
Merge pull request #4295 from mathisloge/ci/disable-debug-mode
[CI] disable vcpkg debug mode
2022-02-08 14:09:55 +00:00
Mathis Logemann
0769303075 [CI] ubuntu: run with mono 2022-02-08 14:59:43 +01:00
Mathis Logemann
01f414de59 [CI] disable vcpkg debug mode 2022-02-08 14:54:40 +01:00
Mathis Logemann
65dde2cce3 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-02-07 15:35:45 +01:00
Mathis Logemann
49ef468e84 [CMake] add msvc EHsc option 2022-02-07 15:35:09 +01:00
Mathis Logemann
42f465f842 refactor datasource plugins
fix merge

remove old DATASOURCE_PLUGIN call

fix memory_datasource

wip

wip

fix temp return

fix install

wip before_unload

linux

remove docker

remove docker

comments

add windows error message if libmapnik=static and plugins=dynamic

fix false plugin macro

plugin default de/constructor to remove UB

simplyfy plugin targets - add fpic

fix makro

simplyfy

use unique_ptr for plugin handle

rename option static plugins

replace local init with fnc call

call setup everywhere

init datasource_static
2022-02-07 15:35:09 +01:00
Artem Pavlenko
713104c2dc
Merge pull request #4290 from mathisloge/fix/gha-upload
[GHA] use current user if PR or local repo (readonly) and vcpkg debug…
2022-02-07 14:06:05 +00:00
Artem Pavlenko
843eb3eae5
Merge pull request #4289 from mathisloge/fix/format
fix formatting of warning.hpp
2022-02-07 14:05:40 +00:00
Mathis Logemann
e75725ef37 [GHA] use current user if PR or local repo (readonly) and vcpkg debug mode
use github.actor

test readonly access?

test

test

test

readonly user

use correct toolcahin for windows
2022-02-02 20:56:01 +01:00
Mathis Logemann
d148121dad fix formatting of warning.hpp 2022-02-02 17:31:43 +01:00
Mathis Logemann
8a1f2579e9 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/cmake-static 2022-02-02 17:15:55 +01:00
Mathis Logemann
2d846dd5f3 static plugins
wip static plugins

add remaining datasources

wip

formatting
2022-02-02 16:35:49 +01:00
Artem Pavlenko
0c8352fc3e
Merge pull request #4288 from mathisloge/fix/github-actions 2022-02-02 14:32:53 +00:00
Mathis Logemann
32ca0104a7 fix gha secret name 2022-02-02 15:31:24 +01:00
Artem Pavlenko
f9b310a8ca
Merge pull request #4286 from mathisloge/feature/github-actions
add github actions
2022-02-02 14:28:23 +00:00
Mathis Logemann
cda203a83f use correct cache 2022-02-02 10:14:55 +01:00
Mathis Logemann
bff4dbd957 add github actions
use mapnik as user

drop codecov token (not needed)
2022-01-28 11:14:04 +01:00
Artem Pavlenko
d7b83c0f7d
Merge pull request #4282 from mathisloge/feature/clang-format
Feature clang format
2022-01-28 09:57:58 +00:00
Mathis Logemann
9bf8fcc823 fix color.cpp formatting 2022-01-28 10:37:38 +01:00
Mathis Logemann
779787f980 Merge branch 'master' of https://github.com/mapnik/mapnik into feature/clang-format 2022-01-28 10:31:55 +01:00
Artem Pavlenko
7df7e16c56
Merge pull request #4284 from mathisloge/fix/windows-utf8
CMake stuff, missing includes and enables tiff test on windows
2022-01-28 09:20:52 +00:00
Artem Pavlenko
dafdbb01ea
Merge pull request #4276 from mathisloge/remove_cxx11_support
remove cxx11_support.hpp
2022-01-28 09:18:53 +00:00
Mathis Logemann
7bccb2a280 Merge branch 'fix/windows-utf8' of https://github.com/mathisloge/mapnik 2022-01-27 19:18:11 +01:00
Mathis Logemann
ef062ac314 [unit-tests] mark text/nested script runs as unicode 16 2022-01-27 18:42:40 +01:00
Mathis Logemann
3b1d09702c [unit-test] enable tiff test 2022-01-27 18:40:22 +01:00
Mathis Logemann
3012ea43ee [visual-test] enable utf-8 console output for windows 2022-01-27 18:37:19 +01:00
Mathis Logemann
aee8519bac [CMake] visual test in own dir 2022-01-27 18:37:03 +01:00
Mathis Logemann
ba27149232 add missing includes 2022-01-27 18:32:21 +01:00
Mathis Logemann
08dcab617e [CMake] add benchmark run script 2022-01-27 18:31:33 +01:00
Mathis Logemann
ccd44da4a2 [CMake] fix installation 2022-01-27 18:30:13 +01:00
Mathis Logemann
c5d4bfe680 [CMake] add msvc utf-8 flag 2022-01-27 18:28:44 +01:00
Mathis Logemann
4fbaa032f0 format dir demo 2022-01-27 00:12:13 +01:00
Mathis Logemann
65035706fb format dir benchmark 2022-01-27 00:12:13 +01:00
Mathis Logemann
6dcf754077 format dir test
format dir test

fix
2022-01-27 00:12:12 +01:00
Mathis Logemann
d5a873e81c format utils 2022-01-27 00:12:12 +01:00
Mathis Logemann
e7c3d04309 format dir include and src
format all files

Revert "format all files"

This reverts commit 95d5812e49e7f916b68e786596f5a8eb5bcac414.

Revert "format some files"

This reverts commit ed3c8762d4d828b2b28e7b18809fc33f4f8ccaf5.

format all files

fix formatting in dir include

fix formatting of debug macro
2022-01-27 00:12:08 +01:00
Mathis Logemann
6fe46f61e2 add clang-format
fix clang-format

fix clang-format

adjust pointer and reference aligment

add cmake script to format all files run with: cmake -P cmake/clang-format.cmake

fix sort includes

change format cmake script
2022-01-26 23:36:12 +01:00
Mathis Logemann
61dd5dccab Merge branch 'master' of https://github.com/mapnik/mapnik 2022-01-26 00:13:21 +01:00
Artem Pavlenko
1d6350b1e5
Merge pull request #4281 from mathisloge/fix/unique_shared_ptr
use shared::ptr<T>::use_count instead of unique()
2022-01-25 12:09:52 +00:00
Mathis Logemann
9ac35a0a9c use use_count instead of unique()
This should be safe to use, since there aren't any weak_ptr's using the shared_ptr. Furthermore any async operations should be finished or guarded for multithreaded execution.
2022-01-25 10:21:27 +01:00
Artem Pavlenko
9e3bafcd4c
Merge pull request #4279 from mathisloge/fix/issue-4268
fix #4268 by adding mapped_memory_file
2022-01-25 08:54:50 +00:00
Mathis Logemann
a3ccf2967f [scons] add mapped_memory_file to source list 2022-01-24 21:21:45 +01:00
Artem Pavlenko
611fd93308
Merge pull request #4280 from mathisloge/feature/vcpkg
add vpkg.json manifest file
2022-01-24 17:04:17 +00:00
Mathis Logemann
c16aa1e5c4 add vpkg.json 2022-01-24 10:49:07 +01:00
Mathis Logemann
fe887a2c83 fix #4268 by adding mapped_memory_file 2022-01-24 10:45:32 +01:00
Mathis Logemann
26052486ee remove cxx11_support.hpp 2022-01-20 23:07:17 +01:00
Artem Pavlenko
fb06428250
Merge pull request #4275 from mathisloge/remove_make_unique_cpp11 2022-01-19 13:52:39 +00:00
Mathis Logemann
4f95463c75 remove make_unique 2022-01-19 12:42:52 +01:00
Artem Pavlenko
cf5541d180
Merge pull request #4272 from mathisloge/cite
add CITATION.cff
2021-12-14 11:44:10 +00:00
Mathis Logemann
3c2aff82bc add CITATION.cff 2021-12-14 10:49:22 +01:00
Artem Pavlenko
79901e494b
Merge pull request #4271 from mathisloge/fix/cmake_install
[CMake] do not install FindHarfbuzz.cmake
2021-12-03 14:02:53 +00:00
Mathis Logemann
7a1b441cf0 [CMake] do not install FindHarfbuzz.cmake 2021-12-03 14:48:13 +01:00
Artem Pavlenko
6d47d3b70f
Merge pull request #4270 from mathisloge/fix/cmake-proj
fix proj version detection / harfbuzz pkg-config for cmake
2021-12-03 10:54:29 +00:00
Mathis Logemann
d546cda6d5 [CMake] drop harfbuzz and use pkg-config as a backup 2021-11-20 12:53:58 +01:00
Mathis Logemann
eb4390b5a6 fix proj version detection for cmake 2021-11-19 20:04:22 +01:00
Mathis Logemann
92b1dbaf32 delete all data 2021-11-15 16:41:37 +01:00
Mathis Logemann
c5d3d9c188 wip 2021-11-15 16:39:10 +01:00
Mathis Logemann
c6619d042c check out correctly 2021-11-15 16:09:46 +01:00
Mathis Logemann
7195448334 all branches 2021-11-15 16:08:48 +01:00
Mathis Logemann
500728e51f test workflow 2021-11-15 16:08:27 +01:00
Mathis Logemann
4b66137654 initial docker 2021-11-15 15:32:58 +01:00
Artem Pavlenko
14f913d6ab
Merge pull request #4266 from mathisloge/cmake_improvments
[CMake] improve build structure
2021-11-15 14:21:13 +00:00
Mathis Logemann
a911e33d7b [CMake] add more build presets
[CMake] rename windows presets

Revert "[CMake] rename windows presets"

This reverts commit 381dcd606c0c8f4281a482ede0c8c4a9a6d912fa.

[CMake] rename windows presets
2021-11-15 11:30:59 +01:00
Mathis Logemann
fbb0ae1489 [CMake] fix building with zero plugins
[Cmake] fix null plugins

fix null
2021-11-15 00:55:58 +01:00
Mathis Logemann
7a7a8125a9 [CMake] remove obsolete statements/improve docs
[CMake] remove obsolete variables and improve docs

[CMake] remove proj env var
2021-11-15 00:40:48 +01:00
Mathis Logemann
f0940c2075 [CMake] move all build artifacts into same dir to remove the need of copy_dlls (except for plugins)
[CMake] improve BUILD_TESTING and use pkgconf for cairo on linux

[CMake] add Threads dependency to -Config
2021-11-15 00:40:47 +01:00
Artem Pavlenko
dc5f497495 catch.hpp - upgrade to v2.13.7 (to unlock c++20 support) 2021-11-02 14:16:07 +00:00
Artem Pavlenko
4eb38c1051
Merge pull request #4260 from mathisloge/windows_define
replace _WINDOWS with _WIN32
2021-10-25 10:25:50 +01:00
Mathis Logemann
e626ba2688 replace _WINDOWS with _WIN32 2021-10-21 18:22:53 +02:00
Artem Pavlenko
f2ab25cf98
Merge pull request #4257 from mathisloge/cmake-pkgconf-improv
[CMake] improve pkg-config export
2021-10-20 16:08:47 +01:00
Mathis Logemann
aa903c675f [CMake] improve pkg-config export
add needed libs

pkg-conf: move libmapnikjson and libmapnikjson to m_requires

make pkg multi config aware

update proj min ver

correct prefix

use the correct output name

add import prefixes, just in case
2021-10-20 16:23:04 +02:00
Artem Pavlenko
4695c42b51
Merge pull request #4253 from GimpMaster/master
Compile for vcpkg using VS2017
2021-10-18 15:18:48 +01:00
Artem Pavlenko
28378b81e8
Merge pull request #4254 from mathisloge/cmake_option_fix
[CMake] fix mapnik_option
2021-10-18 10:40:01 +01:00
Mathis Logemann
c551ed3a62 [CMake] fix mapnik_option 2021-10-16 08:31:19 +02:00
Mathis Logemann
aef71dbae5 [CMake] fix mapnik_option 2021-10-16 08:27:09 +02:00
Joshua Hintze
cab3ba345c -Removed unneeded macro escapes 2021-10-15 19:33:50 -06:00
Joshua Hintze
15798e6ebb -Fixed issue with VS2017 compiling 2021-10-15 19:31:45 -06:00
Artem Pavlenko
0edb018465
Merge pull request #4252 from mathisloge/cmake_mapnik_config
[CMake] Fix issues with tests, boost-regex and webp. Fix viewer qt6
2021-10-13 17:02:16 +01:00
Mathis Logemann
a89447686c remove mapnik-config 2021-10-13 17:47:38 +02:00
Mathis Logemann
5ef2e27e8e [CMake] add boost regex icu check 2021-10-13 10:16:39 +02:00
Mathis Logemann
01dccee231 Merge branch 'cmake_mapnik_config' of https://github.com/mathisloge/mapnik into cmake_mapnik_config 2021-10-13 09:04:31 +02:00
Mathis Logemann
83b4989bd4 [CMake] restore compability with 3.15 2021-10-13 09:04:26 +02:00
Mathis Logemann
561a79720e [CMake] unit-test add utilities to path 2021-10-12 23:00:48 +02:00
Mathis Logemann
6dee79f442 [CMake] mapnik::mapnik restructure. should give a better overview 2021-10-11 19:08:25 +02:00
Mathis Logemann
dea63374f4 [CMake] better logging of feature options. Output log files for better help management. ; get started with mapnik-config 2021-10-10 21:34:15 +02:00
Mathis Logemann
59f7a61661 [CMake] unit-test copy more data 2021-10-09 14:11:58 +02:00
Mathis Logemann
ba8a972254 [unit-test] fix formatting 2021-10-09 13:55:32 +02:00
Mathis Logemann
05c2278893 [CMake] add the search paths for the build executables automatically for ctest.; depend completly on the external catch2 2021-10-09 13:48:11 +02:00
Mathis Logemann
a73d2f7d94 [unit-tests] fix windows 11 path search 2021-10-09 13:46:55 +02:00
Mathis Logemann
bf6081b207 [unit-test] add std includes for external catch2 2021-10-09 13:46:24 +02:00
Mathis Logemann
ac95449ff5 [CMake] fix critical webp init 2021-10-09 09:40:44 +02:00
Mathis Logemann
56e8de6b16 [CMake] proj remove global 2021-10-09 08:44:03 +02:00
Mathis Logemann
1a5aea5653 [CMake] use pkgconf imported target for proj; see https://github.com/mapnik/mapnik/issues/4249#issuecomment-937214705 2021-10-08 20:21:18 +02:00
Mathis Logemann
a0525ddd26 [CMake] nativ harfbuzz don't publish a version. Therefore we can't depend on it. 4645c3b47c/CMakeLists.txt (L686) and following 2021-10-07 20:16:45 +02:00
Mathis Logemann
8714432a67 [viewer] fix qt6 2021-10-07 20:05:11 +02:00
Artem Pavlenko
d96b6843b3
Merge pull request #4251 from mathisloge/cmake_hotfix
[CMake] fix `mapnik_find_plugin_dir`
2021-10-06 16:10:11 +01:00
Mathis Logemann
95e210521c [CMake] fix mapnik_find_plugin_dir 2021-10-06 16:43:55 +02:00
Artem Pavlenko
6f01d7a34a
Merge pull request #4250 from mathisloge/boost_bump_1_73
bump boost version to 1.73 and fix docs
2021-10-06 14:23:05 +01:00
Mathis Logemann
feca084ed6 bump boost version to 1.73 and fix docs 2021-10-06 15:15:32 +02:00
Artem Pavlenko
a1a3a712dd
Merge pull request #4248 from mathisloge/cmake-fix
[CMake] Simplify install, add min versions and PkgConfig
2021-10-06 10:28:21 +01:00
Mathis Logemann
333e745d7b [CMake] pkg-config: generate correct library link file names 2021-10-01 20:42:57 +02:00
Mathis Logemann
8c83e15404 [CMake] fix export plugin file naming 2021-09-23 19:28:40 +02:00
Mathis Logemann
fa2fec338b [CMake] add import prefix for libmapnik
so that the resulting archive is also named libmapnik
2021-09-23 19:11:29 +02:00
Mathis Logemann
fcc7016124 add basic pkg-config exports 2021-09-23 18:46:48 +02:00
Mathis Logemann
a2d3364ec7 [CMake] add version and soversion to base libraries 2021-09-23 10:41:25 +02:00
Mathis Logemann
1c51a8e529 [CMake] add configuration dependend exports for plugin install dir.
add function to get the current plugin install dir
2021-09-23 10:33:32 +02:00
Mathis Logemann
5287c234d6 [CMake] fix resulting config when no plugins are build 2021-09-22 21:39:04 +02:00
Mathis Logemann
f1ed49edec install utilities 2021-09-22 20:49:44 +02:00
Mathis Logemann
35ea6f2a56 [CMake] refactor mapnik_install 2021-09-22 19:52:39 +02:00
Mathis Logemann
d57f0ac93a [Cmake] Fix cache description 2021-09-22 15:44:34 +02:00
Mathis Logemann
755e8d322e add minimum versions; proj include dir only as a build interface 2021-09-22 15:25:55 +02:00
Mathis Logemann
25774ac82a [CMake] unify and simplify install commands.; Add Components to targets 2021-09-22 14:41:50 +02:00
Mathis Logemann
9d4d7fd273 [CMake] do not print install targets 2021-09-22 13:19:43 +02:00
Artem Pavlenko
1ccbbf95b5
Merge pull request #4244 from mathisloge/cmake-pub-dep
[CMake] make mapnik::core a public dependency of mapnik::mapnik
2021-09-15 16:38:23 +01:00
Mathis Logemann
8bd463d4fc make mapnik::core a public dependency of mapnik::mapnik 2021-09-14 20:46:43 +02:00
Artem Pavlenko
737e7a69c2 Add includes required for building with boost_1_77 (46e3d9231c (diff-2eb9871858184271f07935b31093c2d9f70f7a219979bec85adc03db6721a182)) 2021-09-01 10:11:13 +01:00
Artem Pavlenko
69911ad9ea
Merge pull request #4191 from mathisloge/cmake-support
CMake build support
2021-08-30 09:44:14 +01:00
Mathis Logemann
f40822980e update to latest catch2 2021-08-25 17:25:23 +02:00
Mathis Logemann
02180115bf some last minor improvements 2021-08-25 16:41:57 +02:00
Artem Pavlenko
262f769ece Update test/data 2021-08-17 13:27:08 +01:00
Mathis Logemann
0198cad883 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-08-13 20:44:55 +02:00
Mathis Logemann
4b4cfca706 copy all plugins to the viewer build dir 2021-08-13 20:41:30 +02:00
Mathis Logemann
83e77559c4 update cmake docs 2021-08-13 17:21:46 +02:00
Artem Pavlenko
29eea37b38 Update test/data 2021-08-12 10:30:44 +01:00
Mathis Logemann
8500b3cd69 remove not needed include of <warning.hpp> 2021-07-24 00:58:28 +02:00
Mathis Logemann
a8d6bdcac1 [FindWebP] FOUND_VAR is deprecated 2021-07-23 18:41:30 +02:00
Mathis Logemann
fcda7021b6 Revert "found var was deprecated."
This reverts commit 6b5e4dcec2.
2021-07-23 18:41:07 +02:00
Mathis Logemann
6b5e4dcec2 found var was deprecated. 2021-07-23 18:40:57 +02:00
Mathis Logemann
001718cf73 some fixes for FindWebP 2021-07-23 18:39:42 +02:00
Mathis Logemann
872f1139db Merge branch 'cmake-support' of https://github.com/mathisloge/mapnik into cmake-support 2021-07-23 18:14:40 +02:00
Mathis Logemann
02fed92074 link with correct lib (clang) 2021-07-23 19:34:17 +02:00
Mathis Logemann
f80a7724bf delete clang toolchain(replaced by CMakePresets) 2021-07-23 18:14:37 +02:00
Mathis Logemann
ac6842656e enable qt6 or qt5 for mapnik-viewer. android could be dropped 2021-07-23 17:06:24 +02:00
Mathis Logemann
f90c684471 add missing generator to CMakePresets 2021-07-23 16:41:28 +02:00
Mathis Logemann
08791f496d add MAPNIK_STATS 2021-07-23 16:10:35 +02:00
Mathis Logemann
6739c30941 fixed some var refs 2021-07-23 16:04:25 +02:00
Mathis Logemann
42fec31784 add version again to FindWebP 2021-07-23 15:54:51 +02:00
Mathis Logemann
e2524f80df rewrite webp to add debug libraries 2021-07-23 15:48:17 +02:00
Mathis Logemann
72600b996e added missing options 2021-07-23 13:34:49 +02:00
Mathis Logemann
54e63dd9fe some docs 2021-07-22 23:05:48 +02:00
Mathis Logemann
01516c9603 fix 2021-07-22 22:56:00 +02:00
Mathis Logemann
1f6a794b43 add MAPNIK_DEBUG when using the mapnik debug configuration 2021-07-22 22:54:22 +02:00
Mathis Logemann
28d286ecb8 i really need to upgrade proj... 2021-07-22 22:46:23 +02:00
Mathis Logemann
d737569574 add presets 2021-07-22 22:45:39 +02:00
Mathis Logemann
4d3affb95d fix gdal include dir 2021-07-22 22:06:01 +02:00
Mathis Logemann
14944cd235 added some docs 2021-07-22 21:55:01 +02:00
Mathis Logemann
bbcf1c2009 add multithreaded 2021-07-22 21:45:25 +02:00
Mathis Logemann
b925abf403 fix library name 2021-07-22 21:35:12 +02:00
Mathis Logemann
03b1f18c89 make pkg-config optionally. But fail later when we actually need pkg-config as a fallback 2021-07-22 21:04:45 +02:00
Mathis Logemann
7b0aa9d3bf remove openjpeg again. was just a test 2021-07-22 20:45:16 +02:00
Mathis Logemann
3001e0c78a Revert "remove openjpeg again. was just a test."
This reverts commit bcc66a739c.
2021-07-22 20:44:36 +02:00
Mathis Logemann
bcc66a739c remove openjpeg again. was just a test. 2021-07-22 20:44:29 +02:00
Mathis Logemann
81397f84bc add debug postfix to wkt, json and mapnik.
Mapnik can be installed with multi configuration enviroment
2021-07-22 20:34:08 +02:00
Mathis Logemann
9998ca7dd9 fix gdal library variable 2021-07-22 20:17:03 +02:00
Mathis Logemann
3a2996e5b0 install mapbox headers when using NOT USE_EXTERNAL* 2021-07-21 20:20:44 +02:00
Mathis Logemann
199fd8218b this fixes a bug when including a package via pkg-config:
We will append the call to the config file to find the package
via find_package. However this does not work when the package was included
with pkg-config
2021-07-21 20:08:22 +02:00
Mathis Logemann
282986c503 fix config file naming scheme.
Only happens when using older cmake versions. But this was definitly an issue.
Target name should be the same on the file (case sensitive)
2021-07-21 20:03:42 +02:00
Mathis Logemann
e5cf5dda39 default to jpeg. 2021-07-21 18:24:40 +02:00
Mathis Logemann
c5ced60c38 fix some bugs when using ubuntu to build 2021-07-21 18:16:48 +02:00
Mathis Logemann
01159d0721 still forget proj everytime... 2021-07-07 21:11:28 +02:00
Mathis Logemann
59f9974baa TEMP: use openjpeg 2021-07-07 21:06:59 +02:00
Mathis Logemann
3397fff8ea add harfbuzz fallback 2021-07-06 22:46:07 +02:00
Mathis Logemann
cdb598e67b add harfbuzz minimum version and HarfBuzz::ICU target. probably fixes osx 2021-07-06 22:19:28 +02:00
Mathis Logemann
c5f0565654 remove subsequent boost require version calls. 2021-07-06 22:07:29 +02:00
Mathis Logemann
eb1236d5dd use proj *gr* 2021-07-06 21:32:58 +02:00
Mathis Logemann
e408bf9a22 add find harfbuzz.cmake 2021-07-06 21:32:36 +02:00
Mathis Logemann
6a19824c12 hate proj4... 2021-07-05 21:58:53 +02:00
Mathis Logemann
7a13a940df build plugins as modules. 2021-07-05 17:13:45 +02:00
Mathis Logemann
7231d06a46 ups. this shouldn't be commited 2021-07-02 22:43:01 +02:00
Mathis Logemann
7f2511632f add packaging 2021-07-02 22:26:36 +02:00
Mathis Logemann
d610671327 try install json and wkt again 2021-07-02 16:02:30 +02:00
Mathis Logemann
cdf41a3144 install sparsehash 2021-07-02 13:55:55 +02:00
Mickey Rose
51b118ef2f prevent files under scons/ from skewing repository language statistics 2021-07-02 11:00:28 +02:00
Mathis Logemann
d17abeddb7 [cmake] add folders for visual studio 2021-06-30 10:33:20 +02:00
Mathis Logemann
a7ec89a8a1 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-05-29 22:43:59 +02:00
Artem Pavlenko
0a8e353e83
Merge pull request #4230 from mapnik/c++20
C++20
2021-05-17 16:15:07 +01:00
Artem Pavlenko
0efdcafe56 make from_u8string inline 2021-05-17 16:11:53 +01:00
Artem Pavlenko
6fa2666747 Add convertion functions from_u8string to support c++20 + update tests 2021-05-17 16:11:44 +01:00
Artem Pavlenko
fb2e45c579 Upgrade to ICU 58.1 2021-04-28 17:05:24 +01:00
Mathis Logemann
4879efce58 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-04-22 19:41:35 +02:00
Mathis Logemann
5a109a99fb install dependencies only on windows and install plugins into correct dir 2021-04-22 19:41:21 +02:00
Artem Pavlenko
88a15daf93 Fix parse_svg_value 2021-04-22 11:36:10 +01:00
Artem Pavlenko
a1cb756fa0 SVG parse_svg_value: update is_percent only if parsing successful 2021-04-19 18:02:24 +01:00
Artem Pavlenko
3031b7cf6a SVG parse_svg_value/parse_font_size: re-initialise default val on parser failure 2021-04-19 08:55:39 +01:00
Artem Pavlenko
4ff25eb2a8 remove token 2021-04-16 17:26:44 +01:00
Artem Pavlenko
21fd41b9a9
Merge pull request #4225 from mapnik/svg-rendering-improvements
SVG rendering improvements
2021-04-16 09:51:25 +01:00
Artem Pavlenko
7c5f4539e1 Fix error message + update SVG parser unit test 2021-04-15 16:29:05 +01:00
Artem Pavlenko
fd204874ec svg2png - avoid writing to an empty image 2021-04-15 15:53:04 +01:00
Artem Pavlenko
654a3c1f9f SVG : refactor and simplify width/height+viewBox logic (https://www.w3.org/TR/SVG11/struct.html#SVGElement) + check font_sizes_ size before accesing last element 2021-04-15 15:38:59 +01:00
Artem Pavlenko
0feabeb7e8 SVG circle: ignore when r = 0 2021-04-13 13:48:05 +01:00
Artem Pavlenko
55370c3453 Update visual data 2021-04-13 10:26:39 +01:00
Artem Pavlenko
f293371a9d SVG rendering improvements:
* process `font-size` attributes and use them to scale `em` units
* fix default `color-stop` value
* store `viewBox` and use it to calculate `%` values correctly
* add more absolute/relative values
* default `DPI`:96
* default `font-size`: 10
* process style attributes on `<svg>` element
* use viewBox `width`, `height` and `normalized_diagonal` for relevant length values
* apply scale factor to gradient transforms
2021-04-13 09:19:33 +01:00
Artem Pavlenko
9c2132f895 Fix gradient transform calc (apply scale factor) 2021-04-13 09:17:48 +01:00
Artem Pavlenko
ff8c411749 Use DPI=96 + add absolute and relative sizes + add missing value units 2021-04-12 14:16:39 +01:00
Artem Pavlenko
4f783f61ed Init by value 2021-04-12 14:16:09 +01:00
Mathis Logemann
e1fa32f21f install dependencies. Required for windows (and ?macos?). Needs testing on linux. 2021-04-10 14:36:22 +02:00
Mathis Logemann
1929fbc0ba add an option to disable plugin and font copying 2021-04-09 15:53:21 +02:00
Mathis Logemann
02f78e4ce5 fixed Dll copying on windows; copy plugins and fonts into appropiate directories when building. 2021-04-09 15:50:50 +02:00
Mathis Logemann
b6d8f54779 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-04-06 18:38:51 +02:00
Artem Pavlenko
6bab4e56fd Move MAPNIK_DECL to the front (ref https://github.com/mapnik/mapnik/pull/4220#issuecomment-814259514) 2021-04-06 17:36:46 +01:00
Mathis Logemann
9049a7e58d Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-04-06 17:27:28 +02:00
Artem Pavlenko
8c3b9758eb
Merge pull request #4220 from mapnik/proj6
Simplify proj_transform_cache implementation
2021-04-06 11:58:44 +01:00
Artem Pavlenko
b974a4a683 Simplify proj_transform_cache implementation (ref https://github.com/mapnik/mapnik/pull/4191#issuecomment-813377082) 2021-04-06 10:30:12 +01:00
Mathis Logemann
5963c64960 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-04-01 18:17:39 +02:00
Artem Pavlenko
bb18a5ba0a
Merge pull request #4219 from mathisloge/proj_transform_fix
fixes proj_transform_cache incomplete type
2021-04-01 17:16:48 +01:00
Mathis Logemann
bed3ffb3dc fix typo grid renderer -> svg renderer 2021-04-01 18:01:43 +02:00
Mathis Logemann
ee90425de1 fixes proj_transform_cache incomplete type for gcc 2021-04-01 17:57:20 +02:00
Mathis Logemann
f57d39378d add BIGINT and MAPNIK_MEMORY_MAPPED_FILE; require cxx standard, disable compiler specific flags (CXX_EXTENSIONS) 2021-04-01 16:15:32 +02:00
Mathis Logemann
b1e1ea66f5 try fix linux take II 2021-04-01 16:03:58 +02:00
Mathis Logemann
7121bd6fbf Revert "hopefully fix unstatisfied proj_transform_cache"
This reverts commit d2066da339.
2021-04-01 15:55:57 +02:00
Mathis Logemann
d2066da339 hopefully fix unstatisfied proj_transform_cache 2021-03-31 20:25:46 +02:00
Mathis Logemann
8cd78b6945 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-03-26 20:04:30 +01:00
Artem Pavlenko
53669bc42e
Merge pull request #4202 from mapnik/proj6
Upgrade to new Proj APIs
2021-03-26 16:55:10 +00:00
Mathis Logemann
7897bb5c83 add threads to mapnik::core 2021-03-26 15:45:15 +01:00
Mathis Logemann
1367e7007f print version strings if available 2021-03-25 21:28:41 +01:00
Mathis Logemann
2b977f14c9 changed proj; add mapnik_proj_version; use boost regex icu workaround 2021-03-25 18:46:18 +01:00
Mathis Logemann
eb943d11d0 add postgis to unit tests 2021-03-25 18:42:17 +01:00
Artem Pavlenko
3489bdbe36 rename PROJ_VERSION to MAPNIK_PROJ_VERSION to avoid clashes with libproj 2021-03-25 16:38:21 +00:00
Mathis Logemann
0ab47e1fc6 Merge branch 'proj6' of https://github.com/mapnik/mapnik into cmake-support 2021-03-25 17:28:06 +01:00
Mathis Logemann
b2116fd9e9 added benchmarks; needed mutex header 2021-03-25 17:26:29 +01:00
Artem Pavlenko
f093d0cf6e Fix potential iterator out of range condition by using appropriate function (ref #4218) via @mathisloge
```
template< class InputIt1, class InputIt2, class BinaryPredicate >

bool equal( InputIt1 first1, InputIt1 last1,
            InputIt2 first2, InputIt2 last2,
            BinaryPredicate p );
```
2021-03-25 16:07:48 +00:00
Artem Pavlenko
5dfd1a24fc Fix potential iterator out of range condition by using appropriate function (ref #4218) via @mathisloge
```
template< class InputIt1, class InputIt2, class BinaryPredicate >

bool equal( InputIt1 first1, InputIt1 last1,
            InputIt2 first2, InputIt2 last2,
            BinaryPredicate p );
```
2021-03-25 16:03:15 +00:00
Mathis Logemann
c29c84327a add proj_transform_cache to source list 2021-03-25 13:34:25 +01:00
Mathis Logemann
f8b159f8ff Merge branch 'proj6' of https://github.com/mapnik/mapnik into cmake-support 2021-03-25 13:26:30 +01:00
Artem Pavlenko
503b9c5bbf Move proj_transform_cache declarations and implementaion into separate translation unit (ref VC++ C2492) 2021-03-25 12:16:15 +00:00
Mathis Logemann
0a3bb4e8bd update test data deps. somehow got messed up in last commit 2021-03-25 08:52:09 +01:00
Mathis Logemann
31c0b08548 renamed MAPNIK_USE_PROJ4 to MAPNIK_USE_PROJ and removed ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 2021-03-24 23:55:12 +01:00
Mathis Logemann
59b97a57fc test data changes 2021-03-24 23:31:11 +01:00
Mathis Logemann
4eed15f87a Merge branch 'proj6' of https://github.com/mapnik/mapnik into cmake-support 2021-03-24 23:30:50 +01:00
Mathis Logemann
772e50ba79 copy basic dlls for mapnik-demo 2021-03-24 23:28:36 +01:00
Mathis Logemann
e963af53a5 find proj without config 2021-03-24 15:21:39 +01:00
Mathis Logemann
61a1248262 fix false default cmake install dir 2021-03-24 15:17:08 +01:00
Mathis Logemann
db6d1a1293 fix typo in text 2021-03-24 15:16:12 +01:00
Mathis Logemann
9835f07179 find and link icu first 2021-03-24 14:57:27 +01:00
Artem Pavlenko
c76f65a49a Add missing header (linux) 2021-03-24 11:44:56 +00:00
Artem Pavlenko
d756b534e3 Fix names and add welsh reference for good measure 2021-03-24 11:42:18 +00:00
Artem Pavlenko
2bb5bdb9fe Fix existing and add more transformation test + test for is_geographic (ref 3a302667a1) 2021-03-24 11:23:27 +00:00
Artem Pavlenko
f82ed08d6a Replace remaining MAPNIK_USE_PROJ4 -> MAPNIK_USE_PROJ 2021-03-24 11:22:32 +00:00
Artem Pavlenko
b24fc9a8da Remove proj4 related stuff 2021-03-24 11:21:50 +00:00
Artem Pavlenko
3a302667a1 Fix return value (MAPNIK_WEBMERCATOR_PROJ is not geographic SRS) 2021-03-24 09:42:52 +00:00
Artem Pavlenko
59aa5087fc upgrade libpq to 9.6.5 2021-03-22 16:03:08 +00:00
Artem Pavlenko
602948f783 Upgrade mason pkgs:
* libgdal 2.2.3
* libpng 1.6.32
* jpeg_turbo 1.5.2
* libtiff 4.0.8
2021-03-22 15:45:36 +00:00
Mathis Logemann
167461ccc4 rename internal name mapnik-core to core since the exported name would be mapnik::mapnik-core instead of mapnik::core. This fixes the issue 2021-03-19 22:51:50 +01:00
Artem Pavlenko
5afe22030f Fix proj_version on macOS 2021-03-19 16:37:21 +00:00
Artem Pavlenko
9df7afd0a3 Add 'proj_version' check + define PROJ_MIN_VERSION as 7.2.0 2021-03-19 13:24:14 +00:00
Artem Pavlenko
6af16764aa proj - add version check based on major*10000+minor*100+patch format 2021-03-19 13:22:16 +00:00
Artem Pavlenko
6b9b42f314 Declare proj_cache_ thread_local static to allow mapnik::Map to be thread-safe under certain conditions + refactor
(benchmark/src/test_rendering_shared_map.cpp)
2021-03-18 16:05:58 +00:00
Artem Pavlenko
ebbd544d75 Add text to indicate if proj_transform is internal or external (libproj) 2021-03-18 16:05:09 +00:00
Artem Pavlenko
9c7e21fa47 Re-use proj_transform as creating a new one is extremely expensive on libproj >= 6 (NOTE: epsg:4326 and epsg:3857 are special cases which use internal implementations and are not expensive to create on stack). 2021-03-18 15:32:13 +00:00
Mathis Logemann
36be4fe594 renamed target mapnik::headers to mapnik::core 2021-03-18 15:35:55 +01:00
Mathis Logemann
4604aee202 3.15 is the minium supported target. tested. 2021-03-17 23:06:49 +01:00
Mathis Logemann
4e898b2a52 added some basic READMEs 2021-03-17 22:37:46 +01:00
Mathis Logemann
ae43a49b71 add dependencies to cmake config. Provieded a new macro for better maintance 2021-03-17 22:18:21 +01:00
Mathis Logemann
a0d60f233b fixes cairo renderer debug configuration. Copied FindCairo had a lot of issues with the multiconfiguration settings. Rewrite of the whole file 2021-03-17 21:29:00 +01:00
Artem Pavlenko
199e609a79 Fix compiler warning - use non-reference type 'boost::tuples::cons<...>' 2021-03-16 11:49:53 +00:00
Artem Pavlenko
fbc6bec12a Update visual data references 2021-03-15 18:18:24 +00:00
Artem Pavlenko
56d63073b4 Update test 2021-03-15 18:10:09 +00:00
Artem Pavlenko
387d54fe9d Defer projection init 2021-03-15 18:09:21 +00:00
Artem Pavlenko
6099804559 Use POSIX definition of pi constant (M_PI) + define tau in terms of pi + better namings + remove deprecated proj4 style definitions 2021-03-15 18:06:26 +00:00
Mathis Logemann
c1d9bde886 fix find cairo 2021-03-15 10:03:26 +01:00
Mathis Logemann
f9d65edf20 oops. do not push github workflow 2021-03-15 08:57:50 +01:00
Mathis Logemann
79d369db1f Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2021-03-15 08:52:15 +01:00
Mathis Logemann
b3fb65edaa Merge branch 'master' of https://github.com/mathisloge/mapnik into cmake-support 2021-03-15 08:49:27 +01:00
Artem Pavlenko
baad6b3819 Update data and data-visual to use epsg:XXXX syntax to define SRS (old proj4 syntax is not recommended in proj >=6) 2021-03-12 16:24:11 +00:00
Artem Pavlenko
c71bcdc92d update visual tests affected by switching to well_known_srs 2021-03-12 14:39:14 +00:00
Artem Pavlenko
f432204180 Update test/data-visual 2021-03-12 13:14:31 +00:00
Artem Pavlenko
68efb709ed Fix mason version 2021-03-11 15:16:31 +00:00
Artem Pavlenko
ec880947e0 fix merge artifacts 2021-03-11 15:04:53 +00:00
Artem Pavlenko
342bf2947b Merge branch 'master' into proj6 2021-03-11 14:51:01 +00:00
Artem Pavlenko
74c79eb17c
Merge pull request #4217 from mapnik/scons-4.1.0
Scons 4.1.0
2021-03-11 14:45:32 +00:00
Artem Pavlenko
689aa4cdef Remove Proj.4 reference in preference to Proj 2021-03-11 14:11:44 +00:00
Artem Pavlenko
d9b7055cbe travis-ci - brew link postgresql postgis 2021-03-11 13:58:53 +00:00
Artem Pavlenko
b70e5adad0 remove extract token 2021-03-11 13:57:12 +00:00
Artem Pavlenko
a6ced1622c .travis.yml - use 'brew list --formula + brew link git` 2021-03-11 13:41:35 +00:00
Artem Pavlenko
13a6b0c03a .travis.yml - fix syntax typo 2021-03-11 12:40:15 +00:00
Artem Pavlenko
5f78b90572 travis-ci - revive postgis.input tests (call unlink brew pkga in script section) 2021-03-11 12:32:58 +00:00
Artem Pavlenko
466ff8c319 travis-ci - unlink all brew pkgs 2021-03-11 11:15:33 +00:00
Artem Pavlenko
e91d1ec0a5 travis-ci - brew list 2021-03-11 10:56:47 +00:00
Artem Pavlenko
93f239f5cb travis-ci print brew info proj/boost 2021-03-11 10:13:44 +00:00
Artem Pavlenko
256ee86104 unit tests - don't run projection transformations tests which require libproj when MAPNIK_USE_PROJ4 is not set 2021-03-11 09:58:24 +00:00
Artem Pavlenko
692907761a Add more diagnostic stderr 2021-03-10 16:36:13 +00:00
Artem Pavlenko
5d5cc3a5db Try building without postgis.input 2021-03-10 12:22:14 +00:00
Artem Pavlenko
f5d911968f Force remove system boost_1_74 2021-03-10 11:46:52 +00:00
Artem Pavlenko
abf05e8bc8 Remove (attempting) system boost 2021-03-10 11:37:37 +00:00
Artem Pavlenko
5d88fa4a2c Let's see if upgrading xcode to 12.2 solves the boost issue 2021-03-10 11:11:45 +00:00
Artem Pavlenko
8271bbde06 Merge branch 'master' into scons-4.1.0 2021-03-10 09:34:57 +00:00
Artem Pavlenko
0714e61545 Refactor "Query map point" unit test 2021-03-09 16:29:23 +00:00
Artem Pavlenko
ebc3dabd6d Add basic Map::query_map_point test 2021-03-09 16:14:26 +00:00
Artem Pavlenko
0e0d222ede Print mapnik::Map (useful gathering query_map_point data) 2021-03-09 16:13:20 +00:00
Artem Pavlenko
f8877e2263 Add missing &copy 2021-03-09 16:12:54 +00:00
Artem Pavlenko
eb49b5776a Fix BBOX in geographic WGS84 (epsg:4326) calc logic 2021-03-09 15:02:11 +00:00
Artem Pavlenko
977c65e9de Fix proj_transform order in Map::query_point 2021-03-09 11:33:21 +00:00
Artem Pavlenko
7cbbd7305b Map::mapnik - restore non-const access to layers + create proj_transform and cache in get_proj_transform + declare proj_cache_ mutable 2021-03-09 10:48:32 +00:00
Artem Pavlenko
8f126a1000 Fix updateData signal signature so it actually works + cleanups 2021-03-08 13:21:01 +00:00
Artem Pavlenko
fb325f527b Fix updateData signal signature so it actually works + cleanups 2021-03-08 13:19:11 +00:00
Artem Pavlenko
f1fc3c4948 Update mason version 2021-03-05 15:42:32 +00:00
Artem Pavlenko
1259b1d333 try boost 1.75.0 2021-03-05 15:37:23 +00:00
Artem Pavlenko
2cd0c91215 Attempting to fix travis-ci :D 2021-03-05 15:32:21 +00:00
Artem Pavlenko
e8c2ba7eeb travis-ci - revert back to language:generic 2021-03-05 14:22:20 +00:00
Artem Pavlenko
61a73d21e6 bootstrap.sh - boost 1.74 + remove libexpat dep 2021-03-05 14:18:03 +00:00
Artem Pavlenko
459ea9f486 travis-ci - upgrade to xcode11 2021-03-05 12:42:13 +00:00
Artem Pavlenko
3c475ab7da travis-ci - set PYTHON=python3 globally 2021-03-05 11:08:20 +00:00
Artem Pavlenko
6124b1fae8 set PYTHON env var to python3 2021-03-05 11:04:07 +00:00
Artem Pavlenko
1bc84b837a attempting to force python3 2021-03-05 10:52:33 +00:00
Artem Pavlenko
65273e7a07 .travis.yml - set language to c++ 2021-03-05 10:45:35 +00:00
Artem Pavlenko
489154b342 remove python2 stuff 2021-03-05 10:35:20 +00:00
Artem Pavlenko
84a05a6597 Upgrade to Scons 4.1.0 2021-03-05 10:18:26 +00:00
Artem Pavlenko
b532beccde mapnik::Map ctor/operator= - initialise proj transforms 2021-03-04 10:19:44 +00:00
Artem Pavlenko
554556e4d5 Add support for libproj >=8 2021-03-04 10:18:42 +00:00
Artem Pavlenko
b75737fd6a Implement proj_transform caching using boost::unordered_map which allows calling find method with compatible key type.
In this case `std::pair<boost::string_view, boost::string_view>` avoiding potentially expensive temp string keys.
(TODO: In the future use c++20 `std::unordered_map::find` transparent keys facility)
2021-03-03 15:01:58 +00:00
Artem Pavlenko
6fedae386d add c++20 2021-03-03 11:13:42 +00:00
Artem Pavlenko
11ff758c38 Add proj_transform::definition() method 2021-03-02 17:07:13 +00:00
Artem Pavlenko
a149ebed16 use std::size_t consistently (proj API) 2021-03-02 16:39:32 +00:00
Artem Pavlenko
cb75f00780 Move proj_transform initialisation to add_layer method 2021-02-25 11:05:11 +00:00
Mathis Logemann
3a6362f1a9 added clang toolchain file 2021-02-05 19:35:35 +01:00
Artem Pavlenko
c3eda40e01
Update to travis.com 2021-02-04 13:34:03 +00:00
Mathis Logemann
2009598cdc cmake do not test cmp0110 on versions less 3.19 2021-02-03 22:53:02 +01:00
Mathis Logemann
74b325e71a fix comment 2021-02-03 22:48:25 +01:00
Mathis Logemann
54a61f7553 add dlcfn on non windows systems 2021-02-03 22:47:15 +01:00
Mathis Logemann
5f02b197dd get mapnik version from mapnik/version.hpp 2021-02-03 19:43:28 +01:00
Mathis Logemann
1f73d1c771 rename boost::boost to boost::headers, added missing icu components 2021-02-03 19:29:43 +01:00
Mathis Logemann
dec9056511 remove unnecessary cmake_minimum_required from sub projects 2021-02-03 19:14:08 +01:00
Artem Pavlenko
e5c182591a use unordered_map for proj_transform caching 2021-02-01 10:57:52 +00:00
Artem Pavlenko
5c086b0cd5 Add proj_transform caching to minimise expensive initialisations calls in libproj >= 6 [WIP] 2021-01-27 09:40:28 +00:00
Mathis Logemann
0b76278adc its getting too late.. 2021-01-27 01:22:41 +01:00
Mathis Logemann
4bc99d8047 should use the ADDITIONAL_LIBARIES_PATHS var... 2021-01-27 01:20:32 +01:00
Mathis Logemann
e60d4368ed add option to disable shared lib fixup 2021-01-27 01:17:00 +01:00
Mathis Logemann
d159bec46a FindCairo: find debug release library 2021-01-27 00:42:19 +01:00
Mathis Logemann
a7c9f5b941 windows: copy all dlls. optional library dir if some dlls are not found. 2021-01-27 00:41:54 +01:00
Mathis Logemann
247ceff7a7 temporarily remove find dll. only windows specific. needs better impl 2021-01-24 19:36:01 +01:00
Mathis Logemann
953796645f enable position independent code for wkt and json 2021-01-24 19:35:21 +01:00
Mathis Logemann
14f4362bb5 better support for proj 2021-01-24 19:34:51 +01:00
Artem Pavlenko
db9829d702 Fix missing proj context and cleanup/simplify proj_transform 2021-01-22 15:23:11 +00:00
Artem Pavlenko
6cc353f8a2 Use 'proj_backward_strategy' and avoid creating an extra proj_transform 2021-01-22 15:22:18 +00:00
Artem Pavlenko
ff14ad3425 Link to libsqlite3 when required 2021-01-21 12:47:41 +00:00
Artem Pavlenko
19511463ab Include <cmath> for HUGE_VAL 2021-01-21 12:46:57 +00:00
Artem Pavlenko
d35f0596d1 Update data-visual 2021-01-21 11:01:20 +00:00
Artem Pavlenko
b1982cc68a Upgrade to latest mason + proj-v7.2.1 + sqlite-v3.34.0 2021-01-21 10:59:54 +00:00
Artem Pavlenko
88241b32ee Initial implementation of new proj7 APIs support 2021-01-15 15:21:09 +00:00
Artem Pavlenko
bec509d5b8 Merge branch 'master' into proj6 2021-01-12 15:09:10 +00:00
Artem Pavlenko
bd961c4da2 update copyright year [skip ci] 2021-01-05 14:39:07 +00:00
Artem Pavlenko
c8b8b5c1d0
Merge pull request #4194 from mathisloge/warning-fix
fix warning for unknown compiler
2020-12-17 15:49:46 +00:00
Mathis Logemann
002c6e2a5e remove vcpkg folder 2020-12-17 10:21:25 +01:00
Mathis Logemann
6a286c7ac2 Merge branch 'master' of https://github.com/mapnik/mapnik into warning-fix 2020-12-17 10:16:52 +01:00
Mathis Logemann
bf51fc8650 Merge branch 'master' of https://github.com/mapnik/mapnik into cmake-support 2020-12-17 10:14:40 +01:00
Artem Pavlenko
cb4f1ff63a
Merge pull request #4199 from mapnik/travis
upgrade dist+toolchain
2020-12-16 14:25:13 +00:00
Artem Pavlenko
176b4bf8f7 travis ci - remove glibcxx workaround check as we're building on xenial 2020-12-16 13:48:53 +00:00
Artem Pavlenko
dca32e5cf3 travis ci - downgrade to isu 57.1 and boost 1.73.0 2020-12-16 11:13:11 +00:00
Artem Pavlenko
fb6334287a re-enable glibc workaround 2020-12-11 13:02:25 +00:00
Artem Pavlenko
9127d6334e travis-ci - update to postgis-2.4 2020-12-11 12:36:37 +00:00
Artem Pavlenko
17a1c72f41 fix .travis 2020-12-11 11:47:04 +00:00
Artem Pavlenko
6f36340888 upgrade dist+toolchain 2020-12-11 11:29:51 +00:00
Artem Pavlenko
7520e16340 travis-ci - disable Linux/gcc build 2020-12-10 13:00:48 +00:00
Artem Pavlenko
9c76fdc3bb Merge remote-tracking branch 'origin/master' 2020-12-10 11:18:25 +00:00
Artem Pavlenko
006c66e488 Remove sudo : false per https://docs.travis-ci.com/user/reference/trusty#container-based-infrastructure 2020-12-03 09:14:24 +00:00
Artem Pavlenko
834c1eac44
Merge pull request #4197 from Nonemoticoner/patch-1
Fix dead link to tutorials in INSTALL.md
2020-12-02 15:44:01 +00:00
Nonemoticoner
34a42a8fa1
Fix dead link to tutorials in INSTALL.md 2020-12-01 23:10:43 +01:00
Artem Pavlenko
8e1ff0785a Merge branch 'master' into proj6 2020-11-30 15:10:13 +00:00
Mathis Logemann
cbd19b6052 use status message 2020-11-25 15:42:33 +01:00
Mathis Logemann
410393fefa do not use absolute paths for fonts/plugins 2020-11-25 13:20:07 +01:00
Mathis Logemann
b3a34de3ce some line endings 2020-11-25 12:17:31 +01:00
Mathis Logemann
f432018bdb added cache variable for lib/bin/archive output 2020-11-25 12:16:06 +01:00
Mathis Logemann
9ede58f2b7
create boilerplate code 2020-11-25 10:56:49 +01:00
Mathis Logemann
37dd7c17df update catch dep 2020-11-25 10:45:20 +01:00
Mathis Logemann
8096bd869f fix warning for unknown compiler 2020-11-25 08:47:51 +01:00
Mathis Logemann
f027667daa added correct plugin default paths 2020-11-25 08:23:41 +01:00
Artem Pavlenko
765e1ad0c6 Upgrade to ICU 58.1 + mason 2020-11-23 16:04:01 +00:00
Mathis Logemann
983087b5c5 cache var for cxx standard 2020-11-22 22:11:27 +01:00
Mathis Logemann
f6acf4c027 do not use the install interface for mapbox deps 2020-11-22 22:06:15 +01:00
Mathis Logemann
85736c4c95 name fonts correctly 2020-11-22 22:02:17 +01:00
Mathis Logemann
68528ffb28 cmake improvements 2020-11-22 22:01:33 +01:00
Mathis Logemann
29cd904c5f fix one forgotton native() 2020-11-21 19:16:47 +01:00
Mathis Logemann
f68f7e88de fixed map_xml_test 2020-11-21 19:03:55 +01:00
Mathis Logemann
45fd654898 added MAPNIK_DECL to interior and polylabel explicit template 2020-11-21 18:19:58 +01:00
Mathis Logemann
b11ef9d44b removed MAPNIK_DECL from feature_style_processor; conflicts with the feature_style_processor_impl.h 2020-11-21 18:18:21 +01:00
Mathis Logemann
691d385687 comment not workable test out 2020-11-21 18:17:32 +01:00
Mathis Logemann
99d8c3e503 fix cmake typo 2020-11-21 18:04:24 +01:00
Mathis Logemann
695ad02cb2 fix svg renderer 2020-11-21 18:01:48 +01:00
Mathis Logemann
96a8327d06 add libraries to test 2020-11-21 17:45:44 +01:00
Mathis Logemann
0eb0408cc3 add options for grid/svg renderer 2020-11-21 17:03:30 +01:00
Mathis Logemann
3eb00b9794 use feature test for <execution> 2020-11-21 15:41:03 +01:00
Mathis Logemann
096befe69e try with c++14 2020-11-21 15:34:13 +01:00
Mathis Logemann
0084628d61 use only c++17 with extensions.. 2020-11-21 15:18:31 +01:00
Mathis Logemann
07546fe098 enable c++17 and do not use c++ extensions 2020-11-21 15:10:20 +01:00
Mathis Logemann
744aa2a76a do not compile features.... 2020-11-21 15:02:07 +01:00
Mathis Logemann
9213f76d49 do not compile features if they are not set 2020-11-21 14:54:26 +01:00
Mathis Logemann
f447cad781 add initial test support 2020-11-21 13:20:04 +01:00
Mathis Logemann
9a132080b5 add proj required define 2020-11-21 12:50:11 +01:00
Mathis Logemann
8de67bc262 add support for proj4 2020-11-21 12:38:29 +01:00
Mathis Logemann
3990fbe1dd add options to enable/disable utilitys 2020-11-21 12:30:34 +01:00
Mathis Logemann
e3789e219a build utilities correctly 2020-11-21 12:24:34 +01:00
Mathis Logemann
f390a830ae remove plugins from generated targets; install includes 2020-11-21 11:40:55 +01:00
Mathis Logemann
6254f7c09e more cmake 2020-11-21 11:34:45 +01:00
Mathis Logemann
7d46eda60d more options 2020-11-21 10:09:29 +01:00
Mathis Logemann
895d89a125 optional libraries 2020-11-21 09:46:54 +01:00
Mathis Logemann
d86a90a10a more cmake 2020-11-20 21:15:27 +01:00
Mathis Logemann
e6f6d0f133 more cmake 2020-11-20 20:20:28 +01:00
Mathis Logemann
5420ccd6af now fix msvc compiler error. Why does msvc complain? 2020-11-20 20:16:27 +01:00
Mathis Logemann
621ab99961 Revert "fix mscv compiler errors"
This reverts commit fe3160ca99.
2020-11-20 20:11:42 +01:00
Mathis Logemann
fe3160ca99 fix mscv compiler errors 2020-11-20 20:02:40 +01:00
Mathis Logemann
f6b7bc0867 add string to box2d which is required by msvc 2020-11-20 19:04:30 +01:00
Mathis Logemann
945e57286b initial cmake scripts 2020-11-20 18:20:43 +01:00
Artem Pavlenko
c945dd7195 Merge branch 'mathisloge-master' 2020-11-20 10:09:30 +00:00
Mathis Logemann
16b98fe3e7 more msvc warnings 2020-11-19 17:53:44 +01:00
Mathis Logemann
a2df8b7ad2 use absolute include 2020-11-19 17:45:40 +01:00
Mathis Logemann
a06e4efcb1 Merge branch 'master' of https://github.com/mathisloge/mapnik 2020-11-19 17:25:26 +01:00
Mathis Logemann
64054fade4 compiler independent warning ignore
Signed-off-by: Mathis Logemann <mathisloge@gmail.com>
2020-11-19 17:25:10 +01:00
Mathis Logemann
75643e6f68 compiler independent warning ignore 2020-11-19 15:30:30 +01:00
Artem Pavlenko
4227fd5d69 c++ style casts 2020-11-18 16:15:59 +00:00
Artem Pavlenko
3ae38bbab1 Fix typo pos.second -> pos.size (via @mathisloge) ref #4187 2020-11-18 15:58:00 +00:00
Artem Pavlenko
309c7b3422 Update sqlite to v3.21.0 2020-10-22 16:25:53 +01:00
Artem Pavlenko
12cdc1af69 Update test values (epsg:2193) 2020-10-22 16:13:57 +01:00
Artem Pavlenko
f9b18c3614 fix proj version typo 2020-10-22 16:13:33 +01:00
Artem Pavlenko
8cba41b2d8 Upgrade to latest mason ed144f5b 2020-10-22 16:03:26 +01:00
Artem Pavlenko
5abb40e3be Update proj to 6.1.0 (travis) 2020-10-22 15:58:51 +01:00
Artem Pavlenko
c6fc956a77 Upgrade to boost 1.74 and latest mason 2020-10-19 12:27:41 +01:00
Artem Pavlenko
3a58dd89b5 Use mapnik::value_integer for id type in feature generator 2020-10-19 12:09:42 +01:00
Artem Pavlenko
a9d9f7ed99 add unit test #4177 2020-10-09 10:03:00 +01:00
Artem Pavlenko
4fbf8a054f
Merge pull request #4178 from mapnik/issue-4177
`null` properties in `Feature` object
2020-10-09 09:37:24 +01:00
Artem Pavlenko
7ecff4b693
Merge pull request #4173 from mapnik/c++17
Support for C++17 builds
2020-10-09 09:34:41 +01:00
Artem Pavlenko
7d1a559ae2 GeoJSON - allow 'null' properties in Feature objects [#4177] 2020-10-08 10:53:12 +01:00
Artem Pavlenko
fba418d20b <execution> is available starting from c++17 2020-09-10 18:00:12 +01:00
Artem Pavlenko
277de45dbc Add support to setup c++ stanfard via CXX_STD (defalt to 14) 2020-09-10 17:50:21 +01:00
Artem Pavlenko
adced85761 Implement is_solid using stdlib <algorithm> `find_if 2020-09-10 15:57:19 +01:00
Artem Pavlenko
5629a6fb6f Require c++17 support 2020-09-10 15:56:38 +01:00
Artem Pavlenko
d6d69df498 Update catch.hpp to v2.13.1 + fix tests 2020-09-10 15:34:52 +01:00
Artem Pavlenko
ea7003628f variant - update to v1.2.0 2020-08-03 15:58:37 +01:00
Artem Pavlenko
9cb1b7e37f perfect forwarding in apply_visitor alias 2020-07-13 10:26:59 +01:00
Artem Pavlenko
8913b673c3 remove unused function 2020-07-09 12:57:37 +01:00
Artem Pavlenko
6e40d4bcf7 Update to boost 1.73.0 and latest mason 2020-06-15 14:39:18 +01:00
Artem Pavlenko
4bd05cec22 Add missing include (bootstrap build) 2020-06-15 14:38:23 +01:00
Artem Pavlenko
8901fd0fa5 Dropping boost version to 1.67.0 (as 1.72.0 is missing program_options) 2020-05-12 18:54:35 +01:00
Artem Pavlenko
e45b7571a8 Update mason version to 250ac4b 2020-05-12 13:19:05 +01:00
Artem Pavlenko
1079264aea Update boost version to 1.72.0 2020-05-12 12:49:53 +01:00
Artem Pavlenko
ed1696db4a
Merge pull request #4144 from mapnik/boost_1_73
boost_1_73 support
2020-05-12 12:46:05 +01:00
Artem Pavlenko
cc78a5de78 Fix for boost < 1.70.0 (ref #4143) 2020-05-12 12:14:18 +01:00
Artem Pavlenko
a14d27f090 Attempting to fix boost_1_65_1 compile (WIP) 2020-05-12 12:00:25 +01:00
Artem Pavlenko
8f3dded093 Re-implement feature_json_generator by adapting feature_impl into boost::fusion container and removing use semantic actions (simpler code + boost_1_73 support) (ref #4143) 2020-05-11 22:18:55 +01:00
Artem Pavlenko
d0b40f62dc Relax bounding box extracting grammar (ref #4140) + unit test 2020-05-07 11:35:53 +01:00
Artem Pavlenko
9bfe888cef Add missing unit test for color::operator= and color::operator== (ref #4137) 2020-04-23 18:20:32 +01:00
Artem Pavlenko
52ae365c66 fix operator== (ref #4137) 2020-04-23 18:20:32 +01:00
Artem Pavlenko
cb638eaabf color::swap - add missing premultiplied_ (ref #4137) 2020-04-23 18:20:32 +01:00
Artem Pavlenko
3e178a2153
Merge pull request #4132 from zdila/master
add support for spacing-offset
2020-04-02 10:00:37 +01:00
Artem Pavlenko
11cbc189f3
Merge pull request #4128 from dirkvdb/master
Update SConstruct to fix osx build
2020-04-02 09:56:26 +01:00
Martin Ždila
657442947b add support for spacing-offset 2020-03-23 23:07:49 +01:00
Dirk Vanden Boer
ddd2ceae63
Update SConstruct
Fixed framework presence check to avoid TypeError:
TypeError: a bytes-like object is required, not 'str':
2020-02-27 21:03:43 +01:00
Artem Pavlenko
e3f4e76c47
Merge pull request #4124 from cpaulik/gdal-int32-support
Add Int32 support for gdal driver
2020-02-11 12:15:32 +00:00
Christoph Paulik
5a73efbb07 Add Int32 support for gdal driver 2020-02-11 12:30:03 +01:00
Artem Pavlenko
1784c4f03e
Merge pull request #4123 from mapnik/svg-css
SVG: basic CSS support
2020-02-07 14:26:10 +00:00
Artem Pavlenko
d26fc722d5 Add SVG renderer unit test - both inline and css styled octocat result in identical image (ref PR #4123) 2020-02-07 13:53:06 +00:00
Artem Pavlenko
8d73767949 css-parser-grammar: parse values into iterator_range via boost::spirit::x3::raw directive (no conversions) + cleanup 2020-02-06 11:23:02 +00:00
Artem Pavlenko
0d693b151d svg2png: use svgBBOX() to calculate output PNG dimensions when no valif width or height (or viewBox) is specified. 2020-02-05 15:06:11 +00:00
Artem Pavlenko
c69e467ad0 SVG: basic CSS styles processor (TODO: fix inefficient and redundant value=>string=>value transformations) 2020-02-05 15:03:14 +00:00
Artem Pavlenko
2ddbff46d5 add bool css_style_ member variable to control CSS style processing. 2020-02-04 17:30:58 +00:00
Artem Pavlenko
cc9e8e3db3 add missing headers 2020-02-04 15:15:32 +00:00
Artem Pavlenko
27bf941211 SVG CSS: refactor unit value symbols table into separate header + add css_data member to svg_parser 2020-02-04 15:02:41 +00:00
Artem Pavlenko
b6e567d87c SVG CSS: add basic parsing of <style> [C]DATA 2020-02-04 11:41:22 +00:00
Artem Pavlenko
4d54e81889 Use char const* as iterator type for CSS grammar 2020-02-04 11:40:52 +00:00
Artem Pavlenko
8a90551b63 SVG CSS - add <style> element handler 2020-02-04 11:25:35 +00:00
Artem Pavlenko
00b888c1ef Add CSS parser grammar + move into separate include/css and src/css dirs. 2020-02-04 10:38:34 +00:00
Artem Pavlenko
3be9ce8fa0
Merge pull request #4122 from lightmare/prevent-duplicate-flags
scons: prevent duplication of linker flags
2020-01-30 20:02:12 +00:00
Mickey Rose
be017f1945 scons: prevent duplication of linker flags 2020-01-30 18:38:20 +01:00
Mickey Rose
6f4c15d077 scons: improve parsing CUSTOM_LDFLAGS
With the help of SCons.Environment.ParseFlags, split user-supplied
CUSTOM_LDFLAGS into appropriate option lists: LIBPATH, LIBS, etc.
Known non-linker options (like -Dx -I.) will be reported and ignored,
unrecognized options will be appended to LINKFLAGS.
2020-01-30 16:32:23 +00:00
Artem Pavlenko
3dee9b634f Merge branch 'lightmare-fix-write_config' 2020-01-30 16:31:51 +00:00
Artem Pavlenko
82533b2f7a Merge branch 'fix-write_config' of https://github.com/lightmare/mapnik into lightmare-fix-write_config 2020-01-30 16:31:21 +00:00
Artem Pavlenko
0636734f8f Revert "move sparsehash out of mapnik dir"
This reverts commit 720fbc74a1.
2020-01-30 15:14:37 +00:00
Mickey Rose
39202f5ac0 mapnik-config: fix substitution of environment variables
Simply calling str(val) doesn't work, because if the value happens to
be a SCons.Util.CLVar, it may contain not just plain strings, but also
tuples appended by SCons.Environment.ParseFlags.

For example "-isysroot /foo" becomes CLVar: [("-isysroot", "/foo")]

CLVar.__str__ supports only string elements, nothing else.
2020-01-30 15:15:14 +01:00
Artem Pavlenko
26d3084ead Revert "scons: improve parsing CUSTOM_LDFLAGS" -- this change introduced env.ParseFlags which broke mason/travis integration
This reverts commit a25f53e667.

Revert "SCons.Util.CLVar:  fix __str__ method to flatten tuples + revert "add print to debug travis (temp)""

This reverts commit 2e78959435.

Revert "add print to debug travis (temp)"

This reverts commit 65dce899cb.

ref #4120
2020-01-30 09:45:13 +00:00
Artem Pavlenko
2e78959435 SCons.Util.CLVar: fix __str__ method to flatten tuples + revert "add print to debug travis (temp)" 2020-01-29 22:11:11 +00:00
Artem Pavlenko
65dce899cb add print to debug travis (temp) 2020-01-29 17:15:22 +00:00
Artem Pavlenko
b22d5d2fac update and pin deps/mapbox to latest tags: protozero 1.6.8, variant 1.1.6, polylabel 1.0.3 2020-01-29 14:35:31 +00:00
Artem Pavlenko
720fbc74a1 move sparsehash out of mapnik dir 2020-01-29 14:16:47 +00:00
Artem Pavlenko
c7d29b826f Add "darkslategray" and "rebeccapurple" named colors (ref: https://drafts.csswg.org/css-color/#typedef-color) 2020-01-24 15:26:10 +00:00
Artem Pavlenko
7e604ed8b0
Merge pull request #4113 from mapnik/svg-fixes
Svg fixes
2020-01-24 10:19:40 +00:00
Artem Pavlenko
ba4ad23af8 Update visual tests data 2020-01-23 16:12:55 +00:00
Artem Pavlenko
ed194a3c09 use std::round (ref:https://en.cppreference.com/w/cpp/numeric/math/round) 2020-01-23 15:48:16 +00:00
Artem Pavlenko
53f8c49620 SVG path parser : add Quadratic and Cubic Bezier curves tests. 2020-01-22 14:01:53 +00:00
Artem Pavlenko
d87cf7db48 re-use code [skip ci] 2020-01-22 13:40:33 +00:00
Artem Pavlenko
b6e9711add Mark output image as premultiplied alpha 2020-01-22 10:49:10 +00:00
Artem Pavlenko
97e33ec8ca Move 0.5 up/down rounding into rounding expression (via @lightmare 7f54e94748 (r369294323)) (ref #4116) 2020-01-22 10:45:15 +00:00
Artem Pavlenko
cab05f1f2c Only use reflection of the second control point on the previous command relative to the current point as first control point when both last and prev( NOTE: before last command in AGG logic!) are curve commands. This fixes long outstanding SVG rendering bug aka Octocat bug (ref #4115) 2020-01-21 15:49:00 +00:00
Artem Pavlenko
c30adf39c8 format 2020-01-21 15:48:32 +00:00
Artem Pavlenko
4276f01404 Init output image with transparent color and 255 alpha. 2020-01-21 15:12:18 +00:00
Artem Pavlenko
fe893134a5
Merge pull request #4114 from sebastic/libxml2
Use pkg-config for libxml2.
2020-01-21 15:09:08 +00:00
Bas Couwenberg
c4fda867c0 Use pkg-config for libxml2. 2020-01-21 15:13:09 +01:00
Artem Pavlenko
1a0b1a1e77 SVG parser: fix typo (stroke gradient was applied instead if fill gradient) 2020-01-21 11:01:36 +00:00
Artem Pavlenko
7f54e94748 Add support for scale-factor parameter - useful for debugging SVG issues (ref #4112) 2020-01-21 10:33:04 +00:00
Artem Pavlenko
4e26d2a7d6 Don't attempt to rasterize ARCs with very small sweep_angles, just resort to LINETO (#4112) 2020-01-21 10:30:29 +00:00
Artem Pavlenko
0420b13055 Fix typo in agg_bezier_arc initialisation. 2020-01-21 09:09:41 +00:00
Artem Pavlenko
60a33a9b8f use numeric parser for arc flags 2020-01-16 10:38:10 +00:00
Artem Pavlenko
44982cddc5 Update "Arcs 3" test for #222835e73a21fec3965b21685993b86a63f626b8 2020-01-14 21:05:41 +00:00
Artem Pavlenko
b4b5f393e3 Revert "no need to throw std::runtime_error as ellipsis catch (...) {} catches them all."
This reverts commit c5f3e6c654.
2020-01-14 15:20:25 +00:00
Artem Pavlenko
222835e73a Fix SVG path grammar - parse arc and sweep flags using special single digit parser, numeric int_ parser was over greedy and didn't handle compact notation produced by svgo (https://github.com/svg/svgo). 2020-01-14 14:38:10 +00:00
Artem Pavlenko
c5f3e6c654 no need to throw std::runtime_error as ellipsis catch (...) {} catches them all.
(TODO: consider having finer grained catches e.g expectation_failure)
2020-01-14 14:34:39 +00:00
Mickey Rose
0bddff6977 bootstrap: simplify export_variables
Nameref attribute (local -n) is a Bash 4.3 feature, thus not available
on OSX with Bash 3.2.

And because we know the argument looks like a valid assignment, we can
pass it whole to export.
2020-01-03 15:38:48 +01:00
Mickey Rose
d38d16ade9 better tests for logical expressions
Two of the original checks were not testing what they were supposed to
test, because the result of eval didn't depend on correct parsing:

    eval("not true or not true")
    correct parse:      ((not true) or (not true)) == false
    incorrect parse:    (not (true or (not true))) == false

    eval("not false and not false")
    correct parse:      ((not false) and (not false)) == true
    incorrect parse:    (not (false and (not false))) == true
2020-01-02 17:30:24 +01:00
Mickey Rose
f19bd188c2 2to3 last remnants of Python 2 syntax 2019-12-31 12:39:57 +01:00
Artem Pavlenko
538eb20264
Merge pull request #4103 from mapnik/boost_1_72
Boost 1_72 support
2019-12-13 17:07:41 +00:00
Artem Pavlenko
59e5f50e26 Use boost::spirit::x3::standard::char_ parser 2019-12-13 17:04:54 +00:00
Artem Pavlenko
7f2c8b756a Use official colospace HSL/HSV converters from boost source tree (BOOST_VERSION > 1_69) 2019-12-13 17:02:31 +00:00
Artem Pavlenko
44198d1ac2 more const-ness 2019-11-27 16:16:09 +00:00
Artem Pavlenko
cfa5809cd2 Make x3::rules declarations const 2019-11-25 10:36:34 +00:00
Artem Pavlenko
94dd756669 Fix compiler warning 2019-11-20 09:43:31 +00:00
Artem Pavlenko
5482d8c7e2 Conditionally include <mapnik/image_filter_types.hpp> for BOOST_VERSION < 107000 2019-11-20 09:41:23 +00:00
Artem Pavlenko
29069560a9 remove .circleci/config.yml (ref #4100) 2019-11-19 09:33:51 +00:00
Artem Pavlenko
6f6a0ed1ef
remove CircleCI badge
ref #4100
2019-11-19 09:25:15 +00:00
Artem Pavlenko
fc25053e8b Set initial STACK_SIZE to 16 (plenty), make it private static member var (ref #4096) 2019-11-18 09:59:26 +00:00
Artem Pavlenko
9dac8dcc34 Only push new elements to parenStack when needed (via @lightmare) (ref #4096) 2019-11-18 08:45:03 +00:00
Artem Pavlenko
a5a24f0260 Revert "CircleCI fix" [skip ci]
This reverts commit 838c88b318.
2019-11-15 15:29:23 +00:00
Artem Pavlenko
838c88b318 CircleCI fix 2019-11-15 14:49:31 +00:00
Artem Pavlenko
77483e4266 Fix boost_regex compiled with ICU support check for BOOST_VERSION >= 1_70 2019-11-15 13:55:09 +00:00
Artem Pavlenko
e82c6e65fb
Merge pull request #4096 from mapnik/fix-out-of-bounds-array-access
avoid potential out-of-bounds array access (undefined behaviour)
2019-11-06 16:27:40 +00:00
Artem Pavlenko
bf6ce8dd8d attempting to fix circleci 2019-11-06 15:21:47 +00:00
Artem Pavlenko
9e82006314 make ScriptRun class visible 2019-11-06 15:08:30 +00:00
Artem Pavlenko
f33e318ac5 more compact test string initialisation via @talaj (#4096) 2019-11-05 10:55:16 +00:00
Artem Pavlenko
b84c414f2e Add unit test for 7003255c0e (#4096) 2019-11-05 09:53:41 +00:00
Artem Pavlenko
7003255c0e avoid negative indicies access to parenStack - thanks @talaj! (ref #4096) 2019-11-05 09:50:51 +00:00
Artem Pavlenko
33fac6d47d use std::vector to avoid limiting number of paired characters. 2019-11-04 13:59:23 +00:00
Artem Pavlenko
370f38a2c3 remove sanitize=bounds 2019-11-04 11:41:49 +00:00
Artem Pavlenko
f2732ed517 remove sanitize=bounds 2019-11-04 11:35:47 +00:00
Artem Pavlenko
e72803935a add ICU include 2019-11-04 11:22:41 +00:00
Artem Pavlenko
05d488f98d add script runs unit test 2019-11-04 10:47:35 +00:00
Artem Pavlenko
8aae32ec4c better syntax 2019-11-01 17:09:12 +00:00
Artem Pavlenko
1edd3b7a93 use & mask for array bounds clipping (provided array size is 2^n) 2019-11-01 16:16:57 +00:00
Artem Pavlenko
dec6bc0950 avoid potential out-of-bounds array access (undefined behaviour) + add c++ C-array size implementation 2019-11-01 13:06:21 +00:00
Artem Pavlenko
0842d0af6f
Merge pull request #4094 from mapnik/boost_1_71
Boost-1.71
2019-10-22 09:47:07 +01:00
Artem Pavlenko
c9da5cbd8e support for boost < 1.69 2019-10-21 18:21:51 +01:00
Artem Pavlenko
b60de49388 make sure boost 1_69 works too 2019-10-21 17:18:25 +01:00
Artem Pavlenko
0b4f3dc497 fix support for BOOST 1_71 2019-10-21 16:42:58 +01:00
Mickey Rose
fdf60044c3 fix agg::pod_array and pod_vector move constructors
These were added with #4031, and probably not used in the end, as Mapnik
compiles and all tests pass without them. However, they might be useful,
so I'm only removing bad calls to deallocate with uninitialized values,
and doing proper member initialization.
2019-09-22 23:29:13 +02:00
Artem Pavlenko
162ac80675
Merge pull request #4086 from lightmare/install-mapnik-deps-subdir
install mapbox includes into subdir mapnik/deps/
2019-09-22 18:13:00 +01:00
Mickey Rose
d1697efe6d install mapbox includes into subdir mapnik/deps/ 2019-09-20 20:15:53 +02:00
Artem Pavlenko
cea7821722
Merge pull request #4085 from lightmare/revamp-mapnik-config-template
Revamp mapnik-config generation
2019-09-20 12:21:24 +01:00
Mickey Rose
2dcb31cd01 mapnik-config: minor cleanup 2019-09-16 23:30:01 +02:00
Mickey Rose
a3086c06a5 mapnik-config: improve mapnik-config.template.sh
- move template text from build.py into mapnik-config.template.sh,
  so that the resulting script is simply that template file after
  substitutions, instead of concatenation of two parts

- substitute using re.sub matching particular variables, instead of
  format % dict; this allows putting default values in the template
2019-09-16 23:17:09 +02:00
Mickey Rose
c61d0d541d Revert "Forgot to add prefix change to mapnik config to cairo as well"
This reverts commit a9712ed081.
2019-09-15 12:30:37 +02:00
Mickey Rose
297126906d Revert "Added an update to mapnik config so that it can provide relative path to libraries better in node mapnik."
This reverts commit a4aee2eb59.
2019-09-15 12:30:28 +02:00
Mickey Rose
d5a7c9e214 scons: minor cleanup
(cherry picked from commit 745e393fd6)
2019-09-01 11:57:24 +02:00
Mickey Rose
f6fda91717 scons: define OPTIONAL_LIBSHEADERS before use
Refs #4075

(cherry picked from commit 0d68464194)
2019-09-01 10:37:44 +02:00
Mickey Rose
b541c3595f rename MAPNIK_MAKE_VERSION to MAPNIK_VERSION_ENCODE
Both forms can be seen in various other libraries. However, I think that
macro names with common prefix serving as substitute for namespace are
the better convention. MAPNIK_MAKE_VERSION hasn't appeared in any Mapnik
release yet, so this shouldn't break anything.

I'm not renaming other MAPNIK_*_VERSION defines that don't have the same
prefix simply because they've been there for ages, so renaming those now
might break stuff outside of Mapnik.
2019-08-30 16:30:28 +02:00
Mickey Rose
65d2d9d188 scons: use gdal-config to obtain GDAL data path 2019-08-19 17:35:45 +02:00
Mickey Rose
a25f53e667 scons: improve parsing CUSTOM_LDFLAGS
With the help of SCons.Environment.ParseFlags, split user-supplied
CUSTOM_LDFLAGS into appropriate option lists: LIBPATH, LIBS, etc.
Known non-linker options (like -Dx -I.) will be reported and ignored,
unrecognized options will be appended to LINKFLAGS.
2019-08-18 23:01:11 +02:00
Mickey Rose
08ccaf109b scons: facilitate passing linker options with '$ORIGIN'
Passing CUSTOM_LDFLAGS='-Wl,-rpath=$ORIGIN' to ./configure is
unnecessarily difficult and error-prone. The option needs to be
protected from SCons variable substitution by doubling the '$',
and also from shell parameter expansion with a backslash.
Such fortified value then cannot be used directly in contexts
where either expansion does not happen.

This commit makes that protection optional by injecting variable
named ORIGIN, that resolves to '$ORIGIN', into both the SCons
construction Environment and the process environment, so whenever
'$ORIGIN' undergoes variable substitution, it is replaced by the
original string.
2019-08-18 22:48:18 +02:00
Mickey Rose
e80dd063ba Revert "Disable "Linux clang-3.9 + coverage" builds which are failing with "The job exceeded the maximum log length, and has been terminated.""
This reverts commit ac19076f0b.
2019-08-14 16:02:54 +02:00
Mickey Rose
699b3c11d9 travis: silence gcov output and errors flooding build log
Also added ignore paths from `codecov.yml` to the command, because
codecov-bash doesn't pull those from there. Currently its `parse_yaml`
function simply ignores arrays, so they don't even check for "ignore".
4678d212cc/codecov (L834)

(cherry picked from commit d09fdd78a9)
2019-08-14 16:01:39 +02:00
Mickey Rose
931dc8921c update changelog [skip ci] 2019-08-12 17:19:29 +02:00
lightmare
a0ea7db1a7
Merge pull request #3984 from lightmare/pg-app-name
accept explicit parameter "application_name" in postgis and pgraster datasources
2019-08-12 12:52:34 +02:00
Artem Pavlenko
b504a86696
Merge pull request #3319 from mapnik/ST_MakeEnvelope
use `ST_MakeEnvelope` (ref #3317)
2019-08-12 08:27:50 +01:00
lightmare
8c4313f1b5
Merge branch 'master' into ST_MakeEnvelope 2019-08-11 12:06:20 +02:00
lightmare
8a44f7ffbb
Merge pull request #3942 from lightmare/postgis-float-tokens
postgis: always put decimal point in substituted tokens in SQL
2019-08-11 11:57:44 +02:00
Artem Pavlenko
05546b2053 add 'pattern' to unsupported elements + call handle_unsupported on end_element to catch them all + update unit tests 2019-08-08 11:50:31 +01:00
Artem Pavlenko
f68a147ff4 don't log identical error messages 2019-08-08 11:42:45 +01:00
Artem Pavlenko
7d1bfaeb4b
Merge pull request #3999 from mapnik/test-placement-type
Tests of text_placements_simple and text_placements_list
2019-07-02 11:56:39 +01:00
Artem Pavlenko
ef2adc855c Merge branch 'timmg-master' 2019-07-02 11:52:36 +01:00
Artem Pavlenko
b617197aba Merge branch 'master' of https://github.com/timmg/mapnik into timmg-master 2019-07-02 11:51:45 +01:00
Artem Pavlenko
3dfac03633 Merge branch 'tarvip-libxml2-parse-huge' 2019-07-02 11:03:29 +01:00
Artem Pavlenko
fa714f2a01 Merge branch 'libxml2-parse-huge' of https://github.com/tarvip/mapnik into tarvip-libxml2-parse-huge 2019-07-02 11:02:59 +01:00
Artem Pavlenko
f104edbefb Merge branch 'Kojoley-spirit-rule-placeholders' 2019-07-02 10:56:15 +01:00
Nikita Kniazev
c191e196c0 Replace MAPNIK_INIT_PRIORITY workaround
Spirit rules are just placeholders. They are cheap to construct and by doing
this static initialization order fiasco problem is effectively avoided.

Also had to fix name clash between geojson and generic json parsers.
2019-07-02 01:04:31 +03:00
Artem Pavlenko
01a4057317
Merge pull request #4066 from mapnik/issue-4045
Ensure 'scaling' and `comp-op` stored as enumeration_wrappers + fix image `scaling` property
2019-06-12 11:18:35 +01:00
Artem Pavlenko
e90a4fca7d add missing image scaling property meta type + replace to integer conversion with comparison operator in enumeration_wrapper + change order in value_base_type (ref #4045) 2019-06-12 09:40:10 +01:00
Artem Pavlenko
563bb00de5
Merge pull request #4064 from treenewbee/master
Update main.cpp
2019-06-04 17:42:30 +01:00
Eric
45168024a9
Update main.cpp
Qt::AA_EnableHighDpiScaling was added in Qt 5.6.
2019-06-04 10:47:31 -04:00
Artem Pavlenko
b890dc2775
Merge pull request #4058 from mapycz/colorizer-linear-combined
New raster colorizer mode for Terrain-RGB
2019-05-20 10:38:33 +01:00
Jiri Drbalek
6f83cdf572 Update visual tests 2019-05-17 22:55:42 +02:00
Jiri Drbalek
a74543a145 New raster colorizer modes linear-rgba and linear-bgra 2019-05-17 21:54:24 +02:00
Artem Pavlenko
ac19076f0b Disable "Linux clang-3.9 + coverage" builds which are failing with "The job exceeded the maximum log length, and has been terminated." 2019-05-14 12:45:39 +01:00
Artem Pavlenko
f04ab0cbae Update svg unit tests post 831e353c5d 2019-05-14 10:50:10 +01:00
Artem Pavlenko
201268334d Don't prefix MAPNIK_LOG_ERROR with redundant "SVG PARSING ERROR" 2019-05-14 10:48:21 +01:00
Artem Pavlenko
831e353c5d SVG parser: better stderr - don't assume fill/stroke ref is a <gradient>, can be a <pattern> also. 2019-05-14 10:30:26 +01:00
Artem Pavlenko
dc15e70f79 Skip parsing (currently unsupported) <pattern> elements 2019-05-14 10:20:14 +01:00
Artem Pavlenko
88f3b29a92 fix includes 2019-05-07 11:19:37 +01:00
Tim Gleason
cdcc97ac4b Add command line options for map size to mapnik-render. 2019-05-05 12:02:47 -04:00
Tarvi Pillessaar
ddf0f337c2 libxml2: add support for huge XMLs 2019-04-14 16:42:57 +03:00
Artem Pavlenko
783437f16b Merge branch 'mdholloway-rint' 2019-03-25 09:56:35 +00:00
Michael Holloway
918e1a3a90 Ditch rint
Removes all usages of rint from the codebase, in favor of the standard
rounding and casting formula used throughout the codebase:

  static_cast<int>(std::floor(<val> + .5))

Fixes #2392
2019-03-22 14:23:32 -04:00
Artem Pavlenko
46478d4b5a Reduce verbosity of 'coverage' builds vi 'QUIET=true' - go travis-ci! 2019-03-07 19:05:13 +00:00
Artem Pavlenko
0db5d6231f Add 'QUIET` boolean configuration option to reduce build verbosity (default: no)
To enable =>  `./scons/scons.py configure QUIET=y`
2019-03-07 19:01:24 +00:00
Artem Pavlenko
1377ec9752 remove bogus quote from ST_EstimatedExtent SQL {#4032) via @urzhumskov 2019-03-07 11:05:33 +00:00
Artem Pavlenko
ab03726659 comment out cat config.log to reduce log size (travis-ci) 2019-02-13 15:39:44 +00:00
Artem Pavlenko
b1185fc099
Merge pull request #4031 from mapycz/adaptive-smooth
[WIP] Adaptive smooth
2019-02-13 14:00:00 +00:00
Artem Pavlenko
653bd92ce9
Merge pull request #4029 from mapycz/svg-1.2
Cairo: set version of SVG to 1.2
2019-02-13 10:24:10 +00:00
Jiri Drbalek
2dde0eb257 Adaptive smooth 2019-02-09 15:24:12 +00:00
Jiri Drbalek
c2b1103cb6 Cairo: set version of SVG to 1.2 2019-02-08 12:32:01 +00:00
Artem Pavlenko
23492d6742 CSS color: add hue range tests for hsl(a) color strings (#4020) 2019-01-16 10:31:53 +00:00
Artem Pavlenko
16ae1c0472 CSS parser - use appropriate storage type for hue value (0..320) (#4020) 2019-01-14 16:21:53 +00:00
talaj
19a979955e
More info, small fixes 2019-01-05 14:09:37 +01:00
Jiri Drbalek
27a4d60026 Documentation of development process 2019-01-05 10:51:07 +00:00
Artem Pavlenko
d2ba5e5eec dummy commit to pacify travis 2018-12-13 17:16:51 +00:00
Artem Pavlenko
bcb1e67507 fix Boost.GIL includes for BOOST_VERSION >= 1.69 (ref #4000) 2018-12-13 15:46:57 +00:00
Gaetano Checinski
e583063ab5 fix: makes serveral header definitions static to support static library builds 2018-12-03 09:58:18 +00:00
Dane Springmeyer
bcb4f2020e
Merge pull request #3866 from mapnik/remove-sanitize-shorthands
Remove sanitizer flags to configure step
2018-12-02 18:10:32 -08:00
Artem Pavlenko
abcd96be0e
Merge pull request #4009 from mapycz/cairo-polygon-pattern-vectorial
Vector patterns with Cairo
2018-11-21 14:24:18 +00:00
Jiri Drbalek
91b868d7ad Update visual tests 2018-11-21 12:21:54 +00:00
Jiri Drbalek
2344fe3ac2 Vector patterns with Cairo 2018-11-21 12:20:31 +00:00
Artem Pavlenko
940f0dc39d bump version to 4.0.0 2018-11-21 11:03:00 +00:00
Artem Pavlenko
def1994856 update dependencies 2018-11-20 14:36:59 +00:00
Artem Pavlenko
9406eb4c44 use c++-stype casts + compare the same types 2018-11-20 14:35:36 +00:00
Artem Pavlenko
65e98c1940 fix compiler warning (warning: field 'expected_query_bbox_' will be initialized after base 'mapnik::memory_datasource' [-Wreorder]) 2018-11-20 14:16:44 +00:00
Artem Pavlenko
c08b639902 fix compiler warnings e.g warning: class 'xxx' was previously declared as a struct [-Wmismatched-tags] 2018-11-20 14:13:25 +00:00
Artem Pavlenko
c6cd132c31 explicit cast to native enum type in switch statements to address error: case value is not a constant expression
(clang version 8.0.0 (trunk 347189))
2018-11-20 13:47:44 +00:00
talaj
7dcf5ee082
Merge pull request #3989 from mapycz/fix-pattern-alignment
True global pattern alignment, fixed local alignment
2018-11-02 14:31:31 +01:00
Jiri Drbalek
46de0f661b New test of text_placements_list 2018-10-20 21:09:08 +00:00
Jiri Drbalek
3b188b4c26 Remove method declaration that is not implemented 2018-10-20 20:59:20 +00:00
Jiri Drbalek
90a1b65081 New test of text_placements_simple 2018-10-20 20:59:20 +00:00
Artem Pavlenko
da69fdf66b add "clipPath" to unsupported elements 2018-10-10 09:30:05 +01:00
Artem Pavlenko
982f156995 enable unsupported attributes handling + ignore/skip any elements inside <symbol> 2018-10-02 09:34:07 +01:00
talaj
85aad2ec32
Merge pull request #3993 from tdubrownik/boost-1.68
Compatibility patch for Boost GIL v1.68
2018-09-29 14:57:22 +02:00
Tomek Dubrownik
c067eb7eec Compatibility patch for Boost GIL v1.68
A number of basic typedef were removed in the Boost GIL 1.68 release,
notably `bits32` and `bits32f`. Additionally the
`GIL_DEFINE_ALL_TYPEDEFS` macro signature changed.

This commit introduces compatibility type aliases and conditionally
calls the new macro if `BOOST_VERSION` is high enough.
2018-09-29 13:43:44 +08:00
Jiri Drbalek
493eaa4d18 Update visual tests 2018-09-20 08:14:43 +00:00
Jiri Drbalek
776fa0d2f8 True global pattern alignment, fixed local alignment 2018-09-19 13:21:59 +00:00
Jiri Drbalek
692fc7f107 render_pattern() needs its own rasterizer 2018-09-19 08:33:24 +00:00
Artem Pavlenko
fcec445a2e
Merge pull request #3980 from mapycz/simple-line-pattern
Polygon pattern on line geometries
2018-09-18 15:55:16 +01:00
Jiri Drbalek
d42d2740f3 Update visual tests 2018-09-18 12:12:53 +00:00
Jiri Drbalek
384158fa7c Polygon pattern on line geometries for Grid backend 2018-09-18 12:12:21 +00:00
Jiri Drbalek
d823378260 Polygon pattern on line geometries for Cairo backend 2018-09-18 12:12:21 +00:00
Jiri Drbalek
18c1a99604 Polygon pattern on line geometries for AGG backend 2018-09-18 12:12:21 +00:00
Mickey Rose
86e70a726d postgres: add connect param "application_name" 2018-09-07 11:07:33 +02:00
talaj
2ceac9b496
Merge pull request #3979 from rbray89/master
sqlite: Add !pixel_width! and !pixel_height!
2018-09-05 14:24:09 +02:00
Ryan Bray
17de0f89ed sqlite: Add !pixel_width! and !pixel_height! 2018-09-01 11:21:29 -06:00
Mickey Rose
2929c4ae6d travis: move variables not relevant to cache contents out of env
(so that changing these later doesn't invalidate the cache)
2018-08-26 22:25:48 +02:00
Mickey Rose
a6057af11f travis: remove downstream trigger (refs #3366) 2018-08-26 21:41:05 +02:00
Mickey Rose
f432f5f1cc travis: install clang from apt 2018-08-25 22:56:31 +02:00
Mickey Rose
eff8890b4f travis: postgresql service doesn't seem necessary 2018-08-25 15:07:00 +02:00
Mickey Rose
5d51bdde7a travis: shortcut 2018-08-25 14:53:25 +02:00
Mickey Rose
d0f7b405a6 bootstrap: name=val regex must be anchored 2018-08-24 17:13:41 +02:00
lightmare
b4bce33b34
Merge pull request #3945 from lightmare/travis-trusty
travis: switch to dist: trusty
2018-08-16 00:49:53 +02:00
Mickey Rose
a33e984dbd travis: switch to dist: trusty 2018-08-15 23:16:37 +02:00
lightmare
6a7317d354
Merge pull request #3967 from mapycz/fix-warp-transparent-raster
Fix seams of mesh faces when warping transparent raster
2018-08-15 23:07:29 +02:00
Jiri Drbalek
b50498cb53 Update test data 2018-08-15 07:44:27 +00:00
lightmare
a6e0b6b857
Merge pull request #3958 from mapycz/fix-buffer-size-with-scale-factor
Fix buffer-size with scale-factor
2018-08-14 17:11:31 +02:00
lightmare
9275ca9373
Merge pull request #3971 from lightmare/fix-topojson-empty
Accept TopoJSON with no objects
2018-08-14 15:10:07 +02:00
Mickey Rose
8a1fdb3900 dodge operator precedence warning 2018-08-13 19:11:58 +02:00
Mickey Rose
2b8226316f topojson: fix parsing empty topology 2018-08-13 19:08:38 +02:00
Mickey Rose
6a3452da96 fix read beyond buffer in topojson test 2018-08-13 19:08:30 +02:00
Mickey Rose
ee28954786 topojson: add test with empty "objects" and "arcs" 2018-08-13 18:41:56 +02:00
Mickey Rose
74b2886036 update changelog [skip ci] 2018-08-08 00:08:19 +02:00
lightmare
99b25c72d9
Merge pull request #3965 from mapycz/icu-namespace-master
Force full qualification of ICU types
2018-08-08 00:06:28 +02:00
Artem Pavlenko
c2251faa91 second time lucky 2018-08-07 14:58:21 +01:00
Artem Pavlenko
242c9eba3c Revert "opps, adding lost change (re: boost>=1.67)"
This reverts commit 22f913d892.
2018-08-07 14:26:34 +01:00
Artem Pavlenko
22f913d892 opps, adding lost change (re: boost>=1.67) 2018-08-07 14:09:30 +01:00
Jiri Drbalek
8b27aba0c4 Fix seams of mesh faces when warping transparent raster 2018-08-07 11:57:38 +00:00
talaj
1a87e920da
Merge pull request #3962 from lightmare/bootstrap-manners
bootstrap.sh improvements
2018-08-07 09:28:33 +02:00
Jiri Drbalek
cfbc044fd2 Force full qualification of ICU types
https://github.com/mapnik/mapnik/issues/3961
2018-08-03 16:02:20 +00:00
Mickey Rose
f400f17c75 travis: some tweaks
- remove unused MASON_PUBLISH variables
- defer downloading test-data until after successful compilation;
  they are big and don't update frequently, so I added depth limit;
  if that doesn't work well, feel free to increase or remove it
2018-08-01 17:59:09 +02:00
Mickey Rose
7f0daee8b3 configure: posix shell can handle this
It's such a trivial script, no need to bash.
2018-08-01 17:37:15 +02:00
Mickey Rose
33a42303d1 bootstrap: behave when sourced, minor improvements
- don't exit sourcing shell on error
- don't git pull mason, checkout --detach instead
- only git fetch mason when the desired version is unknown
- use arguments of the form NAME=VALUE as variables to export;
  this is to unify syntax with ./configure, for example:

    ./bootstrap.sh CC='cc' CXX='ccache c++'
2018-08-01 15:24:34 +02:00
Jiri Drbalek
8a0dca38a3 Fix buffer-size with scale-factor 2018-08-01 08:06:37 +00:00
Artem Pavlenko
3683c30557 Merge branch 'lightmare-pi-is-wrong' 2018-07-30 10:41:13 +01:00
Artem Pavlenko
af842a8bf9 Merge branch 'pi-is-wrong' of https://github.com/lightmare/mapnik into lightmare-pi-is-wrong 2018-07-30 10:40:51 +01:00
lightmare
686355cbbe
Merge pull request #3506 from mapycz/fix-building-symbolizer-transform
Building symbolizer improvements
2018-07-27 12:55:53 +02:00
Jiri Drbalek
acbf80677a update visual tests data 2018-07-27 10:23:34 +00:00
Jiri Drbalek
4a93209423 render building symbolizer rewrite
- make projection and view transforms first
- removed dependency on segment_t
- no need for sorting faces
2018-07-27 10:23:33 +00:00
Mickey Rose
6e71bad70c Revert "update test data"
This reverts commit 81183d6fe6.
It removed recent tests, didn't update.
2018-07-27 10:58:31 +02:00
Artem Pavlenko
b796cc9912
[skip ci] 2018-07-25 17:04:37 +01:00
Artem Pavlenko
ace2baafbd
Update README.md 2018-07-25 16:01:41 +01:00
Artem Pavlenko
50caf755c3
Update README.md 2018-07-25 15:55:18 +01:00
Artem Pavlenko
7cf93eb70f
Update README.md 2018-07-25 15:45:40 +01:00
Artem Pavlenko
f930bea045
Update README.md 2018-07-25 15:45:09 +01:00
Artem Pavlenko
174c82662d
Merge pull request #3952 from mapnik/circleci-20-test
Circleci 20 test
2018-07-25 15:26:28 +01:00
Artem Pavlenko
fed8effb67 remove circleci v1.0 config 2018-07-25 14:17:46 +01:00
Artem Pavlenko
64462b8dca cleanup 2018-07-25 14:16:04 +01:00
Artem Pavlenko
39b6dca059 Adding auto-generated CircleCI 2.0 config file 2018-07-25 13:53:56 +01:00
Artem Pavlenko
70fbdd21c7
Merge pull request #3948 from mapnik/boost_1_67
Boost 1 67
2018-07-23 14:05:52 +01:00
Artem Pavlenko
5eca7731e9 rely on implicit std::reference_wrapper<T> -> T conversions (thanks @lightmare) 2018-07-23 13:26:22 +01:00
Artem Pavlenko
93d0eea8af Merge branch 'master' into boost_1_67 2018-07-23 11:35:14 +01:00
Artem Pavlenko
65080e2a95 add support for BOOST_VERSION < 106700 2018-07-23 10:58:27 +01:00
talaj
c819a03bb3
Merge pull request #3944 from EmilGedda/gedda-patch-1
remove old render_box function declaration from cairo_renderer.hpp
2018-07-20 14:43:48 +02:00
Emil Gedda
93c566638f
remove old render_box function declaration from cairo_renderer.hpp 2018-07-20 14:02:51 +02:00
Artem Pavlenko
5fe0dda890 Merge branch 'master' into boost_1_67 2018-07-20 11:53:47 +01:00
Mickey Rose
1ddd3afc51 postgis+pgraster: substitute numbers always with decimal point 2018-07-19 22:52:55 +02:00
Mickey Rose
774a618d13 postgis: add test for pg_typeof substituted tokens 2018-07-19 22:51:01 +02:00
Artem Pavlenko
bdf7876652 const-ness 2018-07-19 15:36:00 +01:00
Artem Pavlenko
67dbb96580 use uint8_t to parse hex2 values to avoid overflowing (boost >= 1.67) 2018-07-19 15:34:40 +01:00
Mickey Rose
f1d07d6718 proj_transform test: also check that transform succeeded 2018-07-18 19:31:12 +02:00
Artem Pavlenko
a98d1b8071 use std::uint8_t as an attribute for hex2 parser 2018-07-18 10:40:41 +01:00
Artem Pavlenko
4c31bd16d2 Merge branch 'master' into boost_1_67 2018-07-18 09:27:56 +01:00
Sandro Santilli
69c317cd1f Fix some comments and error messages referencing raster parameters 2018-07-16 19:27:12 +02:00
Mickey Rose
68a7f5f63c proj_transform: fix strided coordinate array transform 2018-07-16 14:18:49 +02:00
Mickey Rose
1e6feecb91 proj_transform: add test for strided coordinate array 2018-07-16 14:18:49 +02:00
Mickey Rose
f84191204e eradicate M_PI 2018-07-16 14:18:49 +02:00
Mickey Rose
32e7202223 well_known_srs: move implementation to .cpp
- add lonlat2merc, merc2lonlat overloads for single point
- add stride argument to overloads for coordinate arrays
- make all functions exported
- change static string constants to exported
- change static numeric constants to constexpr
- remove superfluous numeric constants
2018-07-16 14:18:32 +02:00
Mickey Rose
e11f3a660a offset_converter: minor refactoring
DRY: extract method for `joint_angle` calculation.
2018-07-14 12:46:53 +02:00
Mickey Rose
a0a2c78950 util/math: clamp, degrees, radians
Use common functions for degrees <-> radians conversions, except when
dealing with agg, where it makes sense to use available deg2rad/rad2deg
functions instead of including another header.
2018-07-13 12:34:25 +02:00
lightmare
187c1df332
Merge pull request #3337 from lightmare/normalize-angle
speed up util::normalize_angle for large values
2018-07-12 19:30:37 +02:00
Mickey Rose
0a6e82e555 move src/math.cpp under src/util/ 2018-07-11 23:55:21 +02:00
Mickey Rose
7c4ccf0209 make util::normalize_angle reasonably fast on large values
Because it simply calculates the remainder after division by full turn,
it shouldn't take time proportional to the magnitude of its operand.
2018-07-11 23:14:23 +02:00
Mickey Rose
354be41811 benchmarks: clarify output
Make it clear in benchmark output which mode it ran in:
- "main thread" only
- "1 worker" thread
- "N workers"
2018-07-11 23:14:04 +02:00
Mickey Rose
65f3bb75dd Revert "benchmark - slightly better stderr"
This partially reverts commit 5ab6db2607.

The change of argument --threads N doesn't just change output, it
changes the mode of operation.
With --threads 0, the benchmark runs wholly in the main thread.
With --threads 1, it starts 1 worker thread, which does the work, and
the main thread measures how long it takes to complete.
2018-07-11 23:14:03 +02:00
Mickey Rose
d70c2d978c add benchmark for mapnik::util::normalize_angle 2018-07-11 23:13:59 +02:00
Mickey Rose
5091a4ba9d benchmarks: move sources under benchmarks/src/ 2018-07-11 15:57:04 +02:00
Mickey Rose
fa55e3dfa9 benchmarks: move headers under benchmarks/include/ 2018-07-11 13:32:32 +02:00
Mickey Rose
25f0ef09a5 use MAPNIK_VERSION_AT_LEAST for minimum-version check 2018-07-11 10:43:06 +02:00
Mickey Rose
c2c00570b3 define MAPNIK_MAKE_VERSION, MAPNIK_VERSION_AT_LEAST 2018-07-11 10:38:32 +02:00
Mickey Rose
b20e42ba3f changelog: more missing unreleased changes [skip ci] 2018-07-10 22:49:50 +02:00
Mickey Rose
fb8e75afec changelog: copy changes from v3.0.x branch [skip ci] 2018-07-10 22:49:50 +02:00
Mickey Rose
558dcdb7d0 changelog: unindent [skip ci] 2018-07-10 22:49:50 +02:00
Mickey Rose
249c4b6c6c changelog: minor formatting [skip ci] 2018-07-10 22:49:50 +02:00
talaj
ae3a9404b7
Merge pull request #3935 from lightmare/fix-bbox-reprojection
Fix bbox reprojection
2018-07-10 21:45:47 +02:00
Mickey Rose
62912d25af Revert "allow visual test failures with g++"
This reverts commit 05936826b3.
2018-07-10 18:51:34 +02:00
Mickey Rose
d4f113e302 update changelog [skip ci] 2018-07-10 12:06:32 +02:00
Mickey Rose
947e424f56 proj_transform: fix bbox reprojection
- remove buggy calculate_bbox, use boost::geometry::envelope instead
- move helper envelope_points to anonymous namespace and make it always
  produce exactly the requested number of points, even if it's not
  evenly divisible by 4
2018-07-10 11:31:06 +02:00
Mickey Rose
2a98fe0155 proj_transform test: use reference values from cs2cs tool 2018-07-10 11:31:06 +02:00
Jiri Drbalek
9a30fda852 Backport Python test of bbox reprojection
Originaly in Python from https://github.com/mapnik/mapnik/pull/2657
2018-07-10 11:31:06 +02:00
Mickey Rose
abbe44db6d changelog: add notice about c++14 and spirit x3
[skip ci]
2018-07-09 14:32:00 +02:00
Mickey Rose
c389cdc562 changelog: add missing unreleased changes
[skip ci]
2018-07-09 14:32:00 +02:00
Mickey Rose
70a511165b scripts/markdown-hyperlinks: prevent unwanted replacements
- don't replace @var in code spans with link to github user
- don't replace 1234567... in links with link to commit
- replace hexadecimal numbers looking like commit hashes only
  after replacing raw URIs - this together with the previous point
  prevents inadvertent replacement of long numbers in links

[skip ci]
2018-07-09 14:32:00 +02:00
Mickey Rose
e9befd9057 changelog: fix markdown
[skip ci]
2018-07-09 13:45:07 +02:00
lightmare
15f953672d
Merge pull request #3924 from lightmare/changelog-autolink
Changelog autolinks
2018-07-08 23:11:48 +02:00
Artem Pavlenko
2c2669d655 fixes typo (#3930) 2018-07-05 09:37:49 +02:00
Artem Pavlenko
735acb297a add (uncomment) surrogate pairs test + small typo fix 2018-07-02 21:55:27 +02:00
Artem Pavlenko
df0ba4a777 add more single/double quotes tests 2018-07-02 16:42:35 +02:00
Artem Pavlenko
81183d6fe6 update test data 2018-07-02 15:11:47 +02:00
Artem Pavlenko
2977688a8a test for single and double quoted escaped strings (regex) (ref 3433397c30 (commitcomment-29512684)) 2018-07-02 15:10:28 +02:00
Artem Pavlenko
9d44a73ad0 fix - add single quoted string escaped chars support + allow backtracking when escaped characters are not part of /u, /U. /x encodings (ref 3433397c30 (commitcomment-29512684)) 2018-07-02 15:07:41 +02:00
Artem Pavlenko
7db6b0c9f0
Merge pull request #3925 from lightmare/test-ds-attr-types
Also check types of values in datasource tests
2018-07-02 09:53:53 +02:00
Artem Pavlenko
c81a40d9eb
Merge pull request #3923 from lightmare/sconf-fixup-messages
scons configure cleanup
2018-07-02 09:53:25 +02:00
Artem Pavlenko
ba0e13c812
Merge pull request #3922 from lightmare/sconf-try-action
Sconf TryAction replacement
2018-07-02 09:53:02 +02:00
Artem Pavlenko
51065985df
Merge pull request #3921 from lightmare/unicode-attr-name
add test for parsing expression with non-ascii characters in attribute name
2018-07-02 09:51:45 +02:00
Artem Pavlenko
9e3014494c
Merge pull request #3912 from mapycz/fix-overviews
GDAL: Fixes of overviews
2018-07-02 09:49:46 +02:00
Mickey Rose
178edb9da6 update CHANGELOG with links to issues, commits, users
[skip ci]
2018-07-01 11:58:18 +02:00
Mickey Rose
bdaf7813af minor CHANGELOG amendments in preparation for generating hyperlinks
[skip ci]
2018-07-01 11:55:45 +02:00
Mickey Rose
2e82c17d92 datasource tests: typos 2018-06-30 15:26:17 +02:00
Mickey Rose
58592ed597 datasource tests: fix failing csv test
- it was indeed the test that was wrong; the coordinates in nypd.csv are
  specified with a decimal point, thus should be `value_double`
2018-06-30 15:21:55 +02:00
Mickey Rose
04e1f82734 datasource tests: use macro REQUIRE_ATTRIBUTES instead of function
- failing checks report location inside the function, not where it's
  called from; using macro reports proper location
2018-06-30 15:20:22 +02:00
Mickey Rose
d62e215ff9 datasource tests: also check value types in REQUIRE_ATTRIBUTES 2018-06-30 15:20:19 +02:00
Mickey Rose
e31578045e add script for auto-generating links in CHANGELOG
[skip ci]
2018-06-30 12:01:57 +02:00
Mickey Rose
b417ddf32d SConstruct: shortest_name is a one-liner 2018-06-29 16:43:33 +02:00
Mickey Rose
89d0c6da19 SConstruct: change rollback_option to free function
It shouldn't be a conftest. First, it doesn't act like one. Second,
calling it as conf.rollback_option from within another conftest before
calling context.Result confuses scons, it doesn't expect conftests to be
nested and reports "error: no result" for the outer one as soon as the
inner is called.
2018-06-29 16:24:04 +02:00
Mickey Rose
16eb870303 SConstruct: fixup config.log message order
- always call .Message before .TryRun
- always unpack .TryRun result tuple
2018-06-29 16:07:47 +02:00
Mickey Rose
a17de02ce4 SConstruct: fixup ICU min version check
- "Say what you mean." The check is for version >= 4.0, not 4.2
- call .Message before .TryRun
- don't silence .Result
2018-06-29 16:00:23 +02:00
Mickey Rose
a2af3a53fa SConstruct: fixup HarfBuzz configure checks
- call .Message before .TryRun
- don't silence .Result
- report found version even if it's really old and doesn't even define
  HB_VERSION_ATLEAST macro
2018-06-29 15:48:51 +02:00
Mickey Rose
4531393367 SConstruct: fix configure check ogr_enabled
gdal-config --ogr-enabled writes yes/no to stdout,
but always returns 0 (unless an invalid argument is given)
2018-06-28 15:02:27 +02:00
Mickey Rose
e63003a6e0 SConstruct: log configure commands to config.log
Forgot that with `TryAction`, configure commands and their outputs were
being logged in `config.log`, and the previous commit failed to retain
this ability.

New function `config_command` mimics the logging, with the modification
that output lines are prefixed with `->` so they stand out a bit more.
2018-06-28 15:02:27 +02:00
Mickey Rose
9baa10d135 SConstruct: avoid incorrect usage of sconf.TryAction
Closes #3918

Replace all previous uses of `call` and `TryAction` with a new function
`silent_command`, which invokes `subprocess.Popen` and returns both exit
status and command output.
2018-06-27 21:03:30 +02:00
Mickey Rose
5544c4c74f expressions_test: add test for unicode attribute name
Refs #1153

That issue doesn't affect current master, maybe it was valid at the time
of posting.  I just couldn't find a test that'd confirm unicode in
attribute names actually works, so here it is.
2018-06-27 11:58:56 +02:00
Mickey Rose
6befc23101 expressions_test: change properties_type to std::map 2018-06-27 11:56:36 +02:00
Dane Springmeyer
42d3f2d0d3
Merge pull request #3917 from mapnik/only-throw-on-dupe-style-in-strict-mode
Only throw on duplicate styles in strict mode
2018-06-26 18:20:35 -07:00
Dane Springmeyer
d60be13ed8 remove unused code 2018-06-26 15:57:21 -07:00
Blake Thompson
a914047770
Merge pull request #3920 from manaswinidas/improve
Improves INSTALL.md
2018-06-26 11:24:38 -07:00
Dane Springmeyer
c458cf0c57 test duplicate style throw behavior exactly 2018-06-26 09:53:12 -07:00
Manaswini Das
1d7fc9c070
Improves INSTALL.md 2018-06-26 21:16:03 +05:30
Dane Springmeyer
434511ca3b fix to only throw in strict mode 2018-06-24 19:08:38 -07:00
Dane Springmeyer
7673bbe827 only throw on duplicate styles in strict mode 2018-06-24 10:19:33 -07:00
Dane Springmeyer
e9ebc938e0 [build] ensure we don't fail abruptly in BOOST_LIB_VERSION_FROM_HEADER is unknown 2018-06-19 17:21:50 -07:00
Jiri Drbalek
712cce8213 Update test data 2018-06-11 14:40:58 +02:00
Jiri Drbalek
4753aeb73a gdal: Refactoring 2018-06-11 12:00:43 +00:00
Jiri Drbalek
25f1b8cb18 gdal: Do not shrink query extent 2018-06-09 16:34:17 +00:00
Jiri Drbalek
10aaf85f54 gdal: Count in filter_factor 2018-06-09 16:34:17 +00:00
Jiri Drbalek
4f570413ba gdal: Fix finding closest overview 2018-06-09 16:34:17 +00:00
Artem Pavlenko
9cd40947d8 update deps 2018-06-07 09:51:29 +01:00
Artem Pavlenko
7c8215dfda Merge branch 'Algunenano-blessed_offset_clip' 2018-06-07 09:45:43 +01:00
Artem Pavlenko
977c86af6c update visual test data 2018-06-07 09:45:14 +01:00
Raul Marin
8e11ef3fd7 Improve padding calculation 2018-06-06 18:39:15 +02:00
Artem Pavlenko
a396282189
Merge pull request #3905 from ISNIT0/patch-1
Update INSTALL.md
2018-05-30 15:32:31 +01:00
Joe Reeve
e84fbf1523
Update INSTALL.md
Added a `cd` to allow for simpler execution (copy-paste)
2018-05-30 10:51:46 +01:00
Artem Pavlenko
95d5fabad0 Merge branch 'master' into boost_1_67 2018-05-21 15:58:24 +01:00
Artem Pavlenko
16501f8641
Merge pull request #3899 from Algunenano/master_line_middle
Marker symbolizer: Fix bug with lines with 0 length
2018-05-21 15:53:59 +01:00
Artem Pavlenko
102fc3eaf9
Merge pull request #3892 from Algunenano/master_freetype29
Use pkg-config to find FreeType2 if available
2018-05-21 15:52:14 +01:00
Raul Marin
0becc1c5e9 Markers point placement: Add some basic tests 2018-05-11 15:39:55 +02:00
Raul Marin
0195047d7a Marker symbolizer: Fix bug with lines with 0 length (division by zero) 2018-05-11 12:24:01 +02:00
Artem Pavlenko
b7e486d3c3
Merge pull request #3897 from mapycz/refactor-scale-denom
Scale denominator: a bit of refactoring
2018-05-09 08:46:09 +01:00
Jiri Drbalek
846e961b05 Replace magic number with described constant 2018-05-08 16:54:46 +00:00
Artem Pavlenko
d75a73a727
Merge pull request #3896 from mapycz/rm-ellipsoid
Remove useless ellipsoid.hpp
2018-05-08 17:47:02 +01:00
Artem Pavlenko
c2fe73ecbe
Merge pull request #3895 from mapycz/postgis-connection-creator-id
postgis: Exclude password from ConnectionCreator::id()
2018-05-08 17:46:26 +01:00
Artem Pavlenko
051f2fa906
Merge pull request #3894 from mapycz/postgis-connection-manager-thread-safe
postgis: Thread safe ConnectionManager
2018-05-08 17:44:45 +01:00
Jiri Drbalek
3deb55cc5f Use existing constant 2018-05-08 16:44:41 +00:00
Jiri Drbalek
89b5cb4f22 Remove useless ellipsoid.hpp 2018-05-08 15:39:13 +00:00
Jiri Drbalek
ab05de48df postgis: Exclude password from ConnectionCreator::id()
- Password is not necessary for connection identification
- When password is not required by the database,
  user can accidentally use multiple different passwords
  without noticing.
  This leads to allocating more connection pools
  and increase of connection consumption.
2018-05-07 13:49:57 +00:00
Jiri Drbalek
497055d80d postgis: Thread safe ConnectionManager 2018-05-04 20:18:04 +00:00
Raul Marin
23755a527a Use pkg-config to find FreeType2 if available 2018-05-03 17:07:37 +02:00
Artem Pavlenko
b1a19bc13c Merge branch 'master' into boost_1_67 2018-05-01 10:01:59 +02:00
Artem Pavlenko
d8dbe11fd0 Merge branch 'Algunenano-master_overlap' 2018-04-30 09:52:04 +02:00
Artem Pavlenko
871991dced Merge branch 'master_overlap' of https://github.com/Algunenano/mapnik into Algunenano-master_overlap 2018-04-30 09:51:15 +02:00
Artem Pavlenko
4691315e5a
Merge pull request #3891 from mapnik/compiler-detect
don't error oddly if compiler is not found
2018-04-30 09:15:34 +02:00
Dane Blakely Springmeyer
8af9bfe8e0 don't error oddly if compiler is not found 2018-04-29 21:08:36 -07:00
Raul Marin
3171b89fea Generalize overlap_optimization to use points and text too 2018-04-27 17:15:03 +02:00
Raul Marin
0a2be27ba9 Use overlap optimization in load_map_string too 2018-04-27 17:14:57 +02:00
Artem Pavlenko
b7bdd08837 define BOOST_SPIRIT_INSTANTIATE_UNUSED once and re-use [skip-ci] 2018-04-18 14:18:40 +02:00
Artem Pavlenko
664d3508de remove reference_wrapper usage when injecting attributes into grammar ( >= boost_1_67) [skip-ci] 2018-04-18 12:53:17 +02:00
Artem Pavlenko
c946620fec remove unused instantiation 2018-04-18 10:31:33 +02:00
Artem Pavlenko
9e79e1edf1 update const-ness in x3::context definitions to support boost 1_67 [skip-ci] 2018-04-17 15:41:17 +02:00
Artem Pavlenko
def0fd1f31 prepare for breaking change in spirit::x3 (from boost 1.67.0) - remove with_context usage
(ref https://github.com/boostorg/spirit/pull/239)
2018-04-16 15:25:39 +02:00
Artem Pavlenko
b392b8214e add explicit instantiation declarations to DEFINE_ENUM macro to fix -Wundefined-var-template warnings. 2018-04-16 11:12:05 +02:00
Artem Pavlenko
fe5c4bb978 supress unused variable warning in boost state_machine 2018-04-16 11:08:08 +02:00
Artem Pavlenko
82fb67441f
Merge pull request #3880 from Algunenano/master_icu61
Qualify ICU types explicitly
2018-04-10 10:32:30 +02:00
Artem Pavlenko
f04248e57d Merge branch 'mapycz-save-map-denominator' 2018-04-10 10:27:40 +02:00
Artem Pavlenko
d2d587cb1b mapycz-save-map-denominator 2018-04-10 10:25:23 +02:00
Raul Marin
1ddfe6c315 Qualify ICU types explicitly
ICU 61 has dropped the global `using namespace icu;`
http://site.icu-project.org/download/61#TOC-Migration-Issues
2018-04-03 13:18:43 +02:00
Blake Thompson
f7098a8a7e
Merge pull request #3873 from mapnik/gdal_overview_fix
GDAL Driver Overview Fix and Memory Reduction - Master
2018-03-30 16:45:58 -05:00
Blake Thompson
a217b38fd5 Updated to use max_image_area as a datasource parameter for GDAL plugin 2018-03-30 15:40:30 -05:00
Blake Thompson
25e4bb3f6c A fix for two distinct issues associated with gdal featuresets, the first is overviews were not properly being utilized based on the resolution of the final image requested. The second is that allocation of far too much memory could be possible in GDAL to attempt to do resampling internally in mapnik. This now has a hard cap so that we allocate less memory in these situations but are still able to resample internally in mapnik. 2018-03-30 15:10:29 -05:00
Dane Springmeyer
65b4afdfc1
Merge pull request #3876 from Algunenano/blessed_master_threadsafe_disabled
Fix build issue with MAPNIK_THREADSAFE disabled
2018-03-26 12:15:34 -04:00
Raul Marin
caa2a88177 Fix build issue with MAPNIK_THREADSAFE disabled 2018-03-26 18:08:44 +02:00
Blake Thompson
ae6c9c7e37
Merge pull request #3875 from mapycz/raster-colorizer-image-size
Raster colorizer: check image bounds
2018-03-23 13:50:16 -04:00
Jiri Drbalek
ac50139c54 Raster colorizer: check image bounds 2018-03-23 11:55:40 +00:00
Artem Pavlenko
a8d7fc1cfb Revert "avoid symbols duplication"
This reverts commit c737f4d56f.
2018-03-15 15:58:23 +01:00
Artem Pavlenko
c737f4d56f avoid symbols duplication 2018-03-09 09:57:49 +01:00
Artem Pavlenko
030b0de105 update CHANGELOG 2018-03-06 15:42:48 +01:00
Artem Pavlenko
934124d30c follow up on 5b8b75e680 2018-03-01 12:11:03 +01:00
Artem Pavlenko
eb1a32eb79 fix dereferencing out-of-range iterator (caught by -fsanitize=undefined,integer) (#3867) 2018-03-01 11:54:41 +01:00
Artem Pavlenko
5b8b75e680 fix compiler warning
```include/mapnik/text/symbolizer_helpers.hpp:164:45: warning: template template parameter using 'typename' is a C++17 extension
      [-Wc++17-extensions]
    template <template <typename, typename> typename GridAdapter>
                                            ^~~~~~~~
                                            class
```
2018-03-01 10:56:55 +01:00
Artem Pavlenko
abce91a180 decode ret into str for consistency. 2018-02-28 15:42:25 +01:00
Artem Pavlenko
3ad43a33ae check language variable to avoid SIGILL in '-fsanitize-trap=integer,undefined' builds. 2018-02-28 15:20:13 +01:00
Dane Springmeyer
fb8cbb6848 remove shorthands for sanitizers, best to pass flags manually 2018-02-27 10:28:53 -08:00
Artem Pavlenko
60c505d08b Merge branch 'mapycz-offset-converter-topology' 2018-02-26 16:06:56 +01:00
Artem Pavlenko
37b7f05180 Merge branch 'offset-converter-topology' of https://github.com/mapycz/mapnik into mapycz-offset-converter-topology 2018-02-26 16:06:19 +01:00
Artem Pavlenko
3ebbf2075f
Merge pull request #3865 from Algunenano/master_icu_data
ICU DATA: Default to icu-config if u_getDataDirectory fails
2018-02-26 15:13:08 +01:00
Artem Pavlenko
c12f11fe42
Merge pull request #3837 from mat007/fix-unicode-file-path-on-windows
Handle unicode file path on windows in command line tools
2018-02-26 12:23:11 +01:00
Raul Marin
765406f9a7 ICU DATA: Default to icu-config if u_getDataDirectory fails 2018-02-23 15:33:10 +01:00
Artem Pavlenko
8876d13356 improve errors reporting in mapnik-index 2018-02-21 16:02:12 +01:00
Artem Pavlenko
ff56c86446
Merge pull request #3862 from mapnik/apply_color_blind_filter-fix
Fix apply_color_blind_filter to use correct color-space and avoid NAN…
2018-02-20 16:48:31 +01:00
Artem Pavlenko
cec5e0e391
Merge pull request #3863 from Algunenano/master_proj_lib
PROJ_LIB: Fix detection code
2018-02-20 16:04:50 +01:00
Raul Marin
b77ad659d8 PROJ_LIB: Fix detection code
.sconf_temp/conftest_24.cpp:30:42: error: use of undeclared identifier 'strlen'
2018-02-20 14:24:06 +01:00
Artem Pavlenko
2a090aa799 update visual tests data 2018-02-20 12:42:40 +01:00
Artem Pavlenko
c5e91a5c1e update color-blind filters tests post bac24cd844 2018-02-20 12:05:49 +01:00
Artem Pavlenko
cdb301b357 enable high dpi scaling 2018-02-20 11:43:55 +01:00
Artem Pavlenko
bac24cd844 Fix apply_color_blind_filter to use correct color-space and avoid NAN which results in SIGILL when compiled with DEBUG_UNDEFINED=yes (#3861) 2018-02-20 11:19:53 +01:00
Artem Pavlenko
d43c4c1812 fix typo #3856 2018-02-19 13:15:48 +01:00
Artem Pavlenko
429d79c81d check nodata returned by 'GetNoDataValue' has valid representation (!std::isnan) (#3856) 2018-02-19 12:09:56 +01:00
Artem Pavlenko
a2f596951e update visual tests data 2018-02-15 10:04:43 +01:00
Artem Pavlenko
b8e6a0accc
Merge pull request #3859 from mapycz/fix-dgal-default-nodata
Respect raster_has_nodata
2018-02-14 16:51:57 +01:00
Artem Pavlenko
6815ac2869 use multiplication instead of << to avoid undefined behavour when LHS is a negative int (-fsanitize=undefined) 2018-02-14 16:49:31 +01:00
Artem Pavlenko
17a98767b4 use safe_cast for narrowing double->typename span_gen_type::value_type cast (#3856) (thanks @talaj!) 2018-02-14 16:47:47 +01:00
Jiri Drbalek
4c444d0082 Respect raster_has_nodata 2018-02-14 13:56:04 +00:00
Artem Pavlenko
533c6d6e5b check m_width_abs > 0 to avoid division by zero (-fsanitize=undefined) 2018-02-13 17:06:55 +01:00
Artem Pavlenko
2a594d4f0e
Merge pull request #3855 from mapycz/grid_vertex_converter-fix-empty-polygon
grid_vertex_converter: Fix handling of empty polygon
2018-02-13 16:49:10 +01:00
Jiri Drbalek
b6c451d7e3 grid_vertex_converter: Fix handling of empty polygon 2018-02-13 15:00:25 +00:00
Jiri Drbalek
e08786b5fb AGG: Fix invalid memory access if input buffer size is zero 2018-02-13 15:00:25 +00:00
Artem Pavlenko
3976014dcd fix left shift of negative value (-fsanitize=undefined) 2018-02-13 15:14:17 +01:00
Artem Pavlenko
15f16ce6ec cast header to unsiged char const* (-fsanitize=address) 2018-02-13 13:34:42 +01:00
Artem Pavlenko
f117546f73
Merge pull request #3848 from mapnik/update_changelog
Updated changelog from v3.0.x branch
2018-02-07 16:48:26 +01:00
Artem Pavlenko
976555041d
Merge pull request #3847 from mapycz/port-grid-placement
Grid placement
2018-02-07 16:44:21 +01:00
Blake Thompson
3e6d4aa58a Updated changelog from v3.0.x branch 2018-02-06 14:07:21 -05:00
Jiri Drbalek
1adebaaf73 Update visual tests 2018-02-06 16:47:34 +00:00
Jiri Drbalek
f10e051e17 Add grid placement for text and shield symbolizer 2018-02-06 15:19:05 +00:00
Artem Pavlenko
d4826eea6f
Merge pull request #3844 from mapycz/interior-scale-invariant
Interior, polylabel: Scale precision by polygon size
2018-02-05 11:28:35 +01:00
Artem Pavlenko
f4f63a1006
Merge pull request #3845 from mapycz/fix-vertex-adapter-test
Fix vertex_adapter test
2018-02-05 11:27:44 +01:00
Jiri Drbalek
953d1d1a01 Fix vertex_adapter test 2018-02-04 08:46:14 +00:00
Jiri Drbalek
c975c1b6b8 Update visual tests 2018-02-03 17:13:56 +00:00
Jiri Drbalek
69c3ee550d interior, polylabel: Scale precision by polygon size 2018-02-03 14:00:30 +00:00
Artem Pavlenko
5aebd821f6 Update boost to 1.65.1 and mason HEAD. 2018-01-31 21:18:01 +01:00
Artem Pavlenko
828346add3 require BOOST_VERSION >= 1.62.0 (#3835) 2018-01-31 14:11:55 +01:00
Jiri Drbalek
223a240751 Update visual tests 2018-01-26 11:55:04 +00:00
Jiri Drbalek
fb5ca1bb8e offset_converter: Don't filter out closing and moving segments 2018-01-26 11:55:04 +00:00
Artem Pavlenko
2461058ecc
Merge pull request #3838 from mapycz/fix-crash-polygon_vertex_adapter
Fix crash in polygon_vertex_adapter
2018-01-23 16:35:09 +01:00
Jiri Drbalek
0c5d167028 polygon_vertex_adapter: Fix crash in case of empty interior ring 2018-01-23 15:18:44 +00:00
Mathieu Champlon
22d0cb72fd Handle unicode file path on windows 2018-01-20 22:24:05 +01:00
Artem Pavlenko
c6b9036002
Merge pull request #3827 from mapycz/gdal-test-upscaling
Add a test that GDAL plugin does not upsample
2018-01-18 15:54:15 +00:00
Artem Pavlenko
8bc236ba7b
Merge pull request #3834 from mapycz/fix-interior-empty-polygon
Interior, Polylabel: cover empty polygon or exterior ring
2018-01-17 14:47:37 +00:00
Jiri Drbalek
4e160acc88 Avoid copying 2018-01-17 13:39:21 +00:00
Jiri Drbalek
99038229f7 Polylabel: cover the case of empty polygon or exterior ring 2018-01-17 13:39:15 +00:00
Jiri Drbalek
a97eace434 Interior: cover the case of empty polygon or exterior ring 2018-01-17 12:58:42 +00:00
Artem Pavlenko
da8b5c46d7
Merge pull request #3833 from mapycz/fix-crash-polygon_vertex_processor
Fix crash in case of empty ring
2018-01-17 10:06:32 +00:00
Jiri Drbalek
ec53f3d879 Fix crash in case of empty ring 2018-01-17 09:53:45 +00:00
Artem Pavlenko
ab4e1b77d0
Merge pull request #3828 from mikejcorey/except_syntax
Replaced old-style exception for Python 3 compatibility.
2018-01-11 09:53:57 +00:00
Michael Corey
e5e0b7674a Replaced old-style exception for Python 3 compatibility. 2018-01-10 21:50:49 -08:00
Jiri Drbalek
43a9f70314 Add a test that GDAL plugin does not upsample 2018-01-10 15:02:44 +00:00
Artem Pavlenko
5ab6db2607 benchmark - slightly better stderr 2018-01-10 10:04:10 +00:00
Artem Pavlenko
b193d03151 Merge remote-tracking branch 'origin/master' 2018-01-09 17:03:08 +00:00
Artem Pavlenko
2aab39b8e7
Merge pull request #3826 from mapycz/svg-clippath-test
SVG: Add a test of clipPath
2018-01-09 17:02:24 +00:00
Jiri Drbalek
3af3286436 SVG: Add a test of clipPath 2018-01-09 16:11:19 +00:00
Artem Pavlenko
f6b11b86a8 update test/data 2018-01-09 15:40:41 +00:00
Artem Pavlenko
ff31c6d6eb SVG parser - add ignore_ member variable to allow skipping of unsupported elements, currently clipPath (#3818) 2018-01-09 15:19:52 +00:00
Artem Pavlenko
a04ca98c6b Merge branch 'mapycz-polylabel-as-interior' 2018-01-08 10:21:49 +00:00
Artem Pavlenko
c24568f033 Merge branch 'polylabel-as-interior' of https://github.com/mapycz/mapnik into mapycz-polylabel-as-interior 2018-01-08 10:21:09 +00:00
Artem Pavlenko
e2d741bdb7
Merge pull request #3809 from IMQS/pr-text-placements-export
Export all text_placements_ classes from mapnik.dll
2018-01-05 13:02:58 +00:00
Artem Pavlenko
45d4d5afb3 Merge branch 'lightmare-fix-group-symbolizer-crash' 2018-01-05 12:17:11 +00:00
Artem Pavlenko
c29f944726 Merge branch 'fix-group-symbolizer-crash' of https://github.com/lightmare/mapnik into lightmare-fix-group-symbolizer-crash 2018-01-05 12:16:41 +00:00
Artem Pavlenko
92afd0bebf Use macro to apply __attribute__((init_priority(val))) where it's supported (gcc+clang) (#3821) 2018-01-04 14:29:00 +00:00
Artem Pavlenko
50169e95b2 Enforce global variables initialisation order via __attribute__((init_priority(<priority>))) (#3821) 2018-01-04 12:22:04 +00:00
Artem Pavlenko
a67f5abb67 consistent syntax 2018-01-03 17:38:16 +00:00
Jiri Drbalek
7febf6c24a update visual tests 2017-12-17 08:11:58 +00:00
Jiri Drbalek
f52a0fa4f6 new interior algorithm 2017-12-13 21:48:13 +00:00
Jiri Drbalek
ea7ba2c099 add polylabel placement method 2017-12-13 21:48:13 +00:00
Jiri Drbalek
e243e16fd9 find text interior placement after reprojection 2017-12-13 21:48:13 +00:00
Artem Pavlenko
43d7278352 Don't apply preserveAscpectRatio logic logic if width and height expressed as % values (#3812) 2017-12-06 11:23:54 +01:00
Dane Springmeyer
54532cecb5 use lowercase boolean to match check in scripts/check_glibcxx.sh 2017-11-28 15:24:10 +01:00
Ben Harper
5507ab817a Export all text_placements_ classes from mapnik.dll
Previously, only text_placements_dummy had a MAPNIK_DECL annotation.
This commit adds that annotation to text_placements_simple and
text_placements_list, so that they are also exposed from the Windows DLL
build.
2017-11-28 11:30:35 +02:00
Artem Pavlenko
5d9a5b99a5 Fix licence link (#3804) 2017-11-27 09:51:51 +01:00
Artem Pavlenko
bfb071233e fix 'prioritize_linking' option + remove depricated has_key usage 2017-11-23 11:30:35 +01:00
Artem Pavlenko
92150e9ca9 update deps 2017-11-23 11:11:21 +01:00
Artem Pavlenko
851708c26e Merge branch 'scons3' 2017-11-22 15:47:47 +01:00
Artem Pavlenko
a04caf339e Merge branch 'master' into scons3 2017-11-22 15:47:03 +01:00
Artem Pavlenko
8cd2ae322e support both python 2 and 3. 2017-11-22 14:56:20 +01:00
Artem Pavlenko
cf6b88f8da Revert "make python3 default"
This reverts commit a790d8cdb9.
2017-11-22 14:55:52 +01:00
Artem Pavlenko
ce12610adc Add copyleft notice 2017-11-21 15:53:08 +01:00
Artem Pavlenko
a790d8cdb9 make python3 default 2017-11-21 15:09:12 +01:00
Artem Pavlenko
047c3f4bba Scons/python3 - fix bytes to str conversions (#3798) 2017-11-21 13:12:52 +01:00
Artem Pavlenko
c18730a182 use exit ${CODE} 2017-11-20 09:44:33 +01:00
Dane Springmeyer
58d7c72a22
Merge pull request #3796 from mapnik/glibcxx-fix2
Glibcxx fix redux
2017-11-16 14:53:58 -08:00
artemp
a780581ebc Scons - update to 2.5.1 2017-11-16 12:05:21 +01:00
Artem Pavlenko
5732df452c support SCons 3 (initial attempt) 2017-11-16 11:59:55 +01:00
Dane Springmeyer
a2b7f642e0 check symbols for all modes, only error if symbols exist + ENABLE_GLIBC_WORKAROUND 2017-11-15 21:48:20 -08:00
Dane Springmeyer
5e06dfb50b add script that asserts on expected symbols 2017-11-15 20:32:47 -08:00
Dane Springmeyer
f32f3b34ae add glibc_workaround.cpp if option is chosen
This reverts commit 751d9bff1672f6b8cbd2b5ebe2eb460223746806.
2017-11-15 20:32:38 -08:00
Artem Pavlenko
3cb74f0871 attempting to fix #3793 2017-11-14 10:10:26 +01:00
Artem Pavlenko
97f520c7cf cleanup 2017-11-14 10:10:26 +01:00
Artem Pavlenko
2cd335509b
Merge pull request #3794 from mapycz/char_array_buffer-seekpos
char_array_buffer should implement also seekpos()
2017-11-14 09:55:43 +01:00
Jiri Drbalek
fe268b0e71 char_array_buffer should implement also seekpos() 2017-11-13 22:42:37 +00:00
Artem Pavlenko
5db45d9fa3 use semantic actions to fix #3744 ( >= boost_1_65) 2017-11-13 13:15:47 +01:00
Artem Pavlenko
4aaba786fa fix warning: comparison of integers of different signs 2017-11-13 09:48:31 +01:00
Artem Pavlenko
8258c7e621 Merge branch 'glibcxx-fix' 2017-11-13 09:26:15 +01:00
Dane Springmeyer
00a8aba245 drop back to boost 1.64.0 2017-11-09 12:31:18 -08:00
Dane Springmeyer
142c0373d7 upgrade to boost mason package built against libstdc++-4.9-dev instead of 5-dev 2017-11-09 12:12:44 -08:00
Dane Springmeyer
9f4e5844c4 also dump glibcxx symbols on circle 2017-11-09 10:20:30 -08:00
Dane Springmeyer
c2ca920181 remove inadvertent change 2017-11-09 10:08:23 -08:00
Dane Springmeyer
1ad3ae044b at workaround for throw_out_of_range_fmt 2017-11-09 10:07:26 -08:00
Dane Springmeyer
26a1c79efb start displaying glibcxx symbols needed in the binary (only relevant for linux) 2017-11-09 10:05:12 -08:00
Artem Pavlenko
98c26bcae0 SVG parser - fix default gradient vector in linear gradient [0,0,1,0] + support units in offset attribute. 2017-11-06 12:39:50 +01:00
Artem Pavlenko
743c14d3ff add UDL via operator"" _case 2017-11-06 10:31:53 +01:00
Artem Pavlenko
1a338bb924 update test data 2017-11-06 10:31:37 +01:00
Artem Pavlenko
be5085d2e9 apply mapnik/c++ formatting 2017-11-06 09:47:01 +01:00
Artem Pavlenko
0a4214fe36 use latest deps 2017-10-31 11:12:14 +01:00
Artem Pavlenko
2271e4a5a4 use unsigned int for indexed access 2017-10-31 10:52:09 +01:00
Artem Pavlenko
62b10d83be Merge pull request #3782 from IMQS/angled-point-master
Add new angled-point marker placement mode for lines
2017-10-26 17:27:08 +02:00
Ben Harper
05849f0da5 Add new angled-point marker placement mode for lines
This adds a new mode called 'angled-point' to the marker-placement modes.
The full list of modes is then:
  point, angled-point, interior, line, vertex-first, vertex-last

Angled point is identical to point, except that when placing a marker on
a line, the marker's angle is taken from the angle of the line segment.

There is another possible use of the "angled-point" concept for polygons,
and that is for placing labels on stand (aka erf) polygons. By computing
a dominant angle for a mostly rectangular polygon, this can produce quite
good results. I'm not sure whether I should implement that now, or if I
could do that later.
2017-10-26 15:09:17 +02:00
Artem Pavlenko
f02a259011 remove depth limit 2017-10-13 09:47:26 +02:00
Dane Springmeyer
e5b837ff97 remove -Wc++14-extensions flag (added in 064b99168) (#3778) 2017-10-11 16:26:39 +02:00
Artem Pavlenko
cdd8b35112 Merge branch 'mapycz-fix-viewer-linking' 2017-10-09 16:06:33 +02:00
Jiri Drbalek
4952baf494 fix linking of viewer 2017-10-09 11:35:24 +00:00
Jiri Drbalek
8c7d7e25cd update visual tests 2017-10-06 09:52:30 +00:00
talaj
8347778abb fix memory leak (#3775) 2017-10-06 09:27:58 +02:00
Artem Pavlenko
8dc1456766 update test-data 2017-09-29 10:26:04 +02:00
Artem Pavlenko
de9364d447 update deps + test data 2017-09-29 10:04:00 +02:00
talaj
377253bcc8 Check duplicate style names (#3770)
* Ported map I/O tests from Python.

These test loading, saving and round-tripping Map XML, and are
pretty much a direct port of the old Python `load_map_test.py` and
`save_map_test.py`.

* check duplicate style name

* update test data
2017-09-28 15:51:55 +02:00
Jiri Drbalek
43ea5dcb82 update visual tests data 2017-09-27 13:13:27 +00:00
Artem Pavlenko
eefe3de34b update visual data post centroid PR 2017-09-26 09:47:26 +02:00
Artem Pavlenko
71321e8e6b update protozero 2017-09-26 09:47:09 +02:00
Artem Pavlenko
53ad3f0fe8 increase init depth to 20 2017-09-25 16:53:16 +02:00
Artem Pavlenko
94ce4d530a update tests 2017-09-25 16:52:59 +02:00
talaj
f3cf1ad388 Fix centroid and interior algorithms (#3771)
* fix interior algorithm - closing segment handling

* fix centroid algorithm - closing segment handling

* update visual tests
2017-09-25 15:45:02 +02:00
Artem Pavlenko
304cce8efa update protozero to the latest 2017-09-22 15:21:32 +02:00
Artem Pavlenko
3d4963f40c move implementatio into *.cpp + return 'closest_point_result' struct. 2017-09-22 13:21:50 +02:00
Artem Pavlenko
afb2af84f7 assign second point 2017-09-22 13:21:02 +02:00
Artem Pavlenko
f210699884 add more tests 2017-09-22 13:20:23 +02:00
Artem Pavlenko
143d1e57cf add 'closest_point' geometry algorithm 2017-09-21 15:40:30 +02:00
Artem Pavlenko
e9f912bba9 Reserve memory via size() of range method in protozero (10c631d7e4 ) 2017-09-20 10:07:43 +02:00
Artem Pavlenko
fa96232258 update visual data 2017-09-20 09:54:25 +02:00
Artem Pavlenko
5d5ef602be rename 'geometry_type' to 'topojson_geometry_type' to avoid names clashing
(this was causing miscompilation on linux (ubuntu 17.04/clang))
2017-09-18 11:35:39 +01:00
talaj
13d678d9af visual tests: allow to ignore particular renderer (#3768)
* visual tests: refactor parsing parameters from the style

* visual tests: allow to ignore particular renderer

* update visual tests
2017-09-14 14:21:30 +01:00
Artem Pavlenko
c07397e71b update protozero 2017-09-14 11:25:51 +01:00
Artem Pavlenko
5a87d8fef9 update deps 2017-09-13 10:51:36 +01:00
talaj
d14203561d color font support improvements (#3758)
👍
2017-09-13 10:14:46 +01:00
talaj
c7c10fed46 basic unit test for feature_style_processor (#3766) 2017-09-13 10:14:13 +01:00
talaj
c80cde6044 visual tests: report failed tests (#3765) 2017-09-13 10:13:51 +01:00
Artem Pavlenko
acec6ae824 Merge branch 'master' into bbox-index 2017-09-12 14:57:12 +01:00
Artem Pavlenko
e54287293f Merge branch 'mapycz-nested-layers-fixes' 2017-09-12 14:10:22 +01:00
Artem Pavlenko
8bc080c7b8 Merge branch 'nested-layers-fixes' of https://github.com/mapycz/mapnik into mapycz-nested-layers-fixes 2017-09-12 14:09:47 +01:00
Artem Pavlenko
02c6124559 Revert "remove legacy defines"
This reverts commit ebb8d3b3ed.
2017-09-12 09:54:40 +01:00
Artem Pavlenko
01574e8038 update comment 2017-09-12 09:43:50 +01:00
Artem Pavlenko
797e8c7553 Merge branch 'master' into bbox-index 2017-09-11 17:59:23 +01:00
Artem Pavlenko
e97759d01b geojson test - require throwing on an empty feature collection
(not sure this is correct but needed to preserve 3.0.x behaviour)
2017-09-11 17:58:26 +01:00
Dane Springmeyer
aafc5d6d51 revert accidentally committed change to geobuf plugin 2017-09-11 09:48:10 -07:00
Artem Pavlenko
f19ca6672e Merge branch 'master' into bbox-index 2017-09-11 17:32:35 +01:00
Artem Pavlenko
04f9db4b18 minor format 2017-09-11 17:30:37 +01:00
Artem Pavlenko
6e9c56ee2c geojson.input - check and throw if bounding box extrator returns no boxes and not all input consumed (preserve 3.0.x caps) 2017-09-11 17:28:09 +01:00
Jiri Drbalek
6777721391 enclosing calls forgotten in https://github.com/mapnik/mapnik/pull/3474 2017-09-11 15:25:19 +00:00
Artem Pavlenko
b2f3fdb73b Merge branch 'master' into bbox-index 2017-09-11 10:47:50 +01:00
Artem Pavlenko
ebb8d3b3ed remove legacy defines 2017-09-11 10:46:57 +01:00
Dane Springmeyer
3135d58a40 Merge pull request #3762 from mapnik/collect-dep-data-paths-master
Port #3759 to master
2017-09-10 11:10:41 -07:00
Dane Springmeyer
13ff9e1706 adapt to spelling fix in svg tests 2017-09-10 10:22:08 -07:00
Dane Springmeyer
4bc7ec73de fix spelling in svg parser error 2017-09-10 08:59:54 -07:00
Dane Springmeyer
01bf0fb6ce make the configure script actually bash 2017-09-10 08:40:33 -07:00
Dane Springmeyer
8689048ba6 port #3759 to master 2017-09-10 08:19:04 -07:00
artemp
441687ecff boost_adapters - apply temp fix via @Algunenano for boost 1.64 (ref #3733) 2017-08-21 14:14:00 +01:00
artemp
9b0fd7a8d7 boost_adapters - apply temp fix via @Algunenano for boost 1.64. 2017-08-21 14:12:12 +01:00
artemp
40c51c469c shape.input/shapeindex - update to use bounding box per item *.index format. 2017-08-21 11:02:34 +01:00
artemp
6c19efa990 store box2d<float> directly in index_record to avoid conversions. 2017-08-18 16:59:58 +01:00
artemp
d81a7610d3 shapeindex - make index node 32-bytes (uint64_t, int32_t, int32_t) 2017-08-18 16:58:20 +01:00
artemp
541c1a35a0 mapnik-index - initialise quad-tree with bbox if present. 2017-08-18 13:55:04 +01:00
artemp
94ef6170d8 mapnik-index - add experimental --bbox,-b option to limit index to provided bounding box e.g
```mapnik-index -b -5.51418,50.1944,-5.46256,50.2241 data.geojson```
2017-08-18 13:42:54 +01:00
artemp
2aa0ce9d74 New *.index format (bounding box per item) implementation 2017-08-18 11:16:44 +01:00
artemp
a682575da2 Merge branch 'master' into bbox-index 2017-08-17 13:02:14 +01:00
Artem Pavlenko
0253653676 Geobuf.input (#3715)
* geobuf.input - initial implementation (WIP)

* geobuf.input - fix reading MultiPolygon's

* geobuf.input - don't store invalid bounding boxes in r-tree.

* Use `protozero` lib to read `geobuf` (Initial implementation, not complete!)

* geobuf.input - poring to `protozero`. (TODO: add support for `GeometryCollection`)

* add initial support for `GeometryCollection` + cleanup namespaces

* remove stderr + cleanup + update copyright

* fix GeometryCollection and MultiLineString decoding + add support for standalone Feature and Geometry

* don't use `reserve` as undelying data format doesn't allow for efficient `distance` implementation.

* add geobuf unit test + update test data

* update data
2017-08-17 10:52:07 +01:00
artemp
2426a44671 initial updated spatial-index implementation 2017-08-16 13:59:44 +01:00
artemp
e00152b262 update data 2017-08-16 13:59:44 +01:00
artemp
4064c8ae8e add geobuf unit test + update test data 2017-08-16 13:59:44 +01:00
artemp
947ce9a8d1 don't use reserve as undelying data format doesn't allow for efficient distance implementation. 2017-08-16 13:59:44 +01:00
artemp
e0a251c456 fix GeometryCollection and MultiLineString decoding + add support for standalone Feature and Geometry 2017-08-16 13:59:44 +01:00
artemp
0c814dbeb0 remove stderr + cleanup + update copyright 2017-08-16 13:59:44 +01:00
artemp
eee92a5420 add initial support for GeometryCollection + cleanup namespaces 2017-08-16 13:59:44 +01:00
artemp
9cea9707f3 geobuf.input - poring to protozero. (TODO: add support for GeometryCollection) 2017-08-16 13:59:44 +01:00
artemp
3bbb5f413a Use protozero lib to read geobuf (Initial implementation, not complete!) 2017-08-16 13:59:44 +01:00
artemp
dd507550c9 geobuf.input - don't store invalid bounding boxes in r-tree. 2017-08-16 13:59:44 +01:00
artemp
2715500533 geobuf.input - fix reading MultiPolygon's 2017-08-16 13:59:44 +01:00
artemp
28ffa84d44 geobuf.input - initial implementation (WIP) 2017-08-16 13:59:44 +01:00
artemp
add410e619 use arch independent types for serialised values 2017-08-15 11:14:11 +01:00
artemp
c4a1df6e91 simplify impl + const correctness + minor cleanup 2017-08-15 11:13:11 +01:00
artemp
a682cea51e svg-parser - unify error messages text + update unit test 2017-08-08 12:38:24 +01:00
artemp
6f73181e9b Enforce consistent error handling policy - always throw on fatal errors (both strict and non-strict). In strict mode throw on first parsing error. Remove return values from parse,parse_from_string and traverse_tree methods. Update unit tests. 2017-08-02 10:32:13 +01:00
artemp
a26723b4a5 add missing ' in error message. 2017-08-02 10:32:00 +01:00
artemp
093fcee6d1 only include <unicode/unistr.h> if ICU >= 59 (attempting to fix current coverage build on travis). 2017-07-21 10:37:22 +02:00
artemp
9e58c89043 Add support for U_ICU_VERSION_MAJOR_NUM >= 59 (#3729) 2017-07-19 16:07:39 +02:00
artemp
24d07e7792 Update CHANGELOG with missing #3688 [skip-ci] 2017-07-18 10:08:16 +02:00
talaj
a077ccd4f6 Merge pull request #3725 from mapycz/parse-raster-sym
remove superfluous line
2017-07-07 23:16:19 +02:00
Jiri Drbalek
a3247c8dce remove superfluous line 2017-07-07 20:44:15 +00:00
Artem Pavlenko
4ec9349389 Merge pull request #3722 from mapnik/fix_alpha_rgba_tiff_master
Use alpha over no data in RGBA tiffs
2017-07-07 16:52:06 +02:00
artemp
b164117d99 disable handling unsupported attributes (leaving only well-known unsupported elements) to reduce verbosity. 2017-07-07 10:09:08 +02:00
Blake Thompson
951f10791a Fix for #3714 in master, addresses RGBA tiffs that have an alpha value and no data value - and are using the no data value over the alpha. 2017-07-06 12:30:05 -05:00
artemp
3ae71eea0f JSON - wrap lamda functions into anonymous namespace to fix linking on Windows with VS2017. 2017-07-06 16:09:38 +02:00
artemp
b632633373 convert args to mapnik::geometry::geometry<std::int64_t> (VS2017) 2017-07-06 16:03:28 +02:00
artemp
cd0c746a42 split grammar into two rules (VS2017) 2017-07-06 16:02:47 +02:00
artemp
55776f0b8c add missing include directives (VS2017) 2017-07-06 16:02:17 +02:00
artemp
e653f4cc4c make constructor explicit to avoid C2664 error with VS2017. 2017-07-06 16:01:06 +02:00
artemp
e08616aed3 Didn't play well with VS2017, reverting "re-use lamdas definitions and aviod duplicate symbols when building with vs2017"
This reverts commit 4c9322bc0d.
2017-07-06 11:17:14 +02:00
artemp
631c0a59c4 Revert "trying to inline lambdas (VS2017) (!)" this is not allowed in c++14 requires c++17
This reverts commit 0ad1c58009.
2017-07-06 11:14:24 +02:00
artemp
0ad1c58009 trying to inline lambdas (VS2017) (!) 2017-07-06 11:11:01 +02:00
artemp
4c9322bc0d re-use lamdas definitions and aviod duplicate symbols when building with vs2017 2017-07-06 10:59:42 +02:00
talaj
53249053e4 cairo renderer: clear map background with given color as agg renderer does (#3718) 2017-07-04 16:32:45 +02:00
talaj
d0ecd51b63 Set premultiplied flag to the color font glyph bitmap (#3716)
* color font bitmap is premultiplied

* update visual tests
2017-07-03 17:15:07 +02:00
artemp
71344f78df wkb_reader : pre-allocate number of polygons in multi_polygon and number of geometries in geometry_collection via vector.reserce(...) 2017-07-03 15:18:23 +02:00
artemp
1e8ec57593 add <image> and <switch> to unsupported elements. 2017-06-29 09:41:16 +02:00
artemp
47bfe7cb91 make unsupported elements/attributes arrays const. 2017-06-29 09:41:16 +02:00
artemp
148e77884c don't include xml_parser_read_rapidxml.hpp - forward declaring xml_node is sufficient. 2017-06-29 09:41:16 +02:00
artemp
5118220c4c handle "well-known" unsupported elements and attributes. 2017-06-29 09:41:16 +02:00
artemp
017d6cb540 cleanup 2017-06-29 09:41:16 +02:00
artemp
8f2961b9e2 svg_parser - implement preserveAspectRatio support (ref https://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute) 2017-06-29 09:41:16 +02:00
artemp
a6bc69359a use SVG viewport as bounding box 2017-06-29 09:41:16 +02:00
artemp
12d077ea0c disable bbox comparison (WIP) 2017-06-29 09:41:16 +02:00
artemp
3edcd4afa2 fix viewBox coordinate system logic + apply transform in <use> element 2017-06-29 09:41:16 +02:00
artemp
3fbce913d0 store viewbox transform 2017-06-29 09:41:16 +02:00
artemp
fafc751e42 svg_parser - add support for "href" preserving deprecated (since SVG 2) "xlink:href" 2017-06-29 09:41:16 +02:00
artemp
c2ad505899 fix method name 2017-06-29 09:41:16 +02:00
artemp
aae7253ba1 SVG parser - refactor to use switch where appropriate + experimental support for <symbol> 2017-06-29 09:41:16 +02:00
artemp
87abf93da3 move name_to_int into separate header for re-use. 2017-06-29 09:41:16 +02:00
artemp
2de8ce0eb7 svg_parser - don't log unsupported entities just yet (ref #763) 2017-06-29 09:41:16 +02:00
artemp
53a69463ea SVG parser - add support for <use> element (ref #763). 2017-06-29 09:41:16 +02:00
artemp
a4e8603af1 svg transform - correct rotate(<a> [<x> <y>]) rule (ref #763)
(The transform attribute defines a list of transform definitions that are applied to an element and the element's children. The items in the transform list are separated by whitespace and/or commas, and are applied from right to left.)
2017-06-29 09:41:16 +02:00
artemp
199a281627 remove debug stderr 2017-06-29 09:41:16 +02:00
artemp
ca4d140fb0 cleanup 2017-06-29 09:41:16 +02:00
artemp
b6aa45144c svg_parser - refactor => remove mutable temporary_gradient_ member variable + process stop elements from within linearGradient and radialGradient. 2017-06-29 09:41:16 +02:00
artemp
6da83bc986 svg_parser - store unresolved gradient nodes for deferred initalisation. 2017-06-29 09:41:16 +02:00
artemp
0301399d40 svg2png - add short program options. 2017-06-29 09:41:16 +02:00
artemp
ef6c2e71b8 svg-parser : handle parsing failures via error_handler ( throw in strict mode and log+continue when strict==false) 2017-06-29 09:41:16 +02:00
artemp
e56233833e svg_parser - fix bug introduced in previous commit. 2017-06-29 09:41:16 +02:00
artemp
3f591af871 initial support for strict SVG parsing (WIP) 2017-06-29 09:41:16 +02:00
artemp
df0bbe404c update CHANGELOG post 3.0.15 release [skip-ci] 2017-06-19 17:13:02 +02:00
artemp
5aba57eb61 remove out-of-date comment line [skip ci] 2017-06-15 11:33:36 +02:00
Blake Thompson
5b51b8d061 Merge pull request #3701 from mapnik/fix_filter_factor2
Fix Filter Factor for Resampling.
2017-06-13 09:48:15 -05:00
Blake Thompson
5bc80e909e Restored the proper useage of filter factor for image rescaling, where it is used in a variety of different algorithms for resampling. 2017-06-13 09:17:54 -05:00
artemp
3451d11b00 tiff_reader - fix num_rows logic in read_stripped method ref #3679 2017-06-12 17:55:24 +02:00
Artem Pavlenko
294a8168da Merge pull request #3697 from mapnik/raster_plugin_fix
Fixes a bug associated with the raster plugin
2017-06-07 10:18:40 +02:00
artemp
5f9c8bc475 remove --depth 100 2017-06-07 10:17:53 +02:00
Blake Thompson
eb7ef5039c Fixes a bug assocaited with the raster plugin 2017-06-06 10:28:21 -05:00
Artem Pavlenko
d563b2e126 Merge pull request #3693 from mapnik/webp_more_tests
Updated the tests for webp
2017-06-05 17:12:26 +02:00
Blake Thompson
4b69974175 Merge branch 'master' into webp_more_tests 2017-06-05 09:50:53 -05:00
artemp
309b34a011 fix - add missing namespace qualifier. 2017-06-05 15:52:49 +02:00
Artem Pavlenko
03fb8fab4c Merge pull request #3694 from mapycz/layer-compositing-offset
Fix a layer compositing offset
2017-06-02 18:09:07 +02:00
Jiri Drbalek
0ecc4c6762 update visual tests 2017-06-02 15:43:11 +00:00
Jiri Drbalek
a734ff1e90 layers should be composited with zero offset 2017-06-02 15:32:00 +00:00
Blake Thompson
f285195f93 Updated the tests for webp in relation to #3661 2017-06-02 09:32:42 -05:00
artemp
82a7d07b7f return error code when no feature can be read from shapefile + update unit test. 2017-06-01 15:44:25 +02:00
artemp
dfa8f100b2 freetype_engine - port singleton changes from v3.0.x 2017-06-01 12:47:18 +02:00
Dane Springmeyer
aeefd1cb58 fix typo in changelog [skip ci] 2017-05-31 13:26:35 -07:00
Dane Springmeyer
b9be377a7c update font path in test file 2017-05-31 10:42:03 -07:00
Artem Pavlenko
4d7e95c0c0 Merge pull request #3678 from mapycz/fix-polygon-closing-on-reprojection
fix closing polygons on reprojection
2017-05-30 19:08:51 +02:00
Dane Springmeyer
928a42da81 use latest mason version 2017-05-25 11:34:09 -07:00
Jiri Drbalek
7f11a7ab30 update visual test data 2017-05-24 13:59:47 +00:00
Jiri Drbalek
7590cdabb0 fix typo in file name 2017-05-24 13:59:47 +00:00
Jiri Drbalek
c7561c1dc9 unit test - vertex-last marker placement 2017-05-24 13:59:47 +00:00
Jiri Drbalek
0781f230be fix polygon handling 2017-05-24 13:59:44 +00:00
Jiri Drbalek
8d980d434e unit tests - closing polygon on reprojection 2017-05-24 12:10:11 +00:00
Jiri Drbalek
4084e670ec fix closing polygons on reprojection 2017-05-24 12:10:11 +00:00
artemp
abff549ed0 Merge remote-tracking branch 'origin/master' 2017-05-23 18:53:41 +02:00
artemp
c61e85b875 unify namespace names 2017-05-23 18:49:25 +02:00
Artem Pavlenko
b84b819d5b Merge pull request #3681 from mapnik/tiff-memory-mapped
Tiff memory mapped
2017-05-23 12:34:21 +02:00
artemp
3a475517c0 TIFF I/O - use memory mapping in tiff_reader.cpp when MAPNIK_MEMORY_MAPPED_FILE is defined. 2017-05-22 16:29:22 +02:00
artemp
34a622f48e TIFF I/O - use memory mapping for file based I/O. 2017-05-22 13:07:42 +02:00
artemp
3c1be21162 tiff_reader - use image_reader_exception 2017-05-22 13:05:08 +02:00
artemp
3811acfc5d Correct english spelling is OK. 2017-05-19 14:43:17 +02:00
Blake Thompson
436610da3a Updated changelog 2017-05-19 14:41:25 +02:00
Artem Pavlenko
f205f3859d Merge pull request #3671 from mapnik/tiff-multiband-grey
TIFF I/O : add support for multiple bands in 'scanline` reading metho…
2017-05-19 10:10:01 +02:00
artemp
12d6662009 TIFF I/O - read_tiled: remove std::swap_ranges and apply the same logic as in read_stripped. 2017-05-18 16:43:27 +02:00
artemp
4d8796dbd3 remove unused code 2017-05-18 15:23:22 +02:00
artemp
545bcb6585 remove bogus assert 2017-05-18 14:24:01 +02:00
artemp
23bdfdd821 use latest visual data 2017-05-18 13:26:05 +02:00
artemp
9ecc0041a0 Merge branch 'tiff-multiband-grey' of https://github.com/mapnik/mapnik into tiff-multiband-grey 2017-05-18 13:19:18 +02:00
artemp
9ee0deb3a1 update test data 2017-05-18 13:18:33 +02:00
Artem Pavlenko
c5ee5072ad Merge pull request #3679 from mapnik/tiff-stripped-read
The last stripe of a tiff could be read incorrectly due to a swap
2017-05-18 13:17:14 +02:00
artemp
cb7a3abfcb follow up fix for the bug reported by @flippmoke + fix return value check in TIFFReadRGBAStrip 2017-05-18 13:12:52 +02:00
Blake Thompson
efcb667f03 The last stripe of a tiff could be read incorrectly due to a swap 2017-05-17 17:06:40 -05:00
artemp
599f187968 update visual-data. 2017-05-17 21:20:03 +02:00
artemp
0968e13159 fix compile oops #3669 #3670 2017-05-17 17:41:44 +02:00
artemp
bf1225cd76 Use updated visual data from `tiff-multiband-grey' branch. 2017-05-17 15:17:28 +02:00
artemp
310eb71bdf TIFF I/O tests - refactor to reduce code duplication + remove std::cerr 2017-05-17 15:07:51 +02:00
artemp
6ac4ce66b3 TIFF I/O unit tests - check tiff_reader is able to read various permutations of TIFF format (rgb8|rgba8|gray8 + interleave:band|pixel + tiled|stripped)
(ref #3669 #3670)
2017-05-17 15:07:23 +02:00
artemp
ef9b1025fa fix bug - use tile_width_ and tile_height_ + cleanup 2017-05-17 14:55:41 +02:00
artemp
1d95cad922 TIFF I/O - make read_stripped handle both RGBA and raw encoded strips (#3670) 2017-05-16 13:44:55 +02:00
artemp
62260dd3d4 raster.input - increase default tile size to 1024x1024 px. 2017-05-16 13:43:52 +02:00
artemp
e8cd4b9aef TIFF I/O : update and fix logic handling rgba vs grey scale. 2017-05-12 18:39:58 +02:00
artemp
e62bf6e18f TIFF I/O - use scanline to read stripped grey for now. 2017-05-12 15:55:46 +02:00
artemp
5d48d98697 port latest changes from "raster_overzoom_quest" branch. 2017-05-12 15:37:12 +02:00
artemp
88fb137061 TIFF I/O - make read_tiled templated on ImageData ref #3669 #3670 (WIP) 2017-05-11 17:25:07 +02:00
artemp
74f295c6c4 small formatting 2017-05-11 16:58:37 +02:00
artemp
db2eaf2e2b TIFF I/O : add support for interleaved data in void tiff_reader<T>::read_tiled(std::size_t x0,std::size_t y0, ImageData & image) ref #3669 #3670 2017-05-11 12:13:07 +02:00
artemp
1725b1ebba TIFF.input - port changes from https://github.com/mapnik/mapnik/pull/3668 (ref #3669) 2017-05-10 14:33:29 +02:00
artemp
77f849b136 TIFF I/O : add support for multiple bands in 'scanline reading method in read_any_gray` (partially fixes #3669)
(NOTE: we default to `scanline` even for `stripped` images, TODO add support as per #3670)
2017-05-10 13:21:51 +02:00
artemp
6e025956ae add simple WKT round-trip test (required updated data) 2017-05-05 16:32:17 +02:00
artemp
97a796ba0e fix polygon_coord rule to generate required enclosing brackets. 2017-05-05 16:29:33 +02:00
artemp
2847c3bee9 format WKT to be able to test WKT<->WKT round-trip. 2017-05-05 16:28:05 +02:00
artemp
333ef9fde1 update copyright year 2017-05-05 13:02:01 +02:00
artemp
d84991bae3 add debug log 2017-05-04 10:50:49 +02:00
artemp
85aebf7268 set most common language based on script for each text run (#3655) 2017-05-03 10:23:42 +02:00
artemp
82b876e267 upgrade to the latest variant 2017-05-01 11:38:45 +02:00
artemp
8ff24d1193 Only log warning in --verbose mode. 2017-04-25 14:03:18 +02:00
Artem Pavlenko
6c23504667 Merge pull request #3660 from rinigus/master_sqlite_twkb
add twkb support to sqlite plugin
2017-04-24 10:04:59 +01:00
Rinigus
9de7397043 add twkb support to sqlite plugin 2017-04-23 22:49:36 +03:00
Dane Springmeyer
7bd317a1bf link -ldl last 2017-04-19 18:30:57 -07:00
Dane Springmeyer
359372d3b2 pgsql2sqlite:also link -ldl on linux 2017-04-19 18:10:25 -07:00
Dane Springmeyer
9e7c842a26 Fix spelling mistakes in changelog [skip ci] 2017-04-13 16:39:13 -07:00
artemp
e75db3aa18 make box2d<T> adapters more generic. 2017-04-10 13:18:00 +01:00
artemp
2e0e61453b sync CHANGELOG.md with 3.0.x branch 2017-04-06 10:49:18 +01:00
artemp
20824cce79 add const_interior_rings type and stop abusing type system. (NOTE: iterator/const_iterator types are required by boost::range_iterator) 2017-04-03 13:00:35 +01:00
Dane Springmeyer
adbbdea0fb add codecov ignores 2017-03-31 17:50:18 -07:00
artemp
53a32b59b9 add boost::geometry::traits::push_back specialisation for mapnik::interior_rings<CoordinateType> 2017-03-30 14:04:57 +01:00
artemp
22c38b1046 use master branch 2017-03-30 10:07:10 +01:00
artemp
d96e6abe81 const correctness via @flippmoke 2017-03-30 09:54:12 +01:00
Artem Pavlenko
a6d3921957 Merge pull request #3646 from mapnik/geometry.hpp
Geometry.hpp
2017-03-30 09:35:56 +01:00
artemp
ef7da04cc9 cleanup 2017-03-30 09:23:58 +01:00
artemp
e3bf8cb558 use range based loop via @flippmoke 2017-03-30 09:23:11 +01:00
artemp
c28bf77d5d Merge branch 'master' into geometry.hpp 2017-03-30 08:23:56 +01:00
artemp
f9bfa596f1 update visual data 2017-03-30 08:05:24 +01:00
artemp
dd079183c5 add boost::geometry::resize and boost::geometry::clear traits specialisations for mapnik::interior_rings<CoordinateType> 2017-03-29 17:44:07 +01:00
artemp
433d95046b re-enable strategy tests 2017-03-29 15:41:39 +01:00
artemp
3e803b52bb remove has_empty + fix is_empty implementaion to work with geometry.hpp 2017-03-29 11:39:04 +01:00
Dane Springmeyer
5c81e80837 update test data to stay in sync with 3.0.x branch - mapnik/test-data-visual#46 2017-03-28 22:28:55 -07:00
Dane Springmeyer
d65fd4f7f7 improve check padding script to see deps via submodules 2017-03-28 15:19:14 -07:00
Dane Springmeyer
a53c90172c remove obsolete python remnants 2017-03-28 15:18:48 -07:00
Dane Springmeyer
641d7b647f consistently use pkg-config in both postgis plugin and pgsql2sqlite + use GDAL_CONFIG var in plugins 2017-03-28 15:18:48 -07:00
artemp
064b99168b geometry.hpp 2017-03-27 16:14:51 +01:00
artemp
1be4696d52 GeoJSON IO test - ensure geometries round-trip. 2017-03-23 14:58:39 +00:00
artemp
69e5340ceb add valid/invalid empty GeoJSON geometry tests 2017-03-23 13:44:51 +00:00
artemp
60e6f5a9ff geojson - fix geometry generator grammar. 2017-03-22 15:09:15 +00:00
Artem Pavlenko
135f70844b Merge pull request #3643 from mapnik/empty-geometries
Empty geometries
2017-03-22 09:10:03 +00:00
artemp
38b4b65911 GeoJSON - refactor geometry generator to preserve geometry type in output (ref https://github.com/mapnik/python-mapnik/issues/139) 2017-03-21 16:48:41 +00:00
artemp
b4b5e33b05 refactor WKT generator to retain geometry type for empty geometries (avoid short-cutting to POINT EMPTY)
For example:

| in |   | out   |
|`POINT EMPTY` |  <--> | 'POINT EMPTY`|
|`LINESTRING EMPTY` |  --> | 'POINT EMPTY`|

| in |   | out   |
|`POINT EMPTY` |  <--> | 'POINT EMPTY`|
|`LINESTRING EMPTY` |  <--> | 'LINESTRING EMPTY`|
etc.
2017-03-21 12:43:42 +00:00
artemp
d9063db0a0 GeoJSON - make geometry element stricter and throw on invalid input. 2017-03-21 12:40:58 +00:00
artemp
8a18ef93e0 update test data 2017-03-20 15:03:28 +00:00
artemp
5450255c5b revert back to separate tests #if HB_VERSION_MAJOR > 0 #if HB_VERSION_ATLEAST(1, 0 , 5) ref #3642 2017-03-20 14:24:34 +00:00
Dane Springmeyer
edaca3a015 update sqlite, icu, ccache, and libpq 2017-03-19 12:41:48 -07:00
artemp
f8241a96fb update visual data 2017-03-16 13:04:05 +00:00
artemp
a9aa1c69b8 save_map - support nested layers + serialize layer compositing mode 2017-03-16 12:59:52 +00:00
artemp
bb19ff948e remove QMAKE_MAC_SDK version requirement - just build with what is available 2017-03-16 12:16:54 +00:00
artemp
d44f7cc0a8 Merge branch 'mapycz-nested-layers' 2017-03-16 11:32:14 +00:00
artemp
c3bba38012 Merge branch 'nested-layers' of https://github.com/mapycz/mapnik into mapycz-nested-layers 2017-03-16 11:31:55 +00:00
Artem Pavlenko
c35ad96428 Merge pull request #3639 from mapnik/remove-mason-latest
Remove auto-publishing to mason
2017-03-16 10:06:31 +00:00
Jiri Drbalek
15daac26e7 cairo support for layer level comp-op and opacity 2017-03-16 06:54:16 +00:00
Jiri Drbalek
d7ba7dc0db agg renderer: recycle internal buffers 2017-03-16 06:54:16 +00:00
Jiri Drbalek
03929b5c76 nested layers, layer level comp-op and opacity 2017-03-16 06:54:16 +00:00
Dane Springmeyer
ee65bd33e3 remove auto-publishing to mason 2017-03-15 14:15:22 -07:00
Dane Springmeyer
0c24558db8 Merge pull request #3638 from mapnik/3.1.x-mason-upgrades
3.1.x mason upgrades
2017-03-15 12:26:46 -07:00
Dane Springmeyer
710379dce2 add codecov badge, drop coveralls [skip ci] 2017-03-15 10:05:09 -07:00
Dane Springmeyer
571ead47bc use clang++ 3.9.1 2017-03-15 09:44:33 -07:00
Dane Springmeyer
69fc58191f update compiler in circle 2017-03-15 09:41:13 -07:00
Dane Springmeyer
f42344e102 port 3614 to 3.1/master 2017-03-15 09:41:13 -07:00
artemp
d009bb8231 update visual data 2017-03-14 12:33:54 +00:00
artemp
21baa9e375 Merge branch 'lightmare-postgis-quoting' 2017-03-14 12:29:54 +00:00
artemp
1d06afeea2 Merge branch 'postgis-quoting' of https://github.com/lightmare/mapnik into lightmare-postgis-quoting 2017-03-14 12:29:32 +00:00
artemp
f3f4de154b Merge branch 'mapycz-text-extend' 2017-03-14 11:54:08 +00:00
artemp
c1053181f5 Merge branch 'text-extend' of https://github.com/mapycz/mapnik into mapycz-text-extend 2017-03-14 11:53:52 +00:00
artemp
b10d2a3dff Merge remote-tracking branch 'origin/master' 2017-03-14 11:35:20 +00:00
artemp
0e107135b2 update deps 2017-03-14 11:34:12 +00:00
Artem Pavlenko
a3d29ae52f Merge pull request #3636 from mapnik/color-emoji
Color emoji + updated harfbuzz_shaper and unicode_string_grammar
2017-03-14 11:22:57 +00:00
artemp
0dff423c44 cleanup 2017-03-14 11:22:11 +00:00
artemp
834f0ef312 add '-fno-omit-frame-pointer' to sanitize address builds for nicer stack traces in error messages. 2017-03-14 11:17:54 +00:00
artemp
203d767e73 follow up from 32f5703ed1 - more generic specialisation 2017-03-14 10:26:09 +00:00
artemp
32f5703ed1 provide is_substitute specialisation for mapnik::geometry::linear_ring<double> const& (gcc6) 2017-03-14 11:05:33 +01:00
artemp
cdfe280984 use updated test data 2017-03-08 10:56:32 +01:00
artemp
ae29012611 tests - update shaping test results 2017-03-08 10:55:52 +01:00
artemp
3ac70bb7ce update font_registration testx 2017-03-08 10:54:58 +01:00
artemp
791f7b51bb Revert "one more time."
This reverts commit 8dea549887.

Revert "fix following up 8c4fa25c8d65e75978c0a82bc6391906595ff190"

This reverts commit 8726312393.

Revert "attempt to fix "error: chosen constructor is explicit in copy-initialization" error with gcc"

This reverts commit 8c4fa25c8d.

Revert "use `initializer_list const&` to hold expected values (via @lighmare) ref #3636"

This reverts commit 47763afef3.
2017-03-07 14:25:56 +01:00
artemp
8dea549887 one more time. 2017-03-07 13:50:27 +01:00
artemp
8726312393 fix following up 8c4fa25c8d 2017-03-07 13:37:20 +01:00
artemp
8c4fa25c8d attempt to fix "error: chosen constructor is explicit in copy-initialization" error with gcc 2017-03-07 13:34:43 +01:00
artemp
47763afef3 use initializer_list const& to hold expected values (via @lighmare) ref #3636 2017-03-07 13:02:21 +01:00
artemp
d9a000372c remove -Wshadow warning (ref #3628) 2017-03-07 11:28:22 +01:00
artemp
3433397c30 test (expressions) - add more tests (ref #3616) 2017-03-06 15:59:07 +01:00
artemp
7f28246407 print compiler version during configure step (ref #3616) 2017-03-06 09:54:02 +01:00
artemp
4d57fb1a6c print compiler version during configure step (ref #3616) 2017-03-06 09:53:13 +01:00
artemp
a50efcb2bb refactor unicode string grammar - add escaped_unicode rule + use it in expressions. 2017-03-03 15:41:46 +01:00
artemp
fb7139bc63 expressions - only import escaped rule from unicode_string_grammar and construct single/double quoted string rules locally to match expression grammar. NOTE: single quoted strings don't accept unicode encodings 2017-03-03 15:14:01 +01:00
artemp
713b9e7788 take #2 - try using pair instead of tuple 2017-03-02 15:09:11 +01:00
artemp
f1de5758b2 attempting to pacify some compilers with an extra pair of brackets. 2017-03-02 14:55:00 +01:00
artemp
4509f23c94 Merge branch 'harfbuzz-shaper' into color-emoji 2017-03-02 12:27:45 +01:00
artemp
ab36ef9274 update visual test data to track harfbuzz-shaper branch. 2017-03-02 12:26:17 +01:00
artemp
1bdc8e6bad handle utf16 encoding correctly by parsing as sequence and applying utf16->utf32->utf8 conversion. 2017-03-02 11:50:38 +01:00
artemp
92f07b7a7a handle utf16 encoding correctly by parsing as sequence and applying utf16->utf32->utf8 conversion. 2017-03-01 18:46:48 +01:00
artemp
04dd05c971 minimise shared_ptr assignments and simplify code 2017-03-01 12:59:34 +01:00
artemp
d29be8a689 If I'm reading docs correctly \uNNNN + \UNNNNNNNN are correct
Revert "relax hex4 parser to allow 5 character \unnnnn code points"

This reverts commit 378fa41db6.
2017-03-01 12:08:22 +01:00
artemp
2d2c5a191b expression_grammar: re-use unicode_string_grammar and add initial support for \uNNNNN code points (TODO) 2017-03-01 11:58:18 +01:00
artemp
378fa41db6 relax hex4 parser to allow 5 character \unnnnn code points 2017-03-01 11:53:27 +01:00
artemp
571b2a0d6a Merge branch 'harfbuzz-shaper' into color-emoji 2017-03-01 11:30:33 +01:00
artemp
7cb587a901 Merge branch 'master' into harfbuzz-shaper 2017-03-01 11:30:08 +01:00
artemp
131f785dce Make parsing \xXX format strict via hex2 parser + append UTF8 encoded \xXX characters directly (fixes #3631) 2017-03-01 11:25:43 +01:00
artemp
e95b16c5ca make hex parser strict (expecting two characters after \x) to avoid greedy parsing of trailing characters as in
"\xF0\x9F\x8D\xB7abc" ==>  ... + "\xB7" +  "abc" not "\xB7abc"
2017-03-01 10:35:39 +01:00
artemp
0076a5a916 make hex parser strict (expecting two characters after \x) to avoid greedy parsing of trailing characters as in
"\xF0\x9F\x8D\xB7abc" ==>  ... + "\xB7" +  "abc" not "\xB7abc"
2017-03-01 10:34:16 +01:00
artemp
570126bd76 make hex parser strict (expecting two characters after \x) to avoid greedy parsing of trailing characters as in
"\xF0\x9F\x8D\xB7abc" ==>  ... + "\xB7" +  "abc" not "\xB7abc"
2017-03-01 10:27:12 +01:00
artemp
87c619cdc2 don't forget FT_LOAD_NO_HINTING 2017-02-28 15:13:40 +01:00
artemp
cbacaaf0c5 initialize to reasonable values. 2017-02-28 15:05:37 +01:00
artemp
1b67779290 implement color bitmap extraction/scaling/compositing into target pixmap 2017-02-28 15:04:49 +01:00
artemp
639dcae83f c++ style 2017-02-28 15:03:26 +01:00
artemp
7c93514fbc avoid division by zero (units_per_EM is set to 0 for bitmap fonts) 2017-02-28 15:01:46 +01:00
artemp
a6519c3f6b use FT_Load_Sfnt_Table to identify color fonts + load color glyphs with FT_LOAD_COLOR 2017-02-28 15:00:03 +01:00
artemp
8e97803e81 add color_font_ member 2017-02-28 14:59:14 +01:00
artemp
5492d93ccd Merge branch 'master' into harfbuzz-shaper 2017-02-27 13:24:11 +01:00
artemp
3eabd3141a sync mapnik-index and shapeindex versions with mapnik via MAPNIK_VERSION_STRING 2017-02-27 13:22:55 +01:00
artemp
6db89d459e Merge remote-tracking branch 'origin' into harfbuzz-shaper 2017-02-27 10:26:54 +01:00
Artem Pavlenko
147313af55 Merge pull request #3624 from poggs/master
Rename PostGIS' ST_Estimate_Extent to ST_EstimateExtent
2017-02-27 10:25:48 +01:00
Mickey Rose
8292edaa1a strip boost::optional from non-optional marker ptr 2017-02-22 13:37:52 +01:00
artemp
32e592fb7a use explicit const& 2017-02-22 12:33:18 +01:00
Mickey Rose
5464ae9cdf load_map: avoid segfault when ShieldSymbolizer has invalid placements 2017-02-22 12:25:20 +01:00
artemp
4faf5b054b add utf8 qualifier 2017-02-22 11:34:47 +01:00
artemp
0c0f3f1298 update test/data 2017-02-22 11:34:01 +01:00
artemp
b8523682cd use latest variant 2017-02-22 11:32:00 +01:00
artemp
43d940fe35 add berber+arabic shaping test 2017-02-22 11:31:06 +01:00
artemp
5e709997f2 add explicit u8 (utf8) qualifier 2017-02-21 13:37:22 +01:00
artemp
10b1ed2fa9 add debug mode to generate expected result + add one more test 2017-02-21 13:17:41 +01:00
artemp
8af91146c4 add an extra test 2017-02-21 12:56:36 +01:00
artemp
677ed0ebab refactor to make it easier to run multiple tests 2017-02-21 12:43:54 +01:00
artemp
745c291b1a simplify test 2017-02-20 14:23:09 +01:00
artemp
3584970fee make shaping unit test test something (work-in-progress) 2017-02-20 12:13:00 +01:00
artemp
d9c81d46fd use else if 2017-02-20 12:12:22 +01:00
Peter Hicks
f776977982 Rename PostGIS' ST_Estimate_Extent to ST_EstimateExtent 2017-02-19 20:46:30 +00:00
artemp
86e5f9305b quarantee glyphinfos has enough capacity to hold cluster 2017-02-17 17:16:36 +01:00
artemp
fbdff42d47 use std::vector<std::vector<T>> instead of std::map<unsigned,std::vector> to simplify lookups 2017-02-17 16:52:31 +01:00
artemp
20cafae780 ensure insert has worked 2017-02-17 15:40:37 +01:00
artemp
e55918788c fix test logic 2017-02-17 15:32:03 +01:00
artemp
302e4c75dd simplify further 2017-02-17 15:28:13 +01:00
artemp
fe7d1e2f53 simplify logic 2017-02-17 15:23:00 +01:00
artemp
49c28cb6ad new font fallback implementation - it is rather inefficient but attempting to do a right thing.
(NOTE: some visual text failures need further look to see if latest implementation is correct)
2017-02-17 14:20:32 +01:00
artemp
a5f00c6fa1 Merge branch 'master' into harfbuzz-shaper 2017-02-17 14:06:44 +01:00
Mickey Rose
428ba432b1 pgraster: copy quoting and interpolation changes from postgis 2017-02-10 18:55:23 +01:00
Mickey Rose
e35c1ca106 pgraster: indentation 2017-02-10 18:55:23 +01:00
Mickey Rose
a13cb382e0 postgis: test !@uservar! interpolation 2017-02-10 18:55:23 +01:00
Mickey Rose
6bbb391005 postgis: consistently quote parameters in sql 2017-02-10 18:55:22 +01:00
Mickey Rose
2587bb3a1d sql_utils: improved table_from_sql 2017-02-10 18:55:22 +01:00
Mickey Rose
a4e8ea21be sql_utils: deprecate flawed un-quote functions
unquote* just strip all quotes from both ends of the string,
and don't collapse inner quotes.

quote_attr doesn't duplicate inner quotes.
2017-02-10 18:55:22 +01:00
Mickey Rose
d0e7b715dd postgis: test table/column names containing quotes 2017-02-10 18:55:22 +01:00
Mickey Rose
d331b9d66a postgis: revamp substitution of special tokens in query
- replace boost::regex with std::regex
- use regex to match both  !mapnikvar!  and  !@uservar!
- no longer support @uservar (without surrounding !s)
2017-02-10 18:55:22 +01:00
Mickey Rose
195c3e14ce postgis: test query containing 'email@domain' 2017-02-10 18:55:22 +01:00
Mickey Rose
7b217133e2 sql_utils: on-the-fly quoting via operator << 2017-02-10 18:55:22 +01:00
artemp
4b17a417dc Merge remote-tracking branch 'origin/master' 2017-02-06 12:59:24 +01:00
artemp
f85636f769 mapnik-index - log and return on invalid bounding box if validate_features is set. 2017-02-03 10:10:09 +01:00
Mickey Rose
8e34b323b5 define PNG_FAST_FILTERS if png.h doesn't have it 2017-02-02 12:19:17 +01:00
Mickey Rose
7e2aab171f include png.h outside any namespace 2017-02-02 12:19:17 +01:00
artemp
5c9e48ef0c minor c++ style 2017-01-31 18:00:26 +01:00
artemp
755d178d20 alternative exaustive face fallback implementation ref #3534 #3559 2017-01-31 17:44:25 +01:00
artemp
df51f6087c minor c++ style 2017-01-31 17:42:24 +01:00
artemp
d053bddb43 add support for PNG filters (http://www.libpng.org/pub/png/libpng-manual.txt) ref #3479 2017-01-26 15:45:08 +01:00
artemp
2ede054e93 c++ style - use pre-(de)increment operators by default 2017-01-26 14:19:28 +01:00
artemp
f13848e210 move box2.hpp and related files into geometry dir 2017-01-26 09:51:37 +01:00
artemp
69bb8f4328 update test data 2017-01-20 09:43:37 +01:00
artemp
7c6f335fa5 fix blank line test for require headers.size() == 1 + reduce stderr verbosity. 2017-01-17 17:54:09 +01:00
artemp
a108068cf6 fix remaning std::fread usage - check return value 2017-01-13 14:57:15 +01:00
artemp
a220bda05d check return value from std::fread 2017-01-13 14:38:00 +01:00
artemp
bfc7ad397a update variant 2017-01-13 09:52:16 +01:00
artemp
f76060274d Revert back again fixing a typo! (thanks @springmeyer 2f55f0962e (commitcomment-20461372))
"It doesn't work with GCC reverting back "disable [-Wunused-result] warning GCC : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509""

This reverts commit 2f55f0962e.
2017-01-13 09:42:12 +01:00
artemp
28c51df986 more fix GCC shadows a member warning [-Wshadow] 2017-01-13 09:38:54 +01:00
artemp
1b940bebcc attributes not opacity (ref 1c704447b7) 2017-01-12 18:18:39 +01:00
artemp
1c704447b7 more fix GCC shadows a member warning [-Wshadow] 2017-01-12 18:09:10 +01:00
artemp
0a7e8bb429 fix GCC shadows a member warning [-Wshadow] 2017-01-12 17:48:56 +01:00
artemp
2f55f0962e It doesn't work with GCC reverting back "disable [-Wunused-result] warning GCC : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509"
This reverts commit 3c76e8d7ef.
2017-01-12 11:39:57 +01:00
artemp
3c76e8d7ef disable [-Wunused-result] warning GCC : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509 2017-01-12 11:23:46 +01:00
artemp
7db3beda01 add parentheses to supress gcc warning [-Wparentheses] 2017-01-12 10:55:33 +01:00
artemp
de2b44712a move transform related headers into transform dir to minimize clutter 2017-01-11 11:10:03 +01:00
artemp
e582ca65b5 update test to include underscore characters in global attributes 2017-01-11 10:39:02 +01:00
artemp
91f9508654 relax expression_grammar: allow _ underscore characters in global attribute names 2017-01-11 10:38:11 +01:00
artemp
11c3d97654 transform_expressions_test - add global attribute tests ( e.g @value ) ref #3569 2017-01-11 10:25:21 +01:00
artemp
f207ec2da2 cleanup 2017-01-10 17:19:28 +01:00
artemp
fa7851ea06 add transform expressions tests (https://github.com/mapnik/mapnik/pull/141\
6) (ref #3569)
2017-01-10 17:15:05 +01:00
artemp
65dcb1c935 fix transform grammar to support whitespace/comma argument separation rules (https://github.com/mapnik/mapnik/pull/1416) ref #3569 2017-01-10 17:13:45 +01:00
artemp
243963fc2b expression_test - add tests for arbitrary space in mapnik::geometry_type attributes 2017-01-10 11:57:54 +01:00
artemp
7326c0d558 expressions - simplify attribute parsing by combining feature attribute and geometry_type attribute processing. 2017-01-10 11:54:08 +01:00
Artem Pavlenko
e5a93bce52 Merge pull request #3596 from mapycz/text-simple-placement-center
Text simple placement: add center 'C' placement
2017-01-09 11:57:03 +01:00
artemp
6190784350 remove remaining usage of deprecated dymamic exceptions: dtors are implicitely noexcept + qualify what methods with noexcept 2017-01-09 11:47:52 +01:00
artemp
baded7d9ab fix typo 2017-01-09 11:45:15 +01:00
artemp
4bc3a79f8c remove bogus throw() specifier from 'add_attribute' 2017-01-09 11:35:14 +01:00
Jiri Drbalek
4eae86b7bc text simple placement: add center 'C' placement 2017-01-08 09:05:44 +00:00
Jiri Drbalek
10deff9d5d remove unnecessary breaks 2017-01-08 09:04:12 +00:00
artemp
d9d842f29c dynamic exceptions deprecated in c++11 and removed in c++17 (http://en.cppreference.com/w/cpp/language/except_spec) 2017-01-06 19:06:49 +01:00
artemp
6e3dc91325 remove demo/python (moved to python-mapnik) 2017-01-05 16:51:59 +01:00
Dane Springmeyer
4a99e00177 Point as latest mason rather than branch 2017-01-04 11:45:03 -08:00
artemp
07ab49830f disable is_substitute instantiation for BOOST_VERSION > 106300, fixes gcc6+boost-1_63 build 2017-01-04 18:39:42 +01:00
artemp
e210dfaf8c fix GCC warning by adding missing parentheses around comparison in operand of '|' 2017-01-04 18:23:31 +01:00
Artem Pavlenko
d99c3f6cf2 Merge pull request #3585 from lightmare/groupsym-thunk-list
minor render_thunk_list change
2017-01-04 10:29:49 +01:00
Mickey Rose
ca89c587bd can't store noncopyable list in std::vector
std::list can have a throwing move constructor.
std::vector of such lists makes copies when growing its storage array,
it doesn't move them.
render_thunk_list is noncopyable (because render_thunk is noncopyable),
and so can't be stored in std::vector in some STL implementations.
2017-01-03 21:43:14 +01:00
Mickey Rose
962bcf84c5 change render_thunk_list to std::list<render_thunk>
Wrapping render_thunk in std::unique_ptr is one extra allocation per
element, with no purpose. The somewhat costly xyz_render_thunk move
constructor is only called once upon insertion, regardless of whether
we're emplacing render_thunk or unique_ptr.
2017-01-03 20:53:55 +01:00
artemp
d3a9e4c4d7 revive support for an empty array => geometry_empty
RFC 7946 "...GeoJSON processors MAY interpret Geometry objects with
          empty "coordinates" arrays as null objects."
2017-01-03 16:17:46 +01:00
artemp
7a8e8014b7 Revert "add ```template <typename T>" - oops we don't need this in master!
This reverts commit b3c4aff2c7.
2017-01-03 11:28:40 +01:00
artemp
b3c4aff2c7 add ```template <typename T>
transform_node(boost::value_initialized<T> const&)
          : base_() {}
``` to address

```c:\mb\windows-builds-64\packages\mapnik-windows\include\mapnik/transform_expression.hpp(175):
error C2664: 'mapbox::util::variant<mapnik::identity_node,mapnik::matrix_node,mapnik::translate_node,mapnik::scale_node,mapnik::rotate_node,mapnik::skewX_node,mapnik::skewY_node>::variant(mapbox::util::variant<mapnik::identity_node,mapnik::matrix_node,mapnik::translate_node,mapnik::scale_node,mapnik::rotate_node,mapnik::skewX_node,mapnik::skewY_node> &&) noexcept(false)':
cannot convert argument 1 from 'const boost::value_initialized<T>' to 'mapbox::util::no_init' [c:\mb\windows-builds-64\packages\mapnik-windows\mapnik-gyp\build\mapnik.vcxproj]
```
when building with VS2017 RC
2017-01-03 11:24:32 +01:00
artemp
d5405d55c7 use a copy of start iterator when extracting bounding boxes + increase verbose output on failures 2017-01-02 11:47:26 +01:00
lightmare
e41f41b0a6 Merge pull request #3566 from mapycz/better-largest-bbox
Better largest bbox
2017-01-02 03:25:14 +01:00
lightmare
a40ce9eefd Merge pull request #3578 from mapnik/cxx11-friendly
C++14-like type traits aliases
2017-01-02 03:24:59 +01:00
artemp
ed648ced46 SVG transform - implement in terms of boost::spirit::x3 2016-12-23 16:32:05 +01:00
artemp
3b52ae97c0 add missing header 2016-12-23 14:42:18 +01:00
artemp
95cc560167 SVG points - implement using boost::spirit::x3 + refactor parse_rule instantiations into separate *.cpp 2016-12-23 14:40:59 +01:00
artemp
584fda88e0 SVG path grammar - return start rule by const& 2016-12-23 13:26:37 +01:00
artemp
30749031cf SVG path parser - boost::spirit::x3 based implementation 2016-12-22 14:57:26 +01:00
artemp
9d0096eff6 remove unused include directive 2016-12-21 15:20:52 +01:00
artemp
506390b735 use curly braces initialiser (c++ style) 2016-12-21 09:05:31 +01:00
artemp
8452410784 minor formatting 2016-12-20 18:37:20 +01:00
artemp
5745bedbd9 update copyright year to 2016 2016-12-20 17:57:22 +01:00
artemp
7f4fd0cc76 include guards - add missing and normalise namings 2016-12-20 17:45:38 +01:00
artemp
b73901edab remove from forthcoming 3.1.x release 2016-12-20 17:45:00 +01:00
artemp
f3cd36f0cd reserve std::vector capacity prior oppending + remove const qualifier 2016-12-20 10:40:50 +01:00
artemp
8b049230b3 topojson_grammar_x3 : make rules const 2016-12-20 10:31:52 +01:00
artemp
f1ccc66162 avoid parsing synthesised std::tuple<> + more fine-grained rules 2016-12-19 17:53:58 +01:00
artemp
47cdd22fad simplify further 2016-12-19 17:06:27 +01:00
artemp
4475754e8a deduce types 2016-12-19 17:02:45 +01:00
artemp
c5b5bc0237 fix namespace prefix 2016-12-19 16:34:16 +01:00
artemp
18f721fd17 TopoJSON - implement parsing using spirit::x3 2016-12-19 16:18:19 +01:00
artemp
053eca1232 JSON - add geometry_grammar_x3 2016-12-16 11:21:20 +01:00
Dane Springmeyer
068ead5a13 remove duplicate sudo:false from travis 2016-12-15 13:34:08 -08:00
Mickey Rose
e6ed16e94e make mapnik_value_type_t C++11-friendly 2016-12-15 11:58:50 +01:00
Mickey Rose
568507349b bring C++14 type traits aliases for C++11 support 2016-12-15 11:51:02 +01:00
artemp
7affd45511 refactor json_value into separate header and reduce include bloat 2016-12-15 11:29:29 +01:00
artemp
b5b6548a81 update variant 2016-12-15 10:34:40 +01:00
artemp
4ba87b1e9d c++14 support is not sufficient on windows: reverting back and start tracking Windows workarounds in separate branch
Revert "move BOOST_SPIRIT_DEFINE into separate headers + use across all grammar defs (#3573)"

This reverts commit 81cfa721db.

Revert "windows : fix errors C3259 + C3249"

This reverts commit 8327905aba.

Revert "Workaround for VC++ C2995 via redifining BOOST_SPIRIT_DEFINE macro (#3573)"

This reverts commit 2a2f0bf00a.
2016-12-14 17:11:59 +01:00
artemp
81cfa721db move BOOST_SPIRIT_DEFINE into separate headers + use across all grammar defs (#3573) 2016-12-14 16:35:24 +01:00
artemp
8327905aba windows : fix errors C3259 + C3249 2016-12-14 15:53:07 +01:00
artemp
2a2f0bf00a Workaround for VC++ C2995 via redifining BOOST_SPIRIT_DEFINE macro (#3573) 2016-12-14 15:10:22 +01:00
artemp
9f91bb018a update deps 2016-12-14 11:17:42 +01:00
artemp
e46785a063 wrap grammar into anonymous namespace - attempting to fix VC++ compilation issue (#3573) 2016-12-14 10:49:11 +01:00
Artem Pavlenko
9010cd9ac6 Merge pull request #3572 from mapnik/issue-3570
simplify mapnik::value conversion rules
2016-12-14 10:22:35 +01:00
Mickey Rose
7c14964de3 simplify mapnik::value conversion rules
- fixes #3570

- avoids recursive exception-specification on value constructor
  by only constructing a temporary for arithmetic types (everything
  else passes a reference to the base variant constructor)

- also removes `is_same<decay_t<T>, value>` SFINAE check -- because
  we're only passing a reference down, explicitly forcing the compiler
  to use the implicitly-defined copy/move instead is pointless
2016-12-14 02:37:27 +01:00
artemp
81fafe8198 update test to use std::unordered_map<mapnik::value, mapnik::value> 2016-12-13 17:03:09 +01:00
artemp
e3a1efabe9 use latest mapbox::variant 2016-12-13 16:39:16 +01:00
artemp
e40a1d9a15 expand std::hash<mapnik::value> and operator== test for all types in mapnik::value 2016-12-13 16:16:19 +01:00
artemp
c2a61161a6 remove hash_combine (unused) 2016-12-13 15:51:57 +01:00
artemp
0307499753 simplify hash calculation (we don't need combine with which(), using hash<T> is sufficient) 2016-12-13 15:50:00 +01:00
artemp
8e15353818 minor format tweak 2016-12-13 15:49:03 +01:00
artemp
b7a4cd99d7 update BOOST_MIN_VERSION to 1.61 2016-12-09 17:55:51 +01:00
artemp
2924d736a8 update version to 3.1.0 2016-12-09 17:07:23 +01:00
artemp
fc54faac54 make parse_map_sizes standalone method + upgrade parser to use boost::spirit::x3 2016-12-09 11:52:25 +01:00
artemp
c5174d2862 port parse_hex to use boost::spirit::x3 2016-12-09 11:49:53 +01:00
artemp
5eaf37404a remove unused using directive 2016-12-09 11:49:08 +01:00
artemp
0d703ee552 cleanup include directives 2016-12-08 18:55:55 +01:00
artemp
1372ca48ef SConstruct - require c++14 2016-12-08 10:43:25 +01:00
artemp
fe7e9a7dc5 use mapbox namespace to fix name resolution 2016-12-06 15:14:28 +01:00
artemp
87c65e888d update variant dep 2016-12-06 14:56:52 +01:00
artemp
a07a8cd6fe use <mapnik/util/variant_io.hpp> which has specialisation for boolean type 2016-12-06 14:56:04 +01:00
artemp
df10fab439 only add valid bounding boxes (make backward compatible) 2016-12-06 12:23:09 +01:00
talaj
218fba4479 Merge pull request #3529 from lightmare/group-pair-layout
fix #3526 GroupSymbolizer PairLayout with 3+ items
2016-12-05 21:35:11 +01:00
Mickey Rose
cb41fc5d48 fix #3526 GroupSymbolizer PairLayout with 3+ items 2016-12-05 16:26:03 +01:00
Jiri Drbalek
6364e07d71 duplicate code elimination 2016-12-05 11:25:33 +01:00
Jiri Drbalek
2174c10b2f find max element instead of std::sort 2016-12-03 14:33:55 +00:00
Jiri Drbalek
4cdc3428bd remove redundant code 2016-12-03 13:10:07 +00:00
Dane Springmeyer
ec5964d855 Merge pull request #3568 from mapnik/gcc-again
Travis: Add g++ testing, upgrade to clang++ 3.9, downgrade to libstdc++-4.9
2016-12-02 14:11:09 -08:00
Dane Springmeyer
05936826b3 allow visual test failures with g++ https://github.com/mapnik/mapnik/issues/3567 2016-12-02 14:05:16 -08:00
Dane Springmeyer
8262eb5206 avoid -Wshadow and 'unrecognized command line option' with gcc 2016-12-02 13:43:43 -08:00
Dane Springmeyer
9cc8af9173 try g++6 on precise 2016-12-02 13:43:42 -08:00
Dane Springmeyer
e57ac30690 use clang 3.9, g++-6 2016-12-02 13:43:42 -08:00
artemp
5ea5f18a7e cleanups 2016-12-02 12:42:07 +01:00
artemp
6824f4c477 fix more gcc warnings 2016-12-02 11:42:57 +01:00
artemp
069de8e266 fix gcc6 compilation issue 2016-12-02 11:04:11 +01:00
Dane Springmeyer
8b6059eab6 mason packages are currently built with -D_GLIBCXX_USE_CXX11_ABI=0 2016-12-01 09:50:34 -08:00
artemp
2f8da6dfd5 reduce compiler warnings (gcc 6) 2016-12-01 17:17:56 +01:00
artemp
410a2ce7ca from_geojson(json, geometry) - remove temp feature/ parse directly into geometry 2016-11-30 12:21:56 +01:00
artemp
56d5ffb473 remove unused headers 2016-11-30 12:21:38 +01:00
artemp
b01481ded7 refactor feature_grammar_x3 to have a cleaner separation between feature and geometry rules 2016-11-30 11:33:35 +01:00
artemp
2dc57effb8 allow null geometry 2016-11-29 16:26:58 +01:00
Artem Pavlenko
2f5c12f28a Merge pull request #3560 from mapycz/minor-cleanup
remove methods that are not referenced anywhere
2016-11-29 16:02:58 +01:00
Jiri Drbalek
2b852ad1f9 remove methods that are not referenced anywhere 2016-11-29 14:55:06 +00:00
artemp
f7cf220688 fix Makefike - remove utils/mapnik-index/process_geojson_file.o 2016-11-29 15:28:32 +01:00
artemp
9887270b9e Merge branch 'develop-master' 2016-11-29 11:18:31 +01:00
artemp
d88bf9e1ef remove unused old headers 2016-11-29 10:48:48 +01:00
artemp
36eb7f61bd implement from_geojson in terms of parse_(feature|geometry) 2016-11-29 10:48:06 +01:00
artemp
941a025682 remove spirit::qi usage from (Geo)JSON 2016-11-29 10:46:23 +01:00
artemp
0ec510025d mapnik-index - remove -x3 option, use process_geojson_x3 always 2016-11-29 09:20:41 +01:00
artemp
2fcd608ab3 remove spirit spirit::qi usage 2016-11-28 18:42:29 +01:00
artemp
160c1c9471 pass iterator pair by ref,const& ref to match spirit::x3 APIs and be able check for fully consumed input (needed by geojson.input logic) 2016-11-28 18:40:03 +01:00
artemp
f4f39993d0 allow accessing geometry by ref 2016-11-28 18:38:40 +01:00
artemp
cc9f23c470 allow empty "properties" 2016-11-28 18:38:04 +01:00
artemp
b05d0caba1 implement support for "GeometryCollection" type 2016-11-28 17:05:46 +01:00
artemp
0ea1c7cce2 Merge branch 'master' into develop-master 2016-11-28 15:26:13 +01:00
artemp
e6eda7e8b9 use parse_feature() 2016-11-28 10:28:12 +01:00
artemp
ac3e72703d use spirit::x3 based extract_bounding_boxes 2016-11-28 10:16:25 +01:00
artemp
1e2b4c6bc1 instantiate require parse_rule's 2016-11-28 10:15:17 +01:00
artemp
af1b39c689 support both box2d<float> and box2d<double> 2016-11-28 10:14:49 +01:00
artemp
f422da8681 sanitise parse_rule instantiations via BOOST_SPIRIT_INSTANTIATE and OOST_SPIRIT_INSTANTIATE_UNUSED macros 2016-11-27 17:07:04 +01:00
artemp
d4e1cb9ae7 add an extra extract_bounding_boxes_reverse_context_type definition 2016-11-27 17:06:02 +01:00
Artem Pavlenko
765922e42f Merge pull request #3556 from mapnik/minor-cleanup
remove superfluous declaration
2016-11-25 20:39:23 +01:00
artemp
f32b423428 attempting to keep clang on Travis happy 2016-11-25 17:59:44 +01:00
artemp
c04d8bf082 re-enable GeoJSON feature validation 2016-11-25 17:50:33 +01:00
artemp
8158293b16 fix std:: namespace :) 2016-11-25 17:47:41 +01:00
artemp
1a16dfd8c2 fix namespace 2016-11-25 17:19:30 +01:00
artemp
c5e44cc7a6 add missing extract_bounding_boxes_x3.cpp back 2016-11-25 17:16:13 +01:00
artemp
a40d4ee83f Revert "move extract_bounding_boxes_x3 back into mapnik-json.a"
This reverts commit 44fc648cad.
2016-11-25 17:01:01 +01:00
artemp
483f709541 don't include xxx_def.hpp + make rules const 2016-11-25 16:52:56 +01:00
artemp
7decec426d mapnik-index update build script 2016-11-25 16:52:19 +01:00
artemp
7a819d94fa manually add missing parse_rule instantiation (FIXME) <-- must a better way perhaps via adding another macro 2016-11-25 16:51:15 +01:00
artemp
236d42402f instatiate parse_rules via BOOST_SPIRIT_INSTANTIATE 2016-11-25 16:50:15 +01:00
artemp
8a436c8cdc add extract_bounding_boxes_x3 parser configuration 2016-11-25 16:49:42 +01:00
artemp
00b2bf013a add missing generic_json_grammar_x3.cpp 2016-11-25 16:48:56 +01:00
artemp
44fc648cad move extract_bounding_boxes_x3 back into mapnik-json.a 2016-11-25 16:48:34 +01:00
artemp
be4f9ca79b add missing context type definitions + BOOST_SPIRIT_INSTANTIATE_UNUSED macro to instantiate parse_rule with boost::spirit::x3::unused_type attribute 2016-11-25 16:46:10 +01:00
artemp
163a82fd1e add feature_grammar_x3 implementation 2016-11-25 16:45:23 +01:00
artemp
cad029bf7c make hex rules const 2016-11-25 16:44:20 +01:00
talaj
994a327c7f remove superfluous declaration 2016-11-25 13:31:55 +01:00
artemp
23ba18ead2 make rules const 2016-11-25 11:48:16 +01:00
artemp
988966c68e declare in using one macro 2016-11-25 11:47:33 +01:00
artemp
4aa60d669e adapt box2d<float> to boost::geometry 2016-11-23 18:22:11 +01:00
artemp
71c112a0b0 add coord2f type 2016-11-23 18:21:44 +01:00
artemp
a112e88e23 fix compilation - move extract_bounding_boxes into mapnik-index src dir 2016-11-23 17:44:35 +01:00
artemp
ed5ee69c3c refactor GeoJSON bounding box extraction into separate method for re-use and more... 2016-11-23 16:18:38 +01:00
artemp
20d6f84b3b use char const* 2016-11-22 10:43:41 +01:00
artemp
5834de9b1f use parse_feature method in geojson.input 2016-11-21 16:35:27 +01:00
artemp
2a0bc9db6c GeoJSON - refactor feature/geometry parsing 2016-11-21 16:08:15 +01:00
artemp
fe0b0a7f2d update deps/mapbox/variant to the latest HEAD 2016-11-21 12:01:09 +01:00
artemp
3d629bf76d add missing generic_json_grammar_x3 2016-11-21 11:15:21 +01:00
artemp
7d77835080 update deps/mapbox/variant 2016-11-21 10:49:17 +01:00
artemp
e5c08800eb update deps/mapbox/variant 2016-11-21 10:48:10 +01:00
artemp
4e646c1323 handle properties 2016-11-18 15:51:39 +01:00
artemp
aca229c2bb implement custom feature GeoJSON parser for improved performance 2016-11-18 15:17:23 +01:00
artemp
f64db40a8a don't catch exceptions in featureset::next() as expected behaviour is to throw 2016-11-18 09:43:53 +01:00
artemp
ead152499b fix - ensure stringifier called recursively for nested json objects 2016-11-18 09:42:47 +01:00
artemp
e6e468dc9e Merge branch 'master' into develop-master 2016-11-18 09:05:19 +01:00
artemp
d286b75fb5 make keys member var + cache geojson grammar 2016-11-17 17:36:01 +01:00
Artem Pavlenko
a9af4e6b1c Merge pull request #3551 from tomhughes/pgraster
Use 2D box for pgraster bounding box
2016-11-17 17:34:00 +01:00
Tom Hughes
a3106a6a6e Use 2D box for pgraster bounding box
Using a 3D box causes errors with postgis 2.3 when clipping is
enabled as ST_Clip throws an error clipping a raster to a 3D box.
2016-11-17 16:30:18 +00:00
artemp
22a6652160 use spirit::x3 based parser for disk-indexed GeoJSON access 2016-11-17 16:45:11 +01:00
artemp
493b662f16 add create_feature helper method (geojson_value -> mapnik::feature_impl) 2016-11-17 16:44:09 +01:00
artemp
21a121df18 avoid name clashing 2016-11-17 13:13:07 +01:00
artemp
ca96d3e137 fix duplicate feature to geojson code 2016-11-17 10:33:05 +01:00
artemp
190023a085 remove unused include (#include <mapnik/json/value_converters.hpp>) 2016-11-17 10:31:55 +01:00
artemp
fec5715a69 update to use boost::bimap 2016-11-16 16:05:40 +01:00
artemp
4588c23274 use boost:bimap to store key/name mapping for inverse searching caps 2016-11-16 16:04:54 +01:00
artemp
69b79b303f make create_geometry a method 2016-11-16 16:03:25 +01:00
artemp
c2d7ecbef7 move keys_map initilizer with well-known-names into separate inline method 2016-11-15 17:23:27 +01:00
artemp
1b74544b08 start well-known-names enum from 1 + pre-initialise keys_map with well-known-names 2016-11-15 11:18:44 +01:00
artemp
d6bedd235c parse well-known-names as un-quoted strings 2016-11-15 11:16:58 +01:00
artemp
1e238be7ee move wkn_to_string to json_grammar_config.hpp 2016-11-15 10:15:10 +01:00
artemp
c860f9e465 add well_known_names to string mappings 2016-11-15 10:14:10 +01:00
artemp
ae30675e98 move json well_known_names 2016-11-15 10:13:36 +01:00
artemp
5ef77d07b9 update deps/mapbox/variant to the lastest HEAD 2016-11-15 09:32:27 +01:00
Dane Springmeyer
8adc190117 new publish vars 2016-11-14 15:47:20 -08:00
Dane Springmeyer
3283f50639 Merge branch 'master' of github.com:mapnik/mapnik into develop-master 2016-11-14 15:32:39 -08:00
Dane Springmeyer
5a6d16d4fe default scale_factor for filter_visitor (unbreaks node-mapnik compile) 2016-11-14 15:31:18 -08:00
Dane Springmeyer
4449f81e03 restore to_wkt on geometry<std::int64_t> 2016-11-14 15:23:29 -08:00
Dane Springmeyer
657dd7d73a suppress boost warnings 2016-11-14 15:04:07 -08:00
artemp
6b4638a955 add -x3 option to mapnik-index to test new json parser 2016-11-14 15:57:34 +01:00
artemp
0e9f06d221 more comprehensive validation implementation 2016-11-14 12:58:13 +01:00
artemp
92d35d1e40 fix json_value name clashing + add skeleton feature validation method 2016-11-14 12:18:36 +01:00
artemp
2b6f23890b remove redundant mapnik::util::recursive_wrapper 2016-11-14 12:13:26 +01:00
artemp
252a0366e9 consistent usage of iterator type + cleanups 2016-11-11 15:24:11 +01:00
artemp
f888fef86a update variant 2016-11-11 15:05:46 +01:00
artemp
99ce79fd36 allow short style syntax for long options e.g "-x3", "-validate-features" etc. 2016-11-11 10:48:03 +01:00
artemp
19f1af3861 mapnik-index - add optional 'fast' spirit::x3 GeoJSON parsing. Activated by "--x3" program option. 2016-11-11 10:40:52 +01:00
artemp
fd36ac5279 Merge branch 'master' into geometry-refactor 2016-11-10 18:01:11 +01:00
artemp
6fb3dbd63f remove BIGINT redifinition 2016-11-10 17:28:16 +01:00
artemp
e46a52c3f0 GeoJSON - spirit::x3 based parsing building blocks 2016-11-10 17:26:24 +01:00
artemp
f014555913 Merge branch 'master' into develop-master 2016-11-09 11:02:41 +01:00
artemp
2757ec8973 update variant submodule 2016-11-09 10:47:40 +01:00
artemp
7a880737e7 Merge branch 'master' into develop-master 2016-11-09 10:35:30 +01:00
Artem Pavlenko
bc9cb5d90c Remove Circle badge it appears to be broken 2016-11-09 10:20:00 +01:00
artemp
88b16e0ca8 pass context by const ref + extract _attr(ctx) once and re-use 2016-10-20 17:16:03 +02:00
artemp
eea427b19f cleanup include directives 2016-10-19 13:15:59 +02:00
artemp
7622aa25be cleanup include directives 2016-10-19 13:15:15 +02:00
artemp
e74af890fb Silence -Wundefined-var-template warnings in enumeration.hpp 2016-10-17 16:58:22 +02:00
artemp
9846632daa Merge branch 'master' into develop-master 2016-10-17 16:56:08 +02:00
artemp
f18737f974 update deps 2016-10-17 16:35:20 +02:00
artemp
7a64fae41f update visual test data 2016-10-17 16:34:40 +02:00
Artem Pavlenko
be2f1a147b Merge pull request #3537 from mapycz/fix-blur-scale-factor
Fix blur with scale_factor
2016-10-17 16:33:04 +02:00
Jiri Drbalek
9248fba0f0 update visual test data 2016-10-17 12:37:53 +00:00
Jiri Drbalek
0221cd36df take scale_factor into account when inflating buffer 2016-10-17 11:59:21 +00:00
Jiri Drbalek
b830469d2d multiply blur radius by scale_factor 2016-10-17 11:59:21 +00:00
artemp
1c0abe5e2f update deps/mapbox/variant 2016-10-17 11:01:07 +02:00
artemp
6790e27712 remove redundant includes directives 2016-10-17 10:49:56 +02:00
artemp
709d8409cc Merge branch 'master' into develop-master 2016-10-17 09:47:00 +02:00
Artem Pavlenko
e3041f07c7 Merge pull request #3535 from sebastic/dependencies-typo
Fix 'depedencies' typo, replace with 'dependencies'.
2016-10-17 09:42:52 +02:00
Bas Couwenberg
01699fe81e Fix 'depedencies' typo, replace with 'dependencies'. 2016-10-15 20:07:52 +02:00
artemp
62012fbf19 re-use literal parser implementation between separator and quote primitives 2016-10-14 14:32:44 +02:00
artemp
1e66580f0d add explicit 'types' branch to "deps/mapbox/variant" 2016-10-14 14:26:10 +02:00
artemp
df12183e10 re-use object file to avoid duplicate compilation 2016-10-14 14:25:34 +02:00
artemp
83cc819c39 upgrade CSV parser to boost::spirit::x3 2016-10-14 14:24:44 +02:00
artemp
01fbbafc26 remove duplicate 'transcoder_tag` 2016-10-14 09:24:52 +02:00
artemp
558fa0cdaa remove unused #include <mapnik/expression_grammar_x3_config.hpp> 2016-10-13 17:00:12 +02:00
artemp
4c7d4a51e6 remove unused <bitset> header 2016-10-13 17:00:12 +02:00
artemp
b27cddc101 Silence -Wundefined-var-template warnings in enumeration.hpp 2016-10-13 17:00:12 +02:00
artemp
75024c067c remove bogus template instantiations 2016-10-13 17:00:12 +02:00
artemp
d99b4eaeb4 remove unused include directive 2016-10-13 17:00:12 +02:00
artemp
4384178e3f update deps/mapbox/variant 2016-10-13 17:00:12 +02:00
artemp
d934630bc5 Fix clang >= 3.9.0 compilation by using mapbox::util::variant as alias (via deps/mapbox/variant => "types" branch) 2016-10-13 17:00:12 +02:00
artemp
ab86171c2b GeoJSON generator - implement using geometry<double> karma adapters 2016-10-13 17:00:12 +02:00
artemp
b770db56c3 remove unused rule 2016-10-13 17:00:12 +02:00
artemp
9de3c80b0d add specialisations for coord_type = std::int64_t 2016-10-13 17:00:12 +02:00
artemp
a63a491ba0 wkt generator - remove boost::phoenix headers 2016-10-13 17:00:12 +02:00
artemp
beee2fd539 mapnik::geometry - refactor karma adaper into separate header for re-use 2016-10-13 17:00:12 +02:00
artemp
9853353353 adapt mapnik::geometry::geometry<double> to work with boost::spirit::karma + simplify and optimise WKT generator 2016-10-13 17:00:12 +02:00
artemp
bdaef2cc91 variant - pin to 'types' branch (requires types typedef) 2016-10-13 17:00:11 +02:00
artemp
67468ef356 refactor path_expression_grammar 2016-10-13 17:00:11 +02:00
artemp
d2f64604a3 consistently return x3 grammars by const& 2016-10-13 17:00:11 +02:00
artemp
1cb966cee2 upgrade WKT grammar to boost::spirit::x3 2016-10-13 17:00:11 +02:00
artemp
3d80a62531 remove unused include directives 2016-10-13 17:00:11 +02:00
artemp
ce0f87fb71 merge spirit-x3 2016-10-13 17:00:11 +02:00
artemp
9a82ffbde7 add geometry and value dirs 2016-10-11 18:01:30 +02:00
artemp
923efd589c geometry_to_path.hpp => geometry/to_path.hpp 2016-10-11 18:01:30 +02:00
artemp
b5c9966e4b refactor value related objects into include/value dir 2016-10-11 18:01:30 +02:00
artemp
8ce7a1c43d refactor souce code files with the following rule: the physical filesytem path matches namespace structure
e.g `mapnik::geometry::centroid()` -> `$(MAPNIK_SOURCE)/include/mapnik/geometry/centroid.hpp`
2016-10-11 18:01:29 +02:00
Artem Pavlenko
d6a3be87a4 Merge pull request #3511 from mapnik/unbundle-unifont
Unbundle unifont
2016-10-11 17:57:06 +02:00
Artem Pavlenko
605ad3b2a8 Merge pull request #3525 from mapycz/fix-extent-intersect
fix intersecting extents in different projections
2016-10-11 17:56:45 +02:00
Mickey Rose
d18e65dbdf travis: also search unknown submodule commit in branches 2016-10-05 20:03:45 +02:00
Jiri Drbalek
0f3eecbe5e fix intersecting extents in different projections 2016-09-27 20:36:34 +00:00
artemp
a0a5085917 add GeoJSON num_features_to_query unit test (ref #3515) 2016-09-23 11:56:43 +02:00
artemp
dad0ca2071 clamp num_features_to_query to 1...max range (at least one feature will queried) + use std::size_t for feature count (ref #3515) 2016-09-23 11:56:32 +02:00
artemp
8a8427daed GeoJSON feature/geometry grammars - split (a | b | ...) % lit(',') rule to avoid creating bogus temp synthesised attribute e.g boost::variant<a,b,..> which causes clang compiler >= 3.9 to segfault. (ref #3507)
NOTE: In general many Boost.Spirit gotchas can be fixed by simplifying rules (better control what gets synthesied under the bonet)
2016-09-22 12:18:34 +02:00
artemp
094994ef54 update CHANGELOG for mapnik v3.0.12 release [skip ci] 2016-09-08 10:36:21 +02:00
Dane Springmeyer
1d22d860af Merge pull request #3513 from lightmare/fix-image-swap
Fix image swap
2016-09-07 21:03:32 -07:00
Dane Springmeyer
cbe86b0c59 add script for 'make test-release' 2016-09-07 21:02:04 -07:00
Dane Springmeyer
b6a48ff354 fixes to automated release process 2016-09-07 19:53:01 -07:00
Dane Springmeyer
c6c94e760e release process: move to github releases 2016-09-07 16:54:39 -07:00
Mickey Rose
870b890042 remove redundant member pData_ from mapnik::image
I believe this is better than fixing swap() by also
swapping pData_
2016-09-07 20:03:17 +02:00
Mickey Rose
e25bc271ec add unit test for image::swap 2016-09-07 19:23:36 +02:00
Jiri Drbalek
530cead861 update visual test data 2016-09-07 11:46:59 +00:00
Jiri Drbalek
6e489a95a3 add extend parameter of text symbolizer 2016-09-07 11:46:59 +00:00
Jiri Drbalek
8733622885 add extend_converter 2016-09-07 11:46:59 +00:00
Jiri Drbalek
237022719a unit tests: move fake_path to separate file 2016-09-07 11:15:31 +00:00
artemp
4f008c6f2f update CHANGELOG for mapnik v3.0.12 release [skip ci] 2016-09-07 09:54:07 +02:00
artemp
dcf3857d32 setting up for mapnik v3.0.12 release [skip ci] 2016-09-07 09:51:59 +02:00
Dane Springmeyer
0f81046632 unbundle unifont 2016-09-06 12:09:51 -07:00
artemp
a63a50556a Merge branch 'master' into geometry-refactor 2016-09-06 10:01:15 +02:00
Dane Springmeyer
b481d62d3d block invalid publish [skip ci] 2016-09-06 00:26:45 -07:00
Dane Springmeyer
48316d47b0 fixes for auto-release script 2016-09-06 00:21:20 -07:00
Dane Springmeyer
4cc0706940 start working on #3335 2016-09-06 00:21:20 -07:00
bergwerkgis
49a1799d4f Merge branch 'master' of https://github.com/mapnik/mapnik 2016-09-05 14:00:34 +00:00
bergwerkgis
28162f0720 [skip travis] fix relative path to get-boost-icu-version-from-sdk.ps1 (differs when called from windows-builds) 2016-09-05 14:00:17 +00:00
artemp
66999f1f87 travis up from 35 to 40 min 2016-09-05 15:54:40 +02:00
artemp
014f98043f add missing include path 2016-09-05 15:41:14 +02:00
artemp
fc0b57de24 update CHANGELOG 2016-09-05 15:41:14 +02:00
bergwerkgis
a79bd73105 refs #3509, get boost and icu versions directly from SDK files 2016-09-05 13:13:24 +00:00
artemp
747ca7470c remove duplicate #pragma 2016-09-05 11:39:36 +02:00
artemp
8e0e344b72 Merge branch 'master' into geometry-refactor 2016-09-05 09:41:52 +01:00
Dane Springmeyer
3741a7f348 fix -Wshadow warnings caught by g++-5 2016-09-03 09:58:40 -07:00
Dane Springmeyer
e580d0b1d6 simplify travis-command-wrapper.py output 2016-09-03 09:32:20 -07:00
Dane Springmeyer
076ab1fa6c fix mason cflags/ldflags return 2016-09-03 09:31:26 -07:00
Dane Springmeyer
c3f7d947a6 travis: up to 35 min limit 2016-09-02 21:12:08 -07:00
Dane Springmeyer
3be9a623fc travis: up to 25 min limit 2016-09-02 19:06:07 -07:00
Dane Springmeyer
c67e505a74 mason: install zlib system symlink to ensure consistently zlib linking [skip ci] 2016-09-02 17:52:02 -07:00
Dane Springmeyer
7dcf8eac35 increase deadline to 15 min 2016-09-02 17:47:40 -07:00
Dane Springmeyer
57331a40ce try to get travis-command-wrapper deadline working 2016-09-02 17:19:22 -07:00
Dane Springmeyer
acd90042fb geojson.input: minor code adjustments
- Avoids making copy of inline string to save memory
 - Moves duplicated code out of #ifdef to be more readible
2016-09-02 15:51:58 -07:00
Dane Springmeyer
fa44f0e247 Add memory_datasource test + fix returning of invalid_featureset for emptyset 2016-09-02 15:09:45 -07:00
Dane Springmeyer
73715afdb8 travis: fix broken grep 2016-09-02 14:44:35 -07:00
Dane Springmeyer
35d9435952 appveyor: only upload test failures not all visual tests 2016-09-02 12:56:00 -07:00
Dane Springmeyer
09ec0ba709 stop build at 25 minutes (well before travis fails the job at 50) to ensure at least partial ccache results are uploaded 2016-09-02 12:09:19 -07:00
Dane Springmeyer
687af49f47 bump BOOST_VERSION 2016-09-02 12:00:57 -07:00
Dane Springmeyer
5a21b1fc05 better wrapper args 2016-09-01 18:53:55 -07:00
Dane Springmeyer
7075a361cc try travis-command-wrapper.py to help cache get created even on job that timed out - refs travis-ci/travis-ci#4472 2016-09-01 18:13:06 -07:00
Dane Springmeyer
d19c38de17 upgrade ccache / convert to generic travis language 2016-09-01 16:59:18 -07:00
artemp
38bff90a99 Merge branch 'master' into geometry-refactor 2016-09-01 16:06:20 +01:00
Dane Springmeyer
4b06dfe9b4 Avoid warnings when building the g++5 2016-08-31 11:09:27 -07:00
Dane Springmeyer
02c2338c43 mapnik-config: strip clang specific warning flags 2016-08-31 11:09:11 -07:00
artemp
af099a57ef topojson grammar - change interface + instantiate with Iterator = char const* to reduce binary size 2016-08-31 17:42:18 +01:00
artemp
f360f50eed JSON - make generic_json a proper spirit grammar and reduce code bloat 2016-08-31 14:36:35 +01:00
Dane Springmeyer
3f26a1f23f use latest visual test data 2016-08-30 12:37:33 -07:00
artemp
f55b3b3bb3 Merge branch 'master' into geometry-refactor 2016-08-30 14:39:44 +01:00
Dane Springmeyer
d1301f4360 Merge pull request #3504 from mapnik/update-mason-deps
Target latest version of deps for visual/unit tests
2016-08-26 16:33:18 -07:00
Dane Springmeyer
8b954a6fc3 Get correct package of lndir 2016-08-26 14:30:47 -07:00
Dane Springmeyer
95331eda40 temporary workaround for https://github.com/mapbox/mason/issues/230 2016-08-26 13:40:28 -07:00
Dane Springmeyer
799178c7cc update to latest test data 2016-08-26 13:20:50 -07:00
artemp
d747f326f2 CHANGELOG - fix typo and update 2016-08-26 14:39:56 +01:00
artemp
842522b287 Merge branch 'master' into geometry-refactor 2016-08-26 09:06:05 +01:00
artemp
69b0ee1ada Merge branch 'mapycz-fix-building-symbolizer' 2016-08-25 18:21:35 +01:00
Jiri Drbalek
2f98b8965b update visual tests data 2016-08-25 09:36:30 +00:00
Jiri Drbalek
8b18c605fd no need for heap allocation 2016-08-25 08:01:31 +00:00
Jiri Drbalek
6da9de5739 fix closing segment 2016-08-25 08:01:25 +00:00
artemp
56c6a1ea62 Merge branch 'master' into geometry-refactor 2016-08-24 11:14:01 +01:00
artemp
603879f1c0 Merge remote-tracking branch 'origin/geometry-refactor' into geometry-refactor 2016-08-24 10:46:20 +01:00
artemp
fe007915df Revert "Revert "mapnik::variant - use std::tuple<Typess...> instead of mpl::vector<Types...> and remove Boost.MPL dependency""
and remove `<boost/fusion/adapted/std_tuple.hpp>`

This reverts commit b6cc48fd40.
2016-08-23 15:45:15 +01:00
Dane Springmeyer
f81583554a Merge branch 'master' of github.com:mapnik/mapnik into geometry-refactor 2016-08-22 16:19:17 -07:00
Dane Springmeyer
c6b1abcdb6 update mason deps and test data - refs mapnik/test-data#8 mapnik/test-data-visual#36 2016-08-22 15:12:25 -07:00
Dane Springmeyer
b6cc48fd40 Revert "mapnik::variant - use std::tuple<Typess...> instead of mpl::vector<Types...> and remove Boost.MPL dependency"
This reverts commit 6613222b84.
2016-08-22 11:40:06 -07:00
Dane Springmeyer
4dae4d43c5 restore test/data version - accidentally changed in 0ae2f1311c 2016-08-22 11:15:42 -07:00
Dane Springmeyer
0ae2f1311c update test data if UPDATE env set 2016-08-22 10:50:08 -07:00
artemp
6613222b84 mapnik::variant - use std::tuple<Typess...> instead of mpl::vector<Types...> and remove Boost.MPL dependency 2016-08-22 12:16:48 +01:00
artemp
7c45556138 update font path 2016-08-16 16:00:24 +01:00
artemp
1a29b35717 GeoJSON unit tests- ensure descriptors are ordered by name (ref #3494) 2016-08-16 15:46:10 +01:00
artemp
3788b2781e tiny format 2016-08-16 15:36:43 +01:00
artemp
f3252d00f4 expose "num_features_to_query" datasource parameter (ref #3495) 2016-08-16 10:55:56 +01:00
artemp
1e8f471448 minor formatting 2016-08-16 10:53:57 +01:00
artemp
b9279feee2 fix is_valid logic (ref #3494) 2016-08-15 12:49:43 +01:00
artemp
046c9638e1 GeoJSON - ensure descriptors order is consistent ( ref #3494) 2016-08-15 12:21:02 +01:00
artemp
0471f3369a add order_by_name helper method 2016-08-15 12:20:19 +01:00
artemp
008a6eb4cf test geojson - add empty featurecollection test 2016-08-15 10:44:54 +01:00
artemp
31814b32d0 rename empty_featureset => invalid_featureset to avoid ambiguity + add helper is_valid method 2016-08-15 10:41:30 +01:00
Dane Springmeyer
843f96083d update libwebp, always link mason packages 2016-08-12 16:00:21 -07:00
artemp
f9c321583f update CHANGELOG 2016-08-12 15:56:29 +01:00
artemp
5c11fe49f9 geoson+topojson tests - correct expected test data (ref #3491) 2016-08-12 11:05:50 +01:00
artemp
8dca305e7e json stringifier - add missing quoting in nested json objects (ref #3491) 2016-08-12 11:04:30 +01:00
artemp
9448901907 Merge branch 'windows-unicode' 2016-08-12 09:31:46 +01:00
artemp
cdad126fa3 Merge branch 'master' into windows-unicode 2016-08-12 09:31:29 +01:00
bergwerkgis
74d7726b2d remove unneeded 'u8' 2016-08-12 05:27:55 +00:00
artemp
5298a737c8 update deps 2016-08-11 15:57:22 +01:00
Dane Springmeyer
c777cc50d0 also install boost thread and python to ease python-mapnik build against masonized mapnik [skip ci] 2016-08-10 13:36:46 -07:00
Dane Springmeyer
53fb06e31a install consistent apt packages 2016-08-09 15:14:22 -07:00
Dane Springmeyer
4839b95072 install xutils to speed up mason install/link 2016-08-09 15:12:26 -07:00
Dane Springmeyer
3bfc358cb8 Merge pull request #3485 from mapnik/regex-unicode
Regex unicode
2016-08-09 14:58:51 -07:00
Dane Springmeyer
fc52a818d8 trigger new build 2016-08-09 14:30:13 -07:00
Dane Springmeyer
181feef253 bootstrap: exit trap not called when sourcing 2016-08-09 12:17:39 -07:00
Dane Springmeyer
8e84b6d853 stop caching mason_packages 2016-08-09 10:46:18 -07:00
Dane Springmeyer
f56c45b86b [bootstrap] upgrade to boost_regex package with icu + better error handling 2016-08-09 10:41:38 -07:00
artemp
2afae2a29b Expressions - more tests (ref #3483) 2016-08-09 16:25:59 +01:00
artemp
aa77eb4550 Expressions - add more regex tests to cover #3483 2016-08-09 16:13:12 +01:00
artemp
6eb7783f9e update data-visual 2016-08-08 12:21:31 +01:00
Artem Pavlenko
b0cf57aa53 Merge pull request #3477 from mapycz/cairo-style-level-comp-op
Style level comp-op and opacity for Cairo renderer
2016-08-08 10:52:54 +01:00
Artem Pavlenko
8d8442d647 Merge pull request #3480 from sebastic/spelling-errors
Fix spelling errors
2016-08-08 09:50:40 +01:00
Bas Couwenberg
2003415f09 Fix 'occured' typo, replace with 'occurred'. 2016-08-05 14:50:50 +02:00
Bas Couwenberg
388a8a7c4d Fix 'intialize' typo, replace with 'initialize'. 2016-08-05 14:49:45 +02:00
artemp
d09b6a4810 update font_registration test 2016-08-05 10:25:32 +01:00
artemp
f7fd102c34 update dejavu fonts to v2.37 2016-08-05 10:18:10 +01:00
artemp
922f4c4e1b update SCons to 2.5.0 2016-08-05 10:16:06 +01:00
artemp
4e66c69cf2 update unifont to the latest version 9.0.01 2016-08-05 10:15:31 +01:00
artemp
d9e04518a2 typo 2016-08-04 11:00:57 +01:00
artemp
0775e7bc3c more updates 2016-08-04 10:59:09 +01:00
artemp
9648099155 Add missing release date for 3.0.11 2016-08-04 10:54:39 +01:00
artemp
676d9184b4 update CHANGELOG in anticipation of v3.0.12 release 2016-08-04 10:53:04 +01:00
Jiri Drbalek
9925c3d50d update visual test data 2016-08-03 20:17:17 +00:00
Jiri Drbalek
621a5e51ac style level comp-op and opacity for Cairo renderer 2016-08-03 20:14:56 +00:00
artemp
a7c6df98a3 update variant deps 2016-08-03 12:35:34 +01:00
Artem Pavlenko
d1932b0401 Merge pull request #3476 from lightmare/inherit-ctor
use proper feature-test macro for inheriting constructors
2016-08-03 12:34:10 +01:00
Mickey Rose
f9d5c3a2f8 use proper feature-test macro for inheriting constructors 2016-08-03 00:29:51 +02:00
Artem Pavlenko
68db7ee224 Merge pull request #3475 from mapycz/logarithm
Add support for natural logarithm in expressions (via @talaj)
2016-08-01 15:07:01 +02:00
Jiri Drbalek
c1ab5c8e6c add support for natural logarithm function in expressions 2016-08-01 12:58:21 +00:00
artemp
b55f5dc895 image - add tiny image quantising tests (ref #3466) 2016-08-01 12:21:32 +02:00
Dane Springmeyer
148783da25 Revert "inherit ctor's from geometry_base"
- Fixes #3473 (windows compile)
 - TODO: @artemp get to the bottom of how to inherit from base class
   in a way that works with boost::variant and across platforms

This reverts commit bf99177da7.
2016-07-29 04:51:18 -07:00
artemp
b0d9467224 Merge branch 'master' into geometry-refactor 2016-07-26 12:16:39 +02:00
artemp
9a0d7b0d68 update variant 2016-07-26 10:38:28 +02:00
artemp
d3293f73e1 c++ format 2016-07-25 15:55:50 +02:00
artemp
bf99177da7 inherit ctor's from geometry_base 2016-07-25 15:55:20 +02:00
Dane Springmeyer
bd920daa16 fix decltype forwarding 2016-07-25 14:51:45 +02:00
Dane Springmeyer
7fc9dfe06b simplify visitor code in image_compositing 2016-07-25 14:51:45 +02:00
Dane Springmeyer
f734368a73 limit mpl list size as well as vector size 2016-07-25 14:51:45 +02:00
artemp
2864d90460 more explicit conversions to the target variant type 2016-07-25 13:45:35 +02:00
Dane Springmeyer
3c86ab77c4 [travis] fix indentation 2016-07-20 14:10:27 +02:00
artemp
7fa35f481e Support creating paletted images for any number of pixels e.g < 3 (ref #3466) 2016-07-20 14:01:14 +02:00
Dane Springmeyer
d17f1f076d workaround travis bug: 'shell_session_update: command not found' 2016-07-20 13:19:08 +02:00
artemp
7712f253c9 represent value_null as an empty string e.g "" (text rendering logic) 2016-07-20 12:39:55 +02:00
artemp
dc88582b4d Merge branch 'master' into geometry-refactor 2016-07-19 10:25:33 +01:00
artemp
85a6ef9a15 update variant deps 2016-07-19 10:24:31 +01:00
artemp
3d0b109739 value_null - always represent as "null" 2016-07-15 12:22:53 +01:00
artemp
6f8f286b8d Revert "allow "null" values when genrating Feature GeoJSON"
This reverts commit 8ce58ea29c.
2016-07-15 12:22:03 +01:00
artemp
54d51e2728 Revert "feature_kv_iterator - change logic in 'increment' to skip key/value's when value doesn't exist"
This reverts commit 3397b8f14f.
2016-07-15 12:21:41 +01:00
artemp
8ce58ea29c allow "null" values when genrating Feature GeoJSON 2016-07-14 10:09:34 +01:00
artemp
3397b8f14f feature_kv_iterator - change logic in 'increment' to skip key/value's when value doesn't exist 2016-07-14 09:46:37 +01:00
artemp
c457d93804 use count(key) 2016-07-14 09:45:55 +01:00
artemp
bab985dd04 always return am empty featureset instead of featureset_ptr() 2016-07-13 15:17:51 +01:00
artemp
75781a999c add empty_featureset (returning feature_ptr()) implementation 2016-07-13 15:17:41 +01:00
artemp
dc74551dc0 always return am empty featureset instead of featureset_ptr() 2016-07-13 15:16:33 +01:00
artemp
132aa6654f add empty_featureset (returning feature_ptr()) implementation 2016-07-13 15:07:08 +01:00
artemp
45c5a3768f extract_bounding_box_grammar - make features optional / ref #3463 2016-07-12 17:44:19 +01:00
artemp
abb4271bea extract_bounding_box_grammar - make features optional / ref #3463 2016-07-12 17:42:53 +01:00
artemp
e08c3c1a20 using alias() doesn't work: line_string and linear_ring are different types (no-conversion) 2016-07-12 11:13:45 +01:00
artemp
fd41b682be geometry_generator - fix synthesised attribute types 2016-07-12 11:11:35 +01:00
artemp
74bf270d21 geometry is_simple - handle empty polygons 2016-07-11 11:55:20 +01:00
artemp
01e962d216 centroid - re-implement avoiding inefficient remove_empty 2016-07-11 10:44:59 +01:00
artemp
033c54617c c++ format 2016-07-11 10:44:18 +01:00
artemp
359a3a845a update geometry.hpp 2016-07-11 10:17:45 +01:00
artemp
f0a37c761b polygon - add move ctor 2016-07-07 12:29:19 +01:00
artemp
d810ce46f2 re-enable geometry_strategy_test 2016-07-06 17:45:13 +01:00
artemp
c478849eba implement different strategy for adapting to boost::geometry using internal structure for accessing interior rings 2016-07-06 17:43:45 +01:00
artemp
710a9be5b0 update to the latest geometry.hpp 2016-07-05 10:47:41 +01:00
artemp
68f53cfcd0 uncomment is_empty/has_empty tests 2016-07-05 10:24:54 +01:00
artemp
335ce8e50b is_empty - fix implementation 2016-07-05 10:24:26 +01:00
artemp
e29ca884df has_empty - update logic to work with the current polygon model (FIXME: the naming is confusing to say the least) 2016-07-05 10:23:16 +01:00
artemp
fb398ad465 re-use typedefs 2016-07-04 15:46:04 +01:00
artemp
11fc2ceabd tidy 2016-07-04 15:11:06 +01:00
artemp
75b97eb64c temp disable failing tests 2016-07-04 10:32:31 +01:00
artemp
81419154eb update geometry adapters to use polygon_interior<T> as mutable interior rings proxy container 2016-07-04 10:32:20 +01:00
artemp
f5ec3ba0e0 add initial "proxy" interior rings implementation 2016-07-04 10:28:45 +01:00
Dane Springmeyer
8e31b8e2b9 remove debugging aborts [skip ci] 2016-06-30 11:51:37 -07:00
artemp
c27653066d bring back failing geometry tests 2016-06-29 18:40:47 +01:00
Dane Springmeyer
abe175c14f avoid calling correct on empty geometries 2016-06-29 09:20:02 -07:00
Dane Springmeyer
39f497ded6 re-enable centroid test which appears to be passing 2016-06-29 09:19:28 -07:00
artemp
e44f10460d disable "multi-polygon: one component empty" test 2016-06-29 15:02:19 +01:00
artemp
efabcc8081 make all mapnik::geometries aliases to mapbox::geometry and attempt to adapt new polygon model (one std::vector)
NOTE: some boost.geometry algorithms are broken as a result
2016-06-29 12:41:57 +01:00
Dane Springmeyer
71496e7828 install geometry.hpp 2016-06-27 16:49:30 -07:00
artemp
66da9cdb18 using linear_ring = mapbox::geometry::linear_ring<T>; 2016-06-27 10:56:38 +01:00
artemp
3b1c7308cc make mapnik::geometry::line_string<T> an alias to mapbox::geometry::line_string<T> 2016-06-27 10:23:13 +01:00
artemp
19d376b7e6 make mapnik::geometry::point<T> an alias to mapbox::geometry::point 2016-06-27 09:45:37 +01:00
artemp
d169fb473e add geometry.hpp as submodule 2016-06-27 09:45:25 +01:00
artemp
9dd00b28dc Merge remote-tracking branch 'origin/master' into geometry-refactor 2016-06-27 08:51:55 +01:00
Artem Pavlenko
00e5d00530 Fix unbound variable when number of JOBS is omitted 2016-06-23 09:46:45 +01:00
artemp
3536ad0902 even more tidy - remove left over stderr 2016-06-22 17:35:09 +01:00
artemp
7de7464caf tidy 2016-06-22 17:25:37 +01:00
artemp
2e8c0d36c2 implement custom char_array_bufrer and remove boost::iostreams dependency 2016-06-22 17:21:25 +01:00
artemp
67d2a0e141 Merge branch 'master' into geometry-refactor 2016-06-20 15:01:29 +01:00
Mickey Rose
8d3c08f3ef libc++ implementation of std::deque<T> needs T to be complete 2016-06-17 17:09:16 +02:00
Mickey Rose
fc3d194ad2 missed svg2png when renaming svg_renderer_agg 2016-06-16 23:16:39 +02:00
Mickey Rose
217d18a996 use std::deque to store svg::path_attributes
- refs #3453
2016-06-16 22:34:24 +02:00
Dane Springmeyer
b17dae8381 [travis][coverage] llvm-3.8 does not support --object-directory option 2016-06-14 22:26:17 -07:00
Dane Springmeyer
b9e7296460 update to latest visual test data 2016-06-14 22:02:53 -07:00
Dane Springmeyer
8955e3b189 [travis] attempt to fix coverage 2016-06-14 21:58:32 -07:00
Dane Springmeyer
915062c6a3 [travis] fix apt package installs 2016-06-14 21:25:33 -07:00
Dane Springmeyer
de88b47ded [travis] further debug configure failure 2016-06-14 21:15:50 -07:00
Dane Springmeyer
07f34f03de scons: don't recommend now oldish compilers [skip ci] 2016-06-14 21:12:42 -07:00
Dane Springmeyer
0cec24fe65 debug configure failure on travis 2016-06-14 21:08:18 -07:00
Dane Springmeyer
6fd4e974cf [travis] install clang after mason has been installed 2016-06-14 12:04:45 -07:00
Dane Springmeyer
d47f8353a9 remove tabs in .travis.yml 2016-06-14 12:00:48 -07:00
artemp
56bcc818dd update test data 2016-06-14 12:30:11 +02:00
Dane Springmeyer
f9969e7803 Add circleci badge [skip ci] 2016-06-13 13:25:00 -07:00
Dane Springmeyer
8336e4d43c update visual tests to get new gdal tests passing - refs mapnik/mapnik#3430 2016-06-13 13:07:40 -07:00
Dane Springmeyer
68d5cc34f2 upgrade mason to ensure clang v3.8.0 is available 2016-06-13 12:21:51 -07:00
Dane Springmeyer
0fa5ae5158 circleci - remove unneeded lines 2016-06-13 11:40:15 -07:00
Dane Springmeyer
2ef3ae47f6 use clang 3.8 from mason 2016-06-13 10:51:12 -07:00
artemp
13c48788db update .travis.yml to use clang-3.8 (https://github.com/mapbox/mason/pull/179) 2016-06-13 17:37:07 +02:00
artemp
7e6cc4cfac make get_overview_meta(band) standalone method 2016-06-13 11:14:59 +02:00
artemp
37d5a32875 make return type bool 2016-06-08 12:24:21 +02:00
artemp
9e3ccf6629 Issue a warning but don't fail if PostgreSQL is not running or it's not accessible (ref #3448) 2016-06-08 12:21:27 +02:00
artemp
b20ec7824b Merge branch 'CartoDB-pgraster-just-overviews' 2016-06-07 14:19:53 +02:00
artemp
1714d4317c Merge branch 'pgraster-just-overviews' of https://github.com/CartoDB/mapnik into CartoDB-pgraster-just-overviews 2016-06-07 14:19:42 +02:00
artemp
18aa50a59e update variant 2016-06-07 14:19:22 +02:00
artemp
1509426088 update test data (https://github.com/mapnik/mapnik/pull/3430) 2016-06-07 14:02:04 +02:00
artemp
d64016273f Merge branch 'rouault-gdal_support_mask_band' 2016-06-07 13:31:01 +02:00
artemp
3f224e3f4d Merge branch 'gdal_support_mask_band' of https://github.com/rouault/mapnik into rouault-gdal_support_mask_band 2016-06-07 13:30:45 +02:00
artemp
9f3b76fb94 update visual data (ref https://github.com/mapnik/mapnik/pull/3445) 2016-06-06 11:29:33 +02:00
Artem Pavlenko
631fb0293f Merge pull request #3445 from jojva/fix-ellipse-bounding-box
Fix stroke-width size not included in markers ellipse bounding box - cheers @jojva
2016-06-03 14:57:34 +02:00
artemp
beb34f9c5e topojson_grammar - rename properties to properties_ to avoid compilation error (gcc) ref #3446 2016-06-03 14:45:49 +02:00
Joris Valette
7ca86b0947 Fix stroke-width size not included in markers ellipse bounding box 2016-06-03 11:12:14 +02:00
artemp
deb5102aac convert shapefiles to use UTF-8 encoding in DBF files via @glarrain
( ref https://github.com/mapnik/mapnik/pull/3441)
2016-06-02 16:08:31 +02:00
artemp
ea7808d6e0 Merge branch 'glarrain-patch-1' 2016-06-02 16:07:23 +02:00
artemp
86d8b6ef5f Merge branch 'patch-1' of https://github.com/glarrain/mapnik into glarrain-patch-1 2016-06-02 16:06:53 +02:00
artemp
d30143c60f remove unsupported ESRI data files 2016-06-02 16:04:43 +02:00
artemp
bca9675b13 Merge remote-tracking branch 'origin/master' 2016-06-02 15:58:39 +02:00
artemp
2f9c2a3a9b update variant submodule 2016-06-02 11:33:43 +02:00
Artem Pavlenko
5aba65e54d Merge pull request #3442 from glarrain/patch-2
Fix markdown issue in C++ demo README
2016-05-31 18:30:51 +02:00
Germán Larraín
a876070ccb Fix markdown issue in C++ demo README
Commands were rendered incorrectly due to missing spaces, causing that `mapnik-config --prefix` was rendered without backticks, which are necessary.
2016-05-31 13:14:27 -03:00
Germán Larraín
503d4eaea1 fix shapefiles encoding in demo for C++
Mapnik builds without `boost_regex_icu` (see #3440) and the C++ demo does not run:

```
/mapnik# demo/c++/rundemo `mapnik-config --prefix`                                                                                                                                         
 running demo ... 
### std::exception: could not create converter for latin1
```
2016-05-31 12:40:27 -03:00
artemp
efdc90f699 fix building with BIGINT=no (NOTE: some tests will fail) 2016-05-26 17:23:53 +02:00
Artem Pavlenko
ddd61c55ff fix LGPL link 2016-05-26 17:12:18 +02:00
artemp
a24dfbf6a0 simplify logic a bit 2016-05-26 16:27:22 +02:00
artemp
081c003b0e c++ style 2016-05-26 16:27:22 +02:00
Wilhelm Berg
2fb0326892 Update appveyor.yml to use boost 1.60 2016-05-25 13:53:23 +02:00
artemp
cf604518a5 fix typo 2016-05-25 13:08:20 +02:00
Artem Pavlenko
ffe9b21b58 Merge pull request #3435 from woodpeck/patch-1
Fix DejaVu font directory
2016-05-25 10:30:50 +02:00
Frederik Ramm
8af8737272 Fix DejaVu font directory
Fonts in Mapnik tree are now 2.35 not 2.34
2016-05-25 10:12:53 +02:00
artemp
37a8aed62d transcode input strings to UTF-8 (portability) 2016-05-24 12:16:48 +02:00
artemp
acb2d56f49 prefix string literals with u8"" to force UTF8 encoding (windows) 2016-05-24 10:54:34 +02:00
artemp
b9cc746c07 sync up visual test data 2016-05-24 10:27:44 +02:00
artemp
65a23b436d bump visual test data 2016-05-24 10:15:00 +02:00
artemp
06d487c8d1 update visual data 2016-05-23 17:49:20 +02:00
artemp
de0d384ca9 update test data 2016-05-23 12:30:08 +02:00
Artem Pavlenko
44e1102166 Merge pull request #3434 from mapnik/topojson
Topojson (refactor)
2016-05-23 11:44:14 +02:00
artemp
f3ae60fed4 Merge branch 'master' into topojson 2016-05-23 10:52:19 +02:00
artemp
01967cfaff topojson grammar - re-factor to allow geometry elements to be in any order 2016-05-23 10:51:05 +02:00
Dane Springmeyer
d7b6b5669b upgrade to latest mason and latest boost via mason 2016-05-19 19:37:31 -04:00
Dane Springmeyer
20a9112135 remove boost thread checking since it is no longer a dependency 2016-05-19 19:37:31 -04:00
Jiri Drbalek
fee0ad05ce update changelog 2016-05-18 20:06:31 +00:00
Dane Springmeyer
c8cc2670be update visual test data - refs mapnik/mapnik#3416 / mapnik/test-data-visual#34 2016-05-18 13:40:00 -04:00
Dane Springmeyer
44ea60ad5f fix #3431 2016-05-18 13:38:07 -04:00
Artem Pavlenko
536ea734e8 Merge pull request #3418 from mapycz/visual-tests-cairo-vectors
visual tests: support for Cairo PS, PDF and SVG renderers
2016-05-18 15:05:27 +02:00
Artem Pavlenko
aec5949d5a Merge pull request #3416 from mapycz/scale-factor-improvements
Scale factor improvements
2016-05-18 15:05:04 +02:00
Artem Pavlenko
26aa516ee7 Merge pull request #3429 from mapnik/topojson
Topojson https://github.com/mapnik/mapnik/issues/3427
2016-05-18 14:16:29 +02:00
artemp
7b3f607a01 remove omit directive as it breaks type deduction and insists on boost::optional<boost::variant<int, mapnik::json::coordinates> attribute signature (boost 1.61.0) 2016-05-18 13:13:25 +02:00
artemp
c85c0fd025 prealloc memory with reserve 2016-05-18 11:18:26 +02:00
artemp
c10c271430 dereference once 2016-05-18 10:35:58 +02:00
Even Rouault
b2cb39dec8 [GDAL plugin] Add support for non-alpha mask band
GDAL can support non-alpha mask band, such as a TIFF IFD with
Subfile type=transparency mask. This can be typically used to
create a GeoTIFF with YCbCr JPEG compression for RGB bands and
DEFLATE compression for the mask band.
2016-05-17 19:44:12 +02:00
artemp
7d72cc1930 more cleanups 2016-05-17 13:47:31 +02:00
artemp
de13582004 remove stderr 2016-05-17 13:45:05 +02:00
artemp
c66fd480b5 simplify rules 2016-05-17 13:05:53 +02:00
artemp
8f74de8525 remove stderr 2016-05-17 13:05:37 +02:00
artemp
4ca0c21d73 move phoenix functions into ctor 2016-05-17 13:00:03 +02:00
artemp
25217549f1 fix topojson parsing (work-in-progress) 2016-05-17 12:53:07 +02:00
artemp
6e326f035d minor formatting 2016-05-17 12:44:46 +02:00
artemp
dc84943575 Fixed https://github.com/mapbox/windows-builds/issues/88
(inheriting constructors not working with msvc-14.0 2015)
2016-05-13 15:23:47 +02:00
artemp
9e5b7a9b5e update test data 2016-05-13 12:51:46 +02:00
artemp
3ec25e36fe test geojson.cpp - add empty properties (ref #3426) 2016-05-13 12:48:56 +02:00
artemp
4e6aeaedfc handle empty arrays and objects ref #3426 2016-05-13 11:50:43 +02:00
artemp
4429155759 update test data 2016-05-12 18:54:48 +02:00
artemp
38ec14c739 topojson - use json.value directly 2016-05-12 18:52:05 +02:00
artemp
04ce225728 update variant (again) to 7f7470fee6a42c3c68f1fa359a28cf762df385c3 2016-05-11 12:35:01 +02:00
artemp
5228dad91a update to latest variant 2016-05-11 10:58:08 +02:00
artemp
d19ff576dc geojson test - fix the order in 'object' to match input (escaped.json) 2016-05-10 16:03:04 +02:00
artemp
5e33dc0551 feature_grammar - simplify further, remove redundant rule 2016-05-10 15:53:14 +02:00
artemp
3909fe5b7d JSON - store 'object' properties in std::vector to preserve order 2016-05-10 15:52:02 +02:00
artemp
f0386e0469 issue pre-processor #warning if BOOST_MPL_LIMIT_VECTOR_SIZE is defined before config.hpp is included ref #3425 2016-05-10 15:15:03 +02:00
artemp
07ca572af4 fix mapbox/variant install path 2016-05-10 15:15:03 +02:00
Dane Springmeyer
e68de54883 re-enable osx unit tests now that ccache is working 2016-05-09 14:04:55 -07:00
Dane Springmeyer
83768dc3dd travis by compiler cache needs to use language:cpp 2016-05-09 12:21:54 -07:00
Dane Springmeyer
609e5ba7af attempt to get caching+ccache working on osx - refs https://blog.travis-ci.com/2016-05-03-caches-are-coming-to-everyone 2016-05-09 10:03:50 -07:00
artemp
75189905d6 upgrade to latest variant.hpp 2016-05-09 11:42:46 +02:00
artemp
d97583b53e geojson.cpp - fix and update test 2016-05-06 16:44:18 +02:00
Rafa de la Torre
8e8482803b If there're overviews, just use them for rendering
The current code falls back to the base table for small scales.

That approach has some drawbacks cause it forces the original table to
share some conditions with its overviews (same SRID, alginment, scale
constraints) for the rendering to work properly.

What we propose is to always fall back to the highest resolution
overview (lowest scale), rather than the original table, in order to
avoid coupling the original table with the constraints imposed by
rendering and still have them linked (in postgis raster metadata).

Please note this approach is not 100% compatible as the base table
won't be used. This should be no big deal because overviews can have
an arbitrary resolution/scale.
2016-05-06 14:43:24 +02:00
artemp
908203f15e Merge remote-tracking branch 'origin/json-properties' into json-properties 2016-05-06 10:58:44 +02:00
artemp
c4d80de56e update deps 2016-05-06 10:58:19 +02:00
artemp
97b8a11a72 fix includes + use typedefs for json types 2016-05-06 10:57:35 +02:00
Artem Pavlenko
ea7974d580 Merge pull request #3423 from mapnik/geojson-property-tests
Geojson property tests
2016-05-06 10:34:06 +02:00
artemp
7544f57efe Merge branch 'master' into json-properties 2016-05-06 10:27:18 +02:00
artemp
c2bf2be7ba json - simplify generic_json rules: remove redundant rule 2016-05-06 10:24:25 +02:00
artemp
21487f36b9 json - refactor stringifier and attribute_value_visitor into separate *.hpp and share between geojson and topojson grammars 2016-05-06 10:15:44 +02:00
artemp
6bd708af86 fix generic_json usage across grammars 2016-05-06 09:55:54 +02:00
artemp
e528b433d4 geojson feature_grammar - parse objects and arrays into json_value before applying "stringifier" #3419 https://github.com/mapnik/node-mapnik/issues/642 2016-05-06 09:50:45 +02:00
artemp
7374f82414 generic_json - add support for JSON object and array type in json_value + update rules attributes 2016-05-06 09:47:40 +02:00
Dane Springmeyer
966a4ae366 avoid warnings with boost 1.60 [skip ci] 2016-05-05 19:09:05 -07:00
mapsam
086157e26b one step deeper, moar arrays/objects 2016-05-05 13:38:28 -07:00
mapsam
0ed6eedfec Merge branch 'master' into geojson-property-tests 2016-05-05 09:17:44 -07:00
mapsam
9d9c8db233 add geojson unit test for property types/values 2016-05-05 09:17:08 -07:00
artemp
db912d9b67 disable white skipping in stringify_object/stringify_array (ref #3419) 2016-05-05 10:33:36 +02:00
artemp
d9e75f4ddb c++ prettify formatting 2016-05-05 10:31:58 +02:00
Jiri Drbalek
464e508dc5 visual tests: support for Cairo PS, PDF and SVG renderers 2016-05-04 14:27:34 +00:00
artemp
52df451ee3 geometry_envelope_test - fix linking/duplicate symbols (ref #3415) 2016-05-04 10:20:10 +02:00
artemp
e596ffc1c2 don't instantiate types that are not used in core library 2016-05-03 18:33:06 +02:00
artemp
c0dfc92022 geometry_envelope - add tests for double/float/int coord_type (ref #3415) 2016-05-03 18:26:46 +02:00
artemp
471d6dfe94 remove redundant recursive_wrapper (via @jfirebaugh : f00a7aebf1) 2016-05-03 18:13:41 +02:00
artemp
ff821c9239 geometry::envelope - deduct value_type of box2d<T> automatically + add missing typedefs 2016-05-03 18:02:42 +02:00
Jiri Drbalek
b930a5e7f7 apply scale factor to line spacing 2016-05-03 12:09:39 +00:00
Jiri Drbalek
cfc6b37d71 fix passing scale factor to evaluate_transform() 2016-05-03 12:09:39 +00:00
artemp
80176a6c83 fix `geometry_type' call 2016-04-29 18:09:32 +02:00
artemp
c4fcee7b66 add geometry dir 2016-04-29 17:08:17 +02:00
artemp
3184034414 refactor geometry core and algorithms templates + add missing typedefs + prepare for geometry update 2016-04-29 14:24:57 +02:00
artemp
de927a1571 Merge branch 'master' into geometry-refactor 2016-04-29 10:47:43 +02:00
artemp
f5d6af4bb8 agg - make cover unsigned to avoid left shift of negative values ref #3406 2016-04-26 15:30:50 +02:00
artemp
31e8cfc659 improve hash calc ref #3406 2016-04-26 15:29:27 +02:00
artemp
4b3b62a40c minor formatting 2016-04-25 20:43:40 +02:00
artemp
650e8eea8a bump up version to 3.0.12 in preparation to release 2016-04-25 20:43:40 +02:00
Dane Springmeyer
fca1075fec fix documentation for mapnik-render --open command - refs #3375 [skip ci] 2016-04-25 09:56:40 -07:00
artemp
9833bfb9ad make opening rendered image an optional op ( ref #3374) 2016-04-25 16:39:09 +02:00
artemp
49b23622db Don't compile visitor ref #3380 (thanks @lightmare) 2016-04-25 14:58:46 +02:00
artemp
988aa3ea43 add guard to get_object_severity ref #3322 2016-04-25 11:49:10 +02:00
artemp
be06a2d301 require boost >= 1.58 for spatially_equal(geom_0, geom_1) test ref #3380 2016-04-25 11:20:23 +02:00
artemp
1871e5f62d return EXIT_FAILURE on invalid input ref #3410 2016-04-25 10:11:55 +02:00
artemp
ed87cd2883 c++ - make bbox standalone method 2016-04-22 12:54:57 +02:00
artemp
4611d8cad1 c++ style : prefix increment 2016-04-22 12:54:57 +02:00
artemp
a89c3fc007 c++ - make bbox standalone method 2016-04-22 12:51:20 +02:00
artemp
51069fe88a c++ style : prefix increment 2016-04-22 12:50:32 +02:00
Dane Springmeyer
e5fafd31d1 skip boost check when cross compiling [skip ci] 2016-04-21 09:04:38 -07:00
Dane Springmeyer
2a46e4517a Add minimum recommended GDAL version to INSTALL.md - refs #3339 [skip ci] 2016-04-20 12:19:16 -07:00
Dane Springmeyer
00fbc29e9d Merge pull request #3376 from pnorman/patch-5
Use relative path for INSTALL.md
2016-04-20 11:50:27 -07:00
artemp
4e57f7b115 Merge branch 'master' into geometry-refactor 2016-04-20 16:45:08 +02:00
artemp
6105463602 split box2d<T> implementation into *.hpp, *._impl.hpp and *.cpp ref #3405 2016-04-20 10:51:33 +02:00
Dane Springmeyer
b0894bfda3 fix debug assert compile 2016-04-18 08:06:30 -07:00
artemp
633a2c1e07 Merge branch 'master' into geometry-refactor 2016-04-18 16:15:04 +02:00
artemp
66160e9754 mapnik::util::is_clockwise - translate coordinates relative to the origin (0,0) to avoid numeric precision issues while using double precision.
(ref #3402)
2016-04-18 16:08:30 +02:00
artemp
c8902ac875 remove is_clockwise, use mapnik::util::is_clockwise to avoid duplication 2016-04-18 11:16:32 +02:00
artemp
9caac23d3c remove bogus fwd decl 2016-04-12 14:56:32 +02:00
artemp
271b70f960 geometry - template on container type + move multi geometries into separate headers 2016-04-12 14:49:23 +02:00
artemp
2106d7b162 remove debug stderr 2016-04-12 14:48:24 +02:00
artemp
2e0d83aa91 geometry::multi_point - derive from std::vector<point<T>> instead of line_string<T> 2016-04-12 10:12:16 +02:00
artemp
fb385180cf include what you need 2016-04-12 09:27:37 +02:00
artemp
0f711c0863 geometry - move point/line_string/polygon into separate headers 2016-04-12 09:17:53 +02:00
Dane Springmeyer
15acb2b23f Add missing files after revert 2016-04-11 17:58:58 -07:00
Dane Springmeyer
c5d73a03cc pin mason in mason_latest.sh script [skip ci] 2016-04-11 16:50:09 -07:00
Dane Springmeyer
11487e681f amend f8a8ec616a by fixing invalid search and replace 2016-04-11 16:45:11 -07:00
Dane Springmeyer
abe943c983 revert geometry changes for now - will develop them in branch to reduce downstream breakage 2016-04-11 14:00:27 -07:00
Dane Springmeyer
0025f70a6b ensure geometry folder of headers is installed 2016-04-11 12:33:34 -07:00
artemp
19722595a9 move include/mapnik/geometry_fusion_adapted.hpp -> include/mapnik/geometry/fusion_adapted.hpp 2016-04-11 15:22:41 +02:00
artemp
caa03d78bd move geometry_adapters.hpp to geometry/boost_geometry_adapters.hpp 2016-04-11 15:14:52 +02:00
artemp
b24ade9a1c remove stderr for real 2016-04-11 13:08:19 +02:00
artemp
fa717bc698 Remove bogus updates from 90f06093ae "geometry - move point/line_string/polygon into separate headers" 2016-04-11 12:35:19 +02:00
artemp
90f06093ae geometry - move point/line_string/polygon into separate headers 2016-04-11 12:23:11 +02:00
artemp
c6425b8027 cleanup + make operator==, operator!= standalone 2016-04-08 10:43:06 +02:00
artemp
5f00171d3d fix warning: using namespace directive in global context in header [-Wheader-hygiene] warnings 2016-04-08 10:41:50 +02:00
artemp
9705844399 fix operator==,operator!= impl 2016-04-08 10:08:16 +02:00
artemp
8bc4b28a76 small formatting 2016-04-06 11:36:18 +02:00
artemp
ccf26a743d remove extra ; 2016-04-06 11:35:49 +02:00
Dane Springmeyer
585de5956b Merge pull request #3395 from mapnik/register-gdal-once
register gdal once at plugin load
2016-04-05 20:53:25 -04:00
Dane Springmeyer
8339202279 remove debug print 2016-04-05 17:24:12 -04:00
Dane Springmeyer
7ec640e989 register gdal once at plugin load - refs #3093 #3339 #3340 2016-04-05 16:43:07 -04:00
Dane Springmeyer
61cb4effb8 more explicit name for callback type from dlsym 2016-04-05 15:31:19 -04:00
Dane Springmeyer
f8a8ec616a c++ style: use nullptr rather than NULL 2016-04-05 15:27:32 -04:00
artemp
2cbb9f480a deduce box_type from T 2016-04-05 18:26:31 +02:00
artemp
0e07e5b5aa more update CHANGELOG for mapnik v3.0.11 release [skip ci] 2016-04-04 09:24:25 +02:00
artemp
8c4892a31a update CHANGELOG for mapnik v3.0.11 release [skip ci] 2016-04-01 19:00:59 +02:00
Artem Pavlenko
8d9dc27355 Merge pull request #3390 from mapnik/bare-strings
Bare strings
2016-04-01 18:33:44 +02:00
artemp
aac523f80e add no_skip directive in unquoted_ustring rule (ref: https://github.com/mapnik/mapnik/pull/3389#issuecomment-204344223) 2016-04-01 12:54:40 +02:00
artemp
751b691ff6 move unquoted_string to the end, remove ustring from top rule 2016-04-01 11:14:47 +02:00
artemp
890a5cff17 add back support for bare (unquoted strings) 2016-04-01 10:52:13 +02:00
artemp
5b6b64fc5a Merge branch 'string-concat-tests' 2016-04-01 10:36:58 +02:00
mapsam
c1b1e3d8f9 concatenating strings & values currently fails 2016-03-31 15:36:47 -07:00
artemp
7931295d33 quad_tree - fix offsets 2016-03-31 12:40:34 +02:00
artemp
51c1ed16ef c++ format 2016-03-31 11:22:40 +02:00
artemp
99bfd03b22 spatial_index - make generic 2016-03-31 11:21:57 +02:00
artemp
4faa9896bb quad_tree - make more generic by templating on bounding box type 2016-03-31 11:20:41 +02:00
Dane Springmeyer
5017740fbb [travis][osx] dodge Homebrew/homebrew#35240 2016-03-29 17:16:18 -07:00
artemp
7cd5301cbe mapnik-index - refactor to use box2d<float> and reduce memory requirement during index creations 2016-03-24 17:12:16 +00:00
artemp
450533ebc6 move boost::phoenix usage into _impl.hpp 2016-03-24 17:11:06 +00:00
artemp
b73a42131a box2<T> - add converting ctor 2016-03-24 17:08:44 +00:00
artemp
9bb20ce685 box2d<T> - expose value_type typedef + init(x, y) convinient method 2016-03-24 14:50:46 +00:00
lightmare
2239c805e5 Merge pull request #3382 from strk/nodata_for_datarasters
Fix reading nodata value for data rasters
2016-03-23 21:45:44 +01:00
Sandro Santilli
cdc800b086 Fix setting of nodata value for grayscale rasters 2016-03-23 20:28:58 +01:00
Sandro Santilli
f72baaade1 Declare variables where used/needed 2016-03-23 20:27:59 +01:00
Sandro Santilli
c3b8bbe511 Fix build 2016-03-23 18:59:00 +01:00
Sandro Santilli
ca5f92ab03 Fix reading nodata value for data rasters 2016-03-23 18:30:57 +01:00
artemp
0b18144859 GeoJSON - make extract_bounding_box grammar configurable 2016-03-23 11:28:51 +00:00
Paul Norman
8de584acad Use relative path for INSTALL.md 2016-03-21 13:56:27 -07:00
artemp
0fb587875e enable box2d<float> 2016-03-21 11:51:32 +01:00
artemp
7b0740c3b7 remove unused symbolizer_grammar.hpp (ref #3343) 2016-03-18 18:52:17 +01:00
Dane Springmeyer
342b78dc52 more trimming of unneeded phoenix includes - refs #3343 2016-03-18 09:51:17 -07:00
Dane Springmeyer
dc18051d80 minor optimization: call vector.reserve [skip ci] 2016-03-18 09:26:16 -07:00
Dane Springmeyer
a473abf1c7 remove unneeded includes [skip ci] 2016-03-18 09:26:16 -07:00
artemp
26f7856e83 grid - restore missing simplify_tag in process_polygon_pattern_symbolizer (ref #3329) 2016-03-18 16:38:38 +01:00
artemp
35190e81e0 rename open to is_open in utils/mapnik-index/process_geojson_file.cpp 2016-03-18 10:42:35 +01:00
artemp
8f9134c72d file_io - rename open to is_open to be consistent with STL i/o via @lightmare (0d032c2618 (commitcomment-16753722)) 2016-03-18 10:02:19 +01:00
artemp
3d555982fd file_io - make operator bool() explicit via @lightmare (0d032c2618 (commitcomment-16753722)) 2016-03-18 09:51:57 +01:00
artemp
7ad568b54a topojson test - add feature_generator 2016-03-17 15:10:29 +01:00
artemp
04890c4915 topojson - move feature_generator into topojson_utils.hpp 2016-03-17 14:36:53 +01:00
artemp
f65fae66ba topojson test - check bounding box is valid 2016-03-17 14:22:29 +01:00
artemp
0c2558c154 topojson bounding_box - fix multi_point logic (remove bogus if (num_arcs_ > 0) condition) 2016-03-17 14:19:29 +01:00
artemp
47e43a1faa update test data 2016-03-17 12:53:40 +01:00
artemp
ed37ff4b89 basic TopoJSON parsing tests (work-in-progress) 2016-03-17 12:52:35 +01:00
artemp
0d032c2618 mapnik:util::file_io - add bool operator bool() for STL I/O compatibility 2016-03-17 11:56:23 +01:00
Dane Springmeyer
ce3a78afc4 fix quoting in triggered commit json [skip ci] 2016-03-16 17:08:32 -07:00
Dane Springmeyer
706108e95c [travis] automatically trigger builds of python-mapnik after successful linux build - refs #3366 2016-03-16 17:01:28 -07:00
Dane Springmeyer
9ab832d792 [mason package] fix libmapnik id one last time :) 2016-03-16 16:29:48 -07:00
Dane Springmeyer
ce88fc51f7 [mason package] fix libmapnik id 2016-03-16 16:10:10 -07:00
Dane Springmeyer
d2239e7514 [travis] use consistent install prefix 2016-03-16 15:51:40 -07:00
Dane Springmeyer
1e46f1155f write to /tmp for default prefix 2016-03-16 15:34:00 -07:00
Dane Springmeyer
5ddf4cf01a [mason package] avoid needing sudo on linux 2016-03-16 15:24:04 -07:00
Dane Springmeyer
62931d0fc6 fix mason publish 2016-03-16 15:16:03 -07:00
Dane Springmeyer
274a4284c9 [mason package] install_name_tool fixes 2016-03-16 15:00:54 -07:00
Dane Springmeyer
25d30785aa [mason package] fix loader_path when publishing locally 2016-03-16 14:44:30 -07:00
Dane Springmeyer
c22d0ac97f simplify mason_latest.sh publishing 2016-03-16 13:49:46 -07:00
Dane Springmeyer
087add2c71 Remove MAPNIK_BUNDLED_SHARE_DIRECTORY build option
- this was intended to be used by python-mapnik
 - but it is not currently, so let's clean it up
 - todo: get actual ICU_DATA,PROJ_LIB,GDAL_DATA values from those depependent libs
2016-03-16 13:48:26 -07:00
artemp
61bcecbe95 WKB/TWKB - add reading tests for all geometry types 2016-03-16 15:06:27 +01:00
artemp
98a37d9c7a add well-known geometries in WKT, WKB, TKWB formats 2016-03-16 15:05:35 +01:00
artemp
d0e2a5b7d9 parse_hex - helper method 2016-03-16 15:04:42 +01:00
artemp
db9b3f46af create an geometry_empty when input WKB has x and y set to NaN
e.g `\x0101000000000000000000f87f000000000000f87f => mapnil::geometry::geometry_empty`
2016-03-16 14:52:42 +01:00
artemp
d5eb6c8ddf remove unused headers and codex 2016-03-16 09:52:43 +01:00
Dane Springmeyer
f50111d979 use latest test data 2016-03-15 16:10:27 -07:00
artemp
b164e010fd topojson_grammar - don't allocate generic_json structure holding boost::spirit::qi rules on stack (ref #3361) 2016-03-15 17:19:16 +01:00
artemp
29f19fe6bc update test data 2016-03-15 13:36:02 +01:00
artemp
b2fda7e17f [CORRECTED] sv_utils - check and skip processing lines consisting only of 0xa (windows) ( fixes #3359 ) 2016-03-15 13:03:48 +01:00
artemp
96b96c745d Revert "csv_utils - check and skip processing lines consisting only of 0xa (windows) ( fixes #3359 )"
This reverts commit 9c09f15de9.
2016-03-15 13:01:54 +01:00
artemp
9c09f15de9 csv_utils - check and skip processing lines consisting only of 0xa (windows) ( fixes #3359 ) 2016-03-15 12:26:00 +01:00
bergwerkgis
7044177af0 [skip travis] fix appveyor.yml syntax #2 2016-03-15 08:22:43 +00:00
bergwerkgis
fd99c7c3ae [skip travis] fix appveyor.yml syntax 2016-03-15 08:19:18 +00:00
bergwerkgis
0633e2794f [skip travis] AppVeyor: try another approach to visual test artifacts 2016-03-15 08:13:38 +00:00
bergwerkgis
ca98ce3d9a [skip travis] AppVeyor: try to add visual test images to artifacts 2016-03-15 07:27:00 +00:00
lightmare
787cc4d5e3 Merge pull request #3363 from lightmare/fix-empty-string-to-expr
fix empty string value to_expression_string => pair of quotes
2016-03-15 02:28:53 +01:00
Mickey Rose
a981f560b6 fix empty string value::to_expresssion_string 2016-03-15 00:29:17 +01:00
Mickey Rose
344e62e7db expressions_test: add empty string round-trip check 2016-03-15 00:26:21 +01:00
Dane Springmeyer
4a2ececea4 make bootstrap.sh executable 2016-03-14 15:59:28 -07:00
Dane Springmeyer
9e6b6a2670 [circleci] fix bootstrap.sh call [skip ci] 2016-03-14 15:39:27 -07:00
Dane Springmeyer
2b747db199 [circleci] fix multiline yaml syntax [skip ci] 2016-03-14 15:37:35 -07:00
Dane Springmeyer
18ac7444a6 [circleci] fix multiline yaml syntax [skip ci] 2016-03-14 15:21:36 -07:00
Dane Springmeyer
03f2d8563a [circleci] try catching apt packages [skip ci] 2016-03-14 14:55:08 -07:00
Dane Springmeyer
ba7e78ac7d [circleci] build mapnik before testing so that ccache dir is saved [skip ci] 2016-03-14 14:38:10 -07:00
Dane Springmeyer
5a9c6ae0f7 [bootstrap] avoid unbound variable [skip ci] 2016-03-14 14:02:32 -07:00
Dane Springmeyer
3481377a18 [circleci] initialize postgis database 2016-03-14 13:33:52 -07:00
Dane Springmeyer
742ad0748f [circleci] init submodules 2016-03-14 10:32:40 -07:00
Dane Springmeyer
d026d38047 [circleci] correct ccache path 2016-03-14 10:28:52 -07:00
Dane Springmeyer
75b57ab960 [circleci] use clang-3.7 2016-03-14 10:21:35 -07:00
Dane Springmeyer
b70fed842e [circleci] use clang-3.8 2016-03-14 10:15:39 -07:00
Dane Springmeyer
eb34d19c9f [circleci] upgrade to clang++-3.5 2016-03-14 08:46:29 -07:00
Dane Springmeyer
da8384310e add circleci config 2016-03-14 08:40:20 -07:00
artemp
7d4f894d98 postgis.input - add support for TWKB (https://github.com/TWKB/Specification/blob/master/twkb.md) via https://github.com/CartoDB/mapnik/tree/2.3.x.cartodb ref #3355 2016-03-14 12:12:54 +01:00
Dane Springmeyer
2204a983c6 [test][windows] use utf8 encoding + stop using non-portable path comparison 2016-03-12 08:59:54 -08:00
Dane Springmeyer
632dd7e76d [test][windows] ensure reader is destroyed before trying to remove file - refs #3359 2016-03-12 08:58:53 -08:00
Dane Springmeyer
c18e086026 [csv test][windows] fix string comparison issues on windows 2016-03-11 20:07:54 -08:00
Dane Springmeyer
df62c07a68 [io test] [windows] create directories recursively 2016-03-11 20:07:31 -08:00
Dane Springmeyer
78442547f8 fix directory assertion logic 2016-03-11 18:24:22 -08:00
Dane Springmeyer
b14d525968 write images to custom tmp directory and create it first 2016-03-11 18:08:35 -08:00
Dane Springmeyer
cd9b214d55 fix test runner 2016-03-11 18:08:08 -08:00
Dane Springmeyer
280978c422 [travis] Stop building/running OS X tests to try to finish before 50 min 2016-03-11 17:53:57 -08:00
Dane Springmeyer
0656e02ea0 clean up test binaries if not building them again [skip ci] 2016-03-11 17:52:07 -08:00
Dane Springmeyer
28c7cc548c [appveyor] initialize all submodules 2016-03-11 17:14:10 -08:00
Dane Springmeyer
5aff870e2d MAPNIK_DECL is invalid in plugins - proper fix is mapnik/mapnik-gyp@395a1b8 2016-03-11 15:51:14 -08:00
Dane Springmeyer
89db790dda rename parse_csv function to avoid confusion in inheritance 2016-03-11 14:23:16 -08:00
Dane Springmeyer
559ef78aca more agg ignores [skip ci] 2016-03-11 13:48:51 -08:00
Dane Springmeyer
d1b594e886 more agg ignores [skip ci] 2016-03-11 13:44:30 -08:00
artemp
1b207ae274 csv_util - move implementation details to .cpp 2016-03-11 16:49:26 +01:00
artemp
1f61aa3981 TWKB - port CartoDB implementation to mapnik 3.x.x
ref https://github.com/CartoDB/mapnik/blob/2.3.x.cartodb/plugins/input/postgis/postgis_utils.cpp
ref https://github.com/CartoDB/mapnik/tree/2.3.x.cartodb/plugins/input/postgis#23xcartodb
2016-03-11 16:20:07 +01:00
Dane Springmeyer
f9397e7e66 fix mason re-checkout [skip ci] 2016-03-10 17:48:20 -08:00
Dane Springmeyer
bb0565d4d8 pin mason to avoid breakage from upcoming improvements - refs mapbox/mason#131 2016-03-10 16:25:54 -08:00
Dane Springmeyer
1a10f271d8 ignore -Wfloat-equal from third party headers [skip ci] 2016-03-10 16:07:30 -08:00
Dane Springmeyer
228513cf3e back off -Wold-style-cast -Wreserved-id-macro -Wmissing-noreturn for now 2016-03-10 13:41:51 -08:00
Dane Springmeyer
1582f681ae fix -Wheader-hygiene warnings 2016-03-10 13:40:48 -08:00
Dane Springmeyer
821c4d2115 ignore warnings older compilers don't know 2016-03-10 13:00:29 -08:00
Dane Springmeyer
a1ffbe1ec8 suppress warnings from image_io libs 2016-03-10 12:58:29 -08:00
Dane Springmeyer
8f4e211ebd suppress more third party warnings 2016-03-10 12:46:00 -08:00
Dane Springmeyer
192f5c26c1 use c++ style casts 2016-03-10 12:45:47 -08:00
Dane Springmeyer
51cabe0d34 ignore -Wshadow from agg 2016-03-10 11:45:48 -08:00
Dane Springmeyer
c715b142ec suppress more third party warnings 2016-03-10 11:44:44 -08:00
Dane Springmeyer
9dd07fd40b use c++ style casts 2016-03-10 11:44:23 -08:00
Dane Springmeyer
aa8c543744 use c++ style casts 2016-03-10 11:44:01 -08:00
artemp
f90f6d83c6 update deps / ref https://github.com/mapbox/variant/issues/96 2016-03-10 11:59:49 +01:00
Dane Springmeyer
3985014c04 Add agg warning suppression header 2016-03-09 17:42:24 -08:00
Dane Springmeyer
57dbd77819 more warning_ignore usage - refs #2907 2016-03-09 16:43:00 -08:00
Dane Springmeyer
341db51aa7 finish wrapping boost includes to suppress warnings - add agg wrapper - refs #2907 2016-03-09 16:42:15 -08:00
Dane Springmeyer
7ae0e6d902 share stringify macro from common header 2016-03-09 16:16:14 -08:00
Dane Springmeyer
2eb24c970a avoid -Wdeprecated and -Wreserved-id-macro warnings 2016-03-09 16:11:17 -08:00
artemp
609fab5ab1 windows - MAPNIK_DECL csv_file_parser 2016-03-09 14:27:47 +01:00
artemp
bde9e61e21 split csv_line_grammar into *.hpp *_impl.hpp ref #3343 2016-03-09 12:26:07 +01:00
artemp
1c29054dea csv_grammar - use expectation directives throughout 2016-03-09 12:26:07 +01:00
artemp
e3bd74aa55 remove unused phoenix include 2016-03-09 12:26:07 +01:00
Jiri Drbalek
401e89ad3b update changelog after https://github.com/mapnik/mapnik/pull/3349 2016-03-08 14:30:08 +00:00
artemp
d030fdd667 bump version to 3.0.11 2016-03-07 19:17:36 +01:00
Dane Springmeyer
09f4de1e95 [travis] remove syntax that still breaks on osx [skip ci] 2016-03-07 10:13:45 -08:00
artemp
3fab234e0a update visual data submodule 2016-03-07 15:26:31 +01:00
Artem Pavlenko
cd3e484c04 Merge pull request #3349 from mapycz/raster-resample-division-by-zero
Raster resample division by zero
2016-03-07 14:54:44 +01:00
artemp
ff9cceeb9f use platform specific macros as return codes (EXIT_SUCCESS/EXIT_FAILURE) + check if extent read from shapefile is valid and has valid width and heoght before creating an index. 2016-03-07 13:52:58 +01:00
artemp
6856100433 box2d operator<< - output "box2d(INVALID)" for invalid box. 2016-03-07 13:51:50 +01:00
artemp
8dca8d3001 Merge branch 'lightmare-markers-placements-union' 2016-03-07 10:41:13 +01:00
Mickey Rose
e75feceaca markers_placement_finder: dispatch by switch(placement_type) 2016-03-06 13:18:25 +01:00
Mickey Rose
f96631f8e4 un-template markers_basic_placement
- move Locator/Detector-dependent stuff back to markers_point_placement
- slightly reduces library size, by about 20% of what #3338 added
2016-03-05 19:33:22 +01:00
Dane Springmeyer
fe57454029 [travis] fix invalid bash on osx [skip ci] 2016-03-04 15:27:41 -08:00
Dane Springmeyer
11dbd9c463 remove earlier debug 2016-03-04 13:41:52 -08:00
Dane Springmeyer
82c862d90c more ccache debugging 2016-03-04 13:41:15 -08:00
Dane Springmeyer
3591c137a5 upgrade ccache 2016-03-04 13:38:45 -08:00
Dane Springmeyer
efa31c6556 debug ccache - refs #3350 2016-03-04 12:59:49 -08:00
Dane Springmeyer
37b26c28b6 disable benchmarks from running on travis - refs #3351 2016-03-04 12:36:57 -08:00
Dane Springmeyer
c80c7d27bb Fix ccache stomping - refs #3350 2016-03-04 12:09:09 -08:00
Dane Springmeyer
f90cef44c3 [travis] switch coverage run to linux - closes #3344 2016-03-04 11:29:05 -08:00
Jiri Drbalek
d4ac105eca raster scaling: use mapnik::safe_cast, fixes clipping negative floats 2016-03-04 16:59:12 +00:00
Jiri Drbalek
f1f65664cd raster scaling: a bit of optimization 2016-03-04 15:14:01 +00:00
Jiri Drbalek
1054e1bddb raster scaling: check for division by zero 2016-03-04 15:13:55 +00:00
artemp
71af6a8fe3 css_color_grammar + image_filters_grammar - move phoenix into ctors 2016-03-04 15:53:15 +01:00
artemp
a5cfd27594 split svg_path_grammar,svg_points_grammar,svg_transform_grammar into *.hpp, *_impl.hpp + move boost::phoenix::function initialisation into ctor's
(ref #3343)
2016-03-04 15:34:45 +01:00
Jiri Drbalek
4d402c5ef1 raster scaling: fix accessing out of bounds pixels 2016-03-04 13:55:01 +00:00
artemp
76bb2d9c01 make svg_transform_grammar stateless ref #3343
(https://github.com/mapnik/mapnik/pull/2231)
2016-03-04 13:15:11 +01:00
artemp
4659f40401 make svg_path_grammar and svg_points_grammar stateless ref #3343
(https://github.com/mapnik/mapnik/pull/2231)
2016-03-04 12:42:44 +01:00
artemp
12aec35e2f GeoJSON feature_grammar - make ctor explicit 2016-03-04 11:35:38 +01:00
artemp
4f8bc40b83 update old boost::phoenix syntax 2016-03-04 10:25:03 +01:00
Dane Springmeyer
23fb010ea2 disable dlclose when building with --coverage - refs #3344 2016-03-03 15:02:03 -08:00
Dane Springmeyer
833703026d add COVERAGE configure option - only set coverage flags on libmapnik and plugins - refs #3344 2016-03-03 14:19:12 -08:00
Dane Springmeyer
fde36984de minor unit test cleanups to prepare to test amalgamation 2016-03-03 10:53:58 -08:00
Dane Springmeyer
4173fff42c add svg parsers to pre-compile [skip ci] 2016-03-03 10:15:29 -08:00
Dane Springmeyer
a855a12532 make code comment about needing immutable grammars - refs #3342 [skip ci] 2016-03-03 09:14:06 -08:00
Dane Springmeyer
4c369f7b68 add more files to pre-build that take a long time [skip ci] 2016-03-03 08:05:05 -08:00
Dane Springmeyer
9adafd71df avoid -Wshadow warning from boost [skip ci] 2016-03-03 07:36:33 -08:00
artemp
cbef855743 spirit grammars - move BOOST_FUSION_ADAPT_ADT into implementation files (*_impl.hpp) + reduce boost::phoenix includes to make headers lighter to include 2016-03-03 11:50:41 +01:00
Mickey Rose
ec2c5ddbdc gdal: RAII + minor cleanup 2016-03-03 01:48:07 +01:00
Mickey Rose
489631ca34 remove reference on template parameter Detector 2016-03-03 00:17:41 +01:00
Mickey Rose
c8e3a0d549 refactor render_markers_symbolizer_visitor
- extract some common code into functions
- for cleaner dif: git show -w --patience
2016-03-03 00:07:18 +01:00
Dane Springmeyer
b5ac75cdf0 MAPNIK_DECL breaks on windows when compiled into static libmapnik-json.a 2016-03-02 13:56:01 -08:00
lightmare
80d9aebb79 Merge pull request #3340 from lightmare/gdal-register-once
call GDALAllRegister once, from one thread only
2016-03-02 22:19:07 +01:00
Dane Springmeyer
296f8d467d avoid grammar_impl usage in headers - other minor refactoring around json spirit 2016-03-02 12:48:07 -08:00
Dane Springmeyer
024cb86eff travis osx machines have 2 cores, so let's limit to 4 jobs 2016-03-02 12:47:32 -08:00
Dane Springmeyer
4edb57bf11 Merge pull request #3315 from mapnik/faster-csv-compile
Speed up CSV plugin / mapnik-index compile
2016-03-02 12:22:16 -08:00
Mickey Rose
d4566c28d2 gdal: only register drivers once
- refs #3339, #3093
2016-03-02 21:21:59 +01:00
Dane Springmeyer
10a9dba143 trim includes in json/error_handler.hpp 2016-03-02 12:17:12 -08:00
Dane Springmeyer
d148a966c8 from_geojson/to_geojson are now used in unit tests, csv plugin, and node-mapnik so move these to cpp 2016-03-02 11:26:56 -08:00
Dane Springmeyer
72459b3140 Merge branch 'master' of github.com:mapnik/mapnik into faster-csv-compile 2016-03-02 11:10:23 -08:00
Dane Springmeyer
31171824ec Merge pull request #3326 from lightmare/faster-csv-compile
merge mapnik-index::process_csv_file and csv_datasource::parse_csv
2016-03-02 10:47:05 -08:00
artemp
9138d64725 value.hpp - fix error C2375: redefinition; different linkage 2016-03-02 17:15:05 +01:00
artemp
a549803b5b to_utf8 : fix visibility via MAPNIK_DECL 2016-03-02 17:02:25 +01:00
artemp
f11cc5920f revive lost to_utf8 method but move it into '<mapnik/unicode.hpp>' 2016-03-02 16:47:55 +01:00
artemp
65da617ec0 re-use vector_converter + move apply_marker_multi into *.cpp 2016-03-02 16:20:10 +01:00
artemp
ff7d04f209 Merge branch 'lightmare-markers-placements-union' 2016-03-02 12:48:26 +01:00
Mickey Rose
66e7ef58d7 refactor markers_placement_finder
- refs #3327

Replace member variant of placement-type implementations with plain
union. The active implementation is chosen at construction time like
before.

Make placement-type implementation classes virtual to allow invoking
the active union member through a base class pointer.
2016-03-02 00:53:45 +01:00
artemp
77eaaa1259 move vertex_adapters implementation into .cpp - mark extern 2016-03-01 21:55:47 +01:00
artemp
053faa8a27 remove unused vars/cleanup 2016-03-01 20:49:54 +01:00
artemp
bb78b178cd reuse type 2016-03-01 20:37:23 +01:00
artemp
4c8928dd8c Merge branch 'master' into value-cpp 2016-03-01 17:43:02 +01:00
artemp
d374829b30 refactor apply_markers_multi and help compiler a bit more (re-enable support for GEOMETRYCOLLECTION) 2016-03-01 17:29:03 +01:00
artemp
45b54c703c apply_marker_multi - unroll template instantiation logic + drop 'GeometryCollection' support (experimental) 2016-03-01 17:28:09 +01:00
artemp
566c99807f minor formatting 2016-03-01 17:27:59 +01:00
bergwerkgis
bd4c97f82d [skip ci] AppVeyor: update %ICU_VERSION% 2016-02-29 13:58:59 +00:00
bergwerkgis
820ab82de9 [skip ci] AppVeyor: enable Postgres (for tests) 2016-02-29 13:37:09 +00:00
Mickey Rose
930056f5db benchmarks: fix over-width number formatting issue 2016-02-28 01:04:35 +01:00
Mickey Rose
db58b8b578 benchmarks: synchronize threads before starting the benchmark 2016-02-28 00:28:00 +01:00
Mickey Rose
02286bb7d1 benchmarks: report iterations per second instead of the inverse 2016-02-27 22:23:28 +01:00
Mickey Rose
3fdc799e84 benchmarks: rename option --log-severity to --log for consistency
- haven't noticed before that test/visual/run already had --log,
  and test/unit/run received that option recently

- pass --log=none by default in benchmark/run script
2016-02-27 22:19:08 +01:00
Mickey Rose
c21778fdfc merge mapnik-index::process_csv_file and csv_datasource::parse_csv
- the function in plugin was already configurable via flags, and only
  contained two un-conditioned blocks that process_csv_file didn't have

- so I extracted the common parts into a separate function (in a class
  holding the flags and state), process_csv_file calls it with default
  flags, plugin sets them from params

- removed namespace ::detail, moving stuff that was used outside
  csv_utils to ::csv_utils, and the rest to ::csv_utils::detail
2016-02-26 20:28:42 +01:00
Dane Springmeyer
e836836bdc [make release] add variant, increase depth to avoid (likely) checkout problems of test data [skip ci] 2016-02-26 10:42:03 -08:00
artemp
a4d7f03bb6 output detected newline character for debugging (ref #3220) 2016-02-26 19:20:23 +01:00
artemp
3ee109f46b allow any trailing combinations of line-endings (unix, mac, dos) (ref #3320) 2016-02-26 19:19:32 +01:00
artemp
63df9eecff unconditionally emit the SRID via @pnorman (https://github.com/mapnik/mapnik/pull/3319#issuecomment-189263651) 2016-02-26 14:14:47 +01:00
artemp
442cc281e1 use ST_MakeEnvelope (ref #3317) 2016-02-26 13:50:34 +01:00
Dane Springmeyer
776c599185 update CHANGELOG for mapnik v3.0.10 release [skip ci] 2016-02-25 16:37:57 -08:00
Dane Springmeyer
5c0d496c82 setting up for mapnik v3.0.10 release [skip ci] 2016-02-25 16:37:35 -08:00
Dane Springmeyer
7c555ca696 Add changelog for v3.0.10 [skip ci] 2016-02-25 16:17:05 -08:00
artemp
16321047da Merge branch 'master' into value-cpp 2016-02-25 15:38:43 +01:00
artemp
176d3e49c9 update test (ref f44b5ccfd9 #3237 #3238) 2016-02-25 15:31:18 +01:00
artemp
f44b5ccfd9 always query upto num_features_to_query to determine data schema (currently 5) across all access modes (ref #3237 #3238) 2016-02-25 15:29:32 +01:00
Mickey Rose
aaffb1c771 don't #include .cpp, add it to sources 2016-02-25 11:58:38 +01:00
artemp
c044b6d073 add relevant empty string/null equality ref #1859 #3255 2016-02-25 11:21:07 +01:00
Dane Springmeyer
d1a4268eb6 remove unneeded includes - found with http://include-what-you-use.org 2016-02-24 22:39:50 -08:00
Dane Springmeyer
08d7bf2152 no need for template usage for autodect_csv_flavour 2016-02-24 22:24:24 -08:00
Dane Springmeyer
f2782d0b67 [csv] move spirit usage to cpp 2016-02-24 17:42:51 -08:00
Dane Springmeyer
8ffee05048 Merge branch 'master' of github.com:mapnik/mapnik into faster-csv-compile 2016-02-24 16:42:23 -08:00
bergwerkgis
1a7cf57b9f [skip ci] Windows: checkout Python bindings recursively 2016-02-24 14:36:43 +00:00
artemp
bd5d1c8df8 prune include directives a bit more 2016-02-24 12:24:06 +01:00
artemp
eea68adb40 add required include 2016-02-24 12:10:25 +01:00
Artem Pavlenko
04c2532a81 Merge pull request #3302 from lightmare/travis
move some shell code from .travis.yml to separate script
2016-02-24 12:04:41 +01:00
artemp
50db396760 move value implementation into *.cpp 2016-02-23 23:05:19 +01:00
artemp
0c9a615c24 restore back compatibility shim ref #1859 (TODO: must go away in 3.1.x!!) 2016-02-23 14:01:06 +01:00
artemp
d43bc3232f remove unused include 2016-02-22 15:38:15 +01:00
artemp
2c931a238f color.cpp - port premultiply/demultiply and remove agg dependency 2016-02-22 14:39:31 +01:00
artemp
3e8ee9a559 simplify color generators - remove boost::phoenix usage
(ref: https://github.com/mapbox/windows-builds/issues/81)
2016-02-22 12:45:28 +01:00
Mickey Rose
ea54876d79 remove unused includes 2016-02-20 01:16:11 +01:00
artemp
9fe049d8af CSV utils - strengthen quote detection logic + tests 2016-02-19 15:05:15 +01:00
artemp
62de76a66e test bogus *.index files are handled correctly (ref #3300) + indirectly tests #3306 via requiring mapped_memory_cache::instance().clear() 2016-02-19 11:25:27 +01:00
artemp
c4817f7ae1 clear mapped_memory_cache to ensure new '*.index` are used (MAPNIK_MEMORY_MAPPED_FILE) (ref #3306) 2016-02-19 11:02:12 +01:00
artemp
96175554ae Add explicit instantiation declaration of singleton<mapped_memory_cache, CreateStatic> to avoid multiple instantiations across translation units. (ref #3306) 2016-02-19 11:00:58 +01:00
artemp
6a9240f3d4 Revert "shape.input - add 'update-cache' optional parameter (default:true)" -- no much use as OS seems to apply it's own caching, doh ..
This reverts commit f65c799475.
2016-02-18 17:37:46 +01:00
artemp
eb1a23d6e4 'invalid index' - testing invalid *.index fallback (ref #3300) 2016-02-18 17:36:18 +01:00
artemp
f65c799475 shape.input - add 'update-cache' optional parameter (default:true) 2016-02-18 17:34:03 +01:00
artemp
085a2afe40 minor formatting 2016-02-18 17:17:44 +01:00
Mickey Rose
efb06d2060 travis: move some shell code to separate script
- refs #3291
2016-02-18 15:40:13 +01:00
artemp
b7dd8331df use std::ofstream (ref 3300) 2016-02-18 12:54:17 +01:00
artemp
b43ee6dd04 beef up has_index method to check if *.index file is valid (has expected header) (ref #3300) 2016-02-18 11:45:58 +01:00
artemp
5183c1da44 spatial_index - rename check_header to check_spatial_index and make it free function ref #3300 2016-02-18 11:38:29 +01:00
artemp
cd5105785a csv_utils - fix istringstream initialiser by using explicit iterators pair std::string ctor 2016-02-18 11:35:14 +01:00
artemp
4c0781dbe9 remove redundant unique_ptr usage for local variable 2016-02-18 10:53:12 +01:00
Mickey Rose
6557394dc8 re-add mapnik::to_utf8 stub for backward compatibility 2016-02-17 16:56:21 +01:00
artemp
d7d22276c0 Merge branch 'lightmare-benchanting' 2016-02-17 12:07:19 +01:00
artemp
9aed60a1e6 Merge branch 'benchanting' of https://github.com/lightmare/mapnik into lightmare-benchanting 2016-02-17 12:07:06 +01:00
artemp
c72e3b7a2f Merge branch 'lightmare-to-string' 2016-02-17 10:52:54 +01:00
artemp
de409410a0 Merge branch 'to-string' of https://github.com/lightmare/mapnik into lightmare-to-string 2016-02-17 10:51:20 +01:00
Dane Springmeyer
f014041d9c restore intended variant version - partial revert of 93c4974b1 - refs #3297 2016-02-16 17:07:34 -08:00
Mickey Rose
8762e1d034 benchmarks: add option --min-duration=SECONDS
- with this option test_runner() will be called repeatedly (doing the
  given number of --iterations each time) until SECONDS have elapsed

- added output column showing average time per iteration, should help
  when comparing different runs

- shrinked the # of iterations column using k/M suffixes
2016-02-17 01:30:32 +01:00
Dane Springmeyer
93c4974b1b fix PYTHONUSERBASE - broken since b3170c397c [skip ci] 2016-02-16 13:23:34 -08:00
Dane Springmeyer
4beda3bc46 fix #3290 2016-02-16 12:30:40 -08:00
Mickey Rose
2f303e4da4 benchmarks: helper class for running a sequence of tests 2016-02-16 19:53:03 +01:00
Mickey Rose
29c4f730eb benchmarks: fix errors in non-compiling sources 2016-02-16 19:38:09 +01:00
Mickey Rose
ece5b93f08 benchmarks: add option --log-severity
this option is applied immediately after parsing args to override
MAPNIK_DEFAUL_LOG_SEVERITY
2016-02-16 18:37:24 +01:00
Mickey Rose
90fcdc90d3 benchmarks: fix output formatting
snprintf is a better tool for this task, anyway, but here's what was
wrong with the stream formatting:

s << name << ":" << std::setw(45 - (int)s.tellp())

cannot be used to align columns, tellp() may return any of:
    0
    name.length()
    name.length() + strlen(":")

because the compiler is allowed to reorder the evaluation of
sub-expressions as it likes -- it may evaluate s.tellp() before
evaluating (s << name) or in-between (s << name) and (s << ":")

try with gcc-4.8
2016-02-16 16:27:32 +01:00
artemp
15f905b272 csv - improved quote auto-detection logic which should catch more corner cases 2016-02-16 16:05:12 +01:00
Dane Springmeyer
85d4596769 move getline impl to separate header to avoid as much spirit inclusion 2016-02-15 19:06:11 -08:00
Mickey Rose
1499475d04 remove to_utf8, instead use UnicodeString::toUTF8String 2016-02-15 21:07:01 +01:00
Mickey Rose
5d1fd56cef csv_grammar: make csv_white_space_skipper a primitive_parser 2016-02-15 15:17:26 +01:00
Mickey Rose
ccf579f450 csv_grammar: simplify csv_line_grammar 2016-02-15 15:15:51 +01:00
artemp
ff54a14e34 update deps 2016-02-15 13:57:54 +01:00
artemp
ca0c0e5888 csv_util - combine auto-decting separator/quote/newline into one method std::tuple<char, bool, char, char> autodect_csv_flavour(T & stream, std::size_t file_length) 2016-02-15 13:55:06 +01:00
artemp
a9e1388b3b csv_grammar - always requre matching closing quoting character 2016-02-15 12:02:45 +01:00
lightmare
f4bb28b2c1 Merge pull request #3292 from lightmare/to-string
to_expression_string should re-escape backslashes and quotes
2016-02-15 04:10:36 +01:00
Mickey Rose
2d88fec458 to_expression_string: fix backslash-escapes in strings 2016-02-15 02:45:29 +01:00
Mickey Rose
f19b8e8eff test/expressions: add checks for backslash-escapes in strings 2016-02-15 02:23:19 +01:00
artemp
bfb93c7222 Merge branch 'lightmare-trim-filter-grammar' 2016-02-11 15:43:28 +01:00
artemp
edc2e75474 Merge branch 'trim-filter-grammar' of https://github.com/lightmare/mapnik into lightmare-trim-filter-grammar 2016-02-11 15:43:18 +01:00
artemp
fa6376d9a1 update variant submodule 2016-02-11 10:18:16 +01:00
Dane Springmeyer
10bd37ddd7 avoid unneccesary dependence on << operator of mapnik::enumeration 2016-02-09 10:09:12 -08:00
Dane Springmeyer
8ecb42894f restore << operator for mapnik::enumeration + add unit test 2016-02-09 10:08:29 -08:00
Dane Springmeyer
6c1b6e301d gradient does not need to be a fancy enumeration 2016-02-09 09:56:57 -08:00
Blake Thompson
1d981e899b Merge pull request #3289 from lightmare/lts
bootstrap: relieve leaning toothpick syndrome
2016-02-09 09:26:26 -06:00
Mickey Rose
dea4a73927 bootstrap: relieve leaning toothpick syndrome 2016-02-09 15:06:09 +01:00
artemp
87c3032e63 Merge branch 'lightmare-expr-no-barewords' 2016-02-09 14:15:35 +01:00
artemp
f0cc65958f Merge branch 'expr-no-barewords' of https://github.com/lightmare/mapnik into lightmare-expr-no-barewords 2016-02-09 14:15:22 +01:00
artemp
c53b4cdeda update test data ref #3288 2016-02-09 11:44:55 +01:00
Mickey Rose
15f841213a expression_grammar: restrict unquoted strings to single-atom expressions
- fixes #3017
- closes #3214
2016-02-08 17:15:13 +01:00
artemp
2b725dd257 shapeindex - skip 'null' shapes (ref #3288) 2016-02-08 15:51:13 +01:00
bergwerkgis
9e7b67e35d Merge branch 'master' of https://github.com/mapnik/mapnik 2016-02-08 13:55:25 +00:00
bergwerkgis
643391ba20 Windows: props file to override solution settings for /MP 2016-02-08 13:55:08 +00:00
Mickey Rose
8da250a0ee show build status badges for master (svg)
- Travis badge URL was .png
- AppVeyor badge used latest build (any branch)
- [skip ci]
2016-02-07 14:22:44 +01:00
Mickey Rose
ed8c8df738 expression_grammar: use one symbol table for all constants 2016-02-06 18:40:33 +01:00
Mickey Rose
ae39d48b86 test/expressions: add checks for logical operator precedence 2016-02-06 14:26:57 +01:00
Mickey Rose
959d4ded23 image_filter_grammar: rewrite using Nabialek trick 2016-02-06 02:03:55 +01:00
Mickey Rose
401dfacfc5 test/image_filter: prevent SIGSEGV when parsing fails 2016-02-06 01:56:05 +01:00
lightmare
b24f520439 Merge pull request #3239 from lightmare/expr-test
condense expressions tests
2016-02-06 00:37:05 +01:00
Mickey Rose
5764d619f3 expressions test: move expression strings into Catch calls, continue on failure 2016-02-05 17:22:01 +01:00
Mickey Rose
53bb55eade rename expresssions_test.cpp, didn't pass spell check 2016-02-05 17:22:01 +01:00
artemp
cb708d7f5a transform_grammar: correct and simplify rules per bcc7495a87 (commitcomment-15915607)
image_filter: relax `agg-stack-blur` rule to allow `agg-stack-blur,agg-stack-blur(),agg-stack-blur(1),agg-stack-blur(1,1)` syntax + add image filter parsing tests
2016-02-05 16:50:49 +01:00
artemp
bcc7495a87 transform grammar - fix optional seprator logic 2016-02-05 13:08:17 +01:00
bergwerkgis
eeb1507c6d AppVeyor: new try, nr.2 2016-02-05 11:13:09 +00:00
bergwerkgis
9d359ff3df AppVeyor: new try, nr.1 2016-02-05 11:05:12 +00:00
Mickey Rose
7594301d98 test/shapeindex: include loop variables in failure message
[skip ci]
2016-02-04 18:54:21 +01:00
artemp
8c1f71c39e try 8 JOBS 2016-02-04 12:51:20 +01:00
bergwerkgis
9282c60c91 AppVeyor: try again mapnik::value_null - correct <=, >= return values 2016-02-04 10:21:41 +00:00
artemp
7ab93a30f2 mapnik::value_null - correct <=, >= return values ref #3285 2016-02-04 10:06:11 +01:00
Dane Springmeyer
7ad4bf379d stick with clang-3.5 for now
- I have early evidence that mapnik compiled with 3.6 and mapnik-vt compiled with 3.5 == crashes
  - Also the mason deps are still compiled with 3.5
  - TODO: upgrade mapnik, mapnik-vt, and all mason deps to 3.6 all at once.
2016-02-03 11:18:00 -08:00
Dane Springmeyer
52cabfd107 expat is no longer a must have cairo dep since cairo can be built without fontconfig [skip ci] 2016-02-03 10:57:09 -08:00
artemp
35ab8cccdc follow up on previous commit - convert to common_type prior applying / (MSCV C4804) 2016-02-03 12:45:29 +01:00
artemp
376ffba7fe convert value_bool to value_integer before operator / (fixes unsafe use of bool - MSVC C4804) 2016-02-03 12:35:09 +01:00
artemp
c0724a6d95 value comparison - deduct return type automatically (fixes MSVC C4800) 2016-02-03 12:33:15 +01:00
artemp
09163f969d deps - update variant 2016-02-03 11:06:00 +01:00
Dane Springmeyer
1600bfe981 remove dead code in enumeration.hpp 2016-02-02 12:35:19 -08:00
Dane Springmeyer
09f137796d use std namespace for clib functions and fix spelling in comments 2016-02-02 12:35:19 -08:00
Dane Springmeyer
bc08617eb8 Merge pull request #3281 from mapnik/no-miniz
remove miniz support
2016-02-02 12:33:12 -08:00
Dane Springmeyer
834028db7a remove miniz support - library is unused in mapnik and unmaintained since 2013 (https://code.google.com/archive/p/miniz/) 2016-02-02 11:37:26 -08:00
artemp
b427139951 update variant 2016-02-02 12:41:22 +01:00
artemp
13af423046 unit test - use 'parse_image_filters' and avoid instantiating expensive redundant grammar 2016-02-02 11:30:00 +01:00
artemp
39a97865fc image_filter_grammar - move 'BOOST_FUSION_ADAPT_STRUCT` into *_impl.hpp 2016-02-02 11:30:00 +01:00
Dane Springmeyer
e76a1d9a81 [csv] use faster version of csv_utils::parse_line in more places + fix error output 2016-02-01 12:23:26 -08:00
Dane Springmeyer
d59460861e update to latest variant 2016-02-01 11:51:23 -08:00
artemp
33be145be9 variant - update to the latest upstream 2016-02-01 09:22:14 +01:00
Mickey Rose
958fcbf165 travis: try fewer jobs on osx 2016-01-31 15:44:25 +01:00
Mickey Rose
f9248914af travis: add SCons timings, fix comment in Makefile 2016-01-31 15:36:00 +01:00
Mickey Rose
4ef8efd554 remove struct member designators from initialization - fixes #3277
- it's C99 syntax, illegal in C++11 braced-init-list
- interestingly it's accepted in C++ by GCC and Clang,
  rejected by MSVC
2016-01-30 20:44:40 +01:00
Dane Springmeyer
57027eeee3 trim back what we build on OS X to try to save time 2016-01-29 20:04:42 -08:00
Dane Springmeyer
971c37691b travis/osx - parellelize the heavy compile jobs
- We can probably get away with this since OS X
   does not have an OOM killer
 - Will watch to see if it actually helps overall build times...
2016-01-29 19:00:04 -08:00
Dane Springmeyer
7ddb3cc4a2 try more JOBS=10 on osx 2016-01-29 18:32:14 -08:00
Dane Springmeyer
09ce7a0ea2 use xcode7.2 rather than 7.0.1 2016-01-29 18:31:35 -08:00
Mickey Rose
239623f976 remove unused variable [skip ci] 2016-01-30 03:24:07 +01:00
lightmare
e75342ac09 Merge pull request #3275 from lightmare/cleanup-noexcept-and-defaulted
Cleanup defaulted constructors and assignment operators, noexcept specifiers
2016-01-30 03:22:47 +01:00
Mickey Rose
a8d8a0d74f make clang happy - const default initialization
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
http://stackoverflow.com/questions/7411515/why-does-c-require-a-user-provided-default-constructor-to-default-construct-a
http://stackoverflow.com/questions/21900237/do-i-really-need-to-implement-user-provided-constructor-for-const-objects
2016-01-30 02:03:25 +01:00
Mickey Rose
be5d772d6c attempt to fortify mapnik::value conversion construction
- including correct noexcept specifier
- adding conversion-assignment operator wasn't really necessary,
  but it might be more efficient since it avoids constructing an
  intermediate variant
2016-01-30 02:03:25 +01:00
Mickey Rose
400e05585f refine noexcept specifiers on forwarding conversion constructors 2016-01-30 02:03:25 +01:00
Mickey Rose
b2c14972de remove explicitly-defaulted constructors and assignment operators ...
... where they should be implicitly defined by the compiler
2016-01-30 02:03:25 +01:00
Dane Springmeyer
61ffe096fc latest variant 2016-01-29 16:32:09 -08:00
Dane Springmeyer
24e4c67a34 Merge branch 'master' of github.com:mapnik/mapnik 2016-01-29 16:31:29 -08:00
Dane Springmeyer
a447c78d2e ensure valid objects in shapeindex test 2016-01-29 16:30:03 -08:00
Dane Springmeyer
0b22bd87f7 shape_index_featureset: initialize members explicitly - remove debug print 2016-01-29 16:29:43 -08:00
Dane Springmeyer
32bbccb8fd fix #3276 2016-01-29 16:29:12 -08:00
Dane Springmeyer
0291e851fe disable g++4.9 build which gets killed / use clang 3.6 to prepare for c++14 support 2016-01-29 16:05:09 -08:00
Dane Springmeyer
bc89f7f877 upgrade to latest variant - refs mapbox/variant#73 2016-01-29 15:54:15 -08:00
Dane Springmeyer
b3170c397c travis: linux: test gcc49 / osx: use xcode7 - closes #3240 2016-01-29 15:31:13 -08:00
artemp
64c2ad1e93 Just let the compiler generate move/copy for mapnik::value - via @lightmare ref https://github.com/mapnik/mapnik/issues/3274#issuecomment-176730124 2016-01-29 15:05:08 +01:00
artemp
a50036d421 value - make noexcept conditional + add move assigment operator 2016-01-29 13:07:43 +01:00
artemp
4233fb4abb update deps 2016-01-29 11:37:01 +01:00
lightmare
0b2775a5e1 Merge pull request #3265 from lightmare/refactor-symbolizers
refactoring group, markers symbolizers to reduce compile time / memory usage
2016-01-29 02:23:12 +01:00
Mickey Rose
1eb298f48c fix text_render_thunk construction
- this reverts render_thunk_extractor visitation by text/shield
  symbolizer back to how it works in master, only amended to avoid
  passing temporaries to text_symbolizer_helper
2016-01-29 00:12:18 +01:00
Mickey Rose
7bbc758fbc cleanup extraneous includes 2016-01-29 00:12:18 +01:00
Mickey Rose
6d84094f77 move render_markers_symbolizer to separate .cpp 2016-01-29 00:12:18 +01:00
Mickey Rose
f99c0e5a6f refactor render_markers_symbolizer 2016-01-29 00:10:19 +01:00
Mickey Rose
8a55eefbb5 derive virtual_renderer_common from renderer_common 2016-01-29 00:10:19 +01:00
Mickey Rose
844021a892 make face_manager copyable 2016-01-29 00:10:18 +01:00
Mickey Rose
a7ecabcde3 move render_group_symbolizer to separate .cpp
- use abstract class render_thunk_list_dispatch for the callback
  instead of template parameter render_thunks
- add class scoped_glyph_positions_offset for temporary shifting
  of glyph positions
- remove render_offset_placements
2016-01-29 00:10:18 +01:00
Mickey Rose
9d7b3d00e1 minor namespace cleanup in group_layout_manager 2016-01-29 00:10:18 +01:00
Mickey Rose
7761d32ec5 split common group symbolizer stuff 2016-01-29 00:10:18 +01:00
Dane Springmeyer
971508d752 Merge pull request #3271 from mapnik/image_filter_grammar_compile
Compile image_filter_grammar separately
2016-01-28 14:20:36 -08:00
Dane Springmeyer
b6d1e02939 repoint slow build list at image_filter_grammar 2016-01-28 12:13:02 -08:00
Dane Springmeyer
ed076bf3f5 compile image_filter_grammar separately 2016-01-28 12:04:36 -08:00
lightmare
5663e2daaf Merge pull request #3245 from lightmare/movable
add util::movable to complement util::noncopyable
2016-01-28 19:16:26 +01:00
artemp
28b807f852 update variant 2016-01-28 15:33:57 +01:00
Dane Springmeyer
c786ff9edf postgis unit test: copy params to ensure that each test is independent and order does not matter 2016-01-27 12:55:26 -08:00
artemp
0ac9d39759 update variantx 2016-01-27 17:17:26 +01:00
artemp
ea68e202be Merge branch 'master' into visitor-no-copy 2016-01-27 17:10:51 +01:00
artemp
9da449edf7 sync up variant again! 2016-01-27 15:59:58 +01:00
artemp
4b33780663 update variant 2016-01-27 15:48:29 +01:00
artemp
d027ed67c7 more const strictness, update to work with latest mapbox::variant/visitor-no-copy branch 2016-01-27 14:50:17 +01:00
artemp
c7a964abf6 disable "point unitialized" test for boost >= 1.50 (pending reviewing https://github.com/mapnik/mapnik/issues/3218) 2016-01-27 14:48:57 +01:00
artemp
4e8bbe48df fix return type 2016-01-27 12:05:39 +01:00
Dane Springmeyer
753a0ad216 give users a hint on what to do when they hit 'Invalid index file' 2016-01-26 12:19:34 -08:00
Artem Pavlenko
5d40745236 Merge pull request #3260 from tomhughes/fsf
Correct FSF address in various files
2016-01-26 10:58:58 +01:00
Tom Hughes
7262b2a256 Correct FSF address in various files 2016-01-26 09:54:42 +00:00
Artem Pavlenko
40258eb042 Merge pull request #3259 from tomhughes/exec
Remove execute permission from header files
2016-01-26 10:47:37 +01:00
Tom Hughes
920cb93d4c Remove execute permission from header files 2016-01-26 09:39:14 +00:00
Dane Springmeyer
c037fcba36 fix shapeindex tests - closes #3252 2016-01-25 16:57:32 -08:00
artemp
fa5bbd99fa mapnik::value - refactor, synchronise and simplify comparisons implementations 2016-01-25 12:27:52 +01:00
artemp
9774f41b85 mapnik::value_null - add <,<=,>,>= implementations 2016-01-25 12:26:57 +01:00
artemp
db9facef90 update submodules 2016-01-25 10:04:10 +01:00
Artem Pavlenko
f17b11a1e5 Merge pull request #3251 from lightmare/svg-parser-test
Fix #3249 and make parse_svg_value more strict
2016-01-25 09:58:14 +01:00
Artem Pavlenko
8f055d1252 Merge pull request #3250 from tomhughes/boost60
Adapt geometry tests got changes in boost 1.60
2016-01-25 09:55:51 +01:00
Mickey Rose
e9fbe0724f travis: fetch required git submodule pull requests 2016-01-24 18:34:28 +01:00
Mickey Rose
8d7fca3236 svg_parse_value - add 'px' unit, report trailing garbage
- avoid operator comma in semantic action, refs #3249
2016-01-23 20:44:14 +01:00
Mickey Rose
05b66fc355 refactor svg_parser_test
- moved some boilerplate to helper struct test_parser
- added REQUIRE(!parse...) to parsing error tests
- changed parsing error tests to compare full error lists instead of
  just count and then individual messages (if count was different, you
  were left in the dark with no messages at all)
- changed some double-quotes in errors to single-quotes
  (corresponding change to parser follows)
2016-01-23 20:21:05 +01:00
Tom Hughes
72297c9431 Adapt geometry tests got changes in boost 1.60
The issues with points at NaN and infinity bring considered as
valid reported in https://svn.boost.org/trac/boost/ticket/11711 has
been fixed in boost 1.60 so the tests need to reflect that.

Also per https://svn.boost.org/trac/boost/ticket/11710 empty
polygons are now considered invalid, and hence not simple.
2016-01-23 14:43:02 +00:00
Blake Thompson
5e30aee4e7 Added missing required header from unit test 2016-01-22 11:02:12 -06:00
Mickey Rose
0784e36754 add util::movable to complement util::noncopyable 2016-01-22 00:24:24 +01:00
Blake Thompson
d3d1106865 Fixed bug around set envelope in memorydatasource 2016-01-21 15:20:50 -06:00
artemp
f140cc7dd1 update submodules 2016-01-21 18:52:24 +01:00
artemp
a3ed9ad07e value test - improve coverage 2016-01-21 18:36:41 +01:00
artemp
0e836d7e20 mapnik::value - add value_bool/value_bool impl 2016-01-21 18:35:53 +01:00
artemp
85c3f5dbc1 improve type promotion across arithmetic ops 2016-01-21 18:14:55 +01:00
artemp
a707d5cd65 test svg - refactor common code into separate *.hpp 2016-01-21 18:14:17 +01:00
artemp
74776631c5 add value tests 2016-01-21 12:48:36 +01:00
artemp
e100037288 mapnik::value - improve type promotion for impl::add 2016-01-21 12:47:56 +01:00
artemp
e5db888673 remove redundant t == "png" check as it results in slower code ref #3243 2016-01-20 16:48:26 +01:00
artemp
be7a70746c image_io_test - increase coverage 2016-01-20 13:43:01 +01:00
artemp
c36ae3964a image_io_test : add basic save options tests 2016-01-20 13:39:32 +01:00
artemp
2db9818ab9 image_io_test : add 'save_to_xxx' tests 2016-01-20 12:24:08 +01:00
artemp
5471f519cd box2d - add missing tests 2016-01-19 12:15:50 +00:00
artemp
19c8b3e581 mapnik::color + increase unit test coverage (operator<<, to_string(), premultiply/demultiply) 2016-01-19 11:39:12 +00:00
artemp
f41d515572 fix operator<< 2016-01-19 11:38:52 +00:00
bergwerkgis
acdfde2062 AppVeyor: do a real clone (instead of 'zip-clone') but limit to latest 5 commits 2016-01-18 11:30:42 +00:00
bergwerkgis
58c0f29355 AppVeyor: 'git submodule update --init deps/mapbox/variant' 2016-01-18 10:52:02 +00:00
Dane Springmeyer
ca310c5439 Merge pull request #3237 from mapnik/geojson-props
Test for geojson with multiple different properties across features
2016-01-15 11:41:21 -08:00
mapsam
7a98745883 adding new passing test that catches failure of feature collection properties 2016-01-15 08:37:30 -08:00
artemp
1bfabec6be parse_svg_value - add DPI template parameter (default 90) (#3233) 2016-01-15 09:38:46 +00:00
artemp
c615708a2a restore local variant_io.hpp with specialisation for bool (https://github.com/mapnik/node-mapnik/issues/582) 2016-01-15 09:26:42 +00:00
Dane Springmeyer
5a6de7627b improve formatting of INFO output [skip ci] 2016-01-14 16:10:10 -08:00
Dane Springmeyer
bba2826813 make available test functions as macros to allow catch to report correct line numbers 2016-01-14 16:06:20 -08:00
Dane Springmeyer
6ad373019d revert unintended change added in 9c4085c8b1 2016-01-14 15:26:15 -08:00
Dane Springmeyer
03285f60b0 install mapbox variant - followup to #3236 2016-01-14 14:09:32 -08:00
Dane Springmeyer
9c4085c8b1 Adapt install docs to needing submodule before building #3236 2016-01-14 11:00:38 -08:00
Artem Pavlenko
c82b5c50c6 Merge pull request #3234 from mapnik/svg-tests
More SVG visual tests (testing tuesday 01/12/2016)
2016-01-14 16:19:55 +00:00
Artem Pavlenko
7997f3725e Merge pull request #3235 from mapnik/raster_mem_ds
Raster Type Memory Datasource
2016-01-14 16:19:43 +00:00
Artem Pavlenko
711d9eb679 Merge pull request #3236 from mapnik/external-variant
inherit mapnik::util::variant from mapbox::variant and add mapbox::va…
2016-01-14 16:19:20 +00:00
artemp
3333f3e1fa inherit mapnik::util::variant from mapbox::variant and add mapbox::variant as submodule 2016-01-14 15:02:41 +00:00
Blake Thompson
044c21db13 Made it possible to change the type of a memory datasource by inspecting the features that are added to the memory datasource 2016-01-14 08:36:12 -06:00
artemp
cc635df7bc svg_parser - use parse_svg_value 2016-01-14 11:03:55 +00:00
artemp
8ab10d0231 update test 2016-01-14 10:56:05 +00:00
artemp
48c043ec42 implement "parse_svg_value" supporting SVG units (https://www.w3.org/TR/SVG/coords.html#Units) (#3233) 2016-01-14 10:54:33 +00:00
artemp
1dff67e1fe fix namespace qualifiers 2016-01-14 10:24:40 +00:00
jakepruitt
ebc0f2eb8b Removed random tests from reference images 2016-01-13 15:37:56 -07:00
jakepruitt
de9023f5e0 Add circle tests 2016-01-13 15:20:01 -07:00
mapsam
3b79892ae5 svg test for multiple command parts, #3229 & #3225 2016-01-12 15:28:40 -08:00
jakepruitt
12d970ff8d Change octocat svg width 2016-01-12 13:37:03 -07:00
jakepruitt
e933f9ec40 Update new octocat fixture 2016-01-12 11:10:09 -07:00
Artem Pavlenko
6e93b05a06 Merge pull request #3228 from mapnik/svg-dash-array
Svg dash array
2016-01-12 15:11:36 +00:00
artemp
10a47921cf Merge branch 'master' into svg-dash-array 2016-01-12 15:10:44 +00:00
artemp
1fed45b123 export path_parse<svg_converter_type> 2016-01-12 15:08:28 +00:00
artemp
37d586d701 Unit tests - add SVG path parsing tests 2016-01-12 15:08:02 +00:00
artemp
9e7f7917e3 export path_parse<svg_converter_type> 2016-01-12 15:06:30 +00:00
artemp
24cb42fc22 Merge branch 'master' into svg-dash-array 2016-01-12 09:53:03 +00:00
Dane Springmeyer
daaea1eb8c download mason packages in batches to avoid overloading https connections 2016-01-11 18:16:30 -08:00
Dane Springmeyer
7062c473c7 update a few deps 2016-01-11 17:20:05 -08:00
Dane Springmeyer
9c3f78b411 Merge pull request #3180 from mapnik/postgis-tests-squashed
1st iteration of PostGIS tests
2016-01-11 17:02:34 -08:00
Dane Springmeyer
d6b854aef3 Merge pull request #3227 from mapnik/viz-hidden
Viz hidden
2016-01-11 16:56:49 -08:00
Dane Springmeyer
72d0ed5edc no need to set CUSTOM_CXXFLAGS now 2016-01-11 16:51:38 -08:00
Dane Springmeyer
8115659fa6 Default to vizibility=hidden and inlines-hidden - refs #1863 2016-01-11 16:51:14 -08:00
Dane Springmeyer
488af4055d Reduce merge conflicts with master 2016-01-11 16:23:04 -08:00
Dane Springmeyer
40fed664df more visual test updates 2016-01-11 14:10:46 -08:00
Dane Springmeyer
6036711148 update to latest visual test images 2016-01-11 14:02:57 -08:00
Dane Springmeyer
4e26932868 use latest visual test data 2016-01-11 13:48:48 -08:00
artemp
0a5f006bb9 SVG : add support for stroke-dashoffset 2016-01-11 10:56:04 +00:00
artemp
d3fc7f8fed Merge branch 'master' into svg-dash-array 2016-01-08 16:08:11 +00:00
artemp
9494bc15d4 SVG path parser - correct handling optional separator (,) between multiple command parts (#3225)
http://www.w3.org/TR/SVG/paths.html#PathElement
2016-01-08 12:00:51 +00:00
artemp
479a657437 make SVG path parser stricter by failing if not all input parsed ref #3225 2016-01-08 11:59:59 +00:00
artemp
65b20e44e3 export agg::vcgen_dash 2016-01-08 10:48:47 +00:00
artemp
a8bf7c72f9 Merge branch 'master' into svg-dash-array 2016-01-08 10:46:17 +00:00
artemp
c8932b3df3 svg2png : use SVG dimensions as a fallback when bounding box has zero width or height (e.g horizontal or vertical line) 2016-01-08 10:20:50 +00:00
artemp
b1c22ba853 SVG :initial support for "stroke-dasharray" 2016-01-07 15:54:34 +00:00
Blake Thompson
fd6e7704a1 Merge pull request #3222 from mapnik/sanitize_errors
Add configure flags for Sanitize errors
2016-01-07 08:36:11 -06:00
Blake Thompson
b46f87b385 Merge branch 'master' into sanitize_errors
Conflicts:
	include/mapnik/json/positions_grammar.hpp
2016-01-07 08:34:52 -06:00
Artem Pavlenko
513cfa7c80 Merge pull request #3219 from mapnik/address-sanitizer-happy
keep address-sanitizer happy ref (https://github.com/mapbox/mapnik-ve
2016-01-07 14:23:54 +00:00
artemp
ca83ca167d svg - move stroke-dasharray setup into dash-array parser method 2016-01-07 11:20:22 +00:00
Dane Springmeyer
bb8cd10751 tiff reader: read_generic is not implemented so throw in all cases not just if we can open the image 2016-01-06 09:17:35 -08:00
Dane Springmeyer
31958352bc Merge pull request #3213 from mapycz/fix-visual-tests-init
visual tests: fix vector initialization
2016-01-06 09:02:30 -08:00
artemp
e296e554a8 sync with 3ac6e46d01 2016-01-06 12:24:24 +00:00
artemp
50905c3f9a c++ style pedantic 2016-01-06 12:23:59 +00:00
Dane Springmeyer
1687f6ff1b add custom command line options to unit tests - refs philsquared/Catch#381 2016-01-05 17:13:36 -08:00
Dane Springmeyer
ca3b0c43e7 upgrade catch.hpp 2016-01-05 16:42:36 -08:00
Dane Springmeyer
96dff395a4 fix usage of base in csv unit tests 2016-01-05 15:18:02 -08:00
Dane Springmeyer
c82b4c8ba3 fix mason-latest publishing, broken since e547ee12 2016-01-05 13:34:11 -08:00
artemp
7b2da35c01 fix typo doh 2016-01-05 19:52:36 +00:00
artemp
5cd3645cd1 keep address-sanitizer happy ref (https://github.com/mapbox/mapnik-vector-tile/pull/171) 2016-01-05 16:58:37 +00:00
bergwerkgis
a86df63490 [skip ci] Windows: remove check for unix style "find" 2016-01-05 14:15:13 +01:00
Artem Pavlenko
d5f35d749e Merge pull request #3217 from mapnik/multi-part-shapeindex
Multi part shapeindex
2016-01-05 10:23:26 +00:00
artemp
ee0395df7a add basic read/write header support (quad_tree + spatial_index) ref (#3216) 2016-01-05 10:20:21 +00:00
artemp
869bff43f0 remove debug printing 2016-01-04 15:15:37 +00:00
artemp
b513d6a07b don't export DYLD_LIBRARY_PATH multiple times 2016-01-04 14:24:25 +00:00
artemp
102671e498 add test with --index-parts option 2016-01-04 14:22:09 +00:00
artemp
412fa20eb8 shapeindex: indicate default behaviour in -h(--help) 2016-01-04 13:23:50 +00:00
artemp
4c6632cf93 shapeindex : remove duplicate node defs + add default ctor 2016-01-04 13:19:16 +00:00
artemp
88a04a120f remove stderr 2016-01-04 11:56:01 +00:00
artemp
a2b3130d4b rebase to master (remove spirit-x3 changes) 2016-01-04 11:43:27 +00:00
Jiri Drbalek
9ad6ee2999 visual tests: fix vector initialization 2015-12-28 09:30:46 +00:00
Blake Thompson
dfa62c88d8 fix for santize address errors 2015-12-27 21:40:10 -06:00
Dane Springmeyer
cb7ed7bc80 Merge pull request #3210 from mapnik/windows-python-bindings
Windows: pull python bindings
2015-12-23 08:12:02 -08:00
bergwerkgis
630640ee6c Windows: pull python bindings, too. 2015-12-23 12:48:43 +01:00
artemp
e0c756ee8d geometry_envelope - add missing linear_ring 2015-12-17 12:07:05 +00:00
Dane Springmeyer
bd21e452d1 fix minor header glitches to allow headers to compile standalone 2015-12-16 14:22:36 -08:00
Dane Springmeyer
a0719870ab remove out of date/unused header 2015-12-16 14:22:09 -08:00
Dane Springmeyer
ce98a5c811 fix header glitches uncovered by time-header script - refs #3208 2015-12-16 13:17:19 -08:00
Dane Springmeyer
e3a1108ebd Add a script to time how long it takes to compile a header inside mapnik 2015-12-16 13:02:05 -08:00
bergwerkgis
eff087c0cf [skip ci] Windows: only manipulate page file settings on AppVeyor 2015-12-16 14:19:55 +00:00
bergwerkgis
1a49fe20fb AppVeyor: set powershell execution policy 2015-12-16 12:04:35 +00:00
bergwerkgis
34f7c86caf AppVeyor: try to increase page file size via powershell 2015-12-16 11:29:22 +00:00
bergwerkgis
d75fd12eab Windows: output pagefile size on AppVeyor (compiler out of heapspace) 2015-12-16 10:56:05 +00:00
bergwerkgis
e1498deaa8 [skip ci]
Windows:
* read Boost version from AppVeyor.yml
* init submodules from build-local.bat
2015-12-15 19:51:31 +00:00
Dane Springmeyer
6254b3851e Merge branch 'master' of github.com:mapnik/mapnik into postgis-tests-squashed 2015-12-14 15:28:04 -08:00
Dane Springmeyer
75cb954d26 update test-data to include new postgis sql 2015-12-14 15:27:48 -08:00
Dane Springmeyer
fc6556170d let's not depend on CREATE EXTENSION working in C++ code 2015-12-14 15:27:05 -08:00
Dane Springmeyer
b42f072ad3 wip: start chipping away at getting tests running - refs #3180 2015-12-14 15:00:10 -08:00
Dane Springmeyer
dc109a7ae2 Merge branch 'master' of github.com:mapnik/mapnik into postgis-tests-squashed 2015-12-14 13:45:29 -08:00
Dane Springmeyer
2222ca9b95 Merge pull request #3197 from tomhughes/nik2img
Fix name reported by mapnik-render
2015-12-14 13:33:42 -08:00
artemp
3139dad5cd don't bother iterating over geometries if shape_type is shape_null in header 2015-12-14 14:11:38 +00:00
artemp
6ca0e34a80 mapnik-index - output failed feature JSON when both --validate-features and --verbose options present. 2015-12-14 11:47:19 +00:00
artemp
5e2f3ce61d geojson/geometry - update unit test 2015-12-14 11:46:39 +00:00
artemp
599b021175 support arbitrary (nested) attributes in JSON Geometry 2015-12-14 11:46:39 +00:00
artemp
e65cb96743 sync expressions tests with spirit-x3 branch 2015-12-08 16:39:32 +00:00
artemp
327ba670ff expressions unit test - add relational and regex tests 2015-12-08 16:25:59 +00:00
artemp
319651c33a expressions unit test - add logical expr 2015-12-08 14:25:02 +00:00
artemp
10cd9cd0fd unit test - expression parsing/evalution test 2015-12-08 14:25:02 +00:00
Tom Hughes
25a9cab9ad Fix name reported by mapnik-render 2015-12-06 15:10:43 +00:00
Dane Springmeyer
50d1e2fbb3 handle more gcc 4.9 -Wshadow warnings 2015-12-04 14:07:42 -05:00
Dane Springmeyer
8e6e74dfa2 suppress -Wshadow warning from ogr 2015-12-03 10:22:02 -05:00
Dane Springmeyer
e424ef1d77 start fixing gcc 4.9 -Wshadow warnings 2015-12-02 15:55:26 -05:00
Dane Springmeyer
a58ef62fc2 start fixing gcc 4.9 -Wshadow warnings 2015-12-02 15:54:58 -05:00
Dane Springmeyer
59723ae693 restore -Wno-unsequenced, accidentally dropped in 7608040906 2015-12-01 13:59:45 -05:00
bergwerkgis
8235d0ed30 AppVeyor: fix new paths for new GIT version 2015-12-01 10:49:53 +00:00
artemp
b9c65368d2 update CHANGELOG for mapnik v3.0.9 release [skip ci] 2015-11-26 10:13:12 +00:00
artemp
03a0926bf0 update SCons to 2.4.1 2015-11-26 10:09:02 +00:00
artemp
e2cf79260f unit tests - add 'ensure original ordering in geojson.input' test ref #3182 2015-11-25 12:46:21 +00:00
artemp
d288ea0af6 Merge branch 'mapycz-geometry-remove-empty' 2015-11-24 15:49:50 +00:00
Jiri Drbalek
100e3c4995 centroid: enable algorithm on multi-geometries with empty sub-geometries 2015-11-24 15:41:34 +00:00
artemp
a2b1475ef7 port shapeindex_test.py to c++ (#3184) 2015-11-24 10:50:09 +00:00
Artem Pavlenko
1b6ca8bcd0 Merge pull request #3176 from mapycz/fix-warn
csv.input: fix warning
2015-11-23 10:46:10 +00:00
artemp
ec074752cc fix mistype => should be while (shx.is_good() && pos <= file_length - 4) 2015-11-23 10:32:14 +00:00
artemp
aee0149a1a GeoJSON - preserve feature ordering with both cache_features=true' and cache_features=false` (#3182) 2015-11-23 10:19:49 +00:00
artemp
c32166c71f move loop terminatiion condition to the top and avoid potential infinite loop when if (content_length != shp.read_xdr_integer()) + Track empty shapes and don't create *.index when there is no non-empty geometries
(#3184)
2015-11-23 09:58:27 +00:00
Jiri Drbalek
7283b758a0 csv.input: fix warning 2015-11-23 08:54:13 +00:00
artemp
7aa97628e0 revert accidentally pushed changes from WIP branch 2015-11-20 19:55:21 +00:00
artemp
58998f8126 cleanup - remove unused vars 2015-11-20 17:45:10 +00:00
artemp
4fffcdd612 update test data 2015-11-20 17:11:52 +00:00
artemp
1eab1a3a28 CSV - change 'quote' auto-dection logic to handle mixed cases better 2015-11-20 17:10:55 +00:00
bergwerkgis
b4a7b594dd 1st iteration of PostGIS tests 2015-11-20 15:44:43 +01:00
artemp
44eb1b69fa revert test-data 2015-11-20 14:13:13 +00:00
artemp
e0d7f8ffcb update test data 2015-11-20 14:10:44 +00:00
Dane Springmeyer
9a29b5005d fix #3178 2015-11-19 20:57:05 -08:00
Dane Springmeyer
c6d6153964 fix multiple -Wunused-parameter warnings [skip ci] 2015-11-19 17:14:58 -08:00
Artem Pavlenko
4dd2202055 Merge pull request #3175 from mapycz/fix-link-mapnik-index
mapnik-index: fix linking on Linux
2015-11-19 12:38:02 +00:00
artemp
da617f92eb add scale_image_agg' and reproject_and_scale_raster` overloads for backward caps 2015-11-19 12:26:16 +00:00
Jiri Drbalek
cb3f0fdcf2 mapnik-index: fix linking on Linux 2015-11-19 11:01:46 +00:00
artemp
7d8f7357ed GeoJSON - refactor FeatureCollection grammar to restore empty features condition (#3167) 2015-11-18 14:44:39 +00:00
artemp
938702dc8b geojson.input - rely on expectation failure to select optional single Feature/Geometry parser 2015-11-18 14:43:40 +00:00
artemp
998164dc72 mapnik c++ style 2015-11-18 14:42:29 +00:00
artemp
d373ae2e93 update visual-data 2015-11-17 15:28:25 +00:00
artemp
21c4438cbe Merge branch 'mapycz-fix-gray-scaling-2' 2015-11-17 15:04:08 +00:00
artemp
6d599dff0a Merge branch 'fix-gray-scaling-2' of https://github.com/mapycz/mapnik into mapycz-fix-gray-scaling-2 2015-11-17 15:03:37 +00:00
Dane Springmeyer
2ee9639f91 Merge branch 'master' of github.com:mapnik/mapnik 2015-11-12 10:19:56 -08:00
Dane Springmeyer
d9d37423b7 use mapnik/warning_ignore.hpp in a few last places 2015-11-12 09:51:41 -08:00
artemp
7a0688edcb mapnik-index - implement validatation callback by comparing bounding boxes from bbox extractor and GeoJSON feature 2015-11-12 16:12:06 +00:00
artemp
5eecf1dfae mapnik-index - add "--validate-features" option (experimental) 2015-11-12 13:45:25 +00:00
artemp
2602b1faff don't fail on null shapes (record length : 8 bytes) 2015-11-11 16:21:03 +00:00
artemp
4d6a735f53 initialise default (invalid) box2d with +/-std::numeric_limits<T>::max() to be in sync with Boost.Geometry 2015-11-11 15:50:56 +00:00
Artem Pavlenko
4e922f6a64 Merge pull request #3164 from mapycz/postgis-empty-geoms
check input data of centroid algorithm
2015-11-11 10:21:39 +00:00
Dane Springmeyer
2af154737c changelog improvements [skip ci] 2015-11-10 13:19:16 -08:00
Jiri Drbalek
924aa62662 raster scaling: fixes nodata handling, acurracy when working with small floats and clipping floats by [0; 255] 2015-11-10 20:37:45 +00:00
artemp
df03110939 update CHANGELOG 2015-11-10 16:00:44 +00:00
Jiri Drbalek
6066946ef2 add unit tests for is_empty and has_empty 2015-11-10 13:49:22 +00:00
Jiri Drbalek
071eeeb660 centroid algorithm: check for empty geometries 2015-11-10 13:49:12 +00:00
artemp
617400f1a1 unit test - add malformed FeatureCollection test where we expect exception to be thrown in featureset::next() method even when mapnik-index creates *.index file (expected due to optimised parsing) 2015-11-10 11:37:48 +00:00
artemp
dd31b95bbb better namings (post 9c7149aad5 itr_end implies Iterator concept which is not the case) ref #3166 2015-11-10 10:42:39 +00:00
Dane Springmeyer
9c7149aad5 fix variable shadowing in simplify_converter - refs #3166 2015-11-09 12:25:10 -08:00
Dane Springmeyer
5eefd8b1ec better harfbuzz ft check - refs #3166 2015-11-09 11:11:07 -08:00
Dane Springmeyer
8e1996d6c6 Scons: check for harfbuzz with freetype support 2015-11-09 10:58:16 -08:00
Dane Springmeyer
95fe045755 Merge branch 'master' of github.com:mapnik/mapnik 2015-11-09 10:47:21 -08:00
Dane Springmeyer
58f30f3d42 more CSV test coverage - refs #3098 2015-11-09 10:47:07 -08:00
Dane Springmeyer
61ee1284c6 Merge pull request #3131 from mapnik/code-of-conduct
Proposed code of conduct
2015-11-09 10:20:13 -08:00
Dane Springmeyer
53174718d8 use mapnik/warning_ignore.hpp in a few more places 2015-11-09 09:51:35 -08:00
artemp
38011dd388 Merge branch 'wmde-issue-3050' 2015-11-09 13:56:28 +00:00
artemp
5370dac598 Merge branch 'issue-3050' of https://github.com/wmde/mapnik into wmde-issue-3050 2015-11-09 13:56:06 +00:00
Dane Springmeyer
3db15cb823 avoid warning on unknown pragmas with gcc and older clang 2015-11-07 18:09:38 -08:00
Dane Springmeyer
7608040906 centralize warning suppression 2015-11-07 17:53:09 -08:00
Dane Springmeyer
de1d1b902a Merge pull request #3163 from mapycz/fix-offsetting-test
unit test: fix offsetting test
2015-11-07 12:42:08 -08:00
artemp
b85055ee38 unit test - add malformed "Feature" tests 2015-11-06 11:50:25 +00:00
Johannes Kroll
d4eee42db4 comment harfbuzz shaper changes 2015-11-06 12:04:20 +01:00
artemp
60fc5910f3 mapnik-index - fix std::clog message typo 2015-11-06 10:56:45 +00:00
Dane Springmeyer
9c3fa6c739 rollback xcode7 usage, which broke pip install for unknown reasons 2015-11-05 13:16:36 -08:00
Dane Springmeyer
90886e7992 now working on Mapnik v3.0.9 [skip ci] 2015-11-05 11:26:31 -08:00
Dane Springmeyer
8aac6871e0 touch up gcov docs [skip ci] 2015-11-05 11:18:59 -08:00
Dane Springmeyer
c77b1b887d use xcode7 2015-11-05 11:13:21 -08:00
Artem Pavlenko
e466a200ed Add generating *.gov files locally steps 2015-11-05 16:11:20 +00:00
artemp
32331e9b3e GeoJSON parsing - add more expectation points + refactor code 2015-11-05 15:30:25 +00:00
artemp
85ec771573 move 'null' geometry to the top level 2015-11-05 15:30:25 +00:00
Blake Thompson
510f422d5a Merge pull request #3165 from mapycz/upadate-changlog
update changelog and authors after #3160
2015-11-05 09:37:13 -05:00
Jiri Drbalek
990f536008 update changelog and authors after https://github.com/mapnik/mapnik/pull/3160 2015-11-05 14:23:22 +00:00
Jiri Drbalek
c7de93ae76 unit test: fix offsetting test 2015-11-05 13:38:40 +00:00
Dane Springmeyer
da624b9ef4 update test-data to pull in 9f471a25e3 -refs #3160 2015-11-04 13:57:14 -08:00
Dane Springmeyer
db7466adf0 link icu again - refs #3145 - reverts 3bb0f1748f 2015-11-04 13:12:25 -08:00
Artem Pavlenko
c3c7513c7f Merge pull request #3160 from mapycz/FIX-offseting
Fix offsetting
2015-11-04 15:29:55 +00:00
Johannes Kroll
f4a8de3f35 fix khmer problem 2015-11-04 10:33:51 +01:00
Johannes Kroll
be98fb733d fix khmer problem 2015-11-04 10:33:13 +01:00
artemp
c752cf2d1c variant - update to 91ba0301a6 2015-11-03 15:32:52 +00:00
artemp
a2975c0d23 unit test - check values stored as expected types in mapnik::value 2015-11-03 15:17:43 +00:00
artemp
6aca4b17f8 extract_bounding_box - fail on nested "FeatureCollection" elements 2015-11-03 13:33:06 +00:00
artemp
47c93eaf15 more formatting 2015-11-03 13:33:06 +00:00
bergwerkgis
4325fcb26d Windows tests: fix missing "M_PI" 2015-11-03 13:22:51 +00:00
artemp
b918047c4b make python3 compatible 2015-11-03 10:48:06 +00:00
artemp
6f71ad56d4 format 2015-11-03 10:46:26 +00:00
artemp
cd708859b6 python rundemo.py - make python3 compatible 2015-11-03 10:46:01 +00:00
artemp
2893ee4551 mapnik::value - add missing specialisations for mapnik::value_bool in comparison operators + update unit tests 2015-11-03 10:11:29 +00:00
Dane Springmeyer
dad4f64813 include mapnik/config to avoid BOOST_MPL_LIMIT_VECTOR_SIZE macro mismatch warnings 2015-11-02 09:09:14 -08:00
artemp
439fcd0426 correct clog message + formatting 2015-11-02 14:27:57 +00:00
artemp
2acafe78ee mapnik-index - check extracted bounding box is valid 2015-11-02 14:14:12 +00:00
artemp
58c7e5baa3 json - use unified error_handler accross grammars 2015-11-02 13:10:40 +00:00
artemp
25ed5d1e00 json error_handler : optional MAPNIK_LOG_ERROR + don't throw + return qi::fail 2015-11-02 12:46:18 +00:00
Roman Galacz
80fa21cc6f Fix offsetting 2015-11-02 12:32:06 +01:00
artemp
96c2fc9076 image - update unit test re: cb31692f37 2015-11-02 10:27:11 +00:00
artemp
cb31692f37 image : fix buffer's copy ctor - only std::copy when rhs owns the data (#3152) 2015-11-02 09:47:05 +00:00
Johannes Kroll
9088ae49e1 Merge remote-tracking branch 'origin-mapnik/master' into issue-3050 2015-11-02 10:16:45 +01:00
Dane Springmeyer
34f5b56003 travis: get postgis running on osx 2015-10-30 14:36:01 -07:00
artemp
2366eaf2f5 value - fix typo (up-cast value_bool to value_double in operator==()) 2015-10-30 14:48:10 +00:00
artemp
f3bed3a627 JSON - optimise geometry grammar 2015-10-30 13:10:51 +00:00
artemp
ab7040d96a and again :) 2015-10-30 10:01:33 +00:00
artemp
16355533c7 update test data 2015-10-30 09:57:29 +00:00
Johannes Kroll
47a2a22f60 less ternaries 2015-10-30 07:34:50 +01:00
Johannes Kroll
9d4134694c use vector instead of map for glyph table 2015-10-30 07:30:41 +01:00
artemp
133ca16d3a GeoJSON.input - skip empty geometries (#3156) 2015-10-29 16:54:35 +00:00
Dane Springmeyer
e505c94583 start postgis datasource tests 2015-10-29 09:48:49 -07:00
Dane Springmeyer
3c007cee9e better debug output when test fails 2015-10-29 09:48:09 -07:00
Dane Springmeyer
1106654d40 [unit] move some code from csv test to header 2015-10-29 09:23:54 -07:00
Johannes Kroll
e9ac686b49 add spaces 2015-10-29 16:39:23 +01:00
Dane Springmeyer
a9814f25f0 more test include gardening 2015-10-29 08:35:45 -07:00
Johannes Kroll
a44e64864c add spaces 2015-10-29 16:29:02 +01:00
Dane Springmeyer
5090b103e4 try to speed up compile of tests by cleaning up unused includes/cruft 2015-10-29 08:20:46 -07:00
Dane Springmeyer
aa6a06116b remove test, now covered by tests at https://github.com/mapbox/mapnik-vector-tile 2015-10-29 08:06:25 -07:00
Dane Springmeyer
1ac12a4430 add hint of how to compile geojson unit test without scons 2015-10-29 08:01:36 -07:00
artemp
8a762a0a19 GeoJSON - ensure error_handler doesn't read passed the end of stream re #3154 2015-10-29 14:08:51 +00:00
artemp
3de31c50ab correct exceptions text 2015-10-29 14:08:08 +00:00
artemp
89aef9726a sync variant => cd8fe9ce3f 2015-10-28 12:37:55 +00:00
artemp
7b4e21e242 more cleanups 2015-10-28 10:09:22 +00:00
artemp
e9a6182ff7 update test data 2015-10-28 09:26:32 +00:00
artemp
4dee3d3b51 don't skip iter_pos 2015-10-28 09:07:09 +00:00
artemp
6122cdf7a8 cleanup - remove commented out code 2015-10-28 09:07:09 +00:00
Dane Springmeyer
18858dffca avoid boost qi warning [skip ci] 2015-10-27 16:38:43 -07:00
Johannes Kroll
a28e0b1588 Merge branch 'master' of https://github.com/mapnik/mapnik 2015-10-27 23:29:24 +01:00
artemp
b99a20378d remove swap and implement assign
https://github.com/mapnik/mapnik/issues/3103
    https://github.com/mapnik/mapnik/pull/3146
2015-10-27 14:59:17 +00:00
Johannes Kroll
7103ad6f35 change font handling in harfbuzz shaper (issue #3050) 2015-10-26 18:33:53 +01:00
Dane Springmeyer
35dccd4653 remove unused variable [skip ci] 2015-10-23 12:05:56 -07:00
Dane Springmeyer
646bcbcbd9 don't depend on filesystem directly 2015-10-23 10:39:55 -07:00
Dane Springmeyer
cf36c78812 fix #3143 2015-10-23 10:39:34 -07:00
artemp
484b23f2c2 update CHANGELOG for mapnik v3.0.8 release [skip ci] 2015-10-23 14:49:02 +01:00
artemp
2d15567c04 setting up for mapnik v3.0.8 release [skip ci] 2015-10-23 14:46:50 +01:00
artemp
1d041f8dde update for 3.0.8 2015-10-23 14:42:29 +01:00
artemp
158729ffa4 remove unreachable code block 2015-10-23 14:24:08 +01:00
artemp
c10263764c geojson unit test - add invalid Point test 2015-10-23 14:17:41 +01:00
artemp
69829e028d add simple I/O error test when file does not exist 2015-10-23 14:11:17 +01:00
artemp
b0bcf86aaa clean up -> remove *.index 2015-10-23 13:17:18 +01:00
artemp
35a420927e follow naming convention 2015-10-23 13:12:19 +01:00
artemp
aaa5a73105 add disk index tests 2015-10-23 13:11:08 +01:00
artemp
209fe55e14 trim headers + sync with csv.input 2015-10-23 13:10:23 +01:00
artemp
34ffdaa3ef use anonimous namespace + default arg in create_disk_index 2015-10-23 13:09:21 +01:00
artemp
7a1ab599ba move csv_test to unit/datasource 2015-10-22 18:32:23 +01:00
artemp
aeaadd423d geojson.input - print line number 2015-10-22 18:32:23 +01:00
Dane Springmeyer
5fe7367231 bypass expected error condition - refs #3125 2015-10-22 10:28:31 -07:00
Dane Springmeyer
ca63ae0a96 csv: no need for newlines in exception strings 2015-10-22 10:22:58 -07:00
Dane Springmeyer
ab88fe48a4 csv: fixup error messages when geometry fails to parse 2015-10-22 10:10:23 -07:00
Dane Springmeyer
73e9804384 geojson test coverage of 'base' parameter 2015-10-22 08:45:34 -07:00
Dane Springmeyer
a05746180d fix another cache-features -> cache_features 2015-10-22 08:19:39 -07:00
artemp
d2c02dae54 fix the rest of cache-features names 2015-10-22 16:13:08 +01:00
artemp
3b1b15f64b fix parameter name and improve coverage 2015-10-22 15:53:23 +01:00
artemp
e63405626b cleanup 2015-10-22 15:12:17 +01:00
artemp
dd95662648 CSV - add more tests 2015-10-22 15:11:18 +01:00
artemp
6effbedff3 csv.input/mapnik-index - validate geometry locator and throw early if invalid 2015-10-22 13:29:26 +01:00
Dane Springmeyer
a7e7f088a2 CSV plugin: trigger exception rather than crash when indexing error happens 2015-10-21 12:54:03 -07:00
Dane Springmeyer
00154c2dfb add test coverage of geojson features_at_point 2015-10-21 12:37:30 -07:00
Dane Springmeyer
669bca884e more coverage of geojson get_geometry_type 2015-10-21 09:15:44 -07:00
artemp
c3ccff4f02 shape.input - add stream state check and calculate position limit 2015-10-21 16:33:12 +01:00
artemp
9f439d1e2e unit test geojson - only expect CHECK_THROW when *.index is not present. Bounding box extractor parser is not strict in the sense that it doesn't require input to be fully consumed (i.e it can handle extra traling characters). 2015-10-21 11:33:24 +01:00
artemp
5cb2b8a77a geojson.input - create temp internal mapnik::feature_impl objects with id = -1 for clarity ref #3134 2015-10-21 11:14:13 +01:00
artemp
17ace8a3e8 shape.input - read shx_file_length in shape_featureset and avoid passing wrong file length by mistake ref #3136 2015-10-21 10:55:26 +01:00
artemp
19c1c0afd0 bug fix - shape_featureset now expects shx file length (!) ref #3136 2015-10-21 10:46:49 +01:00
Dane Springmeyer
e547ee127c run/post coverage even if tests fail 2015-10-20 23:27:39 -07:00
Dane Springmeyer
56d8516216 increase test coverage of get_geometry_type 2015-10-20 23:17:44 -07:00
Dane Springmeyer
14589dabd1 improve test coverage of geojson indexing 2015-10-20 22:56:03 -07:00
Dane Springmeyer
9df548670c manually inherit DYLD_LIBRARY_PATH - closes #3138 2015-10-20 17:22:52 -07:00
Dane Springmeyer
1455c6be1f put mapnik-index on PATH to allow testing to work without installing - refs #3137 2015-10-20 15:24:58 -07:00
Dane Springmeyer
d1c5c69f07 Also dump posix return (aka WEXITSTATUS) 2015-10-20 15:18:12 -07:00
Dane Springmeyer
cd5b97b01f better error reporting when no valid files are passed to mapnik-index 2015-10-20 14:49:58 -07:00
Dane Springmeyer
1df6fbb17e dump std::system return code if index is not found 2015-10-20 12:23:05 -07:00
Dane Springmeyer
2c72833629 Revert "travis - std::system() calls fails"
This reverts commit 5de3a3776d.
2015-10-20 12:19:06 -07:00
Dane Springmeyer
d80179fca4 fix mapnik-index build when memory mapping is disabled - closes #3135 2015-10-20 12:17:32 -07:00
Dane Springmeyer
001520aa95 mapnik-index: only dump output if actually processing csv or geojson 2015-10-20 12:15:51 -07:00
Dane Springmeyer
3bb0f1748f icu linking for mapnik-index should be unneeded 2015-10-20 12:15:23 -07:00
Dane Springmeyer
82a4984f79 Merge branch 'master' of github.com:mapnik/mapnik 2015-10-20 07:57:19 -07:00
artemp
bfbc72c484 feature : put back set_id() for upstream compatibility 2015-10-20 14:36:19 +01:00
artemp
ab2d86c617 shape.input: remove set_id() method as it's no longer required ref #1020 #1019 2015-10-20 14:18:17 +01:00
artemp
5de3a3776d travis - std::system() calls fails 2015-10-20 13:50:54 +01:00
artemp
4822477d40 don't rely on std::system return value (implementation defined) 2015-10-20 12:44:45 +01:00
artemp
aa537e6254 geojson unit test - further simplify and increase coverage 2015-10-20 12:04:32 +01:00
artemp
c4ec93a5f2 geojson unit test - run 'FeatureCollection' test using all permutations of disk_index and cache_features settings. 2015-10-20 11:46:39 +01:00
artemp
c952db979e use mapnik::value_integer for feature id's 2015-10-20 11:45:39 +01:00
artemp
daaf2ee9d5 unit test (geojson) - de-dupe code 2015-10-20 11:22:42 +01:00
artemp
c053682711 geojson.input - assign incremental feature_id in geojson_index_featureset and geojson_memory_index_featureset
(ref #3134)
2015-10-20 11:12:11 +01:00
Dane Springmeyer
ecf79b463c add detail to changelog [skip ci] 2015-10-19 10:01:49 -07:00
Dane Springmeyer
c8867d1419 use std::system 2015-10-19 10:01:33 -07:00
artemp
d9a66a765c unit/geojson - add basic test for *.index access mode 2015-10-19 16:58:32 +01:00
artemp
4b5bbe9446 unit test(geojson) - add tests reading all geometry primitives 2015-10-19 12:23:43 +01:00
artemp
26bf021af9 rename large_geojson_featureset -> geojson_memory_index_featurest to better reflect undelying implementations: geojson_index_featureset is most capable in terms of handling large input data with minimal memory requrements via utilising on disk spatial index (createed with mapnik-index utility) 2015-10-19 10:54:52 +01:00
Dane Springmeyer
ee873aa17d fix compile with older harfbuzz that lacks HB_VERSION_ATLEAST 2015-10-16 14:55:43 -07:00
Dane Springmeyer
8813e73cfc rename SHAPE_MEMORY_MAPPED_FILE to MAPNIK_MEMORY_MAPPED_FILE 2015-10-16 13:34:53 -07:00
artemp
4976a7c72a update test data 2015-10-16 17:42:39 +01:00
artemp
4733c7ffc1 geojson.input - geometry_type for disk-index 2015-10-16 17:31:36 +01:00
Artem Pavlenko
097289ac3d Merge pull request #3130 from mapnik/smart-geojson
geojson.input - split parsing FeatureCollection and single Feature/Ge…
2015-10-16 13:18:11 +01:00
artemp
942fb3c562 geojson.input - implement spatial disk index featureset 2015-10-16 13:15:20 +01:00
artemp
e88ecb86c4 add has_name(std::string const& name) const method 2015-10-16 13:14:41 +01:00
artemp
2437473e74 c++11 - upfate to canonical operator= impl 2015-10-16 12:46:24 +01:00
artemp
652fa15ec0 better stderr 2015-10-16 10:49:29 +01:00
artemp
584fc5a61a Merge branch 'master' into smart-geojson 2015-10-16 10:33:32 +01:00
Dane Springmeyer
a938ca58a9 consistently catch by const ref [skip ci] 2015-10-15 18:06:33 -07:00
Dane Springmeyer
cc0ff85328 Merge branch 'master' of github.com:mapnik/mapnik 2015-10-15 13:56:09 -07:00
Dane Springmeyer
5da6563db4 maintain 'FT_LOAD_NO_HINTING' / adapt to changes upstream in harfbuzz 1.0.5 mapnik/test-data-visual#25 2015-10-15 13:56:02 -07:00
artemp
886ac23c64 geojson.input - force caching features and parse single feature/geometry when cache_features = false but extract_bounding_box fails (input is not FeatureCollection) 2015-10-15 17:35:46 +01:00
Dane Springmeyer
c48690ff87 add proposed code of conduct from http://contributor-covenant.org 2015-10-15 08:34:02 -07:00
artemp
2906706a40 geojson.input - split parsing FeatureCollection and single Feature/Geometry into separate grammars 2015-10-15 15:12:16 +01:00
artemp
b798503623 shape.input - pass shx_file_length to shape_featureset 2015-10-15 11:49:18 +01:00
artemp
a73e8537d8 shape.input - add support for reading offset/record_length from *.shx in shape_featureset (no *.index) - ref #3126 2015-10-14 16:44:43 +01:00
artemp
b15dba95cd unit test - add malformed JSON test + update test data 2015-10-14 11:41:14 +01:00
artemp
8562d18cd0 geoson.input - throw an exception if input hasn't been fully consumed 2015-10-14 11:03:07 +01:00
artemp
faad6d8543 catch std::exception 2015-10-14 10:32:29 +01:00
artemp
950afdcac1 mapnik-index : output number of elements 2015-10-13 17:12:02 +01:00
artemp
3368b6d1de shapeindex - re-factor to read offset and record length from *.shx (allows reading erroneous shapefiles from NE) 2015-10-13 13:34:21 +01:00
artemp
4093f10f61 shapefile_reader.py - improve by adding test_polygon 2015-10-13 13:34:21 +01:00
Dane Springmeyer
b75f075885 now working on mapnik v3.0.8 [skip ci] 2015-10-12 16:31:47 -07:00
Dane Springmeyer
b4fb174146 update CHANGELOG for mapnik v3.0.7 release [skip ci] 2015-10-12 16:18:50 -07:00
Dane Springmeyer
e161253631 remove last reference to pre versioning [skip ci] 2015-10-12 13:56:13 -07:00
Dane Springmeyer
a326cff744 ensure mapnik-config is rebuilt if version.hpp changes 2015-10-12 13:42:08 -07:00
Dane Springmeyer
98e8a12d78 Fix #3124 2015-10-12 13:38:15 -07:00
Dane Springmeyer
ba8747784d fix typo 2015-10-12 13:38:01 -07:00
Dane Springmeyer
c9a4d3d8ef remove MAPNIK_VERSION_IS_RELEASE logic from scons - refs #3123 2015-10-12 10:41:11 -07:00
Dane Springmeyer
67718ed8e1 rename nik2img to mapnik-render 2015-10-12 10:38:58 -07:00
Dane Springmeyer
03cc55f4f0 remove MAPNIK_VERSION_IS_RELEASE - refs #3123 2015-10-12 10:28:23 -07:00
Dane Springmeyer
7fa1e58ab7 better c++11 usage 2015-10-12 10:10:12 -07:00
Dane Springmeyer
393070ae6c remove unused code 2015-10-12 10:10:08 -07:00
Dane Springmeyer
64f342047c Merge pull request #3107 from nvkelso/patch-1
Add section for Python Bindings
2015-10-12 09:11:54 -07:00
Dane Springmeyer
ab64f939fb Merge pull request #3122 from mapycz/rm-abandoned-header
remove needless header file
2015-10-12 09:11:16 -07:00
Jiri Drbalek
51878b3321 remove needless header file 2015-10-12 15:29:20 +00:00
Jiri Drbalek
33e7ed5124 Merge pull request #3121 from mapnik/revert-3118-fix-gray-scaling
Revert "fix scaling gray images"
2015-10-12 15:34:33 +02:00
Jiri Drbalek
070848bce0 Revert "fix scaling gray images" 2015-10-12 15:34:07 +02:00
Artem Pavlenko
b971676b71 Merge pull request #3118 from mapycz/fix-gray-scaling
fix scaling gray images
2015-10-12 14:19:00 +01:00
Dane Springmeyer
324f70652b code cleanup / c++11 usage in plugins 2015-10-09 16:07:19 -07:00
Dane Springmeyer
34a744f7db Add more postgis fixes to changelog [skip ci] 2015-10-09 15:50:52 -07:00
Dane Springmeyer
b4e0f56715 create changelog entry for v3.0.7 - refs #3120 [skip ci] 2015-10-09 15:28:51 -07:00
Dane Springmeyer
5e8a009278 fix #3120 2015-10-09 15:27:34 -07:00
Dane Springmeyer
dc80d9f582 Fix -Wsign-compare [skip ci] 2015-10-09 13:49:34 -07:00
Jiri Drbalek
2596f7bd52 fix scaling gray images 2015-10-09 15:15:50 +00:00
artemp
da1247fa1e mapnik-index: add initial support for processing GeoJSON 2015-10-09 12:49:58 +01:00
artemp
0bca3afa4e formatting 2015-10-09 12:49:33 +01:00
artemp
21b5a132a9 mapnik-index - refactor to prepare for adding GeoJSON index support 2015-10-09 11:27:35 +01:00
artemp
faeae5bc2e c++11 - more concise syntax 2015-10-09 11:26:39 +01:00
artemp
b5fe23ac28 inline extract_geometry 2015-10-09 11:26:10 +01:00
Dane Springmeyer
719135d755 start working on Mapnik v3.0.7 (https://github.com/mapnik/mapnik/milestones/Mapnik%203.0.7) [skip ci] 2015-10-08 10:24:17 -07:00
artemp
3ec7310f98 re-enable (partially) features at point interface 2015-10-08 14:52:41 +01:00
bergwerkgis
7e452602fa build-local.bat, appveyor.yml: boost@1.59 2015-10-08 09:28:36 +00:00
Dane Springmeyer
f7b125c90f use boolean_type (no functional change) [skip ci] 2015-10-07 17:53:32 -07:00
Blake Thompson
69a502043b Bump down to non release 2015-10-07 16:59:13 -07:00
Dane Springmeyer
54181f66b2 update CHANGELOG for mapnik v3.0.6 release 2015-10-07 14:48:20 -07:00
Dane Springmeyer
3cebe9726b setting up for mapnik v3.0.6 release 2015-10-07 14:47:41 -07:00
Dane Springmeyer
3bfd997b83 fix -Wsign-compare warning [skip ci] 2015-10-07 14:43:33 -07:00
Dane Springmeyer
01d3c91de4 only run test if plugins exist 2015-10-07 14:41:07 -07:00
Dane Springmeyer
20aaeac515 fix more boost -Wsign-compare warnings [skip ci] 2015-10-07 14:40:51 -07:00
Dane Springmeyer
39eaa6dde4 add #3115 to changelog [skip ci] 2015-10-07 14:10:26 -07:00
Dane Springmeyer
ca7132b425 Merge pull request #3117 from mapnik/discard-key-field
Postgis plugin: Add key_field_as_attribute
2015-10-07 13:48:55 -07:00
Dane Springmeyer
6e84bde468 Add key_field_as_attribute (default:true) to control if key_field is added as feature attribute - refs #3115 2015-10-07 12:59:45 -07:00
artemp
58dad1bc30 viewer - fix building on OS X 10.11 2015-10-07 17:39:00 +01:00
artemp
bf411f55de remove debug stderr 2015-10-07 17:39:00 +01:00
Dane Springmeyer
25eaf96e98 silence -Wsign-compare warning from boost [skip ci] 2015-10-07 08:33:24 -07:00
Dane Springmeyer
1ef0d5b188 more changelog updates for v3.0.6 [skip ci] 2015-10-07 08:33:24 -07:00
Dane Springmeyer
8d11151382 rename csvindex to mapnik-index since we'll soon support geojson 2015-10-07 08:33:24 -07:00
artemp
8f8a33a2ee cleanups 2015-10-07 12:37:30 +01:00
artemp
b275bcb2c2 update to use latest grammar + use std:: qualifier for 'C' lib functions 2015-10-07 12:34:20 +01:00
artemp
0b1ae8bd01 csv_grammar - implament custom (white-space only) skipper + optimise grammar 2015-10-07 12:33:10 +01:00
Dane Springmeyer
3b8bcacb91 latest visual test data with updated postgis/cairo fixtures 2015-10-06 19:10:14 -07:00
Dane Springmeyer
b7a54f3f09 warn if boost is too old to run tests 2015-10-06 15:39:42 -07:00
Dane Springmeyer
64f2628488 use latest visual test data after cairo change in 4b490fb - refs mapnik/test-data-visual#23 2015-10-06 15:39:42 -07:00
Dane Springmeyer
49e817fc2e upgrade freetype, icu, and cairo to latest versions 2015-10-06 15:39:42 -07:00
Dane Springmeyer
efee15c2e7 remove unused typedef [skip ci] 2015-10-06 15:39:42 -07:00
Dane Springmeyer
20e72ccc82 remove unused typedef [skip ci] 2015-10-06 15:39:42 -07:00
Blake Thompson
6e47b1bd10 Updated the error handling of geojson parser so that it is more clear where an error orginates 2015-10-06 15:00:53 -07:00
Dane Springmeyer
89e1cfaf10 add protobuf to bootstrap [skip ci] 2015-10-06 09:28:48 -07:00
Blake Thompson
00a4fdd726 Bump to version of boost in bootstraph 2015-10-06 09:01:54 -07:00
artemp
e727fb3877 csv.input - read first line of data to update descriptor (disk-index) + remove stderr
§
2015-10-06 16:39:21 +01:00
artemp
8ec1e3e73d geometry_is_simple - fix handling multi-geometries (1.59) 2015-10-06 16:14:20 +01:00
Dane Springmeyer
5915c4e7a5 fix test compile with older boost 2015-10-06 07:32:51 -07:00
Wilhelm Berg
4cfd692be2 Merge pull request #3109 from mapnik/visual-test-results
visual diff of visual test results
2015-10-06 14:03:22 +02:00
artemp
0bd7a980f3 unit test - add `query_first_n' test 2015-10-06 11:42:34 +01:00
artemp
d0cf7ad6f4 csv.input - implement get_geometry_type_impl for disk based index 2015-10-06 11:32:21 +01:00
artemp
4d08e3f62c spatial_index - implement `query_first_n' 2015-10-06 11:31:38 +01:00
artemp
2c8ad910d7 csv.input - remove redundant trim_copy 2015-10-06 10:00:42 +01:00
Blake Thompson
c127620b6c Updated the way that is_valid and is_simple operate in mapnik and added lots of testing around them. 2015-10-05 15:10:24 -07:00
artemp
63c73b5057 add initial 'qoute' auto-detection + restore csv_test's 2015-10-05 16:56:33 +01:00
artemp
17b6597cd4 benchmark - update test_getline.cpp 2015-10-05 15:59:28 +01:00
artemp
5c6c8ff7a3 csv.input - restore handling of inline headers and only one line of data without new line 2015-10-05 15:28:57 +01:00
artemp
93a237850b fix spatial_index test after de9de659c3772fdf232a3c24f5c254a0a86046b9 2015-10-05 15:28:57 +01:00
artemp
287028d3e4 fix rebase conflict 2015-10-05 15:25:17 +01:00
bergwerkgis
5fd6f33c0f visual diff of visual test results 2015-10-05 14:23:52 +00:00
artemp
860631acc5 jpeg: fix re-occuring boolean/TRUE/FALSE issue + prefer using c++ headers 2015-10-05 15:23:20 +01:00
artemp
bcb1cc6053 format 2015-10-05 15:23:20 +01:00
artemp
dfba56b23b quad_tree - pass node by *& 2015-10-05 15:23:20 +01:00
artemp
178e39e19a make separator single character and simplify/optimise csv_grammar 2015-10-05 15:23:20 +01:00
bergwerkgis
6b20c8c9f2 fixes #3106 2015-10-05 09:55:20 +00:00
bergwerkgis
5852169f7c allways build on AppVeyor 2015-10-03 08:26:00 +00:00
Nathaniel V. KELSO
391973e482 Formatting 2015-10-02 09:12:15 -07:00
Nathaniel V. KELSO
7a7a70bd06 Add section on Python Bindings
Since these aren't included by default, the other package needs to be referenced here to avoid the wild goose chase.
2015-10-02 09:08:59 -07:00
artemp
cbb40d0662 raster.input - throw if reader can't be created 2015-10-02 12:47:57 +01:00
artemp
1bccca9ff8 Merge remote-tracking branch 'origin/master'
Conflicts:
	plugins/input/csv/csv_datasource.cpp
2015-10-02 12:27:28 +01:00
artemp
1d320b7133 make quote single char 2015-10-02 12:20:54 +01:00
artemp
290c4d3e67 csv_grammar - handle 'quote' parameter dynamically 2015-10-02 12:19:09 +01:00
artemp
98ea1c5cd9 csv_utils::getline_csv - add 'quote' argument 2015-10-02 12:17:38 +01:00
Jiri Drbalek
d6978c29b2 Merge pull request #3100 from mapycz/use_move
use move semantics instead of shared_ptr
2015-10-02 09:49:55 +02:00
Dane Springmeyer
2f9c9bd4b1 update test data - closes #3102 2015-10-01 15:46:07 -07:00
Dane Springmeyer
336170c13c avoid excessive calling of std::ios::widen - refs #3101 2015-10-01 15:34:00 -07:00
Dane Springmeyer
da054c84e6 default values for getline bench + hook up in script - refs #3101 2015-10-01 15:08:49 -07:00
Dane Springmeyer
3932cc51b3 add getline benchmark - refs #3101 2015-10-01 14:47:55 -07:00
Dane Springmeyer
530416f0aa fix suggesed cmd line option syntax [skip ci] 2015-10-01 14:47:25 -07:00
Dane Springmeyer
2d59fca9f9 ensure consistent, ordered linking for plugins - closes #3105 2015-10-01 13:35:56 -07:00
Dane Springmeyer
a8019f9fa2 log csv filepath when test fails [skip ci] 2015-10-01 13:35:23 -07:00
Dane Springmeyer
be22a67b60 fix -Wshadow warnings 2015-10-01 13:35:23 -07:00
Dane Springmeyer
dd89552bc5 consistenly use pragma GCC for now instead of clang 2015-10-01 13:35:23 -07:00
Dane Springmeyer
5a97c3d541 fix variable shadowing 2015-10-01 13:35:23 -07:00
Dane Springmeyer
05ade151a5 suppress yet more -Wshadow warnings from boost 2015-10-01 13:35:23 -07:00
Dane Springmeyer
3acec350f6 avoid more -Wshadow warnings from boost 2015-10-01 13:35:23 -07:00
Jiri Drbalek
5c0aa52d22 apply constness 2015-10-01 20:11:37 +00:00
Jiri Drbalek
da678406b1 use move semantics instead of shared_ptr 2015-10-01 20:11:37 +00:00
Dane Springmeyer
101be82281 Merge pull request #3104 from mapycz/fix_build
fix build on linux
2015-10-01 13:08:48 -07:00
Jiri Drbalek
68392f189b fix build on linux 2015-10-01 19:56:57 +00:00
Dane Springmeyer
c414526802 Merge pull request #3099 from mapycz/fix-todo
remove Feature alias of feature_impl
2015-10-01 10:53:27 -07:00
artemp
be437eb6b0 add experimental getline_csv implementation which handles newline characters inside single/double quoted strings 2015-10-01 18:33:32 +01:00
artemp
a4e15b5a47 remove stderr 2015-10-01 15:34:49 +01:00
artemp
24b8f7d67b Merge branch 'csv-disk-index' 2015-10-01 15:27:19 +01:00
artemp
4273e37278 Merge branch 'master' into csv-disk-index 2015-10-01 15:26:47 +01:00
artemp
f3efff3885 add csvindex build option 2015-10-01 15:17:22 +01:00
artemp
b87f366311 add missing csvindex utily 2015-10-01 15:16:32 +01:00
Jiri Drbalek
a03081c367 remove Feature alias of feature_impl 2015-10-01 14:16:11 +00:00
artemp
877cd2c75e update copyright year 2015-10-01 15:11:50 +01:00
artemp
7e03c5daea fix CAIRO=no build 2015-10-01 15:06:49 +01:00
artemp
40e142d7fa update copyright year 2015-10-01 15:03:40 +01:00
artemp
dc554eb920 remove old scons 2015-10-01 14:32:56 +01:00
artemp
8e4a3d794f update scons to 2.4.0 2015-10-01 14:25:41 +01:00
Dane Springmeyer
d70725b218 fix variable shadowing in extract_bounding_box_grammar 2015-09-30 15:42:42 -07:00
Dane Springmeyer
aa2c28b89c fix variable shadowing in image_any 2015-09-30 15:42:09 -07:00
Dane Springmeyer
761093457a restore support for single threaded build 2015-09-30 14:23:46 -07:00
Dane Springmeyer
7122fdc6e5 fix #3096 2015-09-30 14:23:21 -07:00
Dane Springmeyer
0c23eaa4ba fix variable shadowing in image_filter unit test 2015-09-30 14:23:00 -07:00
Dane Springmeyer
d6b60188e8 avoid -Wshadow errors from boost when compiling csv plugin 2015-09-30 14:11:16 -07:00
artemp
54609fd8ac remove blank undelimited rows are still parsed section as current behavior is to fail and continue on individual row errors 2015-09-30 15:40:42 +01:00
artemp
81628d5b9c update test visual-data 2015-09-30 15:31:56 +01:00
artemp
df87dc5ed7 fix CAIRO=no build 2015-09-30 15:31:56 +01:00
bergwerkgis
8e7e7c64a7 update test-data-visual to force LF for SVGs on clone (Windows) 2015-09-30 13:07:52 +00:00
bergwerkgis
d66248b725 Merge branch 'master' of https://github.com/mapnik/mapnik 2015-09-30 12:28:20 +00:00
bergwerkgis
ac64f21664 allow speedy build AppVeyor style, but also run tests 2015-09-30 12:28:01 +00:00
bergwerkgis
c9afba6701 [skip ci] don't svg convert line endings on checkout 2015-09-30 12:27:20 +00:00
artemp
7a956651fe geojson - avoid passing invalid bounding boxes to boost::geometry::index 2015-09-30 12:50:53 +01:00
artemp
19897a3085 correct exception handling in main processing loop 2015-09-30 12:37:36 +01:00
artemp
848098baeb spatial_index/quad_tree - remove `operator>>' requirement, instead value_type stored must have standard layout for correct (de)serialisation + update unit test 2015-09-29 15:44:57 +01:00
artemp
f549cae46a unit test - add initial spatial_index tests 2015-09-29 12:27:56 +01:00
artemp
9c292595b4 use mapnik::quad_tree<T> 2015-09-29 12:21:02 +01:00
artemp
2f35c71606 mapnik::quad_tree - add methods required for spatial_index construction and serialization
remove utils/shapeindex/quadtree.hpp
2015-09-29 12:20:46 +01:00
artemp
49266fbd56 csv.input (disk-index) - add support for memory mapped files 2015-09-29 10:35:36 +01:00
artemp
d87a04157c spatial_index - bug fixes + cleanup 2015-09-28 15:51:38 +01:00
artemp
3390cc8c21 Merge branch 'master' into csv-disk-index 2015-09-28 14:31:26 +01:00
Artem Pavlenko
a67abf8e32 Merge pull request #3086 from cjmayo/install
install doc: delete dependencies for removed plugins
2015-09-28 14:30:53 +01:00
artemp
08a30cbbd9 update test data 2015-09-28 14:29:54 +01:00
artemp
a9dafc6105 Merge branch 'ViewBox-fallback' 2015-09-28 14:24:39 +01:00
artemp
d6d9e94e36 svg_parser - fix double_list grammar to handle whitespace | comma correctly 2015-09-28 14:22:30 +01:00
Chris Mayo
d4163d946c install doc: delete dependencies for removed plugins 2015-09-27 11:55:03 +01:00
jakepruitt
344c5ae844 Fix boost parser for viewbox 2015-09-25 12:05:57 -07:00
jakepruitt
a787d20e36 Add viewbox fallback logic for dimension parsing
SVG's now have fallback on viewbox. Still debugging the boost Qi parser
2015-09-25 12:05:57 -07:00
artemp
21e6936f85 first cut at using csv_index_featureset 2015-09-25 17:50:24 +01:00
artemp
2a7a2c998e add <memory> include 2015-09-25 17:11:01 +01:00
artemp
3c56379273 CSV - initial disk-index featureset 2015-09-25 16:47:03 +01:00
artemp
8b4ff85b0d fix - pass value by reference 2015-09-25 15:26:02 +01:00
artemp
dd0ef307ee correct const's + coding style 2015-09-25 10:44:25 +01:00
artemp
99617ad71c spatial_index<...> - use operator>> for reading Value's + update shape_index_featureset 2015-09-25 10:43:10 +01:00
artemp
fa3ab5077e Merge branch 'master' into csv-disk-index 2015-09-24 17:38:39 +01:00
artemp
8c2f15c94a mapnik::value - always upcast to the higher definition numeric value (rhs or lhs) in operator== and operator!=
add unit test for comparing numeric mapnik::values
2015-09-24 17:38:16 +01:00
artemp
813924a6f2 mapnik::value - always upcast to the higher definition numeric value (rhs or lhs) in operator== and operator!=
add unit test for comparing numeric mapnik::values
2015-09-24 17:36:13 +01:00
Dane Springmeyer
499a2bdd74 re-enable OS X travis - we need code coverage back - refs #3033 2015-09-24 08:19:48 -07:00
Dane Springmeyer
daf3bfe38b add coveralls and appveyor [skip ci] 2015-09-24 08:16:04 -07:00
artemp
ad9ad99395 Merge branch 'master' into csv-disk-index 2015-09-24 15:59:16 +01:00
bergwerkgis
dda5622b2d back to mapnik-gyp/master [build appveyor] 2015-09-24 11:50:28 +00:00
Wilhelm Berg
c8870002e6 Merge pull request #3083 from mapnik/enable-appveyor
Enable Appveyor
2015-09-24 13:47:51 +02:00
artemp
058412968b Merge branch 'master' into csv-disk-index 2015-09-24 12:08:54 +01:00
artemp
27be7113a9 csvindex - use quadtree from shapeindex + cleanup 2015-09-24 12:03:32 +01:00
artemp
2e0486440c remove shp_index.hpp and update shape.input 2015-09-24 11:37:27 +01:00
artemp
8c16f267bb remove unused parameters from ctor 2015-09-24 11:36:24 +01:00
artemp
335f607c5a fux namings and typedefs 2015-09-24 11:20:19 +01:00
artemp
7927a9143c spatial_index - generalised 'on-disk' bounding box queyring interface 2015-09-24 11:19:03 +01:00
jakepruitt
fcbb91a00e Add int list parser 2015-09-23 12:08:50 -07:00
bergwerkgis
6f9c659be5 [build appveyor] add msbuild logs as artifacts 2015-09-21 17:52:13 +00:00
artemp
28c785d0c9 Merge branch 'master' into csv-disk-index 2015-09-21 18:22:11 +01:00
bergwerkgis
44979b7d53 [build appveyor] now try whole solution at once 2015-09-21 16:45:38 +00:00
bergwerkgis
4e9a7bdf3e [build appveyor] try with optimizations off 2015-09-21 16:02:51 +00:00
bergwerkgis
38498fdbe7 Merge branch 'master' into enable-appveyor 2015-09-21 16:01:36 +00:00
artemp
6eaf5b7b96 value - fix/add remaing static_cast<> 2015-09-21 15:38:17 +01:00
artemp
7938479bb4 value - apply explicit static_cast<lhs_value_type>(rhs) (ref #3078) 2015-09-21 15:31:25 +01:00
bergwerkgis
b5be99a1ab AppVeyor: don't build if [build appveyor] is not provided 2015-09-21 16:11:17 +02:00
artemp
e559619855 value - cast rhs to value_bool (ref #3078) 2015-09-21 15:05:03 +01:00
bergwerkgis
929abfb925 [wip] AppVeyor build in serial 2015-09-21 15:35:52 +02:00
bergwerkgis
7da16f6ec5 [wip] AppVeyor ran out of memory, try "windows-performance" branch 2015-09-21 15:17:03 +02:00
bergwerkgis
816e6a7b4a [wip] AppVeyor 2015-09-21 14:42:52 +02:00
bergwerkgis
b605ad0f0e [wip] AppVeyor 2015-09-21 14:35:11 +02:00
bergwerkgis
a87a662034 [wip] AppVeyor 2015-09-21 14:28:19 +02:00
bergwerkgis
c3c09c0e10 [wip] AppVeyor 2015-09-21 14:13:41 +02:00
bergwerkgis
eb380bb636 [wip] enable AppVeyor 2015-09-21 14:04:28 +02:00
bergwerkgis
16d54693a6 try AppVeyor skeleton 2015-09-21 13:38:36 +02:00
artemp
71ef858c1d csvindex - initial writing to disk impl 2015-09-18 15:44:21 +01:00
Blake Thompson
4e4c1bc30e Merge pull request #3075 from mapycz/fix-parsing-hex-colors
fix parsing colors in hexadecimal notation
2015-09-18 09:06:02 -05:00
Jiri Drbalek
91db109b37 fix parsing colors in hexadecimal notation 2015-09-18 13:54:05 +00:00
artemp
c362702e8b remove unused erroneous type def 2015-09-18 09:42:28 +01:00
artemp
c7177e2ef4 Merge branch 'master' into csv-disk-index 2015-09-17 14:54:25 +01:00
artemp
9ce2f337b3 post-release update 2015-09-17 14:21:20 +01:00
Artem Pavlenko
e95411bfe6 Merge pull request #3074 from mapycz/improve-visual-test-12
visual tests: command line switches for renderers, scale-factor
2015-09-17 14:19:40 +01:00
Jiri Drbalek
ae8ac89ef8 visual tests: add command line parameters for scale-factor settings 2015-09-17 08:22:18 +00:00
Jiri Drbalek
fd19c754f3 visual tests: command line switches for renderers 2015-09-17 08:22:10 +00:00
artemp
d548ec1152 update CHANGELOG for mapnik v3.0.5 release 2015-09-16 18:47:36 +01:00
artemp
165c704b93 setting up for mapnik v3.0.5 release 2015-09-16 18:45:26 +01:00
artemp
e452a03c09 update test data 2015-09-16 18:30:37 +01:00
artemp
8808f0fe2b update unifont to 8.0.01 2015-09-16 17:35:28 +01:00
artemp
d54eca9dca image - fix copy/move implementation and update/improve tests 2015-09-16 14:28:55 +01:00
artemp
60c79d6614 image unit test - make test image 16x16 + add more checks 2015-09-16 11:47:36 +01:00
artemp
c1301fa142 image unit test - add copy (deep/shallow) + move tests 2015-09-16 11:37:46 +01:00
artemp
d7d3da6935 image - add iterator interface 2015-09-16 11:37:03 +01:00
artemp
8c8ea74a63 update unit test 2015-09-16 10:15:21 +01:00
artemp
acb8feea01 image - update shallow constructor to take raw bytes pointer
detail::buffer - inline data() size() methods
update unit test
2015-09-16 10:14:40 +01:00
Artem Pavlenko
c4e0516ba6 Merge pull request #3061 from mapycz/colorize-alpha
colorize-alpha: add support for transparent colors
2015-09-15 16:11:28 +01:00
Artem Pavlenko
0b157d6f3e Merge pull request #3071 from mapnik/image-zero-alloc
re-enable zero allocation image interface - refs #3069
2015-09-15 11:17:48 +01:00
artemp
c00235589b Merge branch 'master' into csv-disk-index 2015-09-15 10:57:23 +01:00
artemp
c1d9bc909e csvindex - initial commit (work-in-progress) 2015-09-15 10:55:59 +01:00
Dane Springmeyer
b2d08ea4ea re-enable zero allocation image interface - refs #3069 2015-09-14 16:45:58 -07:00
Wilhelm Berg
0532df7b6e Merge pull request #3067 from mapnik/benchmark-return-values
Benchmark: use return values of test runner.
2015-09-14 15:22:50 +02:00
bergwerkgis
9f62d8693a benchmark: no camelCase 2015-09-14 13:21:51 +00:00
bergwerkgis
3929d9298d Benchmark: use return values of test runner. 2015-09-14 13:01:32 +00:00
bergwerkgis
291089dec7 [skip ci] update paths to data in benchmark map.xmls 2015-09-14 12:51:38 +00:00
artemp
d9ab7fd25f CSV grammar : skip leading \n and/or \r which result from std::getline used with non-native line endings
The goal is to support LF, CR and CRLF on all platforms.
2015-09-14 11:46:11 +02:00
artemp
ad80c91657 cache processed layouts to ensure there are stay in scope (placement_finder) - via @talaj 2015-09-11 15:29:28 +02:00
Jiri Drbalek
6f0b4d438c colorize-alpha: add support for transparent colors 2015-09-11 11:31:08 +00:00
Jiri Drbalek
5e82fc8a05 fix and update changelog 2015-09-11 11:26:20 +00:00
artemp
337525ef60 csv.input - don't attempt to build if boost < 1.56 2015-09-11 11:20:45 +02:00
artemp
8128a2b1ef topojson - remove 'invalid' geometry type to avoid default constructed geometries 2015-09-10 19:28:15 +02:00
Artem Pavlenko
12485b66ef Merge pull request #3063 from mapnik/windows-utf-filenames
Windows: fix loading of SVG files from unicode paths. …
2015-09-10 16:02:49 +02:00
artemp
5e0050d005 topojson - use separate local boolean to track first geometry 2015-09-10 15:35:25 +02:00
bergwerkgis
0de0cfa1c2 Update changelog, Windows: Fixed SVG file loading from unicode paths 2015-09-10 11:15:31 +00:00
bergwerkgis
9146f785f4 Windows: fix loading of SVG files from unicode paths. Surfaced in https://github.com/mapnik/node-mapnik/issues/517 2015-09-10 11:10:38 +00:00
artemp
fc100be61e topojson : fix geometry index logic 2015-09-10 12:37:38 +02:00
artemp
e076640493 update font version 2015-09-09 13:28:38 +02:00
artemp
724bd56ec4 don't use curly brackets initializer for static member variables (keep vc++ happy) 2015-09-09 13:18:45 +02:00
artemp
826882b150 enable sorting + small refactor 2015-09-09 12:14:15 +02:00
artemp
0de6d36000 use memory mapped file by default for both index and data parsing (improves loading times by ~50%) - default on non-windows platforms 2015-09-09 11:56:21 +02:00
artemp
310dc968ea fix potential type mismatch 2015-09-09 11:08:00 +02:00
Blake Thompson
eee1a46139 Merge pull request #3059 from mapycz/colorize-alpha-needless-conditions
colorize-alpha: remove needless conditions
2015-09-08 12:02:57 -05:00
Jiri Drbalek
a5f314fd87 colorize-alpha: remove needless conditions 2015-09-08 15:05:04 +00:00
artemp
a5bba97192 update data 2015-09-08 13:10:41 +02:00
Artem Pavlenko
282bdf178c Merge pull request #3058 from mapycz/colorize-alpha-fix-color-value-normalization
colorize-alpha: fix normalization of color components
2015-09-08 12:50:46 +02:00
artemp
a32fbdf635 use atomic<> where possible to avoid locking 2015-09-08 12:28:16 +02:00
artemp
81ead3dc78 make destroyed_ atomic<> 2015-09-08 12:26:43 +02:00
Artem Pavlenko
fa82d5a0c9 Merge pull request #3054 from mapycz/scale-hsla-limits
scale-hsla image filter: unlimit parameters
2015-09-08 12:22:10 +02:00
Jiri Drbalek
79f4e3ac8f colorize-alpha: fix normalization of color components 2015-09-08 10:14:20 +00:00
Jiri Drbalek
72222efad7 scale-hsla image filter: unlimit parameters 2015-09-03 11:33:53 +00:00
artemp
ee65873159 oops fix 2015-08-27 17:37:18 +02:00
artemp
6d1ffc8a93 enable optional checking env for "MAPNIK_LOG_FORMAT" (via MAPNIK_CHECK_ENV) 2015-08-27 17:08:41 +02:00
artemp
284ca099ea set input state to std::ios::failbit (only needed on linux ?) 2015-08-27 13:41:02 +02:00
artemp
8f37b30978 fix handling 'one line' + 'manual headers' + 'no newline' case
update get_geometry_type  ( ref https://github.com/mapnik/mapnik/issues/3047)
2015-08-27 13:07:51 +02:00
artemp
4f5bdf82c1 slightly better syntax (NOTE: 4000 seems arbitrary here) 2015-08-27 13:07:51 +02:00
artemp
1080d92a79 add missing geometry type check 2015-08-27 13:07:51 +02:00
artemp
0ea5ccc7bc fix typo 2015-08-27 13:07:51 +02:00
artemp
bd35054d27 update version 2015-08-27 13:07:51 +02:00
Blake Thompson
986cf2d073 Merge pull request #3046 from mapycz/remove-clip-comments
remove incorrect and meaningless comments
2015-08-26 10:21:31 -05:00
Jiri Drbalek
75a299ab1d remove incorrect and meaningless comments 2015-08-26 14:29:09 +00:00
Blake Thompson
c5312b5cbf Merge pull request #3044 from mapycz/remove-unused-members
remove unused members
2015-08-26 08:55:13 -05:00
Jiri Drbalek
883c9c83bf remove unused members 2015-08-26 12:59:11 +00:00
artemp
45d5e39e22 update CHANGELOG for mapnik v3.0.4 release 2015-08-26 12:06:51 +02:00
artemp
17bb81c02c update changelog 2015-08-26 11:45:05 +02:00
artemp
10e6128035 test/data -> track master 2015-08-26 11:23:22 +02:00
Artem Pavlenko
26d100f3d9 Merge pull request #2996 from mapycz/improve-visual-test-11
visual tests: limit number of failures
2015-08-26 10:33:57 +02:00
Artem Pavlenko
85eebaaf57 Merge pull request #3038 from zerebubuth/fix/deadlock-in-recursive-datasource-registration
Fix deadlock in recursive datasource registration.
2015-08-25 15:07:00 +02:00
Artem Pavlenko
35c263612f Merge pull request #3010 from mapnik/large_csv
Large csv
2015-08-25 15:06:26 +02:00
artemp
3753d50b75 CSV - revive row_limit parameter + fix stderr 2015-08-25 15:05:04 +02:00
artemp
8709fb6f7c CSV - optimise parsing by providing num_columns hint 2015-08-24 16:35:32 +02:00
artemp
6c9257a915 add parse_line accepting iterator range and avoid string ctor 2015-08-24 15:41:04 +02:00
artemp
622ab90e4b Merge branch 'master' into large_csv 2015-08-24 14:16:13 +02:00
artemp
c9d1d51b8a simplify + factor out properties parsing logic 2015-08-24 14:13:13 +02:00
artemp
2477d8764e keep on untangling spaghetti
* implement standalone ignore case equality to avoid copying
* fix various logic shortcommings
2015-08-24 12:23:59 +02:00
artemp
5dead08ecc CSV - remove unused params and member vars 2015-08-24 09:30:57 +02:00
Matt Amos
3d7b84a598 Fix deadlock in recursive datasource registration.
The datasource cache was taking an exclusive lock on the simple
mutex used to protect the singleton's data pointer. This works
okay when everyone always calls it non-recursively, but when the
recursive flag is true then it will always deadlock when called
on any directory with subdirectories.

Additionally, many methods which accessed private data members of
the cache were not protected by any locks.

Since the call pattern of registering datasources is strictly
tree-shaped then it's a good candidate for a recursive mutex. This
has a slightly higher overhead than a simple mutex, so rather than
change the singleton's mutex to be recursive, I've added a new
instance mutex to the datasource cache.

Also, added a very basic test which reproduces the problem and
shows that it's fixed with this patch.
2015-08-23 20:25:35 +01:00
artemp
4babec802a CSV - implement spatial index access to features on disk + preserve support for inline data (work-in-progress) 2015-08-21 13:52:42 +02:00
artemp
4943cb4cf8 remove unused includes 2015-08-20 14:15:35 +02:00
artemp
93fcc0a783 cleanup 2015-08-19 15:24:38 +02:00
artemp
d7e2f63f89 remove debug stderr + update data 2015-08-19 12:40:01 +02:00
artemp
68d73aa630 temp workaround boost 1.59 geometry 2015-08-19 12:30:07 +02:00
artemp
6c3d9bb2a2 CSV plug-in - refactor and bring some sanity, sigh .. 2015-08-19 12:04:56 +02:00
artemp
710ec057e5 formatting 2015-08-19 12:04:45 +02:00
artemp
d4bc32908f temp workaround boost 1.59 geometry 2015-08-19 12:03:16 +02:00
artemp
153c93d345 Merge branch 'master' into large_csv 2015-08-19 12:02:50 +02:00
artemp
f8afa796d7 update test data 2015-08-17 16:56:00 +02:00
artemp
0ba2e3f3f6 update svg tests 2015-08-17 16:53:42 +02:00
artemp
318a8217a7 work-in-progress 2015-08-17 15:27:17 +02:00
artemp
2b25f025cf update 'test/data' submodule to track 'large_csv' branch 2015-08-14 11:35:37 +02:00
artemp
28a7bdfd7c update test data 2015-08-14 11:12:44 +02:00
artemp
f7d1cf82a9 Merge branch 'master' into large_csv 2015-08-13 13:28:35 +02:00
artemp
332d875839 set MAPNIK_VERSION_IS_RELEASE 0 2015-08-13 11:30:33 +02:00
Artem Pavlenko
70ae5a6e56 Merge pull request #3034 from mapycz/remove-superfluous-line
remove superfluous line
2015-08-13 10:30:45 +02:00
Jiri Drbalek
507c556386 remove superfluous line 2015-08-13 10:11:18 +00:00
Blake Thompson
381a4fc94c Merge branch 'master' of github.com:mapnik/mapnik 2015-08-12 13:00:13 -05:00
Blake Thompson
10ad41d218 Removed unrequired MAPNIK_DECL from src/image_util_jpeg added pragma to prevent warning on linux with clang. 2015-08-12 13:00:04 -05:00
Dane Springmeyer
487226b289 disable OS X builds until ccache/caching is working - refs #3033 2015-08-12 10:54:29 -07:00
Dane Springmeyer
affe1615b3 minor changelog copy edits [skip ci] 2015-08-12 10:09:34 -07:00
artemp
da6af4fa11 update CHANGELOG 2015-08-12 17:37:22 +02:00
Blake Thompson
3d262c7426 Fixed linking errors in parse jpeg. closes #3031 2015-08-12 09:32:32 -05:00
Blake Thompson
146af9d10b Added missing scons directory 2015-08-12 09:17:18 -05:00
artemp
715cff3f2a fix - pass by const ref 2015-08-12 12:09:40 +02:00
artemp
fb41fb4bb7 update CHANGELOG for mapnik v3.0.3 release 2015-08-12 12:00:29 +02:00
artemp
1f6c44a791 version : upate minor number 2015-08-12 11:38:10 +02:00
artemp
3e3ab2cd4b update test 2015-08-12 11:35:26 +02:00
artemp
241b900673 Merge branch 'image_filters' 2015-08-12 11:28:32 +02:00
artemp
ebf4d66900 Merge branch 'master' into image_filters 2015-08-12 11:27:59 +02:00
artemp
4ab6cd5855 update DeJaVu Fonts to the latest 2.35 2015-08-12 11:22:58 +02:00
artemp
c0e2cf3616 update scons + visual test 2015-08-12 11:18:09 +02:00
artemp
1e7980608e Merge branch 'naturalatlas-dot-scale' 2015-08-12 10:55:08 +02:00
artemp
771d2844db Merge branch 'dot-scale' of https://github.com/naturalatlas/mapnik into naturalatlas-dot-scale 2015-08-12 10:40:12 +02:00
artemp
751abba262 add parse_jpeg_quality method + uint test parsing jpegXX and jpeg:quality=XX options
ref #3024
2015-08-12 10:29:57 +02:00
Blake Thompson
0b6b11b9cf Added the ability for filter_image to throw properly with bad input and added the ability for a new image to be returned 2015-08-11 19:22:09 -05:00
Blake Thompson
75522c0cc5 Merge branch 'master' into image_filters 2015-08-11 15:31:41 -05:00
Blake Thompson
bf009489d7 Updated changelog with recent changes 2015-08-11 15:31:09 -05:00
Blake Thompson
792e94ae90 Removed image-filter from map object, made it so that premultiplication/demultiplication only took place when correctly required in image filters. 2015-08-11 14:31:29 -05:00
Blake Thompson
ab2855a130 Made it so that singleton deleted at exit could be turned off. 2015-08-11 11:34:35 -05:00
artemp
b5dedd0e69 JPEG - revive backward compatible quality format jpeg<N> e.g jpeg80, jpeg90 etc.
ref #3024
2015-08-11 17:13:54 +02:00
artemp
6c01870397 expose mapnik::geometry::polygon<double>::rings_container to allow specialising interior rings container 2015-08-11 17:13:04 +02:00
Artem Pavlenko
e68da0d083 Merge pull request #3016 from mapycz/text-null-bbox
Null text collision box
2015-08-10 12:18:31 +02:00
artemp
2913982d31 const 2015-08-10 11:19:11 +02:00
Blake Thompson
a492028f25 Initial commit of changes for image_filters so they can be called outside of agg renderer 2015-08-07 15:54:39 -05:00
Blake Thompson
161469ed63 Fixed an issue with fields over size of int32 in OGR plugin and added tests to cover this situation. 2015-08-05 13:47:17 -05:00
Blake Thompson
ec73b50557 Added ability for image filters to be used on the map object, so that the entire map has an image filter applied. Corrected issues with colorblind algorithms due to incorrect algorithm used as colorspace was required to be in sRGBA rather then RGBA. 2015-08-05 12:35:17 -05:00
Blake Thompson
6245790e72 Added new image filters that allow an image to be viewed in colorblind modes, allow cartographers to see what their maps would appear like to a color blind person 2015-08-04 17:41:31 -05:00
Jiri Drbalek
c1d8095d59 shields: set marker after collision test 2015-08-04 13:38:52 +00:00
Jiri Drbalek
162f82cba5 ensure null text has no bbox 2015-08-04 13:29:16 +00:00
Jiri Drbalek
96b35c540d visual tests: set test duration to zero on error 2015-08-03 10:45:23 +00:00
Jiri Drbalek
32afdb10e5 visual tests: limit number of failures 2015-08-03 10:45:14 +00:00
Brian Reavis
9bdca97579 Fixed dot symbolizer not acknowledging scale factor. 2015-08-02 14:55:26 -06:00
Blake Thompson
6b05f19c38 update CHANGELOG for mapnik v3.0.2 release 2015-07-31 14:31:56 -05:00
Blake Thompson
8305e74eaf setting up for mapnik v3.0.2 release 2015-07-31 14:31:21 -05:00
Blake Thompson
f5cf669736 Updated SVG unit test so that it no longer writes to std err. closes #3007 2015-07-31 12:31:54 -05:00
Artem Pavlenko
727341f41a Merge pull request #3003 from mapnik/svg-parser-errors
SVG parser refactoring and improvements
2015-07-31 17:06:30 +02:00
artemp
df8c5ce599 update test data 2015-07-31 12:54:42 +02:00
artemp
42bf2303e0 fix parse_double_optional_percent grammar and update tests 2015-07-31 11:35:02 +02:00
artemp
f9bd21eeb5 Merge branch 'svg-parser-errors' into large_csv 2015-07-31 11:18:55 +02:00
artemp
5b04764757 SVG - update tests to work with marker_cache's strict policy 2015-07-31 10:47:30 +02:00
artemp
3a4d57492f make parser strict - return marker_null() on SVG parser failures
redirect stderr to MAPNIK_LOG
2015-07-31 10:44:42 +02:00
jakepruitt
0cc524aa1c Adding percentage for linear gradient 2015-07-30 17:35:30 -04:00
jakepruitt
1f7b961901 Update test data 2015-07-30 17:09:26 -04:00
jakepruitt
6f6af87a43 Write invalid parse_string test 2015-07-30 17:05:19 -04:00
jakepruitt
9549a1cc01 Adding tests for radial gradients with percentages 2015-07-30 16:46:27 -04:00
Dane Springmeyer
261b2f5185 drop libxml2 as a dep in bootstrap for now (todo - selectively re-enable #3008) 2015-07-30 11:24:38 -07:00
Dane Springmeyer
2af5a75dd7 default to ptree xml parser (rapidxml inside boost) instead of libxml2 2015-07-30 11:22:23 -07:00
Dane Springmeyer
a552518541 avoid a few -Wsign-conversion warnings 2015-07-30 11:10:23 -07:00
Dane Springmeyer
76e761b2f0 fix grammar in 3.0.1 summary [skip ci] 2015-07-30 10:39:48 -07:00
jakepruitt
8982938270 Adding test for gradient xlink:href
- refs #3005
2015-07-30 12:48:23 -04:00
artemp
9f4db6c855 use correct define -> HAVE_LIBXML2 2015-07-30 18:30:22 +02:00
artemp
56712c2435 fix XMLPARSER=libxml2 logic 2015-07-30 14:34:01 +02:00
artemp
362a2ee0b1 use std::ptrdiff_t and remove static_cast's - ref #3006 2015-07-30 14:32:18 +02:00
artemp
ffcacf3509 make libxml2 optional dependency (XMLPARSER=libxml2) 2015-07-30 13:14:37 +02:00
artemp
f8fd60dc69 remove libxml includes and init calls 2015-07-30 13:13:53 +02:00
artemp
9d43f69cf6 const correctness 2015-07-30 11:09:08 +02:00
artemp
f75921c7ca update test + data 2015-07-30 11:09:08 +02:00
artemp
e5c4dbf1c0 format 2015-07-30 11:04:17 +02:00
artemp
930893a877 benchmark - correct params 2015-07-30 11:04:17 +02:00
jakepruitt
b4bc16751c Adjusted error message logic for logging path ids 2015-07-29 22:37:30 -04:00
jakepruitt
af27af4af2 Improving svg test coverage
- refs #3005
2015-07-29 22:26:28 -04:00
artemp
f3870cc8fe update test 2015-07-29 16:09:51 +02:00
artemp
5b287ab798 catch std::exception to get better stderr 2015-07-29 16:09:33 +02:00
artemp
d05c13d849 unit test - cope with incorrectly encoded geometries 2015-07-29 15:42:53 +02:00
artemp
4cf6ce1866 correct error handling 2015-07-29 13:01:51 +02:00
artemp
9531adbf56 re-use attribute pointer and reduce number of local vars 2015-07-29 11:16:51 +02:00
artemp
a8f5ddff73 handle empty <g> element + fix visibity parsing 2015-07-28 19:37:55 +02:00
artemp
e9284ce62a c++ tidy 2015-07-28 16:50:06 +02:00
artemp
0b728e676c update visual test data 2015-07-28 16:35:50 +02:00
artemp
515da3f9a8 rapidxml based svg parser - initial impl 2015-07-28 16:33:39 +02:00
artemp
4ee453ada0 update test data 2015-07-28 10:30:24 +02:00
artemp
42c8da72e9 Merge branch 'master' into svg-parser-errors 2015-07-28 10:29:59 +02:00
Dane Springmeyer
a78a89564b back to development of > Mapnik 3.0.1 [skip ci] 2015-07-27 20:27:21 -07:00
Dane Springmeyer
dfc6a41a27 wip: add make release target [skip ci] 2015-07-27 19:17:31 -07:00
Dane Springmeyer
c8370485da use latest testdata [skip ci] 2015-07-27 19:05:18 -07:00
Dane Springmeyer
8424843eed make note of plugin move - refs #2980 [skip ci] 2015-07-27 19:04:28 -07:00
Dane Springmeyer
3f26e7a4b0 update CHANGELOG for mapnik v3.0.1 release [skip ci] 2015-07-27 18:42:09 -07:00
Dane Springmeyer
28f6f4d63b setting up for mapnik v3.0.1 release 2015-07-27 18:30:26 -07:00
Dane Springmeyer
4e2890bb18 iwyu for spirit_transform_attribute.hpp - closes #2993 2015-07-27 17:41:10 -07:00
Dane Springmeyer
411486eaf3 ignore warnings for karma 2015-07-27 17:38:36 -07:00
Dane Springmeyer
47c3139371 Add #2963 to changelog [skip ci] 2015-07-27 17:29:18 -07:00
Dane Springmeyer
0e8887171d update visual tests after #2988 - e3d79ed493 2015-07-27 17:26:59 -07:00
Dane Springmeyer
abf04d6305 Merge pull request #2988 from mapycz/collision-extent
do not store out of extent collision boxes
2015-07-27 17:25:45 -07:00
Dane Springmeyer
c50f72764f update tests + add #2990 to changelog 2015-07-27 17:09:46 -07:00
Dane Springmeyer
c7384e781c be explicit about pointing at master of test-data-visual 2015-07-27 17:08:01 -07:00
Dane Springmeyer
a5db121231 followup to #2990 [skip ci] 2015-07-27 16:45:22 -07:00
Dane Springmeyer
90f2fd91f5 Merge pull request #2990 from mapycz/fix-text-minimum-path-length
fix text-minimum-path-length
2015-07-27 16:33:25 -07:00
Dane Springmeyer
6f61c0e6c4 fix building both postgis and pgraster plugins together - closes #2986 2015-07-27 16:21:31 -07:00
Dane Springmeyer
79bfe8b2f0 Add #2989 to changelog [skip ci] 2015-07-27 15:56:14 -07:00
artemp
8ebb9db431 add xml:id support ( ref #2989 ) 2015-07-27 15:55:34 -07:00
Dane Springmeyer
8efaacd923 add recent work to changelog #2991, #2985, #2983 [skip ci] 2015-07-27 15:53:09 -07:00
Dane Springmeyer
e82de0109d centralize plugin registration for unit tests 2015-07-27 15:35:00 -07:00
Dane Springmeyer
871a881634 Merge pull request #3002 from mapnik/issue-2971
Fix windows compile around glyph_info forward declare
2015-07-27 14:59:18 -07:00
Dane Springmeyer
ba8d51e029 include fixups 2015-07-27 14:57:57 -07:00
artemp
ec591c1ffa add bogus stroke-width test 2015-07-24 11:05:58 +02:00
artemp
2e7d75f022 track errors parsing double values 2015-07-24 11:05:26 +02:00
artemp
49d4beec59 fix typo 2015-07-23 15:16:08 +02:00
artemp
e496e24deb add "Gradients apply to leaf nodes" test and update test data 2015-07-23 12:58:38 +02:00
artemp
ce2eaa02ee add operator==() 2015-07-23 12:58:14 +02:00
artemp
6a1a25efbf remove duplicate if else 2015-07-23 11:14:13 +02:00
artemp
4b9b1b5401 fix err message 2015-07-22 16:38:45 +02:00
artemp
158e4b7f87 add missing gradient definition test 2015-07-22 16:34:28 +02:00
artemp
626cb9f47c add display=none test 2015-07-22 15:28:55 +02:00
artemp
7aa30a211e SGV tests: <gradient> - update expected path data 2015-07-22 13:32:39 +02:00
artemp
fddc4e0312 update tests 2015-07-22 13:21:17 +02:00
artemp
6ca438be50 test data -> track master 2015-07-22 11:58:48 +02:00
artemp
9eadd48d7b add tests for no-existing svg file + bogus color in fill and stroke 2015-07-22 11:52:18 +02:00
artemp
e3f28ba4d3 Merge branch 'master' into svg-parser-errors 2015-07-22 10:42:53 +02:00
artemp
34a1d1315a clamp rx/ry to valid range (<= 0.5*width/0.5*height)
SVG spec : ".. If 'rx' is greater than half of the width of the rectangle, then the user agent must process the 'rect' element with the effective value for 'rx' as half of the width of the rectangle. If 'ry' is greater than half of the height of the rectangle, then the user agent must process the 'rect' element with the effective value for 'ry' as half of the height of the rectangle.."
2015-07-21 20:50:26 +02:00
artemp
804115089b clamp rx/ry to valid range (<= 0.5*width/0.5*height)
SVG spec : ".. If 'rx' is greater than half of the width of the rectangle, then the user agent must process the 'rect' element with the effective value for 'rx' as half of the width of the rectangle. If 'ry' is greater than half of the height of the rectangle, then the user agent must process the 'rect' element with the effective value for 'ry' as half of the height of the rectangle.."
2015-07-21 20:48:43 +02:00
artemp
9af3313063 use parse_id_from_url for stroke 2015-07-21 14:56:23 +02:00
Jiri Drbalek
8faff70620 fix text-minimum-path-length 2015-07-21 12:54:16 +00:00
artemp
43b3770a95 make gradient movable 2015-07-21 14:12:47 +02:00
artemp
d1b39f5841 handle color parsing in one place 2015-07-21 11:45:11 +02:00
artemp
d7cf0d5bca add parse_id_from_url method 2015-07-21 11:30:04 +02:00
artemp
f19ddf81ba SVG - add gradient test (ref #2989) 2015-07-21 10:35:21 +02:00
artemp
61a2ef7ebb update test data 2015-07-21 10:29:19 +02:00
artemp
55a9855069 add xml:id support ( ref #2989 ) 2015-07-21 10:25:57 +02:00
artemp
52007b8019 Merge branch 'master' into svg-parser-errors 2015-07-21 09:46:38 +02:00
artemp
27fb4a9e00 update tests 2015-07-20 20:36:31 +02:00
artemp
0625b90067 SVG unit test - add <line> test
(http://www.w3.org/TR/SVGTiny12/shapes.html#LineElement)
2015-07-20 17:44:47 +02:00
Jiri Drbalek
43dcf35a93 do not store out of extent collision boxes (fixes #2963) 2015-07-20 15:37:05 +00:00
artemp
fb155a57cd support compilers that can't construct tuple from initializer list 2015-07-20 17:16:35 +02:00
artemp
6a2d0b9ebf started adding svg parsing tests to increase test coverage (work-in-progress) 2015-07-20 15:41:35 +02:00
artemp
9da6b9b389 format 2015-07-20 15:41:04 +02:00
artemp
f58a13825f correct std::clog message 2015-07-20 14:51:24 +02:00
artemp
faa2c19359 make visitor return status + don't mutating svg_name_ 2015-07-20 12:05:26 +02:00
artemp
9ab1935a36 add boolean flag for tracking when to re-calculate extent (ref #2985) 2015-07-17 20:17:51 +02:00
artemp
bb8b835618 calculate percentage value inside parser, reduce local vars 2015-07-17 20:00:14 +02:00
artemp
a8da31b765 make '%' sign optional ( was 0 or N) 2015-07-17 19:49:28 +02:00
artemp
c63e71acac +unit test: feature_collections with extra properties 2015-07-17 17:43:04 +02:00
Dane Springmeyer
25af931f58 don't forward declare glyph_info in text_line.hpp 2015-07-17 07:49:41 -07:00
Dane Springmeyer
bb16cf90ff make text_itemizer noncopyable 2015-07-17 07:49:16 -07:00
Dane Springmeyer
f9d65d0167 Merge branch 'master' of github.com:mapnik/mapnik into issue-2971 2015-07-17 07:23:10 -07:00
artemp
5423f4c5bf relax grammar rules to allow arbitary ordering - currently we're looking for features skipping anything else
ref: https://github.com/mapnik/mapnik/issues/2983
2015-07-17 10:59:59 +02:00
artemp
c4d8af702d don't return early from parse_linear_gradient 2015-07-17 09:42:05 +02:00
Dane Springmeyer
a43faf9017 Merge pull request #2961 from CartoDB/3.0.x.pgraster
Render NODATA as transparent and clip highbit data
2015-07-16 16:14:28 -07:00
Dane Springmeyer
461163d883 Merge pull request #2981 from mapnik/unmaintained-plugins
move occi, osm, rasterlite to non-core repo
2015-07-16 13:07:49 -07:00
Dane Springmeyer
ab7c255e8e Merge pull request #2979 from mapnik/plugin-policy
Add a plugin policy
2015-07-16 12:00:01 -07:00
Dane Springmeyer
2048be7b30 move occi, osm, rasterlite to non-core repo 84b0bfecb3 - refs #2980 2015-07-16 11:46:10 -07:00
Dane Springmeyer
cd2c76689d Add a plugin policy per #2978 2015-07-16 11:20:50 -07:00
artemp
62a58937a4 try to never fail (almost) 2015-07-16 16:55:41 +02:00
artemp
c166d9acb8 reduce code duplication 2015-07-16 13:06:52 +02:00
artemp
d2cfd0f0ea log all errors without throwing 2015-07-16 12:58:32 +02:00
artemp
55215a7b30 Merge branch 'master' into svg-parser-errors 2015-07-16 12:18:25 +02:00
artemp
c664394397 remove duplicate operator= 2015-07-16 12:17:21 +02:00
Dane Springmeyer
af0369d812 add no-op rendering benchmark - refs #2976 2015-07-15 12:59:54 -07:00
artemp
1733db5022 c++ - don't rely on implicit int to bool conversions 2015-07-15 17:46:27 +02:00
artemp
eded32d27d formattin 2015-07-15 11:30:05 +02:00
artemp
dfe73b7995 mapnik c++ style 2015-07-15 11:26:45 +02:00
Dane Springmeyer
0a126a3765 attemp to fix #2971 2015-07-14 22:54:32 -07:00
Dane Springmeyer
2b8abc4bfa fix #2975 - remove usage of boost/algorithm/clamp.hpp 2015-07-14 19:19:39 -07:00
Dane Springmeyer
8a9b46edfd bring in new regression tests for 6d6cb15 2015-07-14 13:34:50 -07:00
Dane Springmeyer
4cb2dcace2 add fix for skew (6d6cb15) to changelog [skip-ci] 2015-07-14 13:29:17 -07:00
artemp
ec68559d3d fix stderr 2015-07-14 19:54:41 +02:00
artemp
a46af76216 initial commit - make parse and parse_from_string return boolean ,collect error messages 2015-07-14 19:45:50 +02:00
artemp
6d6cb15b45 skewX/skewY - add input validation ref https://github.com/mapbox/mapbox-studio/issues/1409
* convert input angle into -90,90 range
* clamp to -89,89 range
2015-07-14 11:53:50 +02:00
artemp
c2295755f6 fix typo 2015-07-13 13:48:34 +02:00
Dane Springmeyer
15af190c77 add #2964 to changelog [skip ci] 2015-07-10 12:56:10 -07:00
Dane Springmeyer
0145476ff7 only run geojson unit test if plugin was built 2015-07-10 12:34:18 -07:00
Dane Springmeyer
b54b2753a0 fixup geojson test 2015-07-10 12:10:46 -07:00
artemp
8ab5125431 update submodules 2015-07-10 11:19:13 +02:00
artemp
16e6db3281 add initial geojson unit test 2015-07-10 11:05:48 +02:00
artemp
6325bf21cd geojson : correct parsing feature boundaries ref #2964 2015-07-10 09:45:24 +02:00
Dane Springmeyer
153051d020 add test to ensure icu/harfbuzz shapers can be compiled 2015-07-08 23:28:38 -07:00
Dane Springmeyer
a6a4f1eb2e fix compile of dormant icu_shaper 2015-07-08 23:27:41 -07:00
Dane Springmeyer
784bd8d194 use correct include type in scrptrun.hpp 2015-07-08 23:25:55 -07:00
Jiri Drbalek
293863d38a Merge pull request #2959 from mapycz/improve-visual-test-10
visual tests: report total time spent by renderers
2015-07-08 20:02:31 +02:00
Jiri Drbalek
ced3d35023 visual tests: report total time spent by renderers 2015-07-08 20:01:23 +00:00
Paul Ramsey
d144f97f4e Render NODATA as transparent and clip highbit data
ala GDAL for greyscale outputs. Addresses #2661
2015-07-08 08:29:53 -07:00
Blake Thompson
1c56214bbb update CHANGELOG for mapnik v3.0.0 release 2015-07-07 14:50:42 -05:00
Blake Thompson
e6891a03e6 Changed release date of CHANGELOG.md 2015-07-07 14:42:22 -05:00
Blake Thompson
8511865f60 Updated visual tests for python 2015-07-07 14:41:34 -05:00
Blake Thompson
ed022f17f0 Merge pull request #2954 from mapycz/improve-visual-test-9
visual tests: add time measurement
2015-07-07 13:59:56 -05:00
Dane Springmeyer
b1e4f0ea23 update visual tests after #2955 2015-07-07 11:57:52 -07:00
Dane Springmeyer
714b88d244 Merge pull request #2955 from mapnik/offset_converter-fix
Offset converter fix
2015-07-07 11:56:12 -07:00
artemp
73cae70a41 correctly populate close_points when skipping duplicate (coincident vertices) 2015-07-07 18:38:25 +02:00
artemp
0a484bf784 handle Multi-geoms + update cairo and grid renderers
update
2015-07-07 18:37:27 +02:00
artemp
2fd1525269 remove redundant check 2015-07-07 15:02:13 +02:00
Jiri Drbalek
1fa6cc73db visual tests: add time measurement 2015-07-07 12:35:28 +00:00
artemp
bb815dacf8 offset_converter - skip duplicate SEG_CLOSE (after LINETO (startx,starty)) commands to normalise input 2015-07-07 14:20:54 +02:00
artemp
56fe702bac agg line_symbolizer - dispatch to appropriate clipper based on geometry_type 2015-07-07 14:19:51 +02:00
Dane Springmeyer
d13543c359 update visual tests to a83ea35fec 2015-07-07 00:39:30 -07:00
Dane Springmeyer
305b6df5af Merge pull request #2953 from mapnik/faster-text-offset-placement
Fix perf regression for text along offset lines
2015-07-06 19:37:02 -07:00
Dane Springmeyer
a91d73779f revert the functionality of 944f34b - refs #2937 2015-07-06 19:27:05 -07:00
Dane Springmeyer
a6fd89df3e Merge pull request #2941 from mapnik/offset_fix
Fix situation where offset_converter might start off with an SEG_END …
2015-07-06 18:50:52 -07:00
Dane Springmeyer
3ed7e347cb use unique_ptr instead of shared_ptr for glyph_positions_ptr - refs #2516 2015-07-06 18:47:47 -07:00
Dane Springmeyer
3f91186a74 avoid creating placements for off canvas placements - refs #2929 2015-07-06 18:28:37 -07:00
Dane Springmeyer
e65f93f5f2 update test images after #2949 #2929 2015-07-06 18:23:34 -07:00
Dane Springmeyer
9f72950629 update visual tests 2015-07-06 18:14:56 -07:00
Dane Springmeyer
ea283c24d7 Merge pull request #2949 from mapycz/fix-text-on-tile-border
fix rendering text on tile's borders
2015-07-06 18:04:45 -07:00
Dane Springmeyer
418855118a remove un-implemented method on glyph_positions 2015-07-06 17:45:59 -07:00
Dane Springmeyer
a440a99f56 Merge pull request #2930 from mapycz/improve-visual-test-8
Visual tests: add tiled mode
2015-07-06 17:43:50 -07:00
Dane Springmeyer
aa2f769fdc Merge pull request #2944 from mapycz/fix-integer-overflow
fix integer overflow (-fsanitize=integer)
2015-07-06 16:25:56 -07:00
Dane Springmeyer
ff720d6231 support clipping in markerssymbolizer on multi-types - refs #2951 2015-07-06 15:40:34 -07:00
Blake Thompson
852a7e432a Updated tests to cover case found in #2942 2015-07-06 16:12:04 -05:00
Blake Thompson
d5c11af019 Fixed issues with multi-line paths in offset_converter, line offsets were following the polygon offset logic when they shouldn't. Closes #2942 2015-07-06 15:31:10 -05:00
Dane Springmeyer
c233364abc use latest libpng@1.6.17 2015-07-06 12:43:22 -07:00
artemp
56678b8aad geojson.input - fix bug typo 2015-07-06 12:47:45 +02:00
Jiri Drbalek
8fe19a7b45 fix rendering text on tile's borders 2015-07-03 13:22:23 +00:00
Dane Springmeyer
39eab41ecd use C++11 in cairo_context::set_dash - refs #2948 2015-07-02 10:19:33 -07:00
Dane Springmeyer
a5594bd445 fix scan-build 'Value stored to 'a_' is never read' warning 2015-07-02 10:19:33 -07:00
Jiri Drbalek
cb2717bd04 visual tests: add support for tiles 2015-07-02 14:23:05 +00:00
Jiri Drbalek
449ccf3243 visual tests: drop compare_images.hpp 2015-07-02 14:23:05 +00:00
Jiri Drbalek
aff4fa5da6 visual tests: prefer size_t 2015-07-02 14:23:04 +00:00
Artem Pavlenko
4c20842cc9 Merge pull request #2947 from mapycz/benchmark-image-compare
benchmark: remove duplicate code
2015-07-02 15:30:55 +02:00
Jiri Drbalek
9cb43bf8e7 benchmark: remove duplicate code 2015-07-02 15:10:27 +00:00
artemp
4f6c286f92 style 2015-07-02 10:14:36 +02:00
Dane Springmeyer
66a67dff5c remove unused header 2015-07-01 10:00:00 -07:00
Dane Springmeyer
a42e93a259 remove unneeded assert - refs #2943 2015-07-01 09:58:37 -07:00
Jiri Drbalek
9704e3eec5 fix integer overflow (-fsanitize=integer) 2015-07-01 12:13:15 +00:00
Blake Thompson
770d93b7cc Fix situation where offset_converter might start off with an SEG_END from the vertex, therefore starting invalid processing. Tests added to confirm fix. Ref #2937 2015-06-30 22:23:44 -05:00
Dane Springmeyer
c7693d9765 fix odd inf loop in catch.hpp 2015-06-30 18:47:36 -07:00
Dane Springmeyer
9a54d720cd add symbol for save_to_string<image_view_rgba8> - closes #2938 - refs #2939 2015-06-30 17:52:08 -07:00
Blake Thompson
01dbf53a62 setting up for mapnik v3.0.0 release 2015-06-30 19:30:11 -05:00
Dane Springmeyer
1eea7294ae ensure tests pass with no plugins built 2015-06-30 17:04:48 -07:00
Dane Springmeyer
a4753f4c87 update CHANGELOG [skip ci] - refs #2934 2015-06-30 16:12:22 -07:00
Blake Thompson
9419219b14 Changed extension to use standard md for markdown. 2015-06-30 16:28:16 -05:00
Blake Thompson
25016f1a2f Updated changelog some #2934 2015-06-30 14:30:02 -05:00
Blake Thompson
89f0f53938 Updated visual tests to be in line with python mapnik 2015-06-30 13:02:28 -05:00
Dane Springmeyer
789e07d4f4 Merge pull request #2904 from mapnik/offset
Offset Algorithm Fixes and Reverse of Offset Direction.
2015-06-30 00:39:02 -07:00
Dane Springmeyer
48eb4abedb merge with master 2015-06-30 00:38:45 -07:00
Dane Springmeyer
2a2e0d8260 update visual test refs [skip ci] - refs #2904 2015-06-30 00:06:24 -07:00
Jiri Drbalek
79e00ed7d3 Merge pull request #2910 from mapycz/improve-visual-test-7
visual tests: add command line argument for controlling log level
2015-06-29 16:52:05 +02:00
Jiri Drbalek
c4625e06bc visual tests: add command line argument for controlling log level 2015-06-29 14:23:32 +00:00
artemp
7158c19f80 Merge branch 'master' into large_csv 2015-06-29 09:51:52 +02:00
Dane Springmeyer
b285bde44b Revert "visual tests: still generate error report on ctrl-c"
This reverts commit c24229f5c8.
2015-06-24 17:37:02 -07:00
Dane Springmeyer
5428300454 update more visual tests after 5a032ee98b 2015-06-24 17:35:12 -07:00
Dane Springmeyer
5a032ee98b fix #2924 and #2412
- adds back support for minimum-path-length on lines (only supported lines in 2.3.x)
 - made text-largest-bbox-only work only on polygons (restores 2.3.x behavior)

TODO: give more control: #1583
2015-06-24 17:02:34 -07:00
Dane Springmeyer
c24229f5c8 visual tests: still generate error report on ctrl-c 2015-06-23 21:54:24 -07:00
artemp
8e40711ca4 Merge branch 'master' into large_csv 2015-06-23 17:54:38 +02:00
Artem Pavlenko
717ab98788 Merge pull request #2922 from mapnik/value-ostream-fix
fix #2921
2015-06-23 17:53:35 +02:00
artemp
73e0ac6a77 Merge branch 'master' into large_csv 2015-06-23 09:43:38 +02:00
Dane Springmeyer
15589c8568 pull in latest master 2015-06-22 13:51:09 -07:00
Dane Springmeyer
e4631f15ae fix #2921 2015-06-22 13:43:07 -07:00
Dane Springmeyer
9a5cc81924 fix a few -Wunused-argument warnings [skip ci] 2015-06-22 13:29:57 -07:00
artemp
ad43a98f43 Merge branch 'master' into large_csv 2015-06-22 10:47:12 +02:00
Dane Springmeyer
29eb2b7a62 Merge pull request #2920 from kapouer/patch-4
Spelling error
2015-06-19 14:39:11 -07:00
Jérémy Lal
f4b10fbbff Spelling error 2015-06-19 23:25:27 +02:00
artemp
fec6d11560 Merge branch 'master' into large_csv 2015-06-19 17:30:18 +02:00
Artem Pavlenko
34618dea99 Merge pull request #2919 from mapnik/remove_ptr_vector
remove boost::ptr_vector usage
2015-06-19 17:20:32 +02:00
artemp
f1c389a168 Merge branch 'master' into remove_ptr_vector 2015-06-19 17:09:07 +02:00
artemp
7f3b88b11e benchmark (quad_tree) - add bbox query 2015-06-19 17:08:19 +02:00
artemp
c88aafaf18 Merge branch 'master' into remove_ptr_vector 2015-06-19 14:19:42 +02:00
artemp
6107ef8be0 benchmark - add quad_tree creation test 2015-06-19 14:19:04 +02:00
artemp
9c7186e49e add `autodetect_newline' as a separate function 2015-06-19 13:30:00 +02:00
artemp
7e0c23815e remove boost::ptr_vector usage 2015-06-19 10:45:43 +02:00
Daniel Patterson
ca491d8aa9 Export svg_parser symbols so we can use these functions from node-mapnik 2015-06-18 15:13:52 -07:00
Dane Springmeyer
d626cf83ad update visual tests [skip ci] 2015-06-18 12:35:12 -07:00
artemp
69236137e5 make 'closing' quote an optional 2015-06-18 14:09:33 +02:00
artemp
d893718343 Merge branch 'master' into large_csv 2015-06-18 13:06:28 +02:00
artemp
98d87f4c88 replace remaining boost::unordered_map 2015-06-18 11:08:35 +02:00
artemp
93937ca443 prefer STL containers - boost::unordered_map --> std::unordered_map 2015-06-18 11:01:16 +02:00
artemp
dd8394687d remove dupe hash 2015-06-18 10:57:03 +02:00
artemp
5b1f0d3ba8 Merge remote-tracking branch 'origin/master' 2015-06-18 10:49:26 +02:00
artemp
022c2f7255 add std::hash specialization for mapnik::value 2015-06-18 10:48:56 +02:00
artemp
b9ed80ecc8 add std::hash specialization for mapnik::value 2015-06-18 10:10:26 +02:00
Dane Springmeyer
4fe3c87a84 tame a few more boost -Wsign-conversion warnings 2015-06-17 13:29:54 -07:00
Dane Springmeyer
07e06e1781 tame a few more boost -Wsign-conversion warnings 2015-06-17 13:29:54 -07:00
Dane Springmeyer
70959e8576 safer conversion of unsigned in xml_attribute cast 2015-06-17 13:29:54 -07:00
Blake Thompson
ad99cce6dd Revert change in test directory 2015-06-17 14:50:35 -05:00
Blake Thompson
6619de7b16 Modified where in travis mason publish is run 2015-06-17 14:48:49 -05:00
Blake Thompson
fa1950c5d0 Updated visual tests 2015-06-16 20:54:24 -05:00
Blake Thompson
983be86487 Updating visual tests 2015-06-16 20:48:34 -05:00
Blake Thompson
1272796822 Updated visual tests 2015-06-16 14:21:55 -05:00
Blake Thompson
bd9e580cd8 Merge branch 'master' into offset 2015-06-16 11:50:04 -05:00
Blake Thompson
93d59cde02 Changed copy method for linux and mason latest 2015-06-16 11:23:58 -05:00
Blake Thompson
1377852020 Changed the travis build to now use static linking for mason latest 2015-06-16 11:11:34 -05:00
artemp
8c6bf0eef6 update copyright notice 2015-06-16 12:49:16 +02:00
artemp
c428779e83 shape : make primitives parsers static + fix numeric parser to handle mapnik::value_integer (64-bit) 2015-06-16 12:01:11 +02:00
artemp
8bf82b717e OGR : support reading OFTInteger64/OFTInteger64List 2015-06-16 11:36:17 +02:00
artemp
0a24e8cfca remove unused #include's 2015-06-16 10:04:50 +02:00
Dane Springmeyer
bb6c9a98a5 fix more -Wsign-conversion -Wconversion warnings 2015-06-15 20:41:52 -07:00
Dane Springmeyer
6d0cd6870b remove dead code 2015-06-15 20:41:52 -07:00
Dane Springmeyer
8a432ade33 fix -Wsign-compare warnings in topojson_utils 2015-06-15 20:41:52 -07:00
Dane Springmeyer
77a7eb3343 fix -Wshadow warning harfbuzz shaper 2015-06-15 20:41:52 -07:00
Dane Springmeyer
9a80a253bf fix -Wshadow warnings in agg 2015-06-15 20:41:51 -07:00
Dane Springmeyer
eb8c412a3b silence more boost gil warnings 2015-06-15 20:41:51 -07:00
Dane Springmeyer
6a76f0fa31 fix variable shadowing 2015-06-15 20:41:51 -07:00
Dane Springmeyer
20145f2fb5 fix warnings in tiff_reader 2015-06-15 20:41:51 -07:00
Dane Springmeyer
b2c85e0c65 fix a slew of -Wsign-conversion, -Wconversion, -Wunused-argument warnings 2015-06-15 20:41:51 -07:00
Dane Springmeyer
48d4bfb170 proper use of std:: in safe_cast 2015-06-15 20:41:50 -07:00
Dane Springmeyer
427f0486ff avoid -Wshadow warning 2015-06-15 20:41:50 -07:00
Dane Springmeyer
23e25ca432 share const rendering buffer impl to avoid const_cast + avoid various warnings 2015-06-15 20:41:50 -07:00
Dane Springmeyer
e23c263ba8 remove unused constructor for matrix_node 2015-06-15 20:41:50 -07:00
Dane Springmeyer
7ba45aa9ab fix variable shadowing and ignore -Wsign-conversion for boost 2015-06-15 20:41:50 -07:00
Dane Springmeyer
d69e2cbe66 use safe_cast to safely handle -Wsign-conversion/narrowing warnings 2015-06-15 20:41:50 -07:00
Dane Springmeyer
be4d6e70f8 use c++11 style const_cast + safe cast 2015-06-15 20:41:49 -07:00
Dane Springmeyer
4483da6fd9 fix -Wshadow warning 2015-06-15 20:41:49 -07:00
Dane Springmeyer
5418c74aad Fix -Wshadow and -Wsign-conversion warnings 2015-06-15 20:41:49 -07:00
Dane Springmeyer
6d124cc229 remove unused set_rectangle method 2015-06-15 20:41:49 -07:00
Dane Springmeyer
7e2028e9fd Fix -Wshadow warning 2015-06-15 20:41:49 -07:00
Dane Springmeyer
ecd2e4aea0 fix -Wshadow warning 2015-06-15 20:41:49 -07:00
Dane Springmeyer
5d2be98cf2 Fix -Wsign-conversion warning 2015-06-15 20:41:48 -07:00
Dane Springmeyer
b355e65fe1 unit coverage of css_color_grammar converters 2015-06-15 20:41:48 -07:00
Dane Springmeyer
f36b451602 use safe cast and std::lround 2015-06-15 20:41:48 -07:00
Dane Springmeyer
563bd1adc7 use safe_cast to avoid -Wsign-conversion warnings 2015-06-15 20:41:48 -07:00
Dane Springmeyer
bb2e938302 Add unit test for safe_cast (aka saturated_cast) a clamping numeric_cast 2015-06-15 20:41:48 -07:00
Dane Springmeyer
c55662ab43 rename pixel_cast to safe_cast 2015-06-15 20:41:48 -07:00
Dane Springmeyer
72b4cb8a3a fix -Wsign-conversion warnings from boost_regex 2015-06-15 20:41:47 -07:00
Dane Springmeyer
93afb963e9 Fix -Wsign-compare warnings 2015-06-15 20:41:47 -07:00
Dane Springmeyer
34b9cb37f7 fix -Wsign-conversion warning in UnicodeString.hashCode() 2015-06-15 20:41:47 -07:00
Dane Springmeyer
45bda29a45 switch to c++11 library over boost (confirmed no speed drop on osx with test_marker_cache.cpp) 2015-06-15 20:41:47 -07:00
Dane Springmeyer
062ca091c0 benchmark for marker_cache - refs #2831 2015-06-15 20:41:47 -07:00
Dane Springmeyer
9cc76de27d benchmark: correctly position memory cleanup 2015-06-15 20:41:47 -07:00
Dane Springmeyer
9da198631b more xml2 leak fixes 2015-06-15 20:41:46 -07:00
Dane Springmeyer
2b02677cb5 Centralize memory/valgrind cleanup code 2015-06-15 20:41:46 -07:00
Blake Thompson
a9712ed081 Forgot to add prefix change to mapnik config to cairo as well 2015-06-15 16:25:59 -05:00
Blake Thompson
a4aee2eb59 Added an update to mapnik config so that it can provide relative path to libraries better in node mapnik. 2015-06-15 15:37:23 -05:00
Dane Springmeyer
c94cb6251a update tests for #2912 2015-06-12 19:04:33 -07:00
Dane Springmeyer
8172eda3d1 fix gamma for symbolizers that do not (yet) support user driven gamma - closes #2912 2015-06-12 18:18:39 -07:00
Dane Springmeyer
0d86afff36 start using -Wsign-compare and -Wshadow + fix heaps of warnings - refs #2907 2015-06-12 14:51:18 -07:00
Dane Springmeyer
8d3d136da7 fix hang on windows in pixel_cast
- manifested converting double -> int64_t.
  - it is unclear why this explicitness is needed on windows
    to avoid greater calling itself. But it is clear that the
    static_cast<double>(<std::int64_t>) is not enough for the
    template deduction to match the <double,double> case automatically
  - Making this explicit is probably better anyway, but odd it is needed.
  - Finishes closing #2893, refs #2893, amends 96f7120ecc and d29a0f18b1
  - Seen with both VS 2014 CTP 4 and VS 2015 Preview
2015-06-12 12:38:22 -07:00
Dane Springmeyer
29b464e868 simplify numeric_compare template logic 2015-06-12 12:01:26 -07:00
Dane Springmeyer
a5e10aa25c std::numeric_limits are not yet constant on windows - see #2911 2015-06-12 11:48:49 -07:00
artemp
a030f5531d add <limits> 2015-06-12 14:43:56 +01:00
Artem Pavlenko
8f1f15dc49 Merge pull request #2908 from mapnik/fix_pixel_cast
Fix pixel cast - good catch broken signed/unsigned comparisons! 

I made bounds methods return constexpr - I don't expect noticeable performance improvements but here we go :)
2015-06-12 13:45:26 +01:00
artemp
15041ba334 replace boost::numeric::bounds with detail::bounds where highest/lowest return constexpr
( since c++11 std::numeric_limits<T>::min/max return `static constexpr T`)
prefer if/else if..  over if/if...)
2015-06-12 13:40:47 +01:00
artemp
74d6e7740d Merge branch 'master' into fix_pixel_cast 2015-06-12 13:01:14 +01:00
Jiri Drbalek
01fc7315ca update visual tests 2015-06-12 10:07:46 +00:00
Dane Springmeyer
8e89b788df Add a a few tests for set/get pixel - refs #2893 2015-06-12 00:12:28 -07:00
Dane Springmeyer
d29a0f18b1 fix pixel_cast by avoiding comparing across sign<->unsigned - refs #2893 2015-06-12 00:02:59 -07:00
Dane Springmeyer
62b0d2b06e update visual tests to get travis passing again post #2898 2015-06-11 16:51:47 -07:00
Dane Springmeyer
6922375cf7 Merge pull request #2905 from mapnik/fix-jpeg-crash
Fix jpeg crash
2015-06-11 14:06:29 -07:00
Dane Springmeyer
5465adc229 fix expected error message 2015-06-11 14:04:20 -07:00
Dane Springmeyer
84a0c49ec3 Avoid crashing if we try to read a png as a jpeg - closes #2903 2015-06-11 14:02:34 -07:00
Dane Springmeyer
6a3d63aa40 consistent initialization in scriptrun and placement_finder 2015-06-11 11:44:27 -07:00
Dane Springmeyer
3b450f14bf Avoid potential division by zero [coverity 54716] 2015-06-11 11:43:41 -07:00
Blake Thompson
d3f37d8f1e Updated clipper to be reversed and fixes to the way the algorithm operates. 2015-06-11 12:47:00 -05:00
artemp
167708329d Merge branch 'mapycz-fix-raster-scaling' 2015-06-11 13:21:32 +01:00
artemp
ed3a74afed disambiguate naming 2015-06-11 13:20:49 +01:00
artemp
eabe5b50e6 Merge branch 'master' into mapycz-fix-raster-scaling 2015-06-11 13:15:38 +01:00
artemp
96f7120ecc add pixel_cast<T>() ref #2893
replace boost::numeric_cast with mapnik::pixel_cast
2015-06-11 13:10:02 +01:00
artemp
e32465368b Merge branch 'fix-raster-scaling' of https://github.com/mapycz/mapnik into mapycz-fix-raster-scaling 2015-06-11 10:28:41 +01:00
artemp
b228da7bc3 remove unused grammar + remove stderr 2015-06-11 10:27:32 +01:00
Dane Springmeyer
f5a792807e fully header only impl should not use MAPNIK_DECL 2015-06-10 23:03:07 -07:00
Dane Springmeyer
87541f19d5 update test data 2015-06-10 22:01:13 -07:00
Dane Springmeyer
9ef7561a2c Merge pull request #2901 from mapnik/pj_transform_inf
handle pj_transform HUGE_VAL results (aka inf)
2015-06-10 20:09:43 -07:00
Dane Springmeyer
352586e9d7 handle pj_transform HUGE_VAL results (aka inf)
- turns out pj_transform will not always return an error code for
   failed transforms and may instead just set values as HUGE_VAL
 - this commit handles this and calls it an error by return false
   from forward/backward

Arguably if `point_count` > 1 some values might be correctly transformed
while others might be HUGE_VAL. For the purposes of Mapnik we will consider
any HUGE_VAL as an error because we have no way to handle partial failures.
2015-06-10 18:34:11 -07:00
artemp
1a95f1753e remove dead code 2015-06-10 16:32:05 +01:00
artemp
40b963f9ad csv_grammar - handle various quotting options + disable csv_utils::fix_json_quoting(csv_line) 2015-06-10 13:40:55 +01:00
artemp
793a2f9ffb better not to rely on implicit conversion to bool but use pointer comparison with nullptr 2015-06-10 11:42:34 +01:00
artemp
e5f1379fea handle escape characters 2015-06-10 11:41:45 +01:00
artemp
cb832c0964 format 2015-06-10 11:41:28 +01:00
artemp
f1feedc54c Merge branch 'master' into large_csv 2015-06-10 11:14:19 +01:00
artemp
8e30a89522 remove wkt_generator_grammar_int to minimise code duplication
remove redundant template parameter - we can deduce coord_type from Geometry
add coord generator traits to control generator instantiation at compile time
2015-06-10 11:10:17 +01:00
artemp
89d258743a use inheritance to define geometry ( struct geometry : geometry_base<T> ) + provide value_type type alias in geometry 2015-06-10 10:55:34 +01:00
Blake Thompson
08602392a3 Merge branch 'master' into offset 2015-06-09 13:18:31 -05:00
Blake Thompson
d209e5bc33 After some tweaking determined what I feel like are the best values for threshold and limiting sharp corners 2015-06-09 13:15:12 -05:00
Blake Thompson
dd104b0b1b Updated offset converter to remove large spikes 2015-06-09 11:31:50 -05:00
artemp
989af2ea42 use csv_grammar to parse csv lines 2015-06-09 15:22:37 +01:00
artemp
11e58275e9 fix typedef's 2015-06-09 15:22:01 +01:00
Blake Thompson
75f7cb26bb Reversed the offsets 2015-06-09 09:18:52 -05:00
artemp
f4ec97489d add 'csv' dir 2015-06-09 10:33:01 +01:00
artemp
908f03bc19 add csv_grammar 2015-06-09 10:21:38 +01:00
artemp
35ff68a7ec refactor - detect_separator free func 2015-06-09 10:17:55 +01:00
artemp
6bb95d2c85 Merge branch 'master' into large_csv 2015-06-09 09:58:53 +01:00
Dane Springmeyer
804e523e71 update tests after #2897 2015-06-08 19:06:43 -07:00
Dane Springmeyer
32d925b965 fix clipping regression on line patterns #2897 (proper tests depend on 2896) 2015-06-08 19:06:43 -07:00
Blake Thompson
66efe02224 Merge pull request #2898 from mapnik/offset
Offset Fix
2015-06-08 21:02:21 -05:00
Blake Thompson
735ac5a6e1 Updated visual tests 2015-06-08 21:00:36 -05:00
Blake Thompson
e9ff7b9339 Merge branch 'master' into offset 2015-06-08 20:53:41 -05:00
Dane Springmeyer
c9293b8fd0 actually fix #2894 - refs #2202 2015-06-08 18:51:13 -07:00
Blake Thompson
42de75593d Updated unit test to be correct 2015-06-08 20:32:21 -05:00
Blake Thompson
a74c4abe57 Reverted to original offset directions for now 2015-06-08 19:33:00 -05:00
Blake Thompson
eb5ca2af87 Merge branch 'offset' of github.com:mapnik/mapnik into offset 2015-06-08 17:13:58 -05:00
Blake Thompson
7aa7860b65 Added tests to offset 2015-06-08 17:13:02 -05:00
Dane Springmeyer
8af1b2def6 Merge branch 'master' of github.com:mapnik/mapnik into offset 2015-06-08 14:22:08 -07:00
Dane Springmeyer
bca0fb872c update visual test images after #2894 2015-06-08 14:21:00 -07:00
Dane Springmeyer
2a01b2da03 Merge branch 'master' of github.com:mapnik/mapnik into offset 2015-06-08 13:54:04 -07:00
Jiri Drbalek
76b7466719 fix rendering raster without scaling 2015-06-08 17:31:56 +00:00
artemp
82a8735ef8 Merge branch 'master' into large_csv 2015-06-08 17:21:25 +01:00
Dane Springmeyer
fad969421f ensure visual tests compile if GRID_RENDERER is disabled 2015-06-06 12:42:00 -07:00
Dane Springmeyer
583fbaec14 fix test compile if cairo is disabled 2015-06-06 12:30:56 -07:00
Dane Springmeyer
d7bffd51f2 shuffle marker_helpers includes 2015-06-06 08:19:54 -07:00
Dane Springmeyer
29c9e97d76 minor code cleanup in process_group_symbolizer 2015-06-06 08:09:06 -07:00
artemp
ce33e2d3cc Merge branch 'master' into large_csv 2015-06-06 10:39:17 +01:00
Blake Thompson
68c5d07634 Merge pull request #2888 from mapycz/makefile-non-bash
fix make python for non-bash shells
2015-06-05 17:40:45 -05:00
Blake Thompson
4de33bd483 Updated offset so that it only requires onetime through and rewind is not required to be called. This was done because some adapters do not respond well to rewind. 2015-06-05 17:12:42 -05:00
Blake Thompson
35f4ae5bc7 Tune threshold some for offset converter 2015-06-05 12:03:52 -05:00
Jiri Drbalek
d3baf8041a fix make python for non-bash shells 2015-06-05 15:14:31 +00:00
Blake Thompson
c3574c1008 Initial commit changing offsets 2015-06-05 10:04:24 -05:00
artemp
f208717070 fix spelling 2015-06-04 17:21:08 +01:00
artemp
e0e46eb3a8 csv plugin : add file_length standalone helper, make file_length local variable 2015-06-04 17:21:08 +01:00
Dane Springmeyer
dcfa0b655c fix #2863 by adding back compatibility of point symbolizer interior placement on point geometries + update visual tests 2015-06-04 07:45:44 -07:00
Dane Springmeyer
a38cc2aab6 disable tiff test on windows - closes #2838 2015-06-03 15:04:50 -07:00
Dane Springmeyer
e17505686c fix compile - followup to #2880 2015-06-03 14:16:30 -07:00
Dane Springmeyer
3b0cc75182 Merge pull request #2884 from mapycz/ignore-mapnik-settings-env
add mapnik-settings.env to .gitignore
2015-06-03 14:04:19 -07:00
Dane Springmeyer
4bf4bb0104 Merge pull request #2880 from zerebubuth/fix/rapidxml-loader-trim-whitespace
Fix rapidxml XML loader to trim whitespace
2015-06-03 14:03:53 -07:00
Matt Amos
1778d19b22 Added headers required on Mac OS - not sure why not on Linux. 2015-06-03 15:56:37 +01:00
artemp
42e1adca84 c++11 - use std::bind 2015-06-03 14:00:14 +01:00
Jiri Drbalek
fa35e1c193 update test data 2015-06-03 13:10:57 +00:00
Jiri Drbalek
aa8197bd6c add mapnik-settings.env to .gitignore 2015-06-03 12:01:12 +00:00
Artem Pavlenko
a235316573 Merge pull request #2883 from mapycz/missing-style
better handling of missing styles
2015-06-03 11:54:06 +01:00
Jiri Drbalek
27ba7483be xml loader: throw on missing style for strict parsing 2015-06-03 10:36:50 +00:00
artemp
3a4c67c9d6 Merge remote-tracking branch 'origin/master' 2015-06-03 11:30:57 +01:00
Artem Pavlenko
bd4504331d Merge pull request #2882 from mapnik/remove_clipper
Removed angus clipper library from code and updated all visual tests …
2015-06-03 11:30:29 +01:00
artemp
3c159f7163 remove unused dump_xml.hpp 2015-06-03 11:18:32 +01:00
Jiri Drbalek
abf64342f9 raise missing style message to MAPNIK_LOG_ERROR 2015-06-03 10:04:33 +00:00
Blake Thompson
a138b8717d Removed angus clipper library from code and updated all visual tests to master 2015-06-02 14:14:21 -05:00
Matt Amos
dd112b33e2 Added visibility attribute to XML symbols.
Thanks to @flippmoke, symbol visibility is exactly the cause of
the previous compilation error. Until it's decided whether or not
to turn this off (at least for testing & coverage builds?), I've
added the necessary annotations to allow it to compile.
2015-06-02 18:10:59 +01:00
artemp
8fa314c418 follow up from be731f17ce - fix read_polyline (-fsanitize=address) 2015-06-02 17:50:10 +01:00
Matt Amos
b21ed59190 Add test for XML parser whitespace trimming behaviour.
This tests the at the XML parser trims whitespace from XML text
nodes. This was already the behaviour of the libxml2 parser, but
not the rapidxml parser.

Note that this makes #2878 pass for the rapidxml parser as well
as the libxml2 parser. It seems that Travis uses the rapidxml
parser only.
2015-06-02 17:50:08 +01:00
Matt Amos
5616d406b4 Trim whitespace in rapidxml parser text nodes.
The libxml parser already trims text nodes, which leads to a
difference in behaviour when reading map style XML. This patch
normalises the behaviour between the two.
2015-06-02 17:50:08 +01:00
artemp
8e1e5f19d1 Merge remote-tracking branch 'origin/master' 2015-06-02 15:39:35 +01:00
artemp
59b69846fe Merge remote-tracking branch 'origin/master' 2015-06-02 15:39:01 +01:00
artemp
90a27abccb catch and remove more spurious std::move's 2015-06-02 15:36:31 +01:00
Dane Springmeyer
f8370acc9c fix a few files that need utf_conv_win.hpp 2015-06-02 07:14:31 -07:00
artemp
82a98a6d85 catch and remove more spurious std::move's 2015-06-02 14:48:02 +01:00
artemp
df4226a825 remove spurious std::move's (clang - moving a temporary object prevents copy elision [-Wpessimizing-move]) 2015-06-02 14:26:35 +01:00
artemp
be731f17ce use vec.resize() ref #2846 (this fixes -fsanitize=address error on OS X) 2015-06-02 14:24:19 +01:00
artemp
de568ff054 polygon<T> - add default ctor 2015-06-02 14:23:22 +01:00
artemp
2eaa90033a move singleton to util/singleton.hpp
move windows UTF conversion routines to util/utf_conv_win.hpp
2015-06-02 11:10:41 +01:00
artemp
9a93b21159 remove unused member variable + make singleton always thread safe 2015-06-02 10:32:30 +01:00
artemp
8653508a9a use std::aligned_storage in CreateStatic policy 2015-06-02 10:27:22 +01:00
artemp
b3af8bd5f9 implement DCLP using c++11 (http://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/)
ref #2838
2015-06-02 10:24:38 +01:00
artemp
c399469d95 use constexpr instead of BOOST_STATIC_CONST 2015-06-01 17:23:51 +01:00
artemp
5e9b40aebd use assignment to initialise built-in types 2015-06-01 14:03:53 +01:00
artemp
6f9a5dcd0b use STL algorithms 2015-06-01 13:58:37 +01:00
Artem Pavlenko
2e377e876a Merge pull request #2879 from zerebubuth/fix/remove-unused-source-files
Remove unused source `memory.[ch]pp`.
2015-06-01 11:22:11 +01:00
Artem Pavlenko
9106f5ca9e Merge pull request #2877 from mapycz/fix-text-vertex-placement-infinite-loop
vertex placement: fix infinite loop
2015-06-01 10:23:19 +01:00
Matt Amos
ebab4df95f Remove unused source memory.[ch]pp.
I could not find any references to this source file from any
other, and it looks like it has been largely unmodified for the
past 5 years. This suggests that it has been orphaned.
2015-05-29 19:06:13 +01:00
Jiri Drbalek
5ea57b62de vertex placement: fix infinite loop 2015-05-28 15:06:56 +00:00
Jiri Drbalek
b0759e8ade visual tests: update visual data 2015-05-27 10:25:25 +00:00
Blake Thompson
a08d4dcc72 Fix for rasterlite plugin compile 2015-05-26 18:21:57 -05:00
Blake Thompson
32652e5c4a Merge pull request #2872 from pnorman/patch-3
make test/run independent of bash location
2015-05-26 17:57:52 -05:00
Paul Norman
d683795af5 make test/run independent of bash location 2015-05-26 14:38:51 -07:00
Blake Thompson
847a9f0d45 Merge pull request #2839 from mapnik/static_strategy
Changed from numeric casts to static casts in strategies
2015-05-26 16:19:13 -05:00
Blake Thompson
ee551cd949 Removed vector tile strategy 2015-05-26 16:18:10 -05:00
Blake Thompson
3768702699 Updated unit tests 2015-05-26 16:03:25 -05:00
Blake Thompson
85e2b53490 Changed from floor to round 2015-05-26 15:52:41 -05:00
Blake Thompson
506d2f435f Added vector tile strategy 2015-05-26 15:52:41 -05:00
Blake Thompson
611eb6e7a3 Changed from numeric casts to static casts 2015-05-26 15:52:41 -05:00
Blake Thompson
94dd9eb613 Merge pull request #2865 from mapycz/improve-visual-test-6
Visual tests improvements, support for grid renderer
2015-05-26 15:44:40 -05:00
Blake Thompson
4f6d87e5b1 Merge branch 'master' of github.com:mapnik/mapnik 2015-05-26 15:15:16 -05:00
Blake Thompson
feae68f142 FreeBSD build script fix closes #2861 2015-05-26 15:15:08 -05:00
Blake Thompson
93359d00d2 Merge pull request #2870 from mapnik/suse_fix
-fPIC fix
2015-05-26 15:12:30 -05:00
Blake Thompson
3492d06f80 Always use -fPIC, refs #2861, closes #2867 2015-05-26 15:11:44 -05:00
Blake Thompson
775fcb5378 Updated clipper so that it uses stable_sort rather then sort so results are the same across operating systems 2015-05-26 14:40:16 -05:00
Blake Thompson
e027204b91 Added c++ with -fPIC for SUSE 2015-05-26 13:02:18 -05:00
Jiri Drbalek
b5d07a7e0d visual tests: update visual data 2015-05-25 21:32:47 +00:00
Jiri Drbalek
d4de1226ab visual tests: add support for grid renderer 2015-05-25 21:03:40 +00:00
Jiri Drbalek
c1461f495a visual tests: handle runner exceptions 2015-05-25 21:03:40 +00:00
Jiri Drbalek
86ce91bd09 visual tests: apply constness 2015-05-25 21:03:40 +00:00
Jiri Drbalek
344a6ec8ba grid: formatting 2015-05-25 21:03:40 +00:00
Jiri Drbalek
51064a9479 grid: use correct types 2015-05-25 21:03:40 +00:00
Dane Springmeyer
91065df5f0 Merge pull request #2852 from mapnik/svg-visual-tests
Add svg_renderer to visual tests
2015-05-25 08:26:40 -07:00
Dane Springmeyer
ea3eb674c7 default compiler to cc/c++ / remove obsolete special casing for os x 2015-05-24 13:51:45 -07:00
Dane Springmeyer
b0f93e4596 Merge pull request #2862 from pnorman/patch-2
Don't hard-code bash path in mapnik-config
2015-05-24 13:49:01 -07:00
Dane Springmeyer
4667e9470a more portable workaround for gil c++11 bug - closes #2859 2015-05-24 13:48:04 -07:00
Paul Norman
eeec7850d0 Don't hard-code bash path in mapnik-config
[[ is a bashism, so this script needs bash, but shouldn't assume a location.
2015-05-24 13:16:31 -07:00
Blake Thompson
647d20981a Merge pull request #2855 from pnorman/host_typo
Remove stray " in HOST config line
2015-05-23 21:37:37 -05:00
Blake Thompson
a4f068b6d9 Merge pull request #2856 from pnorman/libmapnik_gitignore
Expand .gitignore for so files
2015-05-23 20:45:25 -05:00
Paul Norman
7dba9cb04b Expand .gitignore for so files
The existing lines weren't catching libmapnik.so.3.0.0
2015-05-23 18:39:51 -07:00
Paul Norman
f0364c40a9 Remove stray " in HOST config line 2015-05-23 16:53:00 -07:00
Dane Springmeyer
11a90c401c Merge pull request #2854 from pnorman/configure_bash
Use sh instead of bash for configure
2015-05-23 16:34:00 -07:00
Paul Norman
9954b64b6a Use sh instead of bash for configure
Not everywhere has bash installed or installs it to /bin/bash

Given that there's no bash-specific features in configure, it makes
sense to just use sh
2015-05-23 15:59:52 -07:00
Dane Springmeyer
77907bdb1e another ifdef for renderers 2015-05-23 12:53:58 -07:00
Dane Springmeyer
c6adab02f4 Merge branch 'master' of github.com:mapnik/mapnik into svg-visual-tests 2015-05-23 12:08:58 -07:00
Dane Springmeyer
9d9a1283d6 make grind: no need to source mapnik-settings + add grinding of visual tests 2015-05-23 12:05:40 -07:00
Dane Springmeyer
ad09abee21 free memory in visual tests to keep valgrind happier 2015-05-23 12:05:10 -07:00
Dane Springmeyer
018c595dda properly ifdef cairo and svg renderers 2015-05-23 11:59:48 -07:00
Dane Springmeyer
0646e9446e use new visual test data with svg 2015-05-23 11:10:24 -07:00
Dane Springmeyer
99560b23ab add svg_renderer to visual tests 2015-05-23 11:08:51 -07:00
Dane Springmeyer
9a697a7dd6 boottrap: fix paths embedded in .la files
- these are invalid for local setups since they have travis absolute paths by default
 - this is not needed for building mapnik (since mapnik does not use libtool)
 - but it enables using the result of mapnik-config to build apps that do use libtool
 - so it unblocks building mod_tile against a local mapnik/mapnik-config built against mason
2015-05-23 10:33:18 -07:00
Dane Springmeyer
aae52dad2e u_cleanup is called from unit/run.cpp already [skip ci] 2015-05-22 13:56:59 -07:00
Dane Springmeyer
6c8a72dfb0 also skip running unit tests since they (currently at least) depend on test data - followup to #2845 2015-05-22 09:52:01 -07:00
Dane Springmeyer
0ac8389622 Merge pull request #2845 from mapycz/improve-visual-test-5
visual tests: skip visual tests when test data are not present
2015-05-22 09:48:57 -07:00
Jiri Drbalek
c349412056 visual tests: skip visual tests when test data are not present 2015-05-22 17:02:52 +00:00
artemp
9c9a7a06a0 unit test geometry - use appropriete std::string constructor ( file_io.get() doesn't guarantee to return null terminated C-string!) 2015-05-22 09:24:45 +01:00
artemp
bbbe24ac9f format - remove extra ; 2015-05-22 09:09:50 +01:00
Artem Pavlenko
8d911d8c77 Merge pull request #2843 from mapnik/fix-webp-views
Fix potential crash when encoding webp via image_view
2015-05-22 08:59:03 +01:00
Dane Springmeyer
d5e4197aa2 fixup webp test 2015-05-21 20:42:18 -07:00
Dane Springmeyer
c2e94c68a5 fix crash + add crashing testcase for #2842 2015-05-21 20:39:14 -07:00
Dane Springmeyer
145781aec9 remove uneeded includes [skip ci] 2015-05-21 11:11:04 -07:00
Dane Springmeyer
4a69a94fed always compile tests even if not installing 2015-05-21 07:41:28 -07:00
artemp
2e832586ab use mapnik geometry! 2015-05-21 15:00:20 +01:00
artemp
4debc817b5 don't pass invalid bounding_boxes to boost::geometry::rtree_index 2015-05-21 11:52:30 +01:00
artemp
3b663af863 use boost::spirit::standard instead of boost::spirit::ascii to avoid assertions failing (isascii_(ch)) in debug builds - ref #2829 2015-05-21 11:27:21 +01:00
Blake Thompson
8534d5e5c2 Updated to latest visual test version 2015-05-20 17:35:08 -05:00
Dane Springmeyer
fad048861d use latest visual test data 2015-05-20 14:23:28 -07:00
Blake Thompson
60ec991b2c Merge pull request #2837 from mapnik/correct
Geometry Correct
2015-05-20 16:21:47 -05:00
Dane Springmeyer
ec8f1620e5 correct polygons in topojson and osm plugins too 2015-05-20 14:09:52 -07:00
Dane Springmeyer
84e4d8bf22 Start calling geometry::correct everywhere possible - refs #2834 2015-05-20 14:00:30 -07:00
Dane Springmeyer
0f8b379eea update visual tests after mapnik/test-data-visual#1 2015-05-20 11:24:01 -07:00
Blake Thompson
f964046c19 Merge pull request #2830 from mapnik/clamp_multi
Rename set_alpha and multiply_alpha
2015-05-20 13:15:45 -05:00
Blake Thompson
05b4ea4955 Removed multiply_opacity 2015-05-20 13:14:44 -05:00
Blake Thompson
2031215247 Renamed set_opacity to apply_opacity, reverted it to the old logic of set_alpha. Updated tests, clamping is now used. 2015-05-20 13:08:18 -05:00
Dane Springmeyer
786dc49a6b update visual tests 2015-05-20 10:59:08 -07:00
Blake Thompson
b68d079255 Changed the name of the set_alpha and multiply_alpha to be set_opacity and multiply_opacity 2015-05-20 12:39:01 -05:00
Blake Thompson
25c6576fdd Updated the way that multiply_alpha works, such that it is not clamped at the multiplier, but rather at the result of the multiplier and alpha. 2015-05-20 12:39:00 -05:00
Dane Springmeyer
5d7c43457e Merge pull request #2825 from mapycz/improve-interior
improve interior placement
2015-05-20 10:37:39 -07:00
Dane Springmeyer
6537183f86 Merge pull request #2827 from mapycz/visual-tests-parallel
visual tests: set number of parallel threads by JOBS environment variable
2015-05-20 10:17:00 -07:00
Dane Springmeyer
6a7d785557 Merge pull request #2826 from mapycz/improve-visual-test-3
improve visual tests
2015-05-20 10:16:52 -07:00
Dane Springmeyer
adf85264c1 Merge pull request #2832 from afflerbach/unused-nodes-error-message
Message about unused text nodes now also contains line numbers.
2015-05-20 10:08:21 -07:00
Jörg Afflerbach
b385c71789 Message about unused text nodes now also contains line numbers.
Helped me a lot when I needed to find a superfluous `-->` in a large `map.xml`.
2015-05-20 18:55:29 +02:00
artemp
a8a90b7656 use std::lock_guard instead of unique_lock (better fit for the job) 2015-05-20 16:12:22 +01:00
artemp
433741877d fix - use std::size_t to avoid narrowing 2015-05-20 11:31:41 +01:00
artemp
6c14ff9b7a fix char type 2015-05-20 11:31:24 +01:00
Dane Springmeyer
093d857ddc Add support for 64 bit field types in GDAL 2.0 - closes #2685 2015-05-19 22:39:39 -07:00
Jiri Drbalek
b5c2b98412 visual tests: set number of parallel threads by JOBS environment variable 2015-05-19 18:05:38 +00:00
Jiri Drbalek
5ad9b4531c visual tests: allow style paths in command line arguments 2015-05-19 17:30:58 +00:00
Jiri Drbalek
8519bde143 visual tests: drop config.cpp 2015-05-19 17:30:58 +00:00
Jiri Drbalek
3db7b0ca9b visual tests: use boost::filesystem::path for paths 2015-05-19 17:30:58 +00:00
Blake Thompson
c37720066d Merge pull request #2824 from zerebubuth/test/port-python-tests
Port some python tests
2015-05-19 08:33:43 -05:00
artemp
3ce65e8b65 rename view_to_string to view_to_stream and tempalate on stream type 2015-05-19 11:58:20 +01:00
artemp
05b5d16e87 more std::size_t fixes (consistent usage) 2015-05-19 11:43:39 +01:00
artemp
64979f24b7 use enumeration type ! 2015-05-19 11:30:51 +01:00
artemp
3b5a8f354f use std::size_t 2015-05-19 11:17:01 +01:00
Jiri Drbalek
efd554a04e interior placement: always compute center of the longest segment 2015-05-19 08:37:57 +00:00
Matt Amos
0db207d076 Bump submodule hash for new test data file. 2015-05-19 00:33:46 +01:00
Matt Amos
782a949543 Use approx when testing floating point approximate equality. 2015-05-18 22:53:11 +01:00
Matt Amos
369887428e Use REQUIRE_THROWS instead of manually checking with try/catch. 2015-05-18 22:40:34 +01:00
Matt Amos
26f233c505 Test failure on thrown exception is already handled by the test framework. 2015-05-18 22:37:13 +01:00
Matt Amos
2bb50371ca Need optional I/O header on clang++, apparently. 2015-05-18 22:34:34 +01:00
Matt Amos
a16b6156ed Ported CSV tests from Python. 2015-05-18 22:14:37 +01:00
Matt Amos
818ede5b93 Ported box2d_test.py 2015-05-18 15:10:55 +01:00
Matt Amos
8e62007e4f Added port of agg_rasterizer_integer_overflow_test.py 2015-05-18 14:46:01 +01:00
Matt Amos
468bc5257b Re-order libs to satify correct link order for ICU symbols from mapnik-json library. 2015-05-18 14:45:30 +01:00
artemp
bf6b7d79bd use if/else if ... 2015-05-18 11:21:56 +01:00
Dane Springmeyer
b2691f5906 Merge pull request #2819 from mapycz/fix-boost-scoped-enum
fix compilation error due to boost scoped enum with boost < 1.51
2015-05-18 00:07:28 -07:00
Dane Springmeyer
4034c7f1f0 Merge pull request #2820 from mapycz/fix-deprecation-warning
fix deprecation warning
2015-05-18 00:07:01 -07:00
Jiri Drbalek
5ab59c860d fix deprecation warning 2015-05-18 08:01:27 +00:00
Jiri Drbalek
848044e8c4 fix compilation error due to boost scoped enum with boost < 1.51 2015-05-17 19:44:48 +00:00
Dane Springmeyer
476e65e921 Merge pull request #2816 from zerebubuth/fix/boost-scoped-enum-c++11-abi
Fix compilation error due to Boost scoped enum & C++11 mode.
2015-05-16 17:20:57 -07:00
Matt Amos
a5cf088568 Fix compilation error due to Boost scoped enum & C++11 mode.
Boost versions before 1.57 are broken when the system package and Mapnik are compiled against different standards. On Ubuntu 14.04 using boost 1.54, it breaks scoped enums. It's a bit of a hack to just turn it off like this, but seems the only available work-around. See https://svn.boost.org/trac/boost/ticket/6779 for more details.
2015-05-16 21:41:40 +01:00
Blake Thompson
4d7c31abba Updated test data again 2015-05-15 17:09:42 -05:00
Dane Springmeyer
a3ac9dbca2 remove unused boost/math include and typedefs 2015-05-15 14:43:42 -07:00
Dane Springmeyer
2a1005c040 avoid warnings in geometry_equal test 2015-05-15 14:43:42 -07:00
Dane Springmeyer
7a0cf4d750 fix unused typedef warning in image_util 2015-05-15 14:43:42 -07:00
Dane Springmeyer
f1e6be4572 silence boost warning in geojson_datasource 2015-05-15 14:43:42 -07:00
Blake Thompson
cf3ff82f1a Also allow the possibility for negative values being passed to image option values 2015-05-15 15:51:53 -05:00
Blake Thompson
4fce3a7451 Updates to fix failing image options 2015-05-15 15:25:52 -05:00
Blake Thompson
219ad1f2cc Updated min zoom and max zoom to use maximum scale denom and minimum scale denominator #1447 2015-05-15 14:34:12 -05:00
Blake Thompson
776f9aee9a Updates to test/data 2015-05-15 13:54:24 -05:00
Dane Springmeyer
8aec508e10 put nik2img on PATH [skip ci] 2015-05-15 11:49:01 -07:00
Dane Springmeyer
1aa02e2081 tweak doc on updating visual tests [skip ci] 2015-05-15 11:33:38 -07:00
Dane Springmeyer
c6c0c5907f update visual tests and data 2015-05-15 11:33:20 -07:00
Dane Springmeyer
77cf3697ae move sourcing of mapnik-settings.env to localize.sh 2015-05-15 11:28:55 -07:00
Blake Thompson
3e24c5a417 Doh, fixing stupid C++ that I wrote after properly writing a unit test 2015-05-15 13:21:51 -05:00
Blake Thompson
90de0d65cb Corrected errors in palette unit test and corrected logic in bounding box projection transform 2015-05-15 12:15:27 -05:00
artemp
2565dc0975 remove unused boost::tokenizer headers from mapnik/utils 2015-05-15 16:55:30 +01:00
artemp
e892f752e9 update remaining image writers to use image_options 2015-05-15 16:55:30 +01:00
Blake Thompson
6960c85cd2 Removed pull requests from latest publishing closes #2794 2015-05-15 10:48:05 -05:00
Blake Thompson
cf68412ef1 Merge pull request #2814 from mapnik/feature/add_tests
Palette unit tests
2015-05-15 10:39:00 -05:00
Blake Thompson
22d70decd4 Palette unit tests 2015-05-15 10:37:52 -05:00
artemp
08986ca8a1 truncate white space character (U-0020) at wrapping point - ref #2670 2015-05-15 15:55:51 +01:00
artemp
ccc4a63cb9 call preceding with index one pass current to handle case when i == break_point ( breakitr->preceding( i + 1))
ref #2701
2015-05-15 14:41:18 +01:00
Dane Springmeyer
fd23aacd7b shuffle includes based on iwyu findings 2015-05-14 23:38:36 -07:00
Dane Springmeyer
7a2aae15d3 Merge pull request #2765 from mapycz/fix-pg-datasource-srid
postgis: prefix table name with schema
2015-05-14 23:06:51 -07:00
Dane Springmeyer
c3d2f813f4 Merge pull request #2804 from mapycz/rm-log
remove useless log
2015-05-14 23:06:11 -07:00
Dane Springmeyer
3ae6e49a2e Merge pull request #2812 from mapnik/feature/add_tests
Adding tests and cleanup
2015-05-14 23:05:48 -07:00
Dane Springmeyer
956de13d4e fix issues reported by scan-build - closes #2813 2015-05-14 18:00:25 -07:00
Dane Springmeyer
53be585240 iwyu in view_strategy.hpp 2015-05-14 17:59:40 -07:00
artemp
6ed878955a cleanup 2015-05-14 15:39:11 +01:00
artemp
75a77882e8 image_options - add key0=value0:key1:key2=value2 parser
remove tokenizer usage from image_util_png
2015-05-14 15:37:21 +01:00
Jiri Drbalek
a2d7ba4665 update visual tests 2015-05-14 16:18:15 +00:00
Jiri Drbalek
7a0f38c8f2 update visual tests 2015-05-14 15:50:26 +00:00
Artem Pavlenko
86a603ac8d Merge pull request #2810 from mapycz/improve-visual-test-2
handle styles with missing reference images
2015-05-14 14:11:09 +01:00
Artem Pavlenko
2a8086fbcc Merge pull request #2788 from mapycz/fix-labeling-on-polygons
fix labeling on polygons
2015-05-14 14:10:02 +01:00
Jiri Drbalek
78ce66aee0 remove useless log 2015-05-14 12:25:53 +00:00
artemp
881dba4fc9 fix camel case 2015-05-14 12:53:21 +01:00
artemp
ee414c4796 partially revive numeric_cast<> 2015-05-14 12:40:00 +01:00
Jiri Drbalek
87d4990f9a handle styles with missing reference images 2015-05-14 11:36:08 +00:00
Jiri Drbalek
a8e3174817 text on polygon: fix missing closing segment 2015-05-14 11:26:01 +00:00
Jiri Drbalek
527cbe7897 fix labeling on polygons 2015-05-14 11:26:01 +00:00
artemp
5126491705 fix unit test 2015-05-14 12:08:14 +01:00
artemp
5b865d1f2e more constness 2015-05-14 12:07:34 +01:00
artemp
3b3ca55042 remove numeric_cast + more constness correctness 2015-05-14 11:17:53 +01:00
artemp
e20ae67110 apply constness 2015-05-14 10:47:06 +01:00
artemp
78c56968c1 add clamp(v, min, max) function + clamp opacity in ctor 2015-05-14 10:43:25 +01:00
Blake Thompson
d1616737f2 Removed the mapnik type of 'byte' because it seemed sparsely used and simply providing data type should be easier as it is never going to change. Also added some tests around mapnik palette 2015-05-13 19:32:54 -05:00
Blake Thompson
f3abe7fc25 Added test coverage to image buffer 2015-05-13 16:50:31 -05:00
Blake Thompson
86b65146a7 Added more tests around image_any 2015-05-13 16:50:31 -05:00
Blake Thompson
deba4c114a Added test coverage for image_any 2015-05-13 16:50:31 -05:00
Blake Thompson
cebbca16d4 Improved test coverage for image and image view 2015-05-13 16:50:31 -05:00
Blake Thompson
f2b26f5707 Initial commit for image unit test 2015-05-13 16:50:31 -05:00
Blake Thompson
c3dfda4977 Merge pull request #2808 from mapnik/bugfix/strategy_rounding
Bugfix/strategy rounding
2015-05-13 13:45:26 -05:00
Blake Thompson
d904f06b10 Merge pull request #2805 from mapycz/improve-visual-test
visual tests: use boost::filesystem::unique_path() instead of boost::uuids::uuid
2015-05-13 13:45:02 -05:00
Blake Thompson
f9acd07aaf Merge pull request #2807 from mapnik/drop-big-endian
Drop obsolete and unsupported big endian support
2015-05-13 13:43:09 -05:00
artemp
3e16c4b8f2 remove unused vars 2015-05-13 15:15:52 +01:00
artemp
ba117c6384 update SVG path generator to avoid using boost::phoenix::if_() which doesn't work with boost 1.58 2015-05-13 11:33:09 +01:00
artemp
270679bc20 style 2015-05-13 11:32:34 +01:00
Blake Thompson
166e606b71 Better tests to fully cover all cases 2015-05-12 15:01:17 -05:00
Blake Thompson
39428585f0 Added the rounding_cast utility, and added a scale_rounding_strategy to support this new casting type. Added tests for it 2015-05-12 14:36:29 -05:00
Blake Thompson
1dddfd17ef Removed try catch around set_alpha, and just checked bounds. Added unit tests for image_view 2015-05-12 12:24:14 -05:00
Dane Springmeyer
613766b104 drop obsolete and unsupported big endian support - refs #2806 2015-05-12 10:19:37 -07:00
Jiri Drbalek
7ca96eb824 visual tests: use boost::filesystem::unique_path() instead of boost::uuids::uuid 2015-05-12 12:52:02 +00:00
artemp
73dbec32fa Merge branch 'fix-topojson' 2015-05-12 10:19:47 +02:00
artemp
a9ae6c111c Merge branch 'master' into fix-topojson 2015-05-12 09:42:29 +02:00
Dane Springmeyer
d0abe672fc support older boost in visual tests - closes #2801 2015-05-11 21:23:39 -07:00
Dane Springmeyer
2d2f63f27f visual tests: show errors when hit both in console and in html report 2015-05-11 19:49:38 -07:00
Dane Springmeyer
b9d39a2883 avoid crash on uninitialized pointer [skip ci] 2015-05-11 19:22:44 -07:00
Dane Springmeyer
175e9f1571 fix spelling [skip ci] 2015-05-11 19:07:33 -07:00
Dane Springmeyer
a79b33236a fix spelling [skip ci] 2015-05-11 19:04:23 -07:00
Dane Springmeyer
706be7397f Merge branch 'master' of github.com:mapnik/mapnik 2015-05-11 17:49:42 -07:00
Dane Springmeyer
d57f1cbb71 display deprecated value in enumeration warning [skip ci] 2015-05-11 17:49:35 -07:00
Dane Springmeyer
41ad16f4d7 hello world plugin is now standalone at https://github.com/mapnik/hello-world-input-plugin - refs #2790 2015-05-11 17:07:33 -07:00
Dane Springmeyer
493e1d8362 fix #2743 [skip ci] 2015-05-11 16:59:00 -07:00
Dane Springmeyer
c2e2c96dde #2789 is landed, update the contributing docs around adding more visual tests [skip ci] 2015-05-11 16:52:08 -07:00
Dane Springmeyer
834ae832be tuple adapter is needed in the end 2015-05-11 16:52:08 -07:00
Dane Springmeyer
14c73304de iwyu 2015-05-11 16:52:08 -07:00
Dane Springmeyer
46246fdbf6 ensure topojson plugin id starts at 1 for consistency #753 2015-05-11 16:52:07 -07:00
Blake Thompson
e44cdef805 Fix get_pixel with image_view 2015-05-11 18:19:24 -05:00
Blake Thompson
c7ddec8406 Added ignore for visual test runner 2015-05-11 16:37:27 -05:00
Blake Thompson
ba0cc39046 Updated tests so that they use REQUIRE_THROWS 2015-05-11 15:51:50 -05:00
Jiri Drbalek
5220afb9f2 Merge pull request #2796 from mapycz/cpp-visual-test-runner
new visual test runner
2015-05-11 22:14:32 +02:00
Jiri Drbalek
220ecb1215 update visual tests 2015-05-11 20:13:21 +00:00
Blake Thompson
74eea94a4e Merge branch 'master' of github.com:mapnik/mapnik 2015-05-11 13:14:20 -05:00
Blake Thompson
f54164da75 Changed the way that set alpha worked, renaming old method to multiply_alpha, added new set_alpha, that simply sets the alpha. Added protection for overflows and underflows. Added unit tests to cover all code 2015-05-11 13:12:13 -05:00
artemp
614d2688de make non-state mutating operator()s const 2015-05-11 16:09:01 +02:00
Jiri Drbalek
688f76a260 new visual test runner 2015-05-10 20:14:04 +00:00
Blake Thompson
1ca5ae4446 Forgot to add unit test 2015-05-10 14:28:10 -05:00
Blake Thompson
bbe88a9352 Added fix for null image views and added test coverage for is_solid 2015-05-10 14:27:44 -05:00
Dane Springmeyer
23872dcd26 ensure topojson parser is robust to invalid arc index 2015-05-09 07:04:03 -07:00
Dane Springmeyer
61c2cd5ed5 tuple adapter is needed in the end 2015-05-09 06:59:14 -07:00
Dane Springmeyer
7ceba047c0 iwyu 2015-05-09 06:54:38 -07:00
Dane Springmeyer
f669a60a0f ensure topojson plugin id starts at 1 for consistency #753 2015-05-09 06:07:16 -07:00
Blake Thompson
fbfd6664bc Added unit test for premultiply 2015-05-08 20:19:50 -05:00
Dane Springmeyer
5162027034 avoid closing empty path 2015-05-07 16:12:38 -07:00
Dane Springmeyer
340ed85e4e fix windows compile 2015-05-06 07:10:35 -07:00
Dane Springmeyer
4c76edaef7 algorithm is a somewhat large stl header, move it to cpp 2015-05-06 06:37:06 -07:00
Dane Springmeyer
b11eeef4b6 remove std::clog print 2015-05-06 06:35:37 -07:00
Dane Springmeyer
0bfb7bae7a Add deprecation warning for enum's using _ 2015-05-06 06:35:17 -07:00
Dane Springmeyer
b10a6f7a92 remove unused coord_array header 2015-05-06 06:34:54 -07:00
Dane Springmeyer
126c777c8d shuffle around boost/geometry usage in headers to reduce compile time 2015-05-05 22:04:49 -07:00
Dane Springmeyer
a43bec6d0b no need for geometry::correct in csv plugin 2015-05-05 20:47:29 -07:00
Dane Springmeyer
f2863a7d2a explicitly use mapnik::tags to avoid boost::geometry::tags conflict 2015-05-05 20:46:19 -07:00
artemp
47c272b874 c++ constness, formatting 2015-05-05 14:12:29 +02:00
Blake Thompson
0eecbd3e0f Modified marker cache to store shared_ptrs in order to prevent threading issues and to close #2713 2015-05-04 14:11:41 -05:00
Blake Thompson
291bd1c9db Fix directories 2015-05-04 11:35:09 -05:00
Blake Thompson
9439279f53 hopefully solved linux compile issues 2015-05-04 09:37:45 -05:00
Blake Thompson
c99b7fcb4c Updated mason_latest to print to perhaps figure out what is causing issues 2015-05-04 09:30:40 -05:00
artemp
6d4a4139b3 is_switchable to control switchabilty of vertex_converters -- revive stroke_tag
fix vertex_converter in cairo/agg
2015-05-04 14:49:17 +02:00
artemp
470da20d53 fix remanining cAmEl case names 2015-05-04 12:49:11 +02:00
artemp
377c5e56b8 image_view - add move ctro, delete assignment operator, use std::size 2015-05-04 12:11:24 +02:00
artemp
ba0c18a228 c++ style 2015-05-04 11:22:06 +02:00
artemp
a583e9bbb3 Merge remote-tracking branch 'refs/remotes/origin/master'
is necessary,
2015-05-04 11:00:19 +02:00
artemp
081cf02dcf fix method signitures to use std::size_t
rename getSize() -> size(), getRowSize() -> row_size
2015-05-04 10:57:57 +02:00
Dane Springmeyer
0c6991d668 gotta make the python bindings [skip ci] 2015-05-04 01:22:09 -07:00
artemp
663a7db8fd use std::size_t 2015-05-04 10:14:01 +02:00
Dane Springmeyer
49647d0236 speed up bootstrap with parallel fetch [skip ci] 2015-05-04 00:37:34 -07:00
Dane Springmeyer
9434fcae43 no benefit to caching mason_packages 2015-05-04 00:30:36 -07:00
Dane Springmeyer
a5e258344e make target to setup python bindings + run visual tests 2015-05-04 00:30:25 -07:00
Blake Thompson
1fd964d175 Updated the mason builds so that plugins will find the libmapnik.dylib in certain situations 2015-05-01 14:01:29 -05:00
Blake Thompson
b48bf5f48e Fix for benchmark 2015-04-30 17:29:35 -05:00
Dane Springmeyer
3baf6f3450 clipping test: expect 30 verts [skip ci] 2015-04-30 15:07:02 -07:00
Dane Springmeyer
a9bda0a5df remove agg_conv clipper - we are only interested in PolyTree 2015-04-30 14:27:53 -07:00
Dane Springmeyer
7843cb5bc3 Add visual test data 2015-04-30 14:27:19 -07:00
Dane Springmeyer
655d27775b update test data 2015-04-30 14:26:49 -07:00
Blake Thompson
baa7eae051 Small update to mason_latest 2015-04-30 14:25:05 -05:00
Dane Springmeyer
147602244b disable is_switchable for stroking and offsets - refs #2791 2015-04-30 11:42:36 -07:00
Blake Thompson
067946bb58 Updated mason_latest again 2015-04-30 12:39:30 -05:00
Dane Springmeyer
e6536da644 higher git depth [skip ci] 2015-04-30 08:42:31 -07:00
Dane Springmeyer
d15c274847 stick with clang-3.5 for due to odd crash with 3.6 - refs #2785 2015-04-30 08:24:59 -07:00
Dane Springmeyer
ff3289abe9 add details about how tests+submodules work - refs #2789 [skip ci] 2015-04-30 08:11:53 -07:00
Dane Springmeyer
404f942e4b update test-data submodule 2015-04-30 08:02:47 -07:00
Dane Springmeyer
19e6bff9cd use https for submodule so that travis (and others) can clone 2015-04-30 07:53:55 -07:00
Dane Springmeyer
207709e45f add note to bootstrap about mapnik-settings.env [skip ci] 2015-04-30 07:42:32 -07:00
Dane Springmeyer
5a594dd0c1 move C++ test running to test/run + make output prettier 2015-04-30 07:41:16 -07:00
Dane Springmeyer
44d4068571 c++ tests: only source mapnik-settings.env when it exists 2015-04-30 07:31:45 -07:00
Dane Springmeyer
7a1c5981fb be explict about depending on submodules 2015-04-30 07:25:24 -07:00
Dane Springmeyer
3af06a11c1 test-data now comes in via submodule - refs #2789 2015-04-30 07:25:01 -07:00
Dane Springmeyer
77d9c886a2 fix paths for font_registration_test.cpp - refs #2787 2015-04-30 07:12:30 -07:00
Dane Springmeyer
ad2e8afb55 fix failing C++ tests that depend on test data - closes #2787 2015-04-30 06:57:47 -07:00
Artem Pavlenko
a608269946 Merge pull request #2786 from mapycz/fix-labeling
fix labeling
2015-04-30 10:17:24 +02:00
Jiri Drbalek
78d7ea007a fix labeling 2015-04-30 07:20:10 +00:00
Dane Springmeyer
b730d437f7 pj_clear_initcache is only available in proj >= 4.8 2015-04-29 18:00:47 -07:00
Dane Springmeyer
f861df2130 fix compile on windows (M_PI) [skip ci] 2015-04-29 15:58:13 -07:00
Dane Springmeyer
45e65e85f4 bootstrap: upgrade freetype, harfbuzz, and gdal 2015-04-29 15:41:19 -07:00
Dane Springmeyer
4ade976ee1 fix SVG rendering 2015-04-29 15:41:18 -07:00
Dane Springmeyer
919bf27dc3 close polygon paths 2015-04-29 15:41:18 -07:00
Blake Thompson
5808b7f185 Fix to mason_latest 2015-04-29 12:13:52 -05:00
Dane Springmeyer
df0f992182 keep installing boost_python to ensure it is easily available for python-mapnik [skip ci] 2015-04-29 08:59:16 -07:00
Dane Springmeyer
2003134be0 Merge pull request #2784 from mapycz/fix-benchmark
fix benchmark
2015-04-29 06:58:56 -07:00
Blake Thompson
14a56e2094 Merge pull request #2780 from mapnik/issue_2779
make mapnik-config able to report relative paths to share/ data
2015-04-29 08:54:24 -05:00
Blake Thompson
54b05800d9 Another slight update so that latest only builds from master 2015-04-29 08:51:22 -05:00
Blake Thompson
e12d53ba79 Added space 2015-04-29 08:29:45 -05:00
Jiri Drbalek
8a2b5c9e82 benchmark: update reference images 2015-04-29 13:01:14 +00:00
Jiri Drbalek
27c116d893 benchmark: fix bad memory access 2015-04-29 12:53:46 +00:00
Jiri Drbalek
7fbb620f70 benchmark: fix image loading 2015-04-29 12:48:35 +00:00
Artem Pavlenko
051944a22f Merge pull request #2783 from mapycz/fix-infinite-loop
fix infinite loop
2015-04-29 11:41:52 +02:00
artemp
fd1bcbbeba remove unused includes 2015-04-29 11:35:44 +02:00
Jiri Drbalek
2a79d1500b fix infinite loop 2015-04-29 08:58:19 +00:00
Blake Thompson
9d34b71cc7 UGH A BRACKET I HAVENT SEEN 2015-04-28 22:14:35 -05:00
Blake Thompson
a31d5ec19d Another commit to perhaps fix this travis issue... ugh. 2015-04-28 22:03:41 -05:00
Blake Thompson
7cb1d12079 A fix for travis issues? 2015-04-28 18:28:12 -05:00
Blake Thompson
5014f8beee A few more updates to the way travis and mason work 2015-04-28 17:30:18 -05:00
Blake Thompson
9553f916af Another small change 2015-04-28 13:04:34 -05:00
Blake Thompson
563316befb A small update to perhaps make all this stuff work 2015-04-28 12:21:55 -05:00
Blake Thompson
783e164115 Merge branch 'test_mason' into issue_2779 2015-04-28 12:17:23 -05:00
Blake Thompson
3acaf66121 Another modification to mason latest 2015-04-28 12:10:07 -05:00
Blake Thompson
163c36c82b Moving some things around in script 2015-04-28 12:10:07 -05:00
Blake Thompson
9e4916e621 Small fix to script. 2015-04-28 12:10:07 -05:00
Blake Thompson
cc85b03e9a Made execute-able 2015-04-28 12:10:07 -05:00
Blake Thompson
42e2b462a4 Attempt for auto mason publish 2015-04-28 12:10:07 -05:00
artemp
c64dc3672a vertex_converter - refactor to pass Processor to apply function (while it allows to instantiate vertex_converter object only using converter tags, it doesn't reduce object code)
make offset_converter 'non-switchable' relying on be able to shortcut in `vertex(*x, *y)` when offset is 0.0 -> results in reduced binary size
2015-04-28 14:18:33 +02:00
Dane Springmeyer
2de1805aa3 make mapnik-config able to report relative paths to share/ data 2015-04-27 16:02:41 -07:00
Dane Springmeyer
3e54b06935 keep setting CPLUS_INCLUDE_PATH/LIBRARY_PATH - accidentally dropped in f08dcf9a83 [skip ci] 2015-04-27 14:14:10 -07:00
Dane Springmeyer
a005248688 set correct PYTHONPATH for os x local --user pip install 2015-04-27 06:36:51 -07:00
artemp
666ce82ae4 add is_switchable to control switchabilty of vertex_converters 2015-04-27 14:00:52 +02:00
Dane Springmeyer
b83fc8c2cc back to OS X for coverage - refs #2778 2015-04-26 19:37:36 -07:00
Dane Springmeyer
e60dfbba38 remove unused close_poly_tag 2015-04-26 19:34:58 -07:00
Dane Springmeyer
f9439a590f define BOOST_MPL_LIMIT_VECTOR_SIZE before boost/geometry 2015-04-26 19:34:42 -07:00
Dane Springmeyer
6722b71e55 fix PYTHONPATH for linux 2015-04-27 01:03:47 +02:00
Dane Springmeyer
bd39189c6e heaviest compile first 2015-04-27 01:03:35 +02:00
Dane Springmeyer
cfeac9ab2f add back run_tests script 2015-04-27 00:45:12 +02:00
Dane Springmeyer
bf92a90648 silence boost geometry warnings [skip ci] 2015-04-27 00:32:09 +02:00
Dane Springmeyer
a3db323205 travis: try ccache, clang-3.6, coverage on linux 2015-04-27 00:30:25 +02:00
Dane Springmeyer
6048f43dfb avoid cleaning mason_packages 2015-04-27 00:28:26 +02:00
Dane Springmeyer
66ad95cbbe remove extra unit test print [skip ci] 2015-04-26 23:32:37 +02:00
Dane Springmeyer
d9ea4e9b6e ensure clean valgrind run 2015-04-26 23:26:11 +02:00
Dane Springmeyer
930eb184d8 pedantic proj api usage 2015-04-26 23:24:19 +02:00
Dane Springmeyer
b211b7357d test on postgres 9.4 + run linux first 2015-04-26 22:11:04 +02:00
Dane Springmeyer
6047575991 fix path to cpp-coveralls 2015-04-26 22:07:17 +02:00
Dane Springmeyer
97347bb9e5 cache mason_packages + make cpp-coverage install cross platform 2015-04-26 22:06:20 +02:00
Dane Springmeyer
45e244b7ef better sudoless clang-3.5 install 2015-04-26 20:35:47 +02:00
Dane Springmeyer
ea6f217ad9 use mapnik-settings.env 2015-04-26 20:32:20 +02:00
Dane Springmeyer
4841e04b80 remove old test data, now using https://github.com/mapnik/test-data 2015-04-26 20:24:22 +02:00
Dane Springmeyer
d83afb3c75 pull data from test-data repo 2015-04-26 20:23:02 +02:00
Dane Springmeyer
8a64d6aeba drop useless test (should be covered by visual tests) 2015-04-26 01:16:25 +02:00
Dane Springmeyer
6227ca8588 upgrade catch 2015-04-26 01:15:31 +02:00
Dane Springmeyer
c4f497be0a drop old cpp_tests folder [skip ci] 2015-04-25 22:13:26 +02:00
Dane Springmeyer
edf7616b19 reorganize c++ tests 2015-04-25 22:08:12 +02:00
Dane Springmeyer
c03998d4c9 remove obsolete c++ test files 2015-04-25 10:43:14 +02:00
Dane Springmeyer
8489bb12f8 Add operator!= to datasource (needed for copy_move_test.cpp) 2015-04-25 10:34:25 +02:00
Dane Springmeyer
2ae3dfa8b3 fix compile of copy_move_test.cpp 2015-04-25 10:33:35 +02:00
Dane Springmeyer
0685c43802 followup after #2773: remove python from install doc,static datasources, utils 2015-04-25 08:21:59 +02:00
Dane Springmeyer
a8b4793642 Merge pull request #2776 from mapnik/split-python
Split python
2015-04-25 06:01:36 +02:00
Dane Springmeyer
ac4e4a2334 Merge branch 'master' of github.com:mapnik/mapnik into split-python 2015-04-25 00:32:38 +02:00
artemp
d89033a0ca reduce binary size providing overloads for forward method
```
template <typename Geometry, typename Processor>
static void forward(Dispatcher & disp, Geometry & geom, Processor & proc,
                        typename std::enable_if<!std::is_same
                        <typename detail::converter_traits<Geometry,Current>::conv_type,
                        transform_path_adapter<view_transform, Geometry> >::value >::type* = 0)
```
2015-04-24 18:13:18 +02:00
artemp
69afcdf9bf fix hardcoded detector type 2015-04-24 15:15:01 +02:00
artemp
f9bd031243 pass and store feature by const ref 2015-04-24 15:12:48 +02:00
Dane Springmeyer
d40fb04284 port old c++ tests to catch.hpp 2015-04-24 14:40:22 +02:00
Dane Springmeyer
0170ba1ae3 port all old c++ tests to new c++ tests 2015-04-24 12:39:27 +02:00
artemp
68510afdc1 remove const 2015-04-24 12:35:21 +02:00
Dane Springmeyer
23b80c6757 Merge pull request #2772 from mapycz/fix-gcc-compile
fix compile with gcc
2015-04-24 09:26:10 +02:00
Dane Springmeyer
8bb605e2e9 move python bindings out of core #2773 - now at https://github.com/mapnik/python-mapnik 2015-04-24 09:04:00 +02:00
Dane Springmeyer
686731cade remove python plugin from core
- now at https://github.com/mapnik/non-core-plugins
 - refs #2773, #1875, #1337,
2015-04-24 08:51:56 +02:00
Jiri Drbalek
8d78e8bfcb fix compile with gcc 2015-04-23 14:49:06 +00:00
Dane Springmeyer
d310806485 fix visual test 2015-04-23 09:48:48 +02:00
Dane Springmeyer
01ee96e089 drop concurrent jobs 2015-04-23 09:31:55 +02:00
Dane Springmeyer
d591600c04 include boost/version.hpp where needed - refs #2770 2015-04-23 09:31:46 +02:00
Dane Springmeyer
f9165e2ee1 Merge pull request #2770 from zerebubuth/disable_is_valid_on_older_boost
Disable missing geometry functions in older Boost versions.
2015-04-23 09:03:54 +02:00
Matt Amos
79f29f3894 Disable missing geometry functions in older Boost versions.
The functions `is_valid` and `is_simple` and their associated
headers are only present in versions of Boost >= 1.56, and will
cause compilation errors with previous versions of Boost. This
masks them with preprocessor macros to allow the compilation to
complete, at the cost of some (currently not widely used)
functionality.
2015-04-23 03:52:46 +01:00
Blake Thompson
1c413c882c Merge branch 'master' of github.com:mapnik/mapnik 2015-04-22 12:14:09 -05:00
Blake Thompson
1639653299 Proof of ownership by flippmoke for PYPI support. 2015-04-22 12:13:58 -05:00
Dane Springmeyer
25eee4fe74 update visual test images 2015-04-22 17:43:52 +02:00
Dane Springmeyer
5b86e92199 Add is_valid test 2015-04-22 15:44:21 +02:00
Dane Springmeyer
2c35a0f8a1 Merge pull request #2739 from mapnik/mapnik-geometry
New geometry storage and API
2015-04-22 15:35:07 +02:00
artemp
3366e804c9 hit_test - cache x,y for MOVE_TO and use on CLOSE_PATH command 2015-04-22 15:30:59 +02:00
artemp
86cc903835 point_symbolizer - revive interior point placement 2015-04-22 15:01:52 +02:00
Dane Springmeyer
124362d2d4 stop correcting geometries at decode time
- the original motivation for this was to avoid needing to
   mutate a copy later on (for operations needing correct winding order)
 - but mutating a copy is looking feasible, so removing this now.
2015-04-22 14:27:43 +02:00
Dane Springmeyer
ef3364695b avoid potential access of uninitialized text_placements_ptr - closes #2766 2015-04-22 14:27:07 +02:00
Jiri Drbalek
eb3fe1f718 add visual test - polygon interior 3 2015-04-22 14:27:07 +02:00
Jiri Drbalek
2ec62bd1c1 add visual test - polygon interior 2 2015-04-22 14:27:07 +02:00
Jiri Drbalek
34b2388b1d add visual test - polygon interior 1 2015-04-22 14:27:07 +02:00
artemp
1dd202a282 Merge branch 'mapnik-geometry' 2015-04-22 12:33:00 +02:00
artemp
7de7139242 Merge branch 'master' into mapnik-geometry 2015-04-22 12:32:29 +02:00
Dane Springmeyer
2e2bbfad7d avoid potential access of uninitialized text_placements_ptr - closes #2766 2015-04-22 12:30:38 +02:00
artemp
0f998c28b2 Merge branch 'mapnik-geometry-template' into mapnik-geometry 2015-04-22 12:28:21 +02:00
artemp
06d77865db update to templated geometry 2015-04-22 12:23:51 +02:00
artemp
1f83eaa6ac geometry_adapters - make generic 2015-04-22 12:22:52 +02:00
artemp
2768aa6a4a Merge branch 'mapnik-geometry' into mapnik-geometry-template 2015-04-22 12:13:29 +02:00
Dane Springmeyer
2679559f15 Merge pull request #2761 from mapnik/debug-rings
Add DebugSymbolizer mode=rings
2015-04-22 01:29:44 +02:00
Blake Thompson
1bb8136390 Fix for bench 2015-04-21 10:29:22 -05:00
Blake Thompson
d7f7bc18c1 A large set of changes that help allow WKT for int64_t type geometeries, modified some strategies, made it so that the clipper would use mapnik geometries. 2015-04-21 09:34:52 -05:00
Jiri Drbalek
d0f19c421a postgis: remove unnecessary else path 2015-04-20 12:43:05 +00:00
Jiri Drbalek
edcc0565fb postgis: prefix table name with schema 2015-04-20 12:01:43 +00:00
Blake Thompson
edda6cb13f Updated several sections of code, noteably added strategy_group_first as another way to perform transforms with groups, added tests similar to uses of vector tiles in geometry_strategy_test.cpp 2015-04-17 15:49:23 -05:00
Blake Thompson
8ad5648c10 Working version of strategy grouping 2015-04-17 11:15:45 -05:00
Dane Springmeyer
a621022536 Merge pull request #2763 from mapycz/test-polygon-interior
Test polygon interior
2015-04-17 15:37:18 +02:00
Jiri Drbalek
ac4c090feb add visual test - polygon interior 3 2015-04-17 12:40:36 +00:00
Jiri Drbalek
2bddb31419 add visual test - polygon interior 2 2015-04-17 12:40:23 +00:00
Jiri Drbalek
85b370dfd7 add visual test - polygon interior 1 2015-04-17 12:35:17 +00:00
Blake Thompson
75ccfdf934 A venture into variadic templates for strategies and transforms. 2015-04-16 23:37:20 -05:00
Dane Springmeyer
0a1fc7e476 Merge branch 'mapnik-geometry' of github.com:mapnik/mapnik into debug-rings 2015-04-16 16:29:29 +02:00
Blake Thompson
a19da799e0 Slight fixes after merge 2015-04-15 16:05:56 -05:00
Blake Thompson
7a50bb5214 Merge branch 'mapnik-geometry' into mapnik-geometry-template 2015-04-15 15:16:47 -05:00
Blake Thompson
26131fb708 Updated clipper 2015-04-15 00:35:31 -05:00
Dane Springmeyer
97fd53f650 Merge branch 'mapnik-geometry' of github.com:mapnik/mapnik into debug-rings 2015-04-14 20:00:29 +02:00
Dane Springmeyer
1a7b6729d1 regenerate new expected images 2015-04-14 15:38:08 +02:00
Dane Springmeyer
748fe3d228 fix polygon winding order for shapefiles + add test enforcing it 2015-04-14 15:35:32 +02:00
Dane Springmeyer
3fb41e865a fix outline drawing in debugsymbolizer ring mode 2015-04-14 15:33:05 +02:00
Blake Thompson
feca4d9f9b Updated the clipper dependency to allow it to have some methods linked externally 2015-04-14 01:02:33 -05:00
Dane Springmeyer
cdb9a2ead4 add debug symbolizer mode for visualizing exterior and interior rings and their winding order 2015-04-14 02:44:14 +02:00
Dane Springmeyer
1dc77443ab add vertex_adapter to work per polygon ring 2015-04-13 18:48:45 +02:00
artemp
87e978a6b9 prefer c++11 alias type declaration over typedef for consistency 2015-04-13 15:03:19 +02:00
artemp
41aa591878 Merge branch 'master' into mapnik-geometry 2015-04-13 12:47:41 +02:00
artemp
4f3c8663a3 visual tests : fix marker-on-hex-grid 2015-04-13 11:38:38 +02:00
artemp
c1bc8ffc64 simlified_converter - use start (move_to) x,y on close_path command (drops tiny islands) 2015-04-13 11:17:17 +02:00
Blake Thompson
f98fd0da7c Added tests for non standard projections, forcing use of proj4. 2015-04-10 14:05:58 -05:00
Blake Thompson
2392c7eb12 Added geometry_reprojection_impl 2015-04-10 10:55:30 -05:00
artemp
33661c818d Merge branch 'mapnik-geometry' into mapnik-geometry-template
Conflicts:
	benchmark/test_polygon_clipping.cpp
	include/mapnik/geometry.hpp
	include/mapnik/geometry_adapters.hpp
	include/mapnik/marker_helpers.hpp
2015-04-10 14:52:40 +02:00
artemp
d5f9a14b58 more fixes (dependent names etc) 2015-04-10 14:17:36 +02:00
artemp
61f42b229d update to templated mapnik-geometry 2015-04-10 14:16:26 +02:00
artemp
90b6fee2ac don't return from void function 2015-04-10 14:15:12 +02:00
artemp
2ebc729cc8 Clipper - fix PolyTree traversal 2015-04-10 14:13:08 +02:00
Blake Thompson
87fb41907a Added template to geometries 2015-04-09 15:22:51 -05:00
artemp
fb61a2bb90 ref #2755 test if centroid is within bounding box 2015-04-09 12:40:06 +02:00
artemp
3f1aa7b4b4 geometry : allow boost::geoemetry algorithms to work directly with box2d<double>, removing bounding_box 2015-04-09 12:33:31 +02:00
artemp
2581e48087 vertex_converters - attempt to improve size and compilation times 2015-04-09 10:55:09 +02:00
artemp
938709955e support all geomtry types 2015-04-08 18:48:41 +02:00
artemp
2bc2e6b85e use geometry_to_path to convert geometry 2015-04-08 18:48:41 +02:00
artemp
24dbaf5217 add geometry_to_path implementation 2015-04-08 18:48:41 +02:00
artemp
bfae2a8df6 cleanup 2015-04-08 18:48:41 +02:00
Blake Thompson
bb7f965d6c Updated geometry_reprojection tests to include all variant types, put in fix for geometry_equal tool which wasn't working properly with geometry_collections, corrected result of failing hit_test in python tests after the correct implementation of hit test was throwing out invalid polygons. 2015-04-08 11:36:10 -05:00
artemp
310865a0c3 help compiler to apply RVO ( return the same object by value) 2015-04-08 13:10:22 +02:00
Blake Thompson
431c581759 Added a lot of additional tests for geometry_reprojection 2015-04-07 18:37:30 -05:00
Blake Thompson
c5d5a1f22e Added several unit tests around reprojection. 2015-04-07 17:20:29 -05:00
Blake Thompson
0fec41a87e Updated reprojection code 2015-04-07 11:55:45 -05:00
artemp
54d8746aa8 svg_renderer - add generate_path vertex processor (work-in-progress) 2015-04-07 15:46:06 +02:00
artemp
6afc4531ec add value_type alias 2015-04-07 15:39:47 +02:00
artemp
10a07bc142 generic geometry transform algorithm 2015-04-07 15:38:00 +02:00
artemp
d1b971f389 fix benchmark/test_polygon_clipping.cpp compilation 2015-04-07 12:14:17 +02:00
Dane Springmeyer
fc91179298 Merge pull request #2749 from mapycz/fix-compile-json-grammar
fix compile json grammar with boost 1.49
2015-04-06 21:04:52 -04:00
Blake Thompson
6be658f5b5 Moved geometry envelope to an impl 2015-04-06 11:00:03 -05:00
Dane Springmeyer
159997fe25 avoid -Wsign-compare warning 2015-04-05 08:56:06 -04:00
Dane Springmeyer
c4273ffed6 be explicit about where value_converter is 2015-04-05 03:10:53 -04:00
Dane Springmeyer
369a82e421 fix variable shadowing in clipper 2015-04-05 02:23:31 -04:00
Dane Springmeyer
bc77157c57 re-expose geometry_empty test / fix compile 2015-04-04 13:24:00 -04:00
Dane Springmeyer
d4ce36a41e remove unneeded headered detected by iwyu 2015-04-04 13:21:33 -04:00
Dane Springmeyer
bd673c0dbe more iwyu 2015-04-04 13:21:09 -04:00
Dane Springmeyer
ae50ce7321 add headers detected as needed by include-what-you-use 2015-04-04 13:20:40 -04:00
Dane Springmeyer
633668f1d2 no need for iostream in geometry_envelope 2015-04-04 13:20:11 -04:00
Dane Springmeyer
9bd171bcd1 geometry_is_empty should only accept const& 2015-04-04 13:19:55 -04:00
Blake Thompson
19eaf4cfff Fix for geometry envelope with geometry collections and added tests. 2015-04-03 18:56:57 -05:00
Blake Thompson
fb0ea81606 Modified envelope so that it no longer keeps creating new bboxes, fix in hit filter for rings with too little geometry 2015-04-03 11:24:47 -05:00
Blake Thompson
4091504dac Optimization for when point is found in a hole 2015-04-03 11:24:47 -05:00
Dane Springmeyer
ecbacc5933 Merge branch 'master' of github.com:mapnik/mapnik into mapnik-geometry 2015-04-03 12:17:59 -04:00
Dane Springmeyer
6d84d03c0b add script to easily check the sizes of structures 2015-04-03 12:14:40 -04:00
Blake Thompson
c32a13eaa8 An update to gdal_featureset that hopefully will correct a problem with alpha detection on TIFFs that have nodata in an RGB and are Byte in size per band 2015-04-02 16:11:45 -05:00
Blake Thompson
2460f7ba04 Corrected ray casting check in polygon hit test 2015-04-02 14:27:39 -05:00
artemp
03a118a8ba add ClipperLib::PolyTree based clipping test (4) 2015-04-02 18:24:25 +02:00
Blake Thompson
6f4f7a07be Added a feature to geojson helper method 2015-04-02 09:28:45 -05:00
artemp
63b97e2e52 attempt to fix SEG_CLOSE command handling 2015-04-02 16:12:56 +02:00
artemp
146bf85349 add 'clipper' based offset converter - it created buffer around geometry so can't replace current impl 2015-04-02 16:11:46 +02:00
artemp
3be0074c20 bug fix - add missing break statement 2015-04-02 14:58:05 +02:00
Dane Springmeyer
529231f709 make clipperlib::PolyNode and PolyTree visable from the outside 2015-04-01 21:44:16 -04:00
Blake Thompson
5ca850a17e Added proper use of auto in several for loops 2015-04-01 17:55:36 -05:00
Blake Thompson
78835c9d87 Initial commit for new method to provide geometry reprojection 2015-04-01 16:18:05 -05:00
artemp
390fff5bb4 ensure we're returning the same object from multiple return paths
from_wkb now returns geometry::geometry_empty instead of throwing
update cpp_tests
2015-04-01 15:04:05 +02:00
Dane Springmeyer
b88aaed491 wkb: use 'mapnik::geometry::correct' 2015-03-31 12:30:05 -07:00
Dane Springmeyer
928ebad6b9 Avoid inf recursion in geometry::is_empty 2015-03-31 12:29:14 -07:00
Dane Springmeyer
f96744c0e2 split out to_wkt and from_wkt as was previously done 2015-03-31 09:15:23 -07:00
artemp
3c2430150d add 'is_clockwise' as generic function
shape_io -- rely on RVO optimisation (remove an extra std::move)
2015-03-31 13:43:37 +02:00
artemp
7775089a24 make is_simple and is_valid work typed geometries directly 2015-03-31 13:43:37 +02:00
Jiri Drbalek
9862ac66bf fix compile json grammar with boost 1.49 2015-03-31 10:29:33 +00:00
Dane Springmeyer
7cbabd9b46 workaround boost bug on osx - refs #2747 2015-03-30 13:34:46 -07:00
artemp
8735311f83 radial distance - set x=y=0 on SEG_CLOSE command 2015-03-30 12:40:28 +02:00
artemp
6a6af26566 handle SEG_CLOSE in visvalingam_whyatt and douglas_peucker 2015-03-29 19:11:07 +02:00
artemp
3593f3c52c attempt to fix zhao simplification to handle zZ (SEG_CLOSE) command correctly 2015-03-29 18:49:09 +02:00
artemp
919d41aeb6 remove unused member variable 2015-03-29 13:55:46 +02:00
Dane Springmeyer
d5f98ba07c avoid duplicated line_to - matches 6a827f50, rolls back a2185bb9d8 2015-03-28 23:55:20 -07:00
Dane Springmeyer
a2185bb9d8 add vertex_adapter.cpp tests
- focus is on behavior of polygons (including with holes)
 - reverts 6a827f501 because it seems incorrect to me and without it the vertex_adapter.cpp tests pass
 - @artemp if you see something I don't please restore 6a827f501, but updated the vertex_adapter.cpp tests
   to show what the expected behavior should be
2015-03-27 23:16:49 -07:00
Dane Springmeyer
01a9b4c077 add regression coverage for #2745 2015-03-27 09:10:04 -07:00
artemp
51b65534f5 geojson bounding box grammar - don't require "type": "Feature" to appear in particular order (ref #2745) 2015-03-27 10:36:04 +01:00
artemp
64312a8dc1 geojson bounding box grammar - don't require "type": "Feature" to appear in particular order 2015-03-27 10:32:52 +01:00
Blake Thompson
8c93d05796 More attempts to fix visual tests for windows 32 bit 2015-03-26 14:50:17 -05:00
Blake Thompson
1fa27227b9 For windows only increased the pixel difference threshold from 0 to 3 2015-03-26 12:57:23 -05:00
artemp
6aae88f90f only apply unique to line_string and polygon 2015-03-26 18:41:15 +01:00
artemp
75699eb5b4 remove duplicate include 2015-03-26 18:33:17 +01:00
artemp
b025071b28 add geometry_unique algo (removes coincident points) 2015-03-26 18:32:09 +01:00
artemp
b0587a01c0 correct line_string/multi_line_string 2015-03-26 18:13:44 +01:00
artemp
f06443910f update polygon clipping test 2015-03-26 17:31:31 +01:00
artemp
a2933f9cb1 fix includes 2015-03-26 17:31:19 +01:00
artemp
330bc5686c avoid relying on x and y in SEG_CLOSE command - instead cache MOVE_TO's coordinates 2015-03-26 17:30:00 +01:00
artemp
6a827f5018 don't output last-vertex (== first-vertex) - SEG_CLOSE should be sufficient 2015-03-26 17:27:40 +01:00
artemp
bc913bcc59 fix names 2015-03-26 17:26:39 +01:00
artemp
a05225d8b1 move vertex_adpaters into separate header 2015-03-26 17:20:38 +01:00
artemp
74fb3ddde0 Merge branch 'master' into mapnik-geometry 2015-03-25 16:19:02 +01:00
artemp
06f512f584 markers_helper - add support for geometry collections 2015-03-25 16:15:48 +01:00
artemp
ba423f0955 wkt parser/genrator - handle POINT EMPTY by constructing geometry::geometry_empty 2015-03-25 15:52:12 +01:00
artemp
dc6f1924fa split multi geometries before applying placement algos 2015-03-25 14:20:47 +01:00
artemp
389d00d442 make geometry methods templated to allow using modified geometry types ( e.g variant<reference_wrapper<T>..>
symbolizer_helper - store geometries in custom varaint using reference_wrapper<T const>
2015-03-25 12:58:50 +01:00
artemp
22de30bb37 update variant (add support for 'unwrapping' std::reference_wrapper<T> and accessing std::reference_wrapper<T>::type through get<T>()) 2015-03-25 10:52:33 +01:00
Dane Springmeyer
f2673c6432 fix cairo_test.py [skip ci] 2015-03-24 20:38:08 -07:00
Dane Springmeyer
dfddd53c84 renable all polygon clippers 2015-03-24 18:47:44 -07:00
Dane Springmeyer
c964b090ed first pass updating the clipping test
- actual results are still slightly broken for agg and clipper
 - todo: try clipper directly rather than through agg interface
 - todo: color polygon parts differently in test renderer
2015-03-24 18:43:29 -07:00
Dane Springmeyer
834a74b1ed make geometry_correct more flexible but harder to misuse 2015-03-24 18:43:05 -07:00
Dane Springmeyer
93e825d727 delete previous incantation of boost polygon clipper 2015-03-24 16:44:50 -07:00
Dane Springmeyer
55fd38a25a back to j1 for first compiles since travis cannot build src/renderer_common/process_group_symbolizer.cpp 2015-03-24 16:42:44 -07:00
Dane Springmeyer
a3e2079bc5 update datasource hit test (not sure why it changed) 2015-03-24 16:31:11 -07:00
Dane Springmeyer
f153c5c6be more coverage of wkb parsing 2015-03-24 16:30:48 -07:00
Dane Springmeyer
7527dadf64 restore filter_test.py to previous 3.x behavior 2015-03-24 14:55:54 -07:00
Dane Springmeyer
b87e09c147 fix memory datasource accumulate_extent 2015-03-24 14:46:26 -07:00
Dane Springmeyer
2c49c8b7fa update the geometry_io test
- one bug in wkb empty parsing is leading to failure
 - removed testing of len(geom) but we should consider bringing this back
   in the future based on http://www.boost.org/doc/libs/1_57_0/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
2015-03-24 14:17:33 -07:00
Dane Springmeyer
852776d5e3 geometry is_empty refactoring 2015-03-24 14:16:58 -07:00
Dane Springmeyer
546e46756c fix ogr plugin compile 2015-03-24 14:16:28 -07:00
Dane Springmeyer
dcc5632f82 svg_renderer is broken, disable temporarily 2015-03-24 14:15:57 -07:00
Blake Thompson
3270d42b74 Standardizing on the output of a boolean to string is true or false rather then 0 or 1. 2015-03-24 14:32:25 -05:00
Dane Springmeyer
04158ab9d5 fix sqlite_rtree_test.py 2015-03-24 11:08:23 -07:00
Dane Springmeyer
e954609ed9 fix sqlite_test.py 2015-03-24 11:03:58 -07:00
artemp
4389c80d84 and finaly, rename 'new_geometry' namespace to 'geometry' 2015-03-24 14:21:28 +01:00
artemp
7e03d41606 rename geometry_impl.hpp to geometry.hpp 2015-03-24 13:32:05 +01:00
artemp
323fdd5212 rename geometry -> path ( geometry_type -> path_type) 2015-03-24 13:17:07 +01:00
artemp
ac1ffa2bfb move geometry.hpp into path.hpp and update code base to reflect this change 2015-03-24 12:42:09 +01:00
artemp
1cf0a897ac move datasource::geometry_t into separate header and rename -> datasource_geometry_t to avoid cyclic dependencies issue
to_ds_type - return actual datasource_geometry_t (remove optional)
update across datasources
experssions - revert to using
2015-03-24 12:13:31 +01:00
artemp
163da958f4 mapnik-geometry - add 'geometry_empty' type to support unintialised geometries 2015-03-24 10:30:33 +01:00
artemp
9aa3542680 update more python tests 2015-03-24 09:38:02 +01:00
artemp
446e6be7bd json geometry generator - output "null" for uninitialised geometry 2015-03-23 19:09:31 +01:00
artemp
d71ff55545 update to mapnik-geometry 2015-03-23 18:04:37 +01:00
artemp
a5cd3b0194 update filter_test 2015-03-23 12:18:50 +01:00
artemp
600cc41d11 update csv_test 2015-03-23 12:18:28 +01:00
artemp
2420604d8c check if geometry has been initialised before dispathing 2015-03-23 12:17:43 +01:00
artemp
b1f79f28ee tests - update feature_test 2015-03-23 12:17:09 +01:00
artemp
807a940f1e ensure [mapnik::geometry_type] attribute is stored as mapnik::value_integer 2015-03-23 12:16:21 +01:00
artemp
36e9525a49 add 'unknown' geometry type 2015-03-23 11:57:40 +01:00
artemp
9f04e2317a update to mapnik-geometry - TODO: investigate test failure 2015-03-23 11:00:16 +01:00
artemp
9c5f38ac14 python bindings - 'geometry' property 2015-03-23 10:44:40 +01:00
artemp
e6905272b7 mapnik::feature_impl - add set_geometry_copy(geometry const&) 2015-03-23 10:43:20 +01:00
Dane Springmeyer
dca44f799b update osm plugin to new geometry 2015-03-22 15:46:27 -07:00
Dane Springmeyer
7fae024e32 update sqlite plugin to new geometry 2015-03-22 14:58:14 -07:00
Dane Springmeyer
cb6f5a7ca4 add empty method on new_geometry::polygon 2015-03-22 12:14:43 -07:00
Dane Springmeyer
95ca3a02f8 update pgsql2sqlite to new geometry 2015-03-22 12:14:11 -07:00
Dane Springmeyer
9732369750 remove old typedef 2015-03-22 11:42:23 -07:00
Dane Springmeyer
1a57aef9c6 implement hit_test for new_geometry 2015-03-22 11:41:44 -07:00
Dane Springmeyer
537a392a09 update gdal plugin to new geometry 2015-03-21 21:13:58 -07:00
Dane Springmeyer
f0563fd8f3 more geometry tests for ogr plugin 2015-03-21 20:08:43 -07:00
Dane Springmeyer
1994b1c25f update ogr plugin to new geometry 2015-03-21 20:08:07 -07:00
Blake Thompson
63c72789d9 Fixed a segfault from occuring if to_wkb was called with a null geometry 2015-03-20 17:03:49 -05:00
artemp
a7174f181c handle collections 2015-03-20 11:06:04 +01:00
artemp
9352d69987 refactor local pattern alignment calc 2015-03-20 10:43:42 +01:00
artemp
360f920924 Merge branch 'master' into mapnik-geometry 2015-03-20 09:51:59 +01:00
Blake Thompson
be9d2ad53c Removed perhaps unrequired MAPNIK_DECL 2015-03-19 23:11:12 -05:00
Blake Thompson
0f76580f6e Tweaked image view null a little 2015-03-19 22:35:09 -05:00
Blake Thompson
08a3911b0a Added the introduction of an image_view_null, this could possibly fix windows build issues 2015-03-19 21:28:16 -05:00
Blake Thompson
f8010f0ba1 Updated image_view any with < and == operators, removed default constructor from image_view and image_view_any 2015-03-19 14:58:01 -05:00
Blake Thompson
702b91e369 Included image_view headers in impl 2015-03-19 14:39:37 -05:00
Dane Springmeyer
0cb9cec686 remove header gaurd from impl file 2015-03-19 12:14:24 -07:00
Dane Springmeyer
c1d7fe3a8f fix compile error on windows: error C2065: 'M_PI': undeclared identifier 2015-03-19 12:14:24 -07:00
Blake Thompson
9fd4ea2829 Possibly fixing windows issues 2015-03-19 14:01:22 -05:00
Blake Thompson
454398985c Implementing < and == operators in image 2015-03-19 13:42:17 -05:00
artemp
8a0b4a6b6e Merge branch 'master' into mapnik-geometry 2015-03-19 19:17:01 +01:00
artemp
ea465b06a9 geojson generator - null geometries 2015-03-19 13:44:34 +01:00
Jiri Drbalek
5c65dadd72 add comment about compatibility 2015-03-19 12:32:30 +01:00
artemp
3bbb9a24f1 debug_symbolizer - update to use mapnik-geometry 2015-03-19 12:30:21 +01:00
artemp
8de2621b99 datasource : temporary reinstate get_geometry_type() method to increese test coverage and ease migration to mapnik-geometry 2015-03-19 12:09:07 +01:00
artemp
8635c87118 wkt generator - handle 'EMPTY' geometries 2015-03-19 11:00:18 +01:00
Dane Springmeyer
4a831b4936 fix msvs compiler error: C2899: typename cannot be used outside a template declaration 2015-03-19 00:44:59 -07:00
Dane Springmeyer
85b20f45d7 Merge pull request #2682 from mapycz/fix-enum-word-separator
fix enum word separator
2015-03-19 00:22:31 -07:00
Dane Springmeyer
1b9ae043f2 Merge pull request #2732 from zerebubuth/fix-group-symbolizer-avoid-edges
Fix GroupSymbolizer placement options
2015-03-19 00:18:05 -07:00
artemp
f412ffbb86 python bindings - more support (work-in-progress) 2015-03-18 17:37:18 +01:00
artemp
28fe4847b9 csv.input - correct WKT geometry to be consistent
symbolizer_helper - handle geometry types in VERTEX_PLACEMENT
2015-03-18 16:18:44 +01:00
artemp
6a8e78ab9c fix group_symbolizer_helper 2015-03-18 13:50:15 +01:00
artemp
c1fca4f539 add vertex_adapter_traits 2015-03-18 13:49:51 +01:00
Matt Amos
78f10479e9 Added extra tests for GroupSymbolizer placement options.
Added tests for avoid-edges and minimum-padding when used with
GroupSymbolizer, as originally explained in #2729.
2015-03-18 11:57:21 +00:00
Matt Amos
dd5f6ea739 Use correct bounding box for avoid-edges check.
This was previously using `query_extent_`, which is in
world-space, but it should have been using `dims_`, which is the
extent of the rendered area in pixel-space, as the calculations
for collisions are all done in pixel-space.
2015-03-18 11:57:21 +00:00
artemp
c0af10d324 fix wkb_formats_test 2015-03-18 12:43:30 +01:00
artemp
236c21ffbd cxx tests - update geometry test 2015-03-18 12:43:05 +01:00
artemp
1bb06d89fa group_symbolizer - update to mapnik-geometry 2015-03-18 12:10:21 +01:00
artemp
ab5116df8d dot_symbolizer - update to use mapnik-geometry 2015-03-17 16:53:28 +01:00
artemp
e516583d6c building_symbolizer - update to mapnik-geometry 2015-03-17 15:47:51 +01:00
artemp
beb705acb3 Merge branch 'master' into mapnik-geometry 2015-03-17 09:45:19 +01:00
Blake Thompson
5a49842952 Moved image_null into a header 2015-03-16 12:18:07 -05:00
artemp
fd8ac66cde start converting to mapnik-geometry 2015-03-16 17:38:20 +01:00
artemp
8747e0ff19 fix - don't forget to add poly's 2015-03-16 17:27:37 +01:00
artemp
71c9c04e92 Merge branch 'master' into mapnik-geometry 2015-03-16 16:20:46 +01:00
artemp
c528a31684 to_wkb - optimise to multi_point geometries 2015-03-16 16:19:24 +01:00
artemp
ad393cdd75 python bindings - revive 'to_wkb(byteOrder)' method 2015-03-16 16:15:21 +01:00
artemp
642bdfa78c fix geometry_to_wkb utility 2015-03-16 16:14:54 +01:00
artemp
5f073ee299 mapnik-geometry based to_wkb() implementation 2015-03-16 16:14:17 +01:00
artemp
58d07338e9 polygon vertex adapter - output SEG_CLOSE for each loop 2015-03-16 12:01:57 +01:00
Dane Springmeyer
dc31d53cdc fix labeling on polygons (allows kurdish-text visual test to pass) 2015-03-16 00:32:25 -07:00
Blake Thompson
2e10b2ca1a A small change to help compare grids faster in python. 2015-03-15 13:07:46 -05:00
Blake Thompson
a1f6c2a5ec Merge pull request #2731 from mapnik/image_impl
Image impl
2015-03-13 19:41:27 -05:00
Blake Thompson
3553205f74 Updated travis coverage to remove pycairo 2015-03-13 19:24:41 -05:00
Blake Thompson
bd94cc6a60 Updated the image_view to add mapnik_decl 2015-03-13 18:21:24 -05:00
Blake Thompson
46ea6a5b1a Added impl for image_view_any and fix to benchmark that was missing include for mapnik/color.hpp 2015-03-13 17:28:22 -05:00
Blake Thompson
c262e51428 Fix for operator= in image 2015-03-13 16:49:28 -05:00
Blake Thompson
64ee848445 Forgot to add src/image_vew.cpp 2015-03-13 16:48:45 -05:00
Blake Thompson
29099ece46 Added image_view implementation 2015-03-13 16:34:49 -05:00
artemp
12613b59d4 fix typo 2015-03-13 17:12:23 +01:00
Blake Thompson
bf61a033d3 Intial commit for impl 2015-03-13 10:52:39 -05:00
artemp
924536e0f2 formatting 2015-03-13 14:29:05 +01:00
artemp
0b90fe7209 avoid unnecessary copying 2015-03-13 13:40:29 +01:00
artemp
58b36badd9 minor formatting 2015-03-13 13:23:36 +01:00
artemp
abd10cab0c add support for all geometry types 2015-03-13 13:23:07 +01:00
artemp
f54eb68063 return geometry_type(geom) 2015-03-13 13:22:32 +01:00
artemp
f627b8ace3 csv - use mapnik-geometry 2015-03-13 11:13:15 +01:00
artemp
6ef63aa7a5 memory_feature - update to use mapnik-geometry 2015-03-13 11:05:56 +01:00
Blake Thompson
7a84df012d reordered python stuff to hopefully make coverage pass 2015-03-12 11:17:53 -05:00
artemp
914b8dbd76 Merge branch 'master' into mapnik-geometry 2015-03-12 15:14:45 +01:00
Artem Pavlenko
9117e7d9ff Merge pull request #2621 from mapycz/markers-upright
marker direction
2015-03-12 14:58:16 +01:00
artemp
50ca6fcbe8 Merge branch 'master' into mapnik-geometry 2015-03-12 14:55:45 +01:00
artemp
b823d6dc34 geojson - fix brackets blues 2015-03-12 14:53:47 +01:00
artemp
f787137166 python bindings - revive to_wkt method + cleanups 2015-03-12 14:44:13 +01:00
artemp
48ce3ccc38 wkt generator fix erroneous brackets 2015-03-12 14:43:19 +01:00
artemp
6d13454f72 reinstate 'from_wkt' interface 2015-03-12 14:12:53 +01:00
artemp
c4607aaeeb wkt-generator - update to mapnik-geometry model 2015-03-12 14:12:14 +01:00
artemp
2753db1c4c factor out boost::spirit::traits::transform_attribute into separate header 2015-03-12 14:11:52 +01:00
artemp
ab318e0676 remove unused header 2015-03-12 13:59:30 +01:00
artemp
da45acb047 wkt parser grammar - allow MULTIPOINT(x0 y0, x1 y1,....,xN yN) as well
as MULTIPOINT((x0 y0), (x1 y1),....,(xN yN)) syntax
2015-03-12 11:58:09 +01:00
Blake Thompson
0fba975670 An update so that mapnik tests will pass in debug mode 2015-03-11 22:40:51 -05:00
Blake Thompson
7575468e5c Redirecting output of cpp-coveralls to dev null to limit how much is in travis logs 2015-03-11 17:04:23 -05:00
Blake Thompson
28d4bbb688 Forgot to also exclude mason_packages 2015-03-11 17:01:19 -05:00
Blake Thompson
bcc523f0a2 One more try to get travis working properly 2015-03-11 16:59:09 -05:00
Blake Thompson
3f814014fe Updated travis stuff again because I forgot a semicolon. 2015-03-11 13:52:16 -05:00
Blake Thompson
fffe156674 Still was having issues with travis and cpp-coveralls install so trying something else 2015-03-11 13:01:05 -05:00
Blake Thompson
693dfb109d Corrected cpp-coveralls install path 2015-03-11 12:48:59 -05:00
Blake Thompson
8adc1641fd One more try at correct travis configuration for coverage 2015-03-11 12:41:06 -05:00
Blake Thompson
94e773f151 Forgot to add debug mode for coverage. 2015-03-11 12:27:33 -05:00
Blake Thompson
0a1e9cea33 Added code coverage to mapnik 2015-03-11 12:24:33 -05:00
artemp
a5d51af51c cpp_tests : start porting to mapnik-geometry 2015-03-11 18:16:22 +01:00
artemp
f72291650b fix line_string tag typo 2015-03-11 15:20:24 +01:00
artemp
696be39119 python bindings - mapnik.LineStirng basic interface 2015-03-11 14:02:30 +01:00
artemp
e91389dcd5 make point implicitly_convertible to geometry + to_geojson() 2015-03-11 13:05:32 +01:00
artemp
f0798a8ae3 python bindings - add 'centroid' method 2015-03-11 12:56:38 +01:00
artemp
b62694920b python bindings - revive from_wkb method 2015-03-11 12:40:39 +01:00
artemp
26fdd0b680 python bindings - restore from_wkt method 2015-03-11 12:28:04 +01:00
artemp
525cb60f0c fix compilation (add required headers and typedef) 2015-03-11 12:23:27 +01:00
artemp
f3edf2dfc0 wkt_grammar - update to use mapnik-geometry and optimise(minimise) memory allocations 2015-03-11 11:55:43 +01:00
Blake Thompson
fe01d52845 Removed unused resolution data from grids 2015-03-10 23:19:30 -05:00
Dane Springmeyer
c245c208ee add expected test images 2015-03-10 21:08:27 -07:00
Dane Springmeyer
c8e56f1128 fix high zoom crash in line pattern rendering - closes #2726 2015-03-10 18:16:04 -07:00
Blake Thompson
80e64bb394 Merge branch 'master' of github.com:mapnik/mapnik 2015-03-10 19:59:59 -05:00
Blake Thompson
f715f9cf22 Updated the name of methods in grids from properties to fields because they are an array rather then a map. 2015-03-10 19:59:46 -05:00
Dane Springmeyer
87b75ff118 fixup test for #2726 2015-03-10 17:54:22 -07:00
Dane Springmeyer
f28bc09118 add testcase for #2726 (currently crashing) 2015-03-10 17:54:22 -07:00
Blake Thompson
bb08020d1d Updated image reader so that it would throw an exception rather then returning a 0 pointer. 2015-03-10 10:05:50 -05:00
artemp
c3284aa958 Merge branch 'master' into mapnik-geometry 2015-03-10 11:17:53 +01:00
artemp
6df5ef4ac9 grod_renderer - update to use mapnik-geometry 2015-03-10 11:16:16 +01:00
Blake Thompson
7ee9745a8f Updated param to allow value_boolean 2015-03-09 16:33:20 -05:00
artemp
a89dd47a4b Merge branch 'master' into mapnik-geometry 2015-03-09 18:48:58 +01:00
artemp
e7843ba471 use sequencial catch blocks 2015-03-09 18:48:41 +01:00
artemp
0863ef1e92 vertex_processor - handle geometry_collection 2015-03-09 18:47:34 +01:00
Blake Thompson
e20c68d384 Corrected a bug in hsl2rgb where if s was equal to zero an incorrect result was achieved. 2015-03-09 12:07:39 -05:00
artemp
40c9abcb2b calc centroid 2015-03-09 17:00:00 +01:00
artemp
397655cc16 use apply_vertex_converter 2015-03-09 16:59:34 +01:00
artemp
a958f5bda2 use mapnik-geometry 2015-03-09 16:59:00 +01:00
artemp
f919bd2c41 fix applying clip flag 2015-03-09 16:58:32 +01:00
artemp
72e31d2768 update to use mapnik-geometry 2015-03-09 16:57:19 +01:00
artemp
cc3f8be837 remove unused headers 2015-03-09 16:37:26 +01:00
artemp
54f87b40d2 use sequencial catch blocks 2015-03-09 16:30:10 +01:00
artemp
317e9c497f Merge branch 'master' into mapnik-geometry 2015-03-09 14:59:45 +01:00
Blake Thompson
ffad24f31d Added bugfix for image_view where if an image of zero width or height created a view, it would cause a segfault because it created a 1,1 size view. 2015-03-08 23:28:56 -05:00
Dane Springmeyer
073e46aad8 avoid querying for srid when geometry_table is empty
- this can happen when the table detection fails - refs #2718
 - ideally this would not happen but it lessens the impact if it does
 - amends 4a1f4a9b5e
2015-03-08 12:54:19 -07:00
Dane Springmeyer
acee056710 add tests validating current (non-ideal) need for manually supplying 'geometry_table' for specific sql query - refs #2718 2015-03-08 12:53:25 -07:00
Dane Springmeyer
c1e947bff1 fully static geojson parsing grammars 2015-03-07 12:00:38 -08:00
Dane Springmeyer
09afe230fb add test for #2721 2015-03-06 17:10:21 -08:00
Dane Springmeyer
2143dbe7ef allow postgres tests to pass if postgres is not running: followup to #2725 2015-03-06 17:08:41 -08:00
Blake Thompson
95f98e5311 Merge branch 'master' of github.com:mapnik/mapnik 2015-03-06 17:24:34 -06:00
Blake Thompson
61abe608ee Added the ability to get_type from an image, fixed possible bugs associated with image copy. 2015-03-06 17:24:23 -06:00
Dane Springmeyer
051462e00f fix postgis error reporting - closes #2725 2015-03-06 14:01:22 -08:00
artemp
174bc5969a text symbolizer update to mapnik-geometry (partial) 2015-03-06 12:17:02 +01:00
Blake Thompson
ea6677df37 A fix to the jpeg driver making it operate with parameters like the other file formats. 2015-03-05 21:51:48 -06:00
artemp
8411cdfa0c add centroid 2015-03-05 22:30:38 +01:00
artemp
d682c5a201 markers placement update 2015-03-05 20:54:36 +01:00
Blake Thompson
34e02bec38 A fix for jpeg saving, as it wasn't properly dealing with a colon for saving with quality. 2015-03-05 09:37:22 -06:00
artemp
aa5ae6b843 update markers_symbolizer to work with mapnik-geometry (work-in-progress) 2015-03-05 15:07:23 +01:00
artemp
38dc240d6d geometry - add generic is_valid(), is_simple() and correct() 2015-03-05 12:11:23 +01:00
artemp
d25ef607a2 cleanup 2015-03-05 12:09:16 +01:00
artemp
13a5bdf984 minor formatting 2015-03-05 12:08:21 +01:00
artemp
c020e8bcc3 revive basic python functionality 2015-03-05 10:45:27 +01:00
artemp
ee77a0ef10 correct arg type 2015-03-05 10:45:12 +01:00
artemp
24a586415c expose wkbByteOrder in wkb.hpp 2015-03-05 10:44:40 +01:00
artemp
b66739cf86 move fusion adapted geometry into separate header to avoid duplication 2015-03-05 10:43:03 +01:00
Dane Springmeyer
7c9a18b16b scons: make harfbuzz min version recommended but not strict 2015-03-04 16:26:12 -08:00
Dane Springmeyer
d5e3dba3df scons: cross compilation fixes 2015-03-04 16:25:15 -08:00
Dane Springmeyer
e69bedadff add @rouault to authors for gdal plugin contributions - refs #2686 2015-03-04 16:14:07 -08:00
Dane Springmeyer
7f597233c9 better exception when boost regex cannot initialize ICU support - closes #2722 2015-03-04 12:38:45 -08:00
artemp
cd15d8f2b3 revive polygon/line pattern rendering 2015-03-04 18:39:31 +01:00
artemp
ae1da6ae12 topojson - correct multi_polygons 2015-03-04 18:39:11 +01:00
artemp
87e9c64fc4 topojson grammar - add optional bbox element which is omitted 2015-03-04 14:55:13 +01:00
artemp
58f21f33ea remove slicing 2015-03-04 14:54:11 +01:00
artemp
a6f0c30a74 topojson grammar - add optional bbox element which is omitted 2015-03-04 14:52:55 +01:00
artemp
b2c3598f8d Merge branch 'master' into mapnik-geometry 2015-03-04 14:42:42 +01:00
artemp
b69d740446 remove bogus simplification 2015-03-04 14:37:54 +01:00
artemp
54da1e9d0c viewer - update to latest mapnik::image apis 2015-03-04 14:37:17 +01:00
artemp
f4a1e9368b wkb_reader/json input grammar - correct polygons to have CCW exterioir/CW interior 2015-03-04 12:09:08 +01:00
artemp
9e35540b50 fix line_string iterator types
register CCW polygons - CCW exterior and CW interior rings
remove unused code (cleanups)
2015-03-04 12:07:22 +01:00
artemp
3ddfe34aa5 Merge branch 'master' into mapnik-geometry 2015-03-04 10:30:08 +01:00
artemp
587437c368 variant - add get<T> overloads where T is stored as recursive_wrapper<T> and avoid directly dealing with recursive_wrapper<T> 2015-03-04 10:19:30 +01:00
artemp
ec7f2f3f0c feature_generator - adapt to new geometry generator 2015-03-04 09:23:57 +01:00
artemp
920a9549c4 geometry_generator - new copy-less grammar 2015-03-04 09:21:22 +01:00
artemp
bdbaf947f7 default assignment op + cleanups 2015-03-04 09:19:53 +01:00
Dane Springmeyer
4afcac5563 try to solve #2714 2015-02-26 11:12:19 -08:00
artemp
c58a5b4151 json : geometry_generator_grammar for mapnik-geometry (TODO) 2015-02-26 16:24:07 +01:00
artemp
a3b7328936 add 'which' method for compatibility with boost::variant 2015-02-26 16:23:20 +01:00
artemp
da1bc2463d c++11 syntax 2015-02-26 16:22:56 +01:00
artemp
b74976d547 make inline 2015-02-26 16:22:34 +01:00
Dane Springmeyer
5a4e821cae fix save_map test for multipolygon-centroid-postgis.xml by avoiding whitespace usage 2015-02-25 20:09:24 -08:00
Dane Springmeyer
cce06dfe45 fix datasource type used 2015-02-25 19:07:35 -08:00
Dane Springmeyer
bd5b5bd258 Add missing test files 2015-02-25 18:57:29 -08:00
Dane Springmeyer
ea35569a51 do not generate sqlite spatial index on the fly 2015-02-25 18:57:00 -08:00
Dane Springmeyer
a6df5f9056 tests for line wrap bug (currently non-ideal) refs #2701 2015-02-25 18:54:31 -08:00
Dane Springmeyer
d9d63bb5ca add tests for #2078 and #2151 (currently non-ideal results) 2015-02-25 18:51:57 -08:00
Dane Springmeyer
1506a1d867 avoid : in image paths - refs #2717 2015-02-25 15:25:10 -08:00
artemp
78c72ee389 topojson.input - update to mapnik-geometry 2015-02-24 15:59:26 +01:00
artemp
102fd539f9 generic way to apply vertex converters to mapnik-geometry 2015-02-24 15:18:46 +01:00
artemp
0d6eb8bcab rename polygon_vertex_adapter_3 -> polygon_vertex_adapter 2015-02-24 14:31:32 +01:00
artemp
0885dfb15a rename polygon3 -> polygon 2015-02-24 14:13:00 +01:00
artemp
e99db29214 move vertex_processor into separate header 2015-02-24 13:58:46 +01:00
artemp
367208ece1 generic geometry_type impl
remove geometry_type from mapnik::datasource
2015-02-24 11:17:26 +01:00
artemp
8400be91c7 generic box2d<double> envelope(geometry const& ) 2015-02-24 10:42:33 +01:00
artemp
ab151a095e Merge branch 'master' into mapnik-geometry 2015-02-24 09:30:02 +01:00
Dane Springmeyer
2818ff96e8 test reversed point geojson 2015-02-23 23:52:54 -08:00
Dane Springmeyer
6c57c08a53 add more cxx tests of new geometry 2015-02-23 23:45:11 -08:00
Dane Springmeyer
89e36a8685 adapt json geometry_parser to fca584de1b 2015-02-23 23:44:44 -08:00
Dane Springmeyer
81a3be6e6f Merge pull request #2716 from mapnik/fix-gdal-atexit-crash
Prevent potential for crashes at exit related to libgdal
2015-02-23 15:00:58 -08:00
Dane Springmeyer
7152c7c621 do not call dlclose on plugins linking libgdal 2015-02-23 14:56:18 -08:00
Dane Springmeyer
2c716e1665 Merge branch 'master' of github.com:mapnik/mapnik into mapnik-geometry 2015-02-23 11:44:55 -08:00
Dane Springmeyer
19cafa00fb makefile: speed up build by using libmapnik-json.a as proxy for whether 'heavy' compiles have run yet 2015-02-23 11:44:36 -08:00
Dane Springmeyer
568d3cbf41 don't use geom collection, instead diff geom per feature 2015-02-23 11:43:32 -08:00
Dane Springmeyer
20e7340699 fix compile of helloworld plugin 2015-02-23 10:36:48 -08:00
artemp
2984fb9594 revive geojson plugin 2015-02-23 19:07:26 +01:00
artemp
6f13044d09 update bounsing box grammar to work with mapnik-geometry 2015-02-23 18:05:50 +01:00
artemp
07ab1fea66 fix namings 2015-02-23 18:05:13 +01:00
artemp
5cd0771824 json grammar - add support for geometry_collection 2015-02-23 17:40:16 +01:00
artemp
c4315ca46b remove unused type alias 2015-02-23 17:39:11 +01:00
Blake Thompson
8153c1a9fd Removed get_pixel_color from python bindings and added new parameter to get_pixel so that it will return color on demand. 2015-02-23 10:27:00 -06:00
artemp
fca584de1b json grammar - start porting to mapnik-geometry 2015-02-23 12:19:00 +01:00
artemp
968ab32c02 enable copy ctor (needed by json geometry grammar) 2015-02-23 12:09:42 +01:00
artemp
45a75fb876 Merge branch 'master' into mapnik-geometry 2015-02-23 10:06:43 +01:00
artemp
e523d648df formatting 2015-02-23 10:06:13 +01:00
Dane Springmeyer
d603becc28 update expected tests (straggler after png hextree fix) 2015-02-22 23:28:35 -08:00
Dane Springmeyer
8919ae2f35 Merge pull request #2686 from rouault/gdal_input_dataset_rasterio
Gdal.input dataset rasterio improvements
2015-02-22 22:14:52 -08:00
Dane Springmeyer
4b5cc89626 support PG_INCLUDES/PG_LIBS for pointing to libpq (instead of pg_config) 2015-02-20 13:22:23 -08:00
Dane Springmeyer
f08dcf9a83 scons+bootstrap: use absolute paths, but don't resolve symlinks
- relative paths continue to be supported in the config.py to make it easy
   to share config.py versions across systems
 - os.path.realpath was previously used to internally create absolute paths
   but now we use os.path.abspath instead to avoid resolving symlinks to keep
   the internally stored paths as simple as possible
 - this all will allow mapnik-config to report more similar paths to what was
   passed in (just absolute)
2015-02-20 12:56:08 -08:00
artemp
2a8174831a mapnik-geometry - simplify and streamline implementation 2015-02-20 17:44:35 +01:00
artemp
9f84ed6950 position_grammar - start using mapnik-geometry 2015-02-20 17:43:59 +01:00
artemp
60f38780b3 boost.geometry <-- mapnik-geometry adapters 2015-02-20 17:43:07 +01:00
artemp
d8dfe69952 add support for reading geometry_collection 2015-02-20 17:21:40 +01:00
artemp
30da25a9c7 add geometry_collection type 2015-02-20 17:21:17 +01:00
artemp
c5c5fc9e62 update viewer 2015-02-20 17:03:55 +01:00
artemp
7031099b76 Merge branch 'master' into mapnik-geometry 2015-02-20 17:03:46 +01:00
Dane Springmeyer
801a92c99f occi: defer symbol resolution till runtime for osx 2015-02-19 23:12:07 -08:00
Dane Springmeyer
8cf7172539 fix linking of occi plugin 2015-02-19 23:06:04 -08:00
Blake Thompson
dc0cfef4bb Merge pull request #2712 from mapnik/release/image_data_any
Release/image data any
2015-02-19 13:56:33 -06:00
Blake Thompson
198be8f1cc Merge branch 'release/image_data_any' of github.com:mapnik/mapnik into release/image_data_any 2015-02-19 12:19:21 -06:00
Blake Thompson
2ebce8e7e1 Updated svg2png for new markers 2015-02-19 12:19:01 -06:00
artemp
bd6c90bf00 remove CoordArray and read points directly into line_string or linear_ring 2015-02-19 17:13:43 +01:00
artemp
6d8ff4a476 add temp convinience methods 2015-02-19 17:13:00 +01:00
artemp
1c3dbdd3ab postgis.input + use mapnik-geometry 2015-02-19 16:05:09 +01:00
artemp
87d60620c2 mapnik-geometry : update wkb reader 2015-02-19 16:04:14 +01:00
artemp
9bb95d208c add include guard 2015-02-19 16:01:46 +01:00
artemp
9fed6fd571 shape.input - fix multi-polygon handling 2015-02-19 14:32:45 +01:00
artemp
fec1d75e8e add basic cairo support 2015-02-19 12:03:15 +01:00
artemp
5678e55abf shapeindex - use range based for loop 2015-02-19 11:04:13 +01:00
artemp
42983ff015 add basic support for point_symbolizer and mapnik::new_geometry::point 2015-02-19 10:45:03 +01:00
Dane Springmeyer
dd0b8459f5 insert_marker to take rvalue it if is moved inside the function 2015-02-19 01:37:45 -08:00
Dane Springmeyer
2aa23eca43 fix type of raster_marker_render_thunk' 2015-02-19 01:37:19 -08:00
Dane Springmeyer
cb869e60f3 no need for templated 'raster_marker_render_thunk' 2015-02-19 01:36:43 -08:00
artemp
33d45db318 c++ style - better syntax 2015-02-19 10:20:17 +01:00
Blake Thompson
5180168491 Merge branch 'master' into release/image_data_any 2015-02-18 23:03:51 -06:00
Blake Thompson
744dc4472f Merge branch 'release/image_data_any' of github.com:mapnik/mapnik into release/image_data_any 2015-02-18 23:02:34 -06:00
Blake Thompson
390fbaac92 BOOM SHAKALAKA:
This update is in Ref #2649. It provides an update to markers and their processing such that:

 * All shared_ptrs are no longer required around markers
 * Markers are now const
2015-02-18 22:58:33 -06:00
artemp
b49b8042c1 shape.input/agg - add polygon3 support 2015-02-18 18:12:47 +01:00
artemp
133f7d04ef agg_renderer - support multi_line_strings 2015-02-18 14:26:11 +01:00
artemp
8e34077aef more cleanups 2015-02-18 13:51:20 +01:00
artemp
604d7b08af use reserve to pre-allocate line_strings + cleanups 2015-02-18 13:48:05 +01:00
artemp
2e4e1f71b8 adapt to use mapnik::new_geometry::geometry (shape.input only) 2015-02-18 13:21:16 +01:00
artemp
0223e1f93e Merge branch 'master' into mapnik-geometry 2015-02-18 11:10:07 +01:00
artemp
a1f7017d45 new geometry implementation - initial barebone framework 2015-02-18 11:07:26 +01:00
Dane Springmeyer
7ab9ade36d fix oracle library name 2015-02-17 11:32:54 -08:00
Dane Springmeyer
a2dabb370d fix build+link of oracle plugin 2015-02-16 23:09:16 -08:00
Dane Springmeyer
817489e97a functions fully defined in hpp do not need MAPNIK_DECL - refs #2708 2015-02-16 19:05:41 -08:00
Dane Springmeyer
842e4bebe6 start fixing windows compile - refs #2708 2015-02-16 18:48:14 -08:00
Blake Thompson
6418a129c1 Removed graphics.hpp from benchmark 2015-02-16 15:56:29 -06:00
Blake Thompson
b2c1c86d99 Merge branch 'master' into release/image_data_Any
Conflicts:
	benchmark/test_polygon_clipping.cpp
2015-02-16 14:37:01 -06:00
Blake Thompson
0cd9c1fc34 Updated image_any building switch statement to support all the correct types, added tests for all the new data formats with get and set in python. 2015-02-16 14:23:55 -06:00
Dane Springmeyer
203ce8b9a6 renable polygon clipping tests despite current flaws 2015-02-15 14:00:20 -08:00
Dane Springmeyer
6a89b37a76 upgrade clipper to v6.2.8 / svn r492 2015-02-15 13:06:01 -08:00
Dane Springmeyer
435f329cef fix agg::conv_clip_polygon validation 2015-02-15 13:01:57 -08:00
Dane Springmeyer
e1941f87f0 clipping bench: validate per geom 2015-02-15 12:59:55 -08:00
Dane Springmeyer
1ebd6afd9c improve sql subselect parsing + add tests - closes #2704 2015-02-13 01:26:19 -08:00
Dane Springmeyer
54dc9dd0f3 add shapeindex tests - refs #2703 2015-02-13 00:05:34 -08:00
Dane Springmeyer
5424c350cd avoid inf loop on empty point3d shapefile 2015-02-13 00:04:09 -08:00
artemp
884de5a044 fix condition for skipping M (measure) in PointZ 2015-02-12 22:18:00 +01:00
Dane Springmeyer
2aaaecbcaf initialize pos_ variable in path_iterator + fix spelling 2015-02-12 11:38:31 -08:00
Dane Springmeyer
df60a2f37f more tests for object stringify in geojson plugin - refs #2678 2015-02-12 11:37:46 -08:00
artemp
3aaac077cb add test_large_geojson_properties 2015-02-12 15:53:29 +01:00
artemp
bb57ebd258 implement get_geometry_type() for 'large json' strategy
@springmeyer - we should talk re: validity of this approach. I know the baclground but still.
2015-02-12 15:50:13 +01:00
artemp
e8f397c41c instantiate geojson grammar using chr_iterator_type = char const* - via #2700 2015-02-12 11:51:11 +01:00
Dane Springmeyer
81ef45b06c fixup polygon clipping test build 2015-02-11 23:47:26 -08:00
Dane Springmeyer
58645c7842 json error handler: fix -Wunused-parameter warning 2015-02-11 23:13:59 -08:00
Dane Springmeyer
f562f6e5d4 further validate results of clipping tests 2015-02-11 22:42:31 -08:00
Dane Springmeyer
216d1e9324 adapt clipping benchmark to vertex_adapter interface - refs #2688 2015-02-11 15:53:09 -08:00
Dane Springmeyer
7fbc254673 fix polygon_clipper to work with vertex_adapter 2015-02-11 15:52:36 -08:00
Dane Springmeyer
89a58c5879 Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any 2015-02-11 10:01:42 -08:00
Dane Springmeyer
30c6cf636c make path replace portable 2015-02-10 23:49:00 -08:00
Dane Springmeyer
7d2b34d654 finish fixing windows build - closes #2698 2015-02-10 19:02:32 -08:00
Dane Springmeyer
8608ea3308 only enable geojson memory mapped files if SHAPE_MEMORY_MAPPED_FILE defined (TODO: rename this define) - refs #2698 2015-02-10 18:50:27 -08:00
Dane Springmeyer
1dc5452c74 msvs 2014 compile fixes 2015-02-10 18:20:08 -08:00
Dane Springmeyer
e475464bc9 bootstrap: no trailing slashes in PROJ_LIB and ICU_DATA 2015-02-10 15:18:47 -08:00
Dane Springmeyer
d08e84794f use curl for nose download 2015-02-10 12:51:22 -08:00
Dane Springmeyer
2042ffd824 avoid need to instanciate expensive svg_path_generator twice 2015-02-10 12:16:01 -08:00
Artem Pavlenko
4e5522756a Merge pull request #2688 from mapnik/vertex_adapter
implement vertex interface in vertex_adapter and make mapnik::geometry_type immutable
2015-02-10 19:09:22 +01:00
artemp
109e104971 Merge branch 'master' into vertex_adapter 2015-02-10 15:13:23 +01:00
Artem Pavlenko
38aff0a2a2 Merge pull request #2697 from mapycz/std-replace
prefer stl over boost
2015-02-10 15:12:41 +01:00
Jiri Drbalek
310011a8b9 prefer stl over boost 2015-02-10 12:46:10 +00:00
Dane Springmeyer
6d611b8e1a cleanup commented code 2015-02-09 23:28:27 -08:00
Dane Springmeyer
41ed56df14 Merge branch 'master' of github.com:mapnik/mapnik into vertex_adapter 2015-02-09 18:16:57 -08:00
Dane Springmeyer
2bc761d99a fixup harfbuzz version check - refs #2694 #2544 2015-02-09 17:52:09 -08:00
Dane Springmeyer
ec2d644f6b Merge pull request #2694 from mapycz/scons-harfbuzz-version
scons: check for harfbuzz version
2015-02-09 17:28:52 -08:00
Dane Springmeyer
59f9d802ed Merge pull request #2696 from mapnik/ogr-extra-meta
Report proj4 string in extra metadata for ogr plugin - refs #2650
2015-02-09 16:30:01 -08:00
Dane Springmeyer
578f8a7c29 report proj4 string in extra metadata for ogr plugin - refs #2650 2015-02-09 15:46:00 -08:00
Dane Springmeyer
0e137cd6ee iwyu 2015-02-09 14:18:15 -08:00
Blake Thompson
d31bf5b171 Updated tests from cast to copy 2015-02-09 13:46:48 -08:00
Dane Springmeyer
56d1818862 Makefile clean: remove duplicate pyc cleanup 2015-02-09 13:20:39 -08:00
Jiri Drbalek
4fcf0ea3e8 scons: check for harfbuzz version 2015-02-09 14:15:22 +00:00
artemp
960794b7a0 fix copyright 2015-02-09 13:47:29 +01:00
artemp
1ecf3f0889 use const ref when iterating over geometries in feature 2015-02-09 13:46:01 +01:00
artemp
146dc1c094 fix copyright 2015-02-09 11:38:08 +01:00
artemp
2ece72658a Merge branch 'master' into vertex_adapter 2015-02-09 10:05:02 +01:00
Artem Pavlenko
827e8a29a4 Merge pull request #2689 from mapycz/prefer-stl
prefer STL implementation
2015-02-09 10:03:59 +01:00
artemp
5e6468f9bf update viewer to use vertex_adapter 2015-02-09 10:01:31 +01:00
Jiri Drbalek
02dff77fff add visual test - marker direction 2015-02-07 12:23:36 +00:00
Jiri Drbalek
1cd5e69b3a add direction property for markers 2015-02-07 12:23:35 +00:00
Jiri Drbalek
87cc1347c7 move normalize_angle to utils 2015-02-07 12:23:17 +00:00
Blake Thompson
6e0d6d423b Merge branch 'master' into release/image_data_any
Conflicts:
	include/mapnik/grid/grid_marker_helpers.hpp
2015-02-06 16:19:40 -06:00
Blake Thompson
9875335fb8 Renamed image_cast to image_copy 2015-02-06 15:27:19 -06:00
artemp
0f22fb596b enforce geometry_type const by removing ``inline geometry_type& get_geometry(std::size_t index)`` 2015-02-06 17:13:41 +01:00
Jiri Drbalek
1bb1653e69 prefer STL implementation 2015-02-06 16:13:31 +00:00
artemp
e19fdad3a6 implement vertex interface in vertex_adapter and make mapnik::geometry_type immutable 2015-02-06 16:45:51 +01:00
Jiri Drbalek
35d6769448 update visual tests - prefer hyphens as word separator in enums 2015-02-06 15:42:43 +00:00
Jiri Drbalek
5418b8ea40 prefer hyphens as word separator for enum values 2015-02-06 15:37:28 +00:00
Even Rouault
7c44b2412e gdal.input: take into account nodata_tolerance in optimized code path
Solves failures of https://travis-ci.org/mapnik/mapnik/jobs/49647112
on tiff-nodata-edge-rgba and tiff-nodata-tolerance tests
2015-02-06 00:41:57 +01:00
Jordan Hollinger
187a42f006 Merge pull request #2680 from mapycz/rm-grid_marker_helpers
remove redundant header
2015-02-05 17:01:36 -05:00
Even Rouault
efdca26f2d gdal.input: optimize nodata handling in RGB case
When the data type is Byte, instead of reading a first time
the red band to deduce the value of the alpha component of
the output image, read the RGB bands first.
2015-02-05 20:38:27 +01:00
Even Rouault
073bad21c0 gdal.input: use GDALDataset::RasterIO() to read RGB sources
Enabled when the R,G,B channels are bands 1, 2 and 3
And also read the alpha channel at the same time, if it is band 4
2015-02-05 20:33:52 +01:00
Blake Thompson
04d51d3696 Another small change hopefully to fix linux build isssues. 2015-02-04 21:19:59 -06:00
Blake Thompson
5966b12973 Small changes to hopefully fix compile issues on linux 2015-02-04 20:48:59 -06:00
Blake Thompson
06ef081282 Another set of fixes for the compare SSE code, added test where it was failing 2015-02-04 18:26:18 -06:00
Blake Thompson
c0fcf48019 Fixed issues with SSE compare when the threshold is greater then zero. Added several new SSE methods for unsigned integers. 2015-02-04 17:46:18 -06:00
Blake Thompson
ffb34544e6 Merge branch 'master' into release/image_data_any 2015-02-04 15:46:54 -06:00
Blake Thompson
2b8bd59d82 A large set of updates:
* Added new gray data types adding those to the variants and updating all the code necessary for them
* Added basic SSE to the image compare method, (only for RGBA) must be enabled with the -DSSE_MATH flag this is not yet put into the build process in any location.
* Fixed the resulting image for some TIFF visual tests, most likely they were incorrect due to fixes in TIFF reader
* Added some MAPNIK_DECL where necessary to grid rendering.
* Added support for more data types in GDAL plugin with grayscale images.
* Added views for all the new gray data types
* Updated python bindings for new gray data types.

Ref #2681
2015-02-04 15:41:58 -06:00
artemp
8faf04663c update tests/python_tests/geojson_plugin_test.py 2015-02-04 18:34:53 +01:00
artemp
3331368e05 amend test 2015-02-04 18:29:03 +01:00
artemp
ae9eafa2c1 allow "stringified" nested objects and arrays as feature property 2015-02-04 18:28:47 +01:00
Jiri Drbalek
f38ee06224 remove redundant header 2015-02-04 14:46:17 +00:00
Jiri Drbalek
e14fc117fd Merge pull request #2652 from mapycz/add-text-upright-auto-down
add text upright auto-down
2015-02-04 07:44:27 +01:00
Jiri Drbalek
56adb32701 add visual test - text upright 2015-02-03 16:32:23 +00:00
Jiri Drbalek
1fcbdc3e98 add upright value auto-down 2015-02-03 16:08:36 +00:00
artemp
eec661d263 geojson plugin
* use parse_geojson(Iterator start, Iterator end) signiture
* use Iterator = char const*
* remove unneeded I/O in 'initialise_index'
* use memory mapped file (currently #if/def)
2015-02-03 13:37:49 +01:00
artemp
9f282af61a json - instantiate grammars using Iterator = char const* to avoid potentially expensive std::string allocations 2015-02-03 13:37:39 +01:00
Dane Springmeyer
0e017be98d merge with master + fixups 2015-02-03 00:38:55 -08:00
Dane Springmeyer
71e7faed0d Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts:
	tests/python_tests/image_test.py
	tests/python_tests/image_tiff_test.py
	tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png
	tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png
2015-02-03 00:05:15 -08:00
Dane Springmeyer
192f62ecbf turn off default debug prints 2015-02-02 22:57:16 -08:00
Dane Springmeyer
5551cae0be cache GDALDataset object for re-use 2015-02-02 22:50:17 -08:00
Dane Springmeyer
a60a3855a1 travis cleanups 2015-02-02 22:09:03 -08:00
Dane Springmeyer
047a27925f bootstrap cleanups 2015-02-02 22:08:52 -08:00
Dane Springmeyer
cf38337121 Merge pull request #2676 from mapnik/pycairo
Build and test against pycairo - refs #2675
2015-02-02 21:31:41 -08:00
Dane Springmeyer
d915e1e634 update a few more visual tests 2015-02-02 21:26:09 -08:00
Dane Springmeyer
8670655012 build and test against pycairo - refs #2675 2015-02-02 20:30:59 -08:00
Dane Springmeyer
3e43c692cc update visual test images after #2671 2015-02-02 20:23:45 -08:00
Dane Springmeyer
d9e49fd09a tests: support regenerating test images in more python tests 2015-02-02 19:00:09 -08:00
Dane Springmeyer
f0b0ee3e7e scons: collect pycairo flags at configure time 2015-02-02 18:59:29 -08:00
Dane Springmeyer
8d956f3018 add @flippmoke to authors in alpha order 2015-02-02 14:11:57 -08:00
Dane Springmeyer
09914584ea Add @sarametz to authors - refs #2671 2015-02-02 14:10:24 -08:00
Dane Springmeyer
c361e538f7 Merge pull request #2671 from sarametz/png8_encoding_bug
Png8 encoding bug
2015-02-02 14:08:05 -08:00
Dane Springmeyer
8cccb3a027 Merge pull request #2674 from mapnik/kurdish-text-visual-test
Kurdish text visual test
2015-02-02 11:35:35 -08:00
Dane Springmeyer
625a37ed12 test both geojson.input and ogr.input - refs #2666 2015-02-02 10:58:03 -08:00
Dane Springmeyer
33a7bbb4e1 Merge branch 'master' of github.com:mapnik/mapnik into kurdish-text-visual-test 2015-02-02 10:54:20 -08:00
Dane Springmeyer
074b1e2836 cleanup commented code after 89e516b493 2015-02-02 10:46:20 -08:00
Dane Springmeyer
8dd20e9d3c add back os import 2015-02-02 10:46:12 -08:00
Dane Springmeyer
956d936162 fix pep8 linter command + update a few linted files 2015-02-02 10:38:08 -08:00
Dane Springmeyer
7d78115886 pyflakes driven python file cleanup 2015-02-02 10:38:08 -08:00
Dane Springmeyer
0f3bffde24 add benchmark, remove custom PREFIX 2015-02-02 10:38:08 -08:00
Dane Springmeyer
0d6c10a2fa fix gamma misuage in image_encoding_speed_test 2015-02-02 10:38:08 -08:00
Dane Springmeyer
851597f3f0 add visual test for reading GeoJSON GeometryCollection 2015-02-02 10:38:08 -08:00
Dane Springmeyer
a67e0dec12 python test cleanup 2015-02-02 10:38:08 -08:00
Dane Springmeyer
21862d57c0 re-enable webp tests + update expected images after #2662 2015-02-02 10:38:08 -08:00
artemp
d5ff3f5f2c fix bbox extractor 2015-02-02 18:44:56 +01:00
artemp
89e516b493 unicode string grammar via boost/libs/spirit/example/qi/json/json/parser/grammar.hpp
update json based grammars
2015-02-02 11:22:54 +01:00
Dane Springmeyer
5ebdbe5703 bootstrap: update sqlite 2015-01-29 22:45:46 -08:00
Dane Springmeyer
dab31989c5 bootstrap: use libpng 1.6.16 2015-01-29 22:03:23 -08:00
Blake Thompson
5a4f9321d0 A few updates to attempt to fix pixel getting and setting 2015-01-29 16:10:56 -07:00
Sara Metz
f38d2ee69b Fixes bugs that cause tests in PR #2599 to fail 2015-01-30 10:40:50 +13:00
Dane Springmeyer
6004fd2c93 Merge pull request #2669 from mapycz/fix-gcc-compile
fix gcc compile
2015-01-29 13:26:28 -08:00
Robert Coup
44500b9a71 Test for 2px png8 encoding bug (hextree & octree) 2015-01-30 10:15:10 +13:00
Jiri Drbalek
711fc8ccf2 fix gcc compile 2015-01-29 20:50:37 +00:00
Blake Thompson
826e13f911 Renamed background to fill, added numeric casting to fill utility, changed clog uses to MAPNIK_LOG, changed the implementation of fill some so that it only used a single template 2015-01-29 13:27:42 -07:00
Dane Springmeyer
b13dfaf644 amend 89b3e108e6 by fixing image size to be square 2015-01-29 10:24:40 -08:00
Dane Springmeyer
89b3e108e6 add testcase for kurdish language - refs #2666 2015-01-29 10:19:15 -08:00
Dane Springmeyer
f300b9f777 bootstrap: simplify mason setup 2015-01-29 09:09:43 -08:00
artemp
e3c96666c4 json - make feature_collection_grammar "on-feature" callback based 2015-01-29 12:33:18 +01:00
Blake Thompson
de99180a44 Added new image_cast method and added its bindings to python, added two new properities to images: offset and scaling. Added way to cast between image types with offset and scaling. Added new unit tests for color and casting. Made it so that pixel setting doesn't result in overflows or underflows. Made the return of get_pixel, dynamic based on what is passed to it. Added new methods for setting pixels that are doubles and ints. 2015-01-28 20:20:14 -06:00
Dane Springmeyer
4b3f69e851 #2651 is fixed, remove workaround in postgis plugin 2015-01-28 18:18:09 -08:00
Dane Springmeyer
c433dbcd68 bootstrap cleanups 2015-01-28 17:59:01 -08:00
artemp
0d62e0f83c link to Oracle client library (libclntsh) to avoid missing symbols - ref #2659 2015-01-28 13:07:03 +01:00
artemp
610f01bd0b update params_test - #2651 2015-01-28 12:56:10 +01:00
artemp
1f3e36c3ec use perfect forwarding to resolve copy/move semantics of universal references - #2651 2015-01-28 12:55:57 +01:00
Dane Springmeyer
1753d0ab47 require boost >= 1.56 for geojson/topojson plugins 2015-01-27 22:20:03 -08:00
Dane Springmeyer
f8523ef728 scons: hack to make sure makefile pre-build does not break if grid renderer is not enabled 2015-01-27 22:18:25 -08:00
Dane Springmeyer
4e5fa8490a scons: hack to make sure makefile pre-build does not break if grid or cairo renderers are not enabled 2015-01-27 22:17:30 -08:00
Dane Springmeyer
cbb364085f move aside variant io 2015-01-27 21:52:05 -08:00
artemp
cf16f5e6c9 move operator<< into separate header <mapnik/util/variant_io.hpp> 2015-01-27 21:42:35 -08:00
Dane Springmeyer
1c4799f680 remove stray remains of large_geojson plugin (now part of geojson plugin formally) 2015-01-27 18:16:56 -08:00
Dane Springmeyer
b80ae5740a Merge pull request #2665 from mapnik/double-jobs
Double jobs
2015-01-27 18:12:57 -08:00
Dane Springmeyer
60d219a2aa makefile pre-build: fix target names 2015-01-27 16:22:40 -08:00
Dane Springmeyer
8d233becdc build process_group_symbolizer.cpp first along with markers 2015-01-27 15:54:36 -08:00
Dane Springmeyer
939e53e70b python: fix compile when cairo is enabled but not pycairo 2015-01-27 15:33:58 -08:00
Dane Springmeyer
0ec4d3101c travis: try doubling jobs 2015-01-27 15:21:40 -08:00
Dane Springmeyer
dfb6116786 Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts:
	tests/python_tests/pgraster_test.py
2015-01-27 15:19:12 -08:00
Blake Thompson
dc931555d2 Added required include 2015-01-27 17:18:20 -06:00
Robert Coup
93f67f9bc9 Merge pull request #2657 from rcoup/antimeridian-box-projection-2648
Handle bounds reprojections which cross the anti-meridian. Fixes #2648
2015-01-28 11:44:50 +13:00
Dane Springmeyer
d38b3bb2cf respect alpha in cairo comparisons (reasons for ignoring it once no longer apply - refs #2662) 2015-01-27 14:38:38 -08:00
Dane Springmeyer
6d5e2b1865 add support for UPDATE=1 to update visual tests (whether failing or not) 2015-01-27 14:29:48 -08:00
Robert Coup
65ef3bc625 Handle bounds reprojections which cross the anti-meridian. #2648
When doing an envelope-points reprojection to a geographic CS, check
the points stay in clockwise order. Otherwise expand the resulting bounds
to include the world.

Includes visual test. Cairo tests aren't finding differences, but the renderer
is doing the right thing.
2015-01-28 11:18:16 +13:00
Dane Springmeyer
3d68084b88 bootstrap: add cairo / cleanup variables in config 2015-01-27 14:12:18 -08:00
Blake Thompson
bc28c12572 Found more situations where getRowSize should be used over multiplying the width by the pixel size. 2015-01-27 15:29:43 -06:00
Dane Springmeyer
835f34c976 Merge pull request #2664 from mapnik/zero-visual-pixel-threshold
drop pixel threshold to 0 - refs #2662 and #2663
2015-01-27 13:23:04 -08:00
Dane Springmeyer
584ca5d92f drop pixel threshold to 0 - refs #2662 and #2663 2015-01-27 12:26:28 -08:00
Dane Springmeyer
4e57be6b86 Merge pull request #2663 from mapnik/low-visual-test-thresholds
try zero thresholds for visual tests - refs #2662
2015-01-27 11:58:31 -08:00
Dane Springmeyer
44ceb77438 try zero thresholds for visual tests - refs #2662 2015-01-27 11:28:33 -08:00
Blake Thompson
b090882902 Added compare utility to python bindings and image_util, modified set_grayscale_to_alpha to take a color optionally. 2015-01-27 11:41:05 -06:00
Dane Springmeyer
eb598f4435 bootstrap: avoid need for bash 4.x 2015-01-26 23:38:22 -08:00
Dane Springmeyer
1b771593b5 travis: fix bash syntax 2015-01-26 23:07:44 -08:00
Dane Springmeyer
ca59ed1cd6 travis/osx: put bash on PATH 2015-01-26 23:02:04 -08:00
Dane Springmeyer
dbea56621f travis: upgrade bash on osx / restore make 2015-01-26 22:53:34 -08:00
Dane Springmeyer
8c7a9aed18 travis: postgres is not viable on osx 2015-01-26 22:47:58 -08:00
Dane Springmeyer
b9ef27c221 travis: re-expand matrix 2015-01-26 22:39:52 -08:00
Dane Springmeyer
7d8be57d81 visual tests coming soon via image_data_any branch - for now remove failing pgraster tests - refs #2639 2015-01-26 22:36:38 -08:00
Dane Springmeyer
5de637854d comment params test for now to get travis green - refs #2651 2015-01-26 22:35:36 -08:00
Dane Springmeyer
d94f5a0cee get pgraster tests passing again + update expected images - refs #2639 2015-01-26 22:14:38 -08:00
Dane Springmeyer
c8f70d3260 embed help text labeling expected vs actual for side-by-side images 2015-01-26 21:58:27 -08:00
Dane Springmeyer
fa17f0bdb0 actually src needs to be non-const 2015-01-26 21:44:25 -08:00
Dane Springmeyer
ebfbbef454 add visual tests for pgraster to try to make sense of failures 2015-01-26 21:36:47 -08:00
Dane Springmeyer
921c058d7d use image.blend is gone so use image.composite 2015-01-26 21:35:35 -08:00
Dane Springmeyer
84b5194130 image.composite: source should be immutable 2015-01-26 21:35:02 -08:00
Dane Springmeyer
48982c0619 Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts:
	tests/python_tests/image_tiff_test.py
2015-01-26 20:09:00 -08:00
Dane Springmeyer
3047b53ef1 bootstrap: update mason deps 2015-01-26 17:14:42 -08:00
Dane Springmeyer
f176630fcf remove invalid tests - will be fixed by proper tests coming via image_any branch from @flippmoke 2015-01-26 16:52:31 -08:00
Dane Springmeyer
89118c2fcb tiff_reader: only gaurd against over-allocation at read time 2015-01-26 16:33:30 -08:00
artemp
2a50372d25 use correct grammar instantiation 2015-01-26 12:51:34 +01:00
artemp
a1c562c6fc cleanup 2015-01-26 12:51:10 +01:00
artemp
c99cb19643 Merge branch 'large-geojson' 2015-01-26 11:39:35 +01:00
artemp
cc47bfd7fa extract attributes schema + remove std::cerr 2015-01-26 11:09:06 +01:00
artemp
2a3af1eb40 move boost.geometry <-- mapnik::box2d<double> into separate header for better modularity and code re-use 2015-01-26 10:37:09 +01:00
artemp
1263bc9c2e merge large geojson plug-in into geojson.input 2015-01-26 10:19:18 +01:00
artemp
44905ffc43 geojson.input - use adapted box2d<double> as box_type + make spatial index compatible with large_geojson 2015-01-26 09:42:06 +01:00
artemp
d45b9db86e remove unused include directives 2015-01-26 09:41:20 +01:00
artemp
2f42cb91cc Merge branch 'master' into large-geojson 2015-01-26 09:16:06 +01:00
Blake Thompson
31a0caf2e4 Merge branch 'master' into release/image_data_any 2015-01-25 14:09:29 -06:00
Blake Thompson
997da1e630 Fix for benchmark 2015-01-24 21:29:50 -06:00
Blake Thompson
f616367ac2 Including std library that was missing. 2015-01-24 21:16:36 -06:00
Blake Thompson
64ed541f88 Merge pull request #2653 from mapnik/bugfix/tiff_io
Bugfix/tiff io
2015-01-24 21:04:39 -06:00
Blake Thompson
5d9f047002 Fixed some issues in color and bindings where you could create a color and premultiplied was not set and it was resulting in it being assigned randomly, causing some issues at runtime.
Updated some images in visual tests that were orginally set prior to all tiffs being premultiplied, this was causing a slight difference in a few pixels.

Updated the tiff tests a lot.

Fixed tiff reader so that it always considers everything read from RGB or RGBA as premultiplied. This is due to the fact that RGBA reader always premultiplies the alpha no matter its original form.

Put in a fix so that the file does not exist no longer shows up in the test running.

Fixed some failing tests in the c++ test due to tiffs now always being premultiplied for RGB(A)
2015-01-24 20:48:15 -06:00
Dane Springmeyer
8d6b70ea70 bootstrap: split build time and runtime settings 2015-01-24 10:18:32 -08:00
Dane Springmeyer
80a141da78 config.py generation fixups 2015-01-24 10:10:07 -08:00
Dane Springmeyer
c69b4b1151 fix mason dir check 2015-01-24 10:07:26 -08:00
Dane Springmeyer
3e8b701194 bootstrap cleanups 2015-01-24 10:05:58 -08:00
Dane Springmeyer
93570f820a mason bootstrap: expat and sqlite_rtree fixes 2015-01-24 08:51:16 -08:00
Dane Springmeyer
d930265467 mason bootstrap: ensure clang finds correct gcc-4.8 lib 2015-01-24 08:42:05 -08:00
Dane Springmeyer
2652649ea0 scons: fix sqlite_rtree linux configure test in absence of pkg-config 2015-01-24 08:41:06 -08:00
Dane Springmeyer
e26132cf9f travis cleanup 2015-01-23 23:51:54 -08:00
Dane Springmeyer
6344b24193 travis: disable benchmarks, install nose 2015-01-23 23:29:24 -08:00
Dane Springmeyer
1a28cf763f use clang 2015-01-23 23:05:41 -08:00
Dane Springmeyer
3ba834109a debug configure fail 2015-01-23 23:01:08 -08:00
Dane Springmeyer
be1690d5c7 try sudoless clang upgrade 2015-01-23 22:57:45 -08:00
Dane Springmeyer
bdc49e2adb fix mason setup 2015-01-23 21:44:32 -08:00
Dane Springmeyer
03192c5f2a fix bash syntax 2015-01-23 20:42:03 -08:00
Blake Thompson
a100b2fe1f Fixed the issues associated with TIFFs, now they always will return as premultiplied in the event they are rgba8 due to the way that the TIFF reader operates. Also added premultiply as a flag inside color class and exposed many of its components, made it so that setting and getting pixels took into consideration the state of the color and the image when dealing with the two. 2015-01-23 18:08:59 -06:00
Dane Springmeyer
e53f4e8637 sudoless 2015-01-23 14:21:54 -08:00
Dane Springmeyer
34b685db40 travis: try bootstraping deps with mason 2015-01-23 14:04:41 -08:00
artemp
7f0e77d172 Merge branch 'master' into large-geojson 2015-01-23 18:12:33 +01:00
Dane Springmeyer
6ab91b2300 allow manually passing lib/include paths for libxml2 and freetype 2015-01-23 09:12:11 -08:00
Dane Springmeyer
ec111c8a27 add extra metadata to lyr desc + use for srid/keyfield in postgis - closes #2650 2015-01-22 18:44:56 -08:00
Blake Thompson
490645d2e3 Perhaps a solution to TIFF IO problems 2015-01-22 20:36:45 -06:00
Dane Springmeyer
fcdc826294 Add (currently failing) test for #2651 2015-01-22 18:25:37 -08:00
Dane Springmeyer
faddf1a615 fix compile of rasterlite plugin 2015-01-22 15:59:01 -08:00
Dane Springmeyer
4a1f4a9b5e Use geometry_table_ rather than table_ for SRID lookup
- this will result in a faster query in the case that
   the user provides an explicit geometry_table option
2015-01-22 15:55:30 -08:00
Blake Thompson
51172c8fdf Move image_data.hpp to image.hpp and renamed most everything from image_data to image alone. This might lead to the need to clean up some variables that are currently named image through out the code at some time, but I think in the long term is much better as image is a better name for the base class. 2015-01-22 11:39:37 -06:00
Blake Thompson
e353225772 Modified the name of image_data_null to image_null. 2015-01-22 10:58:01 -06:00
artemp
58f770bf85 support BOOST_VERSION < 105600 2015-01-22 16:34:28 +01:00
artemp
e42d0deb61 correct types usage 2015-01-22 16:23:44 +01:00
artemp
2b82157127 cleanup 2015-01-22 16:21:01 +01:00
artemp
669d369e30 Merge branch 'master' into large-geojson 2015-01-22 16:12:14 +01:00
Blake Thompson
e01ce5b7d6 Changed image_data_gray* to image_gray* Ref #2633. 2015-01-21 21:08:04 -06:00
Blake Thompson
22a384ef33 Moved image_data_rgba8 to image_rgba8. Ref #2633 2015-01-21 20:31:02 -06:00
Blake Thompson
e4a5424613 Merge branch 'release/image_data_any' of github.com:mapnik/mapnik into release/image_data_any 2015-01-21 19:40:23 -06:00
Blake Thompson
0f388ed68f Changed the name of image_data_any to image_any. Moved header file for image_data_any to image_any. Ref #2633 2015-01-21 19:40:12 -06:00
Dane Springmeyer
82bc43c76f fix stray include of graphics.hpp 2015-01-21 16:32:31 -08:00
Blake Thompson
93f835177b Removed all the code for the previous type of image and image_32. Ref #2633 2015-01-21 17:57:16 -06:00
Blake Thompson
b57b1c12d6 Some smaller fixes that cause the proper operator to be called in visitor_create_marker. All tests now passing. Ref #2633 2015-01-21 17:09:53 -06:00
Dane Springmeyer
d6175adb1a Update README.md 2015-01-21 14:28:12 -08:00
Dane Springmeyer
df9613369e temp fix: copy rather than move image_data inside marker to avoid mutating marker 2015-01-20 20:38:22 -08:00
Dane Springmeyer
4856886284 fix compile of rundemo.cpp 2015-01-20 19:37:31 -08:00
Blake Thompson
9fda26f859 Merge branch 'release/image_data_any' of github.com:mapnik/mapnik into release/image_data_any 2015-01-20 18:33:50 -06:00
Blake Thompson
badb0c9a97 This is a complete removal of code that utilizes image_32 in the library. It is a sweeping change that does some of the following:
* Changes all agg_renderers to use a image_data_any variant (only image_data_rgba8 is implemented currently)
* Changes the marker and marker_cache to use image_data_any images
* Changes the symbolizers so that they must be aware of the source data type they are attempting to render and the render type that is expected to be rendered into.
* Moves many utilities into image_utils, that were previously in image_32.

The kicker is that this still isn't working perfectly yet, but I am commiting so I don't have tears in case everything is lost on my computer.

Ref #2633
2015-01-20 18:30:10 -06:00
Dane Springmeyer
97869f7dc1 minor include cleanup for image_utils 2015-01-20 09:06:21 -08:00
Blake Thompson
2439f1b298 A whole lot of changes. #Ref 2633 2015-01-20 10:48:33 -06:00
artemp
5a7a285216 extraxt_bounding_box_grammar - add generic json support to deal with arbitary key:value's in GeoJSON 2015-01-20 12:05:35 +01:00
artemp
9ba25cefe4 large_geojson - use 'C' style I/O for performance 2015-01-20 11:30:27 +01:00
artemp
9a74a55dd6 formatting 2015-01-20 11:29:58 +01:00
artemp
85cacfe378 use vector<char> as a buffer 2015-01-20 10:36:34 +01:00
artemp
bfe1d63ea0 debug : print total extent 2015-01-19 22:06:24 +01:00
artemp
a408a84fb0 ignore invalid bounding boxes from "geometry": null 2015-01-19 22:04:21 +01:00
artemp
1f693b8fa2 larger_geojson - store {offset, size} in spatial index and remove multi_pass requirement
TODO: try std::fread instead of ifstream, use std::vector<uint8_t> instead of std::string
2015-01-19 18:10:59 +01:00
artemp
15a83ff54d extract bounding boxes from GeoJSON - re-implement grammar to store offset and size of "Feature" elements 2015-01-19 18:09:23 +01:00
Blake Thompson
aa03cf4f7c Implemented a new get_pixel method to go along with the set_pixel method in image_util. Ref #2633 2015-01-16 22:15:33 -06:00
Blake Thompson
a002139e18 Added set_pixel to visitor pattern and moved it to image_util. Added exception throwing in composite only if debug flags are on.
Ref #2633
2015-01-16 18:26:56 -06:00
Blake Thompson
1470bea9cb Migrated composite_pixel out of image_32, it is now in image_utils. Ref #2633 2015-01-16 16:48:43 -06:00
Blake Thompson
0b2c4e57cf Merge_rectangle has met the wood chipper. Ref #2633 2015-01-16 16:04:02 -06:00
Blake Thompson
a7b8ca2888 Moved set_rectangle out of image_32 into image_util.
Ref #2633
2015-01-16 15:36:53 -06:00
Blake Thompson
35be6117c8 Merge branch 'master' into release/image_data_any 2015-01-16 13:09:25 -06:00
Blake Thompson
aebb6fee58 Removed the background and set/get background from image_32 class. Removed clear method from image_32. Added new fill method for image_data_any, that allows many generic types to fill an image.
Ref #2633
2015-01-16 13:06:52 -06:00
artemp
f50a34d1b8 use boost::spirit::iterator_policies::first_owner in multi_pass 2015-01-16 17:54:04 +01:00
artemp
da02dc40c2 sort index array by offsets 2015-01-16 17:19:59 +01:00
artemp
b15224af1b add <iomanip> for std::setprecision 2015-01-16 17:19:17 +01:00
artemp
0c280b5066 reduce verbosity 2015-01-16 16:41:38 +01:00
artemp
da960fea33 use std::advance to work with std::iterators 2015-01-16 16:40:28 +01:00
artemp
b6cd3b37ef store {bbox, offset} to match boost.geometry rtree instantiation 2015-01-16 16:24:31 +01:00
artemp
788fd8c80b large_geojson.input - initial implementation 2015-01-16 16:22:46 +01:00
artemp
8b19793dc8 fix grammar (use iter_pos parser instead of hacking raw[] directive) + cleanups 2015-01-16 10:05:02 +01:00
artemp
785cf5c09f extract_bounding_box grammar initial impl 2015-01-16 09:48:57 +01:00
Blake Thompson
ff019cbe28 Merge pull request #2645 from mapnik/feature/set_alpha_move
Moved set_alpha to src/image_util.cpp and out of image_32. Added a boole...
2015-01-15 21:06:06 -06:00
Blake Thompson
5bc83eee49 Added a new test for set_color_to_alpha 2015-01-15 21:03:42 -06:00
Blake Thompson
33ccc12355 Moved set_color_to_alpha and set_grayscale_to_alpha to image_util.
Ref # 2633
2015-01-15 20:26:20 -06:00
Blake Thompson
3b1c99ff1b Moved set_alpha to src/image_util.cpp and out of image_32. Added a boolean response to premultiply_alpha and demultiply_alpha so that if it is changed in set_alpha and other locations like the python bindings for composite that the image can be restored to its original state. Removed blend from python bindings.
Ref #2633
2015-01-15 17:57:21 -06:00
Blake Thompson
c74df56200 Merge pull request #2643 from mapnik/feature/blend_cleanup
Removed the set_rectangle_alpha code from image_32. Added new blend usin...
2015-01-15 15:11:44 -06:00
Blake Thompson
1f540b42c6 Removed the set_rectangle_alpha code from image_32. Added new blend using composite to python bindings to replace it by doing src_over with composite.
Ref #2633
2015-01-15 13:01:32 -06:00
Blake Thompson
58f5812425 Merge pull request #2637 from mapnik/feature/is_solid_move
is_solid to image_util
2015-01-15 11:17:11 -06:00
Blake Thompson
4d3145991d Removed some commented out code in src/image.cpp 2015-01-15 11:00:58 -06:00
Blake Thompson
0a1a0b405b Merge branch 'feature/is_solid_move' of github.com:mapnik/mapnik into feature/is_solid_move
Conflicts:
	include/mapnik/image_util.hpp
2015-01-15 11:00:40 -06:00
Blake Thompson
73d9c60168 Small fix for is solid to work with image_view_any and image_data_any properly. 2015-01-15 10:53:21 -06:00
Dane Springmeyer
cf646030f3 move is_solid to hpp for now to avoid linking errors 2015-01-15 10:21:11 -06:00
Dane Springmeyer
61bc705117 fix linking error with saving image 2015-01-15 10:14:01 -06:00
Dane Springmeyer
40c1649b0e fix is_solid return 2015-01-15 10:14:00 -06:00
Blake Thompson
7ce7416999 Added is_solid to image_utils. It is currently built to support the eventual use of image_view_any and image_data_any, but for a limited time supports the passing of image_view_rgba8 and image_data_rgba8.
Ref #2633
2015-01-15 10:14:00 -06:00
Dane Springmeyer
508521d5e5 move is_solid to hpp for now to avoid linking errors 2015-01-14 21:20:15 -08:00
Dane Springmeyer
d0d899a9dd fix linking error with saving image 2015-01-14 21:19:45 -08:00
Dane Springmeyer
e03739e316 fix is_solid return 2015-01-14 21:10:39 -08:00
Dane Springmeyer
7d2db67cf3 Merge pull request #2640 from mapnik/feature/premultiply_demultiply_move
Feature/premultiply demultiply move
2015-01-14 21:04:43 -08:00
Dane Springmeyer
364fb4961b fix handling of premultiplied pixels during rendering 2015-01-14 21:04:05 -08:00
Dane Springmeyer
1f25bae0f4 fix compile of svg2png 2015-01-14 21:03:35 -08:00
Dane Springmeyer
39d8d65343 Merge pull request #2642 from mapnik/group-markers
Support MarkersSymbolizer in GroupSymbolizer
2015-01-14 18:58:27 -08:00
Dane Springmeyer
b55d5def0d sync with latest master/3.x 2015-01-14 18:35:40 -08:00
Blake Thompson
202a0e8e5f Added a lot of premultiply_alpha functions to attempt to have proper premultiplication of data prior to compositing. There still seem to be some errors in the resulting images, but I am not quite sure what they are yet. 2015-01-14 18:29:00 -06:00
Blake Thompson
42c7d7ddf2 Merge branch 'release/image_data_any' into feature/premultiply_demultiply_move 2015-01-14 15:37:06 -06:00
Blake Thompson
03440c0108 Merge branch 'master' into release/image_data_any 2015-01-14 15:36:03 -06:00
Blake Thompson
cbc76f7361 Some minor corrections to allow for the source to build properly with out linking errors with vis to hidden. 2015-01-14 15:24:16 -06:00
Blake Thompson
4184f75011 Moved premultiply and demultiply out of image_32 and other parts of the code. The image_data object is now responsible for keeping track of its own premultiplied_alpha status. Created a new utility method in image_util to preform premultiplication.
Added visitor pattern to several different methods as well to prepare for image_data_any including compositing.

Ref #2633
2015-01-14 12:42:30 -06:00
Blake Thompson
e04b0617e7 Added myself to authors
What a self promoting bastard.
2015-01-13 13:34:03 -06:00
Blake Thompson
4b25c755a7 Added is_solid to image_utils. It is currently built to support the eventual use of image_view_any and image_data_any, but for a limited time supports the passing of image_view_rgba8 and image_data_rgba8.
Ref #2633
2015-01-13 11:43:20 -06:00
artemp
8063fa0f5e viewer - use new image APIs and fix compilation 2015-01-13 11:46:20 +01:00
artemp
c2bba2b622 fix noncopyable usage 2015-01-13 11:45:07 +01:00
artemp
235326c8db image_32 : add image_32(image_data_rgba8 &&) ctor 2015-01-13 11:44:24 +01:00
Dane Springmeyer
056feb4daa add text-transform:reverse + full test coverage for text-transform uppercase/lowercase/capitalize - closes #2634 2015-01-12 15:38:21 -08:00
Blake Thompson
f58f65ee4c Merge branch 'master' into release/image_data_any 2015-01-12 15:07:00 -06:00
Blake Thompson
2379c396c3 Removed unrequired save_as_jpeg in image_util.hpp 2015-01-12 15:06:39 -06:00
Blake Thompson
7a16ebe7fa Merge remote-tracking branch 'origin/image' into release/image_data_any 2015-01-12 14:51:08 -06:00
Dane Springmeyer
248c8a79c2 enable rasterlite error again, accidentally disabled in 62dbfea 2015-01-09 16:13:57 -08:00
Dane Springmeyer
62dbfeaa28 fix rasterlite plugin + add visual test - closes #2630 2015-01-09 16:13:04 -08:00
Dane Springmeyer
ac04512bb5 fix rasterlite linking when deps are static libs 2015-01-09 15:37:45 -08:00
Dane Springmeyer
6580ff784f add unit tests for rasterlite plugin 2015-01-09 15:36:41 -08:00
Blake Thompson
d7f758e073 Undo change to localize 2015-01-09 16:51:04 -05:00
Blake Thompson
42ee4ec90d Moved cairo out of the image_util.*pp files and now have created a cairo_io.*pp files.
Ref #2622
2015-01-09 16:49:31 -05:00
Dane Springmeyer
34743bfe27 Merge pull request #2632 from mapnik/better-svg-marker-overrides
Amend/partially revert #2609
2015-01-09 13:37:44 -08:00
Dane Springmeyer
c7bb16fcd9 amend/partially revert #2609 2015-01-09 12:11:41 -08:00
Dane Springmeyer
014af51d95 repack svg::path_attributes - drops 387 -> 376 (then 360 with gradient packing) - refs #2631 2015-01-09 11:56:52 -08:00
Dane Springmeyer
2a5dd5e924 pack mapnik::gradient to save 8 bytes (128 -> 120) - refs #2631 2015-01-09 11:43:17 -08:00
Dane Springmeyer
bfb0878147 add to map deprecations tests 2015-01-09 10:59:18 -08:00
Dane Springmeyer
32586c6462 add test ensuring we can still parse deprecated styling properties 2015-01-09 10:48:50 -08:00
Dane Springmeyer
ad3e214beb stop using deprecated marker-type in visual tests 2015-01-09 10:26:20 -08:00
Blake Thompson
b2118b6c2e Merge branch 'master' into bugfix/image_util_impl 2015-01-09 11:00:42 -05:00
Dane Springmeyer
879e9d517b test coverage for #827 / 52d0e3e6 2015-01-08 18:01:43 -08:00
Dane Springmeyer
a96cf38a33 fix compile of new cxx tests if tiff is not available - closes #2625 2015-01-08 17:44:41 -08:00
Dane Springmeyer
2747fd5329 fix python bindings after #2629 2015-01-08 17:38:22 -08:00
Blake Thompson
b05e6b8c51 Merge branch 'master' into bugfix/image_util_impl 2015-01-08 20:25:53 -05:00
Blake Thompson
08c675e1a4 Merge branch 'master' into bugfix/image_util_impl
Conflicts:
	include/mapnik/image_view.hpp
	src/image_util.cpp
2015-01-08 20:25:15 -05:00
Dane Springmeyer
049be27b1e fix compile when building against pycairo headers 2015-01-08 16:35:55 -08:00
Blake Thompson
094d0ec3e1 Another large set of modifications, finally allow this branch to build. Mostly modifications to the image_util_* files. Different processing based on the image type is now possible, and save_to_stream now could possibly accept grayscale with out breaking existing code. 2015-01-08 19:31:14 -05:00
Dane Springmeyer
b263b7993e Merge pull request #2629 from mapnik/less_image_32
Less image_32
2015-01-08 14:49:45 -08:00
Blake Thompson
035557450d Split out the process for tiff, webp, and jpeg into their own util folders. Added the intial concepts for an image_view_any variant. 2015-01-08 16:55:51 -05:00
Dane Springmeyer
d22ad11b09 remove unneeded image_32 signatures for save_to_string/file after fbecd5f 2015-01-08 13:55:25 -08:00
Dane Springmeyer
fbecd5ff33 always pass image_data to save_to_string/file 2015-01-08 13:54:43 -08:00
Dane Springmeyer
96cff81f57 restore compile of map_request_test (asserts still disabled - refs #2575) 2015-01-08 13:52:55 -08:00
Dane Springmeyer
acb3bb0821 trim down image_32 - refs #2627 2015-01-08 13:16:32 -08:00
Dane Springmeyer
e4cb1b33a0 remove getData and getBytes on image_view (they are unused) - refs #2627 2015-01-08 10:52:40 -08:00
Dane Springmeyer
63ccb4c36c remove try/except around 'import mapnik' which is more trouble than help 2015-01-08 10:32:24 -08:00
Blake Thompson
472e41966d Added new scaling trait for image_32 as it is a part of image_data_any 2015-01-08 11:52:44 -05:00
Blake Thompson
81ef4225ac Continuing to modify various areas of image_util so that save_to_stream will be provided an image_data_any object. 2015-01-08 11:30:02 -05:00
Blake Thompson
847682d783 Some more minor changes 2015-01-08 10:17:07 -05:00
Blake Thompson
cc0a27f2f0 More stuff to break it all 2015-01-08 10:17:07 -05:00
Blake Thompson
454326df17 An intial commit of a large set of changes attempting to clean up the way that saving images is processed in image_util.hpp and image_util.cpp.
* Changed the passing of rgba_palette to a shared_ptr in order to better facilitate the use of a visitor pattern.
 * Moved PNG util processing into its own set of files so that image_util_impl.hpp would not have to depend on HAVE_PNG.
2015-01-08 10:13:06 -05:00
artemp
8db7f58e8f image_compositing - fix composite method signature to composite(T & dst, T const& src,...) via providing const_rendering_buffer adapter 2015-01-08 12:45:04 +01:00
artemp
515491ab70 image_compositing - fix composite method signature to composite(T & dst, T const& src,...) via providing const_rendering_buffer adapter 2015-01-08 12:42:38 +01:00
artemp
b53430110a Merge branch 'master' into image 2015-01-08 10:27:21 +01:00
Blake Thompson
6df688160c More stuff to break it all 2015-01-07 18:16:38 -05:00
Dane Springmeyer
481b6b7958 remove uneeded/unused nonconst access to image_view - amends 0d2eb9cb5f 2015-01-07 15:12:11 -08:00
Dane Springmeyer
86e8ddc8ec update expected images after e590a21 2015-01-07 14:54:08 -08:00
Dane Springmeyer
e590a218b6 fix svg syntax 2015-01-07 14:52:22 -08:00
Blake Thompson
a3f6a989de An intial commit of a large set of changes attempting to clean up the way that saving images is processed in image_util.hpp and image_util.cpp.
* Changed the passing of rgba_palette to a shared_ptr in order to better facilitate the use of a visitor pattern.
 * Moved PNG util processing into its own set of files so that image_util_impl.hpp would not have to depend on HAVE_PNG.
2015-01-07 15:44:31 -05:00
artemp
00a20b78da add initial support for writing image_data_gray16 ( only TIFF supported ) 2015-01-07 18:17:44 +01:00
artemp
cd0ac2d0f6 Merge branch 'master' into image 2015-01-07 17:49:51 +01:00
artemp
5361d21beb move mapnik::noncopyable to mapnik::util::noncopyable where it belongs 2015-01-07 13:11:09 +01:00
artemp
4aa54f61c7 Merge branch 'master' into image 2015-01-07 12:22:45 +01:00
artemp
f6651ac74d use std::make_shared 2015-01-07 12:20:19 +01:00
artemp
18554ec0b1 remove static_visitor usage and rely on automatic result type deduction
(NOTE: expression_evaluator requires  ```using result_type = T1;``` )

Conflicts:
	src/image.cpp
2015-01-07 11:39:06 +01:00
artemp
affc5ee7c1 update variant to the latest version 2015-01-07 11:38:10 +01:00
artemp
c2ea32feac remove static_visitor usage and rely on automatic result type deduction
(NOTE: expression_evaluator requires  ```using result_type = T1;``` )
2015-01-07 11:35:21 +01:00
artemp
b28aadcf41 update variant to the latest version 2015-01-07 10:51:59 +01:00
Dane Springmeyer
a52700b505 more test coverage of svg markers and collision boxes - refs #2609 #1754 2015-01-06 17:20:00 -08:00
artemp
b0b89e76d1 image class - containing image_data_any and initial basic python interface 2015-01-06 12:44:28 +01:00
Dane Springmeyer
2a33ead4cc finish centralizing boost::filesystem usage to single cpp file - refs #1177 2015-01-06 00:33:33 -08:00
Dane Springmeyer
b396db54dd fix -Wsign-compare warning in image_data.hpp 2015-01-05 14:21:59 -08:00
Dane Springmeyer
14015fefe4 fix json output escaping to match json spec 2015-01-05 12:03:16 -08:00
Dane Springmeyer
49908b5e3b json_feature_properties_test: print test name for failures 2015-01-05 11:46:29 -08:00
artemp
c9672b6a9d escaped_string - fix output encoding 2015-01-05 14:23:10 +01:00
artemp
fa8feea603 remove unused utf8 phoenix function 2015-01-05 12:39:18 +01:00
artemp
bb9b9ff031 feature_generator_grammar - template get_id on FeatureType 2014-12-23 09:07:31 +01:00
Dane Springmeyer
1faaf595ec update expected visual images against freetype 2.5.4 2014-12-22 13:48:40 -08:00
artemp
132507571b template feature_generator_grammar on FeatureType - ref #2546 2014-12-22 15:56:46 +01:00
artemp
14b497d236 use boost::phoenix v3 style declaring return types 2014-12-22 11:58:11 +01:00
artemp
f1373883c2 json feature_generator_grammar - re-factor properties_generator_grammar into separate compilation unit - ref #2546 2014-12-22 11:52:13 +01:00
Dane Springmeyer
dc8253ec2a support expressions in text-placements - closes #2597 2014-12-19 19:05:54 -08:00
artemp
008168f75c image_data - ref #1927
* store image width and height in dimensions object
* allow specifying max_size for width and height (default 0xffff)
* throw if width or height are out of range - 0...max_size
2014-12-19 11:52:40 +01:00
Dane Springmeyer
5e9009a86b fix windows compile 2014-12-18 21:26:31 -08:00
Dane Springmeyer
b235910895 fix conditional dlopen support 2014-12-18 21:13:47 -08:00
Dane Springmeyer
b0f94bff44 Merge pull request #2608 from mapnik/image_data_any
Image data any
2014-12-18 20:21:29 -08:00
Dane Springmeyer
0d42906dc1 Merge branch 'master' of github.com:mapnik/mapnik into image_data_any
Conflicts:
	tests/visual_tests/images/dots-500-100-1.0-agg-reference.png
	tests/visual_tests/images/dots-500-100-2.0-agg-reference.png
	tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png
	tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png
2014-12-18 20:16:16 -08:00
artemp
ce291a553b I don't see enough performance gain to justify this - reverting for now
Revert "shape.input - sqeeze a bit more performance by reinterpret casting bytes array to point {double,double}"

This reverts commit 2f8426a019.
2014-12-18 18:44:04 +01:00
artemp
2f8426a019 shape.input - sqeeze a bit more performance by reinterpret casting bytes array to point {double,double}
avoiding one std::vector memory allocation - NOTE: this works because coordinates are stored in Double: Signed 64-bit IEEE double-precision floating point number (8 bytes) with little endian byte order - ref #2151
2014-12-18 11:57:52 +01:00
artemp
34d96f3ef2 shape.input - avoid expensive hit_test and instead use relatively cheap orientation test to distinguish
between inner and outter rings (Polygon/NultiPolygon) -- ref #2151  https://github.com/mapbox/unpacker/issues/324

```txt
A polygon consists of one or more rings. A ring is a connected sequence of four or more
points that form a closed, non-self-intersecting loop. A polygon may contain multiple
outer rings. The order of vertices or orientation for a ring indicates which side of the ring
is the interior of the polygon. The neighborhood to the right of an observer walking along
the ring in vertex order is the neighborhood inside the polygon. Vertices of rings defining
holes in polygons are in a counterclockwise direction. Vertices for a single, ringed
polygon are, therefore, always in clockwise order. The rings of a polygon are referred to
as its parts.
```
2014-12-18 11:28:28 +01:00
artemp
4f93b7c879 shape.input - avoid expensive hit_test and instead use relatively cheap orientation test to distinguish
between inner and outter rings (Polygon/NultiPolygon) -- ref #2151  https://github.com/mapbox/unpacker/issues/324

```txt
A polygon consists of one or more rings. A ring is a connected sequence of four or more
points that form a closed, non-self-intersecting loop. A polygon may contain multiple
outer rings. The order of vertices or orientation for a ring indicates which side of the ring
is the interior of the polygon. The neighborhood to the right of an observer walking along
the ring in vertex order is the neighborhood inside the polygon. Vertices of rings defining
holes in polygons are in a counterclockwise direction. Vertices for a single, ringed
polygon are, therefore, always in clockwise order. The rings of a polygon are referred to
as its parts.
```
2014-12-18 11:23:38 +01:00
Dane Springmeyer
5b176d2224 raster-colorizer test for both gdal and raster plugins 2014-12-17 12:33:24 -08:00
Dane Springmeyer
efd83f9142 update expected visual tests 2014-12-17 12:26:32 -08:00
Dane Springmeyer
c051f61646 dont set nodata for image_data_rgba8: fixes tiff_reprojection-1 visual test 2014-12-17 12:26:23 -08:00
Dane Springmeyer
dfe0be57f0 update warp expected image 2014-12-17 12:06:07 -08:00
Dane Springmeyer
387b8f85d5 new dot symbolizer for fast rendering of points - refs #1651 mapbox/mapnik-vector-tile#62 #2612 2014-12-17 12:01:28 -08:00
Dane Springmeyer
17d3bd8a9d consistent std::move in image data move ctor 2014-12-17 12:01:28 -08:00
Joel Brown
52d4b0edfd change config_error to std::runtime_error in scale_hsla struct 2014-12-17 12:01:05 -08:00
Dane Springmeyer
fe58aabe55 markers: support restyling svg stroke and fill without limit - closes #2609 - refs mapnik/mapnik-support#27 2014-12-17 12:01:04 -08:00
Dane Springmeyer
6d4b4494bf update visual test images for #2590 2014-12-17 11:55:22 -08:00
Dane Springmeyer
7066053d4b drop use of xml entities in text-font-features test - fixes #2590 2014-12-17 11:55:22 -08:00
Dane Springmeyer
f8bedf4f65 support building without dlopen support
Conflicts:
	SConstruct
2014-12-17 11:55:22 -08:00
Dane Springmeyer
0c8c55031a add deque to array alloc benchmark 2014-12-17 11:55:22 -08:00
artemp
12eb56d96a better names + unbuffered io + use image_data_xxx for allocating strip
e#	2x2.png
2014-12-17 18:34:47 +01:00
Dane Springmeyer
b86a2d4c7e remove debug prints 2014-12-17 08:52:04 -08:00
Dane Springmeyer
ffe8f71008 refactor premultiplication handling in raster rendering 2014-12-17 08:52:03 -08:00
artemp
160e9bb9b5 warp - initialise target with nodata if available 2014-12-17 14:54:54 +01:00
artemp
137bd0ba3b format 2014-12-17 14:54:31 +01:00
artemp
0d7fbdc25d implement image_data_warp_dispatcher + fix hardcoded nodata 2014-12-17 14:26:17 +01:00
artemp
78fbc6df17 expose warp_image templated method 2014-12-17 14:24:58 +01:00
artemp
6130b7f40d set nodata for single band raster (got missed in spaghetti code) 2014-12-17 14:23:42 +01:00
artemp
a59d634ffc nodata value can be floating point 2014-12-17 14:22:30 +01:00
artemp
5adbd85439 explicit std::move 2014-12-17 11:05:13 +01:00
Dane Springmeyer
569a539518 new dot symbolizer for fast rendering of points - refs #1651 mapbox/mapnik-vector-tile#62 #2612 2014-12-16 21:45:56 -08:00
Dane Springmeyer
1dfdfb3b22 consistent std::move in image data move ctor 2014-12-16 21:14:06 -08:00
Dane Springmeyer
1b428f87fa Merge pull request #2610 from kernelsanders/master
change config_error to std::runtime_error in scale_hsla struct
2014-12-16 20:04:51 -08:00
Joel Brown
cfd48fe3cd change config_error to std::runtime_error in scale_hsla struct 2014-12-16 17:50:23 -08:00
Dane Springmeyer
f0a696264c markers: support restyling svg stroke and fill without limit - closes #2609 - refs mapnik/mapnik-support#27 2014-12-16 18:34:53 -05:00
Dane Springmeyer
ba60af48af update visual test images for #2590 2014-12-16 16:39:21 -05:00
Dane Springmeyer
ee7ed11446 drop use of xml entities in text-font-features test - fixes #2590 2014-12-16 16:36:25 -05:00
Dane Springmeyer
bedcd41b67 support building without dlopen support
Conflicts:
	SConstruct
2014-12-16 16:05:42 -05:00
Dane Springmeyer
381eab1f3d add deque to array alloc benchmark 2014-12-16 13:51:12 -05:00
artemp
1df88908e4 refactor warping code to work with different pixel_types and minimise code duplication 2014-12-16 12:04:18 +01:00
artemp
7518459ba1 remove redundant case 2014-12-16 12:03:54 +01:00
artemp
c3e7b12238 fix nasty typo + refactor more 2014-12-16 12:02:40 +01:00
artemp
110841fc55 image_scaling - re-factor set_scaling_method for re-use accross code base 2014-12-16 10:37:50 +01:00
artemp
ecf9a686a3 c++11 - use constexpr 2014-12-16 10:17:05 +01:00
artemp
979d706c26 move image_scaling traits into separate header to enable code sharing 2014-12-16 10:13:40 +01:00
artemp
3276bed965 Merge branch 'master' into image_data_any 2014-12-16 09:33:28 +01:00
artemp
89a84150ee use std::move 2014-12-15 14:58:00 +01:00
Blake Thompson
0d2eb9cb5f Updates for Ref #2594 and #2592 (Related to #2491)
* Added support for scanline, stripped and tiled
 * Added new configuration options for TIFF:
   - method
   - tile_height (Default 0)
   - tile_width (Default 0)
   - rows_per_strip (Default 0)
 * Removed 'scanline' configuration option for TIFF.
 * Changed RGBA TIFFs to be ASSOCALPHA rather then UNASSOCALPHA
2014-12-15 02:52:32 +00:00
Dane Springmeyer
cdd817d772 benchmarks: refactor to allow early exit if tests do not validate 2014-12-12 11:59:45 -05:00
artemp
85d954ab6a make composite method templated and fix visibility issue
(reverts  1ff4125e92)
2014-12-12 11:39:36 +01:00
artemp
3cbe969f03 fix external visibility issue for explicit instantiations of scale_image_agg - ref #2587 2014-12-12 11:09:52 +01:00
artemp
72f437c52a tiff_reader - fix
( "...where the -Sy is due the reversal of direction from J increasing- down in raster space to Y increasing-up in model space.")
2014-12-12 10:18:34 +01:00
Dane Springmeyer
067703db48 add tiff benchmark 2014-12-11 15:01:17 -05:00
artemp
5dd87de782 template scale_image_agg on image_data_type to squash code duplication 2014-12-11 18:54:32 +01:00
artemp
6b7ae6d700 use image_data_dispatcher to dispatch composite/colorize based on image_data_type 2014-12-11 11:07:21 +01:00
artemp
b38ac5c2ca add no-op gray8 scaling 2014-12-11 11:06:44 +01:00
artemp
9caf17e397 correct image_data typo 2014-12-11 11:05:17 +01:00
artemp
f921e1eef4 raster_colorizer - template colorize method on image_data type 2014-12-11 10:10:32 +01:00
artemp
dd22d34d07 formatting 2014-12-11 09:39:25 +01:00
artemp
218b22fba9 remove cast 2014-12-11 09:38:58 +01:00
artemp
5021a4e122 tiff_reader - fix end_y calc in read_stripped 2014-12-10 18:11:41 +01:00
artemp
1dfad4b10b raster.input - attempt getting bounding box from image_reader 2014-12-10 12:54:35 +01:00
artemp
74c96f0bda make bounding_box return optional<box2d<double>> to be consistent with current behavour 2014-12-10 12:53:39 +01:00
artemp
2efde962aa image_reader - add bounding_box virtual method 2014-12-10 10:44:51 +01:00
artemp
4b1204a3b8 correct alloc size + prefer std::copy over memcpy 2014-12-10 10:34:12 +01:00
artemp
917d346093 use RAII for resource management 2014-12-10 09:44:37 +01:00
artemp
ef64b4937c Revert "avoid allocating memory"
This reverts commit 665c2f5bc0.
2014-12-10 09:39:08 +01:00
Dane Springmeyer
f0ba989596 Merge pull request #2602 from mapycz/standalone-tests
Standalone visual tests
2014-12-09 19:18:29 -05:00
Jiri Drbalek
af35cf7cdf xml test styles standalone 2014-12-09 20:13:38 +00:00
Jiri Drbalek
3e8b50464b update visual test runner for standalone tests 2014-12-09 20:13:36 +00:00
Jiri Drbalek
2f7a9fa50a add __contains__ method 2014-12-09 20:00:44 +00:00
artemp
665c2f5bc0 avoid allocating memory 2014-12-09 19:22:19 +01:00
artemp
9bf629c9b8 declare tiff callbacks inline 2014-12-09 17:30:50 +01:00
Dane Springmeyer
cf4f775855 Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-09 10:31:19 -05:00
Dane Springmeyer
5504692a43 remove duplicate include 2014-12-09 10:30:55 -05:00
Dane Springmeyer
653cc08500 fix msvs compile by using explicit assigment operator - closes #2588 2014-12-09 10:27:05 -05:00
Dane Springmeyer
4b2ad9e65f port image_data fixes from image_data_any branch 2014-12-09 10:14:06 -05:00
Dane Springmeyer
93c6207153 repack tiff_reader to avoid slop (saves 16 bytes) 2014-12-09 08:34:13 -05:00
artemp
303d625b7c tiff_reader - fix reading tiled tiffs + flip vertically output from TIFFReadRGBATile + cleaups 2014-12-09 12:25:21 +01:00
artemp
12f051bf56 image_data - fix setRow implementation 2014-12-09 12:22:44 +01:00
Dane Springmeyer
4e671fd0e9 tiff io: test paletted (aka colormapped) tiff 2014-12-09 01:15:09 -05:00
Dane Springmeyer
36d7e455ed tiff io: disable strip chopping to ensure we fail fast on 'tiff_dos_strip_chop.tif' from gdal autotests 2014-12-09 00:39:19 -05:00
Dane Springmeyer
fcf71c36d9 tiff io: avoid over-allocation + add more tests 2014-12-09 00:17:02 -05:00
Dane Springmeyer
dc1ed0ae29 tiff io: also test reading from in memory buffer 2014-12-08 22:58:44 -05:00
Dane Springmeyer
8b0ba79d2a more debugging output for failed read_tile 2014-12-08 20:39:44 -05:00
Dane Springmeyer
d2935e65ce test reading 2014-12-08 18:45:00 -05:00
Dane Springmeyer
dcae6395af start testing tiff read and image type returned 2014-12-08 18:13:23 -05:00
Dane Springmeyer
24a9816913 test tiff photometric setting 2014-12-08 17:16:56 -05:00
Dane Springmeyer
f121d805a9 no need for TIFFRGBAImageOK 2014-12-08 17:12:44 -05:00
Dane Springmeyer
a706cdb000 fixup tiff alpha handling cxx tests 2014-12-08 17:04:05 -05:00
Dane Springmeyer
66e65666ae test that gray32f is not blank (currently failing) 2014-12-08 16:47:08 -05:00
Dane Springmeyer
6ca1cd6c74 avoid crashing on images with alpha 2014-12-08 16:43:32 -05:00
Dane Springmeyer
cb3771fbe5 fix reading of tiled tiff tile dimensions for gray32f 2014-12-08 15:23:06 -05:00
Dane Springmeyer
bc3f59af12 new c++ tiff tests - refs #2491 2014-12-08 14:52:52 -05:00
Dane Springmeyer
dc3df99f66 rename tiff test image 2014-12-08 14:11:32 -05:00
artemp
7fcc4a0846 use TIFFReadTile (or TIFFReadEncodedTile) instead of TIFFReadRGBATile to have consistent orientation
(FIXME: python tests failures)
2014-12-08 18:55:40 +01:00
artemp
017def88b1 update raster-color-to-alpha tests to use raster.input 2014-12-08 15:55:06 +01:00
artemp
912771b8fd generic read_tiled<ImageData> initial implementation + read PHOTOMETRIC_RGB using high-level RGBA expanding interface 2014-12-08 15:51:00 +01:00
Dane Springmeyer
79366386c7 Merge pull request #2598 from mapycz/add-test-iconic-font
add visual test iconic font
2014-12-07 16:08:05 -05:00
Jiri Drbalek
20178013ea add visual test iconic font 2014-12-07 16:13:48 +00:00
Blake Thompson
74fb5f0890 Merge branch 'image_data_any' of github.com:mapnik/mapnik into image_data_any 2014-12-05 15:43:20 -05:00
Blake Thompson
8aec9aca89 Some really basic tests that I was using for testing, many more need to be added 2014-12-05 15:43:14 -05:00
Dane Springmeyer
23d78680cf add (currently failing) tests for #1927 2014-12-05 14:04:37 -05:00
Dane Springmeyer
96baff431f use c++ style casts im tiff_reader 2014-12-05 13:59:20 -05:00
Dane Springmeyer
3da1342185 Add mention of unique_ptr and std::copy to contributing docs 2014-12-05 12:28:51 -05:00
artemp
ce605e3982 use RAII for resource management 2014-12-05 18:01:45 +01:00
Dane Springmeyer
fc0894634c improve image tests 2014-12-05 11:36:50 -05:00
artemp
902858e55f tiff_reader: initial support for reading gray8/gray16/gray32f/rgba8/rgba16/rgba32f data
Note: current code only works with image data organized in strips. Tile-orientated reading needs implementing
2014-12-05 17:35:26 +01:00
Dane Springmeyer
cc2cf2876f Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-05 09:45:12 -05:00
Dane Springmeyer
ba4230c8ad stop setting -Wsign-compare since this is too noisy as a default 2014-12-05 09:44:54 -05:00
Dane Springmeyer
d6e9126132 fix linking of scale_image_agg - refs #2587 2014-12-05 09:43:57 -05:00
Jiri Drbalek
aebd45b286 Merge pull request #2536 from mapycz/improve-font-feature-settings
font-feature-settings improvements
2014-12-05 07:28:00 +01:00
Blake Thompson
4d159a3900 fixin' okie spelling 2014-12-04 18:13:11 -05:00
Blake Thompson
daecced552 A small modification to the image_tests removing some options not indended to be left on 2014-12-04 17:17:14 -05:00
Blake Thompson
bf5c532269 Series of changes for the tiff encoder:
* Added configuration options for the TIFF encoder. The options are:
   - compression: adobe_deflate(default), deflate, lzw, none
   - zlevel: 0-9
   - scanline: 1,0 (Forces scanline encoding)
 * Fixed bug in encoder with scanline where memory was being modified
 * by TIFFWriteScanline. A buffer is now created for each row to prevent
 * modification of the underlying image_data.
2014-12-04 17:11:33 -05:00
Jiri Drbalek
778e654933 update visual test - font-feature-settings 2014-12-04 21:19:13 +00:00
Jiri Drbalek
2282fab53e use font-feature-settings per text_item 2014-12-04 21:19:13 +00:00
Rafa de la Torre
af4c2620aa Ignore overviews with 0 scale in pgraster
refs #2551

Postgis raster_columns view is returning NULL values for raster
overviews with large scale factors. That issue in postgis is described
in http://trac.osgeo.org/postgis/ticket/3006

This causes two main problems:

  - The first overview with scale = NULL is wrongly chosen for rendering
    always

  - The messed up scaling factor causes the render symbolizer to spent
    an insane amount of CPU and memory to render a messed up tiles.

The patch in postgis is expected to be released with the new version, a
few months from now.

Conflicts:
	plugins/input/pgraster/pgraster_datasource.cpp
2014-12-04 12:29:16 -05:00
artemp
0006de7420 image_data - fix copy constructor 2014-12-04 18:26:58 +01:00
Rafa de la Torre
6cb8b6e14b Ignore overviews with 0 scale in pgraster
refs #2551

Postgis raster_columns view is returning NULL values for raster
overviews with large scale factors. That issue in postgis is described
in http://trac.osgeo.org/postgis/ticket/3006

This causes two main problems:

  - The first overview with scale = NULL is wrongly chosen for rendering
    always

  - The messed up scaling factor causes the render symbolizer to spent
    an insane amount of CPU and memory to render a messed up tiles.

The patch in postgis is expected to be released with the new version, a
few months from now.

Conflicts:
	plugins/input/pgraster/pgraster_datasource.cpp
2014-12-04 11:09:44 -05:00
Blake Thompson
fa902bc97d Removed logging accidently left in test. 2014-12-04 10:49:21 -05:00
Blake Thompson
e6c5f705e5 Fixed error with selection criteria for stripe vs tiled, added modulus check on length and width to select striped in some situations, changed bitspersample for RBGA. (ref #2491) 2014-12-04 10:48:19 -05:00
artemp
38da080f82 make concrete image_data type names more expressive and explicit about color channels/depth:
image_data_32 -> image_data_rgba8
image_data_8  -> image_data_gray8
image_data_16 -> image_data_gray16
image_data_float32  -> image_data_gray32f

NOTE: currently image_data_gray16::pixel_type = std::int16_t (signed 16 bit int) to match GDAL
should we support unsigned types?
2014-12-04 11:02:42 +01:00
artemp
6b3fc9907f specify alpha 0 in default-color e.g "#00000000" 2014-12-04 10:33:44 +01:00
artemp
06ab69a08e further simplify raster rendering code 2014-12-04 10:33:28 +01:00
artemp
3b3e255f5e add comment 2014-12-04 10:31:56 +01:00
Blake Thompson
cdaca0ba11 Updated tiff processing so now the encoder will utilize different types of data as well as will use Tile based encoding in most situations, if the image is large will revert to scanline based encoding. 2014-12-03 18:41:49 -05:00
Dane Springmeyer
f82d57f497 work in progress: start enhancing tiff reader to handle bits per sample 2014-12-03 18:37:27 -05:00
Dane Springmeyer
2f0e236bc0 update expected visual test images 2014-12-03 16:30:35 -05:00
Dane Springmeyer
cbe0a0cca5 update agg blending cpp test - refs #1452 2014-12-03 15:19:22 -05:00
Dane Springmeyer
954d0db46c Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-03 13:53:14 -05:00
Dane Springmeyer
02135991ed convert raster_symbolizer_test to use full image comparisons 2014-12-03 13:53:04 -05:00
Dane Springmeyer
9d479f246b update a few expected images 2014-12-03 13:41:57 -05:00
Dane Springmeyer
6bba6b88de update a few expected images 2014-12-03 13:38:55 -05:00
artemp
de7a268333 read single band as int16 then agg_scale and colorize in gray16 color space, output rgb8 (aka image_data_32)
NOTE: proof-of-concept needed re-factoring/duplicate code removal
2014-12-03 18:19:44 +01:00
Dane Springmeyer
27159b8086 update visual test images after agg rgba improvements 2014-12-03 12:10:49 -05:00
artemp
6fc8002dec use new image_reader API 2014-12-03 10:58:05 +01:00
artemp
802428712e initial image_data_any read(...) implementation - always read into image_data_32 2014-12-03 10:56:19 +01:00
artemp
1df9d89a70 add to image_reader and implement empty (placeholder)
```image_data_any read(unsigned x, unsigned y, unsigned width, unsigned height) final```
in png/jpeg/webp/tiff readers
2014-12-03 10:44:56 +01:00
artemp
33607145a6 add image_data_null which is cheap to construct (no mem alloc)
add default ctor to image_data_any -> image_data_null
2014-12-03 10:26:21 +01:00
artemp
83aa06e329 move image_data_any into seprate header 2014-12-03 10:12:46 +01:00
Dane Springmeyer
1ff4125e92 fix visibility of mapnik::composite function to python bindings - refs #2587 2014-12-03 00:43:04 -05:00
Dane Springmeyer
46215c0f35 fix compile of pgraster plugin 2014-12-03 00:35:34 -05:00
Dane Springmeyer
ce7085ab63 remove duplicate/uneeded mapnik::raster ctor 2014-12-03 00:34:49 -05:00
Dane Springmeyer
4d39d2aac1 iwyu 2014-12-02 14:40:03 -05:00
Dane Springmeyer
946434002f handle/throw on invalid encoding for ucnv_open 2014-12-02 14:21:36 -05:00
Dane Springmeyer
9d5e46a1f9 drop unsupported geotiff output - refs #967 2014-12-02 13:28:02 -05:00
Dane Springmeyer
d77463d1b8 use c++11 typed enum in vertex.hpp 2014-12-02 08:09:36 -08:00
artemp
19e3ce9035 gdal : experimenting with fetching gray scale single band as image_data_float32 2014-12-02 15:56:40 +01:00
Dane Springmeyer
d92ba2e1b0 more c++11 typed enums 2014-12-01 22:20:18 -08:00
artemp
2365fb2f43 add support for agg_pixfmt_gray32(_pre) and port changes to agg_color_gray/rgba and gamma calc from https://github.com/pelson/antigrain 2014-12-01 11:55:05 +01:00
artemp
6fec43bf9e gdal - read single band as image_data_float32
(scaling/compositing FIXME)
2014-11-28 12:51:23 +01:00
artemp
bf9c99e3d3 initial image_data_any implentation (work-in-progress) 2014-11-26 12:22:36 +01:00
artemp
33c1d21b7f use four letter abriviations to determine datatypes (https://www.sqlite.org/datatype3.html) 2014-11-25 11:09:42 +01:00
Artem Pavlenko
db4b74e8bb Merge pull request #2580 from StevenLooman/master
Tests and fix for SQLite datasource missing column
2014-11-24 12:51:55 +01:00
artemp
83bad7a816 feature_collection_grammar: fix a mistake - #2582 2014-11-24 12:42:24 +01:00
artemp
c5ab5f68d9 feature_collection_grammar: make argument order consistent across parsing rules - #2582 2014-11-24 12:37:37 +01:00
artemp
ee9481cb38 feature_collection_grammar : allow passing start_id at parse time - #2582 2014-11-24 12:26:11 +01:00
artemp
8567aa25e0 fix text-line-wrap grid ids 2014-11-24 11:25:54 +01:00
artemp
d1e0078abf use qi::locals<std::size_t> for per parse feature id generation and remove generate_id phoenix function
(NOTE: ids start from 1)
2014-11-24 11:18:45 +01:00
artemp
d5cc6f522e python bindings: update copyright year 2014-11-24 09:54:43 +01:00
Dane Springmeyer
62d5cf7f16 fix error message in geojson plugin 2014-11-21 19:57:24 -08:00
Steven Looman
e7cf55222c Add test case for missing columns in SQLite datasource, using subquery. Refs #2579 2014-11-20 18:58:20 +01:00
Steven Looman
07a07c6268 Default to string type when column type could not be determined. Refs #2579 2014-11-20 18:48:31 +01:00
Steven Looman
4555e117e7 Add test case for missing columns in SQLite datasource. Refs #2579 2014-11-20 18:30:20 +01:00
artemp
333965b588 update copyright year 2014-11-20 15:25:50 +01:00
artemp
6adf62ec5a image_data : remove unused owns_data_ field 2014-11-20 15:08:07 +01:00
artemp
1757797031 update cpp tests - ref #2491 2014-11-20 14:43:17 +01:00
artemp
f7649c27b0 image_data : re-factor (ref #2491)
* factor out raw image data alloc/dealloc into separate detail::buffer
* remove shallow ctor
* remove no-op dtor from image_data
2014-11-20 14:36:03 +01:00
artemp
5e2a53bac9 c++ mapnik style 2014-11-20 14:35:50 +01:00
artemp
4f3521ac24 image_data: use std::size_t + various cleanups 2014-11-20 12:46:16 +01:00
artemp
79bbe13c0d mapnik::raster : allow passing image_data into ctor 2014-11-20 10:31:56 +01:00
Dane Springmeyer
2577a6c9b8 update a few visual tests against latest cairo - closes #2574 2014-11-13 12:17:15 -08:00
Jiri Drbalek
034e9e2bb2 Merge pull request #2568 from mapycz/fix-marker-many-vertices
fix marker line placement on "squiggly" lines
2014-11-13 19:25:20 +01:00
Jiri Drbalek
1b0a129755 add visual test - marker on line with many vertices 2014-11-13 13:21:49 +00:00
Jiri Drbalek
c540210fc6 update visual tests 2014-11-13 12:51:37 +00:00
Jiri Drbalek
cb46131bc5 move text-specific inverted y axis logic from vertex_cache to placement_finder 2014-11-13 12:51:36 +00:00
Jiri Drbalek
60ea198aa3 marker line placement rewrite 2014-11-13 12:51:36 +00:00
Jiri Drbalek
849a58cd80 make vertex_cache::current_segment_angle() public 2014-11-13 12:51:36 +00:00
Jiri Drbalek
000c2713ed make marker placement methods noncopyable, movable 2014-11-13 12:51:36 +00:00
Jiri Drbalek
69fc93d87a add move constructor to vertex_cache 2014-11-13 12:51:36 +00:00
Jiri Drbalek
3013197de7 move vertex_cache and tolerance_iterator from text directory 2014-11-13 12:51:36 +00:00
Dane Springmeyer
ce081f1730 add mention of always using std:: for cmath 2014-11-12 09:57:52 -08:00
Dane Springmeyer
1ed2b29f0a travis: test PLUGIN_LINKING=static 2014-11-11 15:27:29 -08:00
Dane Springmeyer
437d486bbd fix building with PLUGIN_LINKING=static 2014-11-11 14:42:53 -08:00
Dane Springmeyer
4a2735fe91 c++ style: use reinterpret_cast rather than c style casts 2014-11-10 16:53:58 -08:00
Dane Springmeyer
3cbde2dc54 map.remove_all should clear other containers 2014-11-07 19:50:18 -05:00
Dane Springmeyer
e397345bce map.register_fonts recurse should be optional like font_engine 2014-11-07 19:05:28 -05:00
Dane Springmeyer
183f182ef7 remove duplicate check for .woff font type 2014-11-07 19:04:50 -05:00
Dane Springmeyer
8cad5bed2b workaround msvs 2014 CTP 4 compiler error - closes #2561 2014-11-05 13:41:30 -05:00
Dane Springmeyer
58f13823af remove debug print 2014-11-05 13:41:30 -05:00
Dane Springmeyer
c4e4bbf350 nik2img: make params as variables opt-in 2014-11-05 13:41:30 -05:00
Robert Coup
76d5bdae8c Merge pull request #2556 from stephend/master
Throw datasource_exception on GDAL RasterIO() failures
2014-11-05 18:21:13 +13:00
Dane Springmeyer
bff4465976 fix msvs compiler error - closes #2560 2014-11-04 17:50:43 -05:00
Dane Springmeyer
5cd2cd629f nik2img: optionally make map parameters available as variables 2014-11-04 15:31:51 -05:00
Dane Springmeyer
26d7519e57 link cpp tests to grammar libs 2014-11-04 13:17:29 -05:00
Dane Springmeyer
a65987af31 geojson plugin: fix compile against boost 1.57 2014-11-04 11:41:23 -05:00
Dane Springmeyer
22bd30230a remove unneeded option 2014-11-04 11:41:23 -05:00
Dane Springmeyer
d6b74443a7 use non static ref to global memory font cache 2014-11-04 11:41:23 -05:00
Jiri Drbalek
4cfecf1575 Merge pull request #2558 from mapycz/test-line-simplify
add visual test - simplify line
2014-11-04 16:30:50 +01:00
Jiri Drbalek
40510437fe add visual test - simplify line 2014-11-04 14:08:27 +00:00
Jiri Drbalek
b88735954b Merge pull request #2557 from mapycz/fix-simplify-radial-distance
fix default value condition
2014-11-03 17:29:59 +01:00
Jiri Drbalek
7a89f1ab02 fix default value condition 2014-11-03 15:35:16 +00:00
Stephen Davis
824c99f565 throw datasource_exception on GDAL RasterIO failures 2014-11-03 11:24:38 +13:00
Dane Springmeyer
38cb85a7df avoid a few more boost warnings 2014-10-27 10:30:36 -07:00
Dane Springmeyer
06d9021d66 update map after 808e820 2014-10-27 09:25:10 -07:00
Dane Springmeyer
808e820164 smarter type handling for Map parameters 2014-10-27 09:24:33 -07:00
Dane Springmeyer
aa85a4ff1e default to transparent not pink if color expression fails 2014-10-27 09:23:27 -07:00
Dane Springmeyer
180bc17fc6 smarter type extraction in python_to_value 2014-10-27 09:22:54 -07:00
Dane Springmeyer
b860b58f0f comment exit calls in densehashtable - refs #2547 2014-10-27 09:03:05 -07:00
Dane Springmeyer
f34ac45b86 remove unneeded osm files - refs #2547 2014-10-27 08:56:58 -07:00
Jordan Hollinger
d524738ad9 Remove point symbolizer support from group symbolizer. 2014-10-27 09:43:42 -04:00
Jordan Hollinger
ee692eea73 Merge branch 'master' of github.com:mapnik/mapnik into group-markers
Conflicts:
	include/mapnik/grid/grid_marker_helpers.hpp
	include/mapnik/marker_helpers.hpp
	include/mapnik/renderer_common/process_group_symbolizer.hpp
	src/cairo/process_markers_symbolizer.cpp
	src/renderer_common/process_group_symbolizer.cpp
	tests/visual_tests/images/group-symbolizer-1-512-512-1.0-agg-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-1.0-cairo-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-2.0-agg-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-2.0-cairo-reference.png
2014-10-27 09:29:45 -04:00
Jordan Hollinger
864426ae54 Add reference images for new visual test group-symbolizer-4. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
6f4593fb4a Update reference images for visual test group-symbolizer-1. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
16b1b5a77c Support markers in group symbolizer. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
bfb8d80e37 Add visual test for several cases of raster and vector markers within group symbolizer. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
85622ab575 Update group symbolizer tests to use markers symbolizers. 2014-10-27 07:46:43 -04:00
Jordan Hollinger
1b15e53b63 Refactor markers dispatchers to use a common base class to share code. 2014-10-27 07:46:43 -04:00
Dane Springmeyer
ecb529cba2 handle boost::spirit::qi::expectation_failure 2014-10-24 21:36:19 -07:00
Dane Springmeyer
f80d1f9c00 support scale_factor in render_with_vars 2014-10-24 21:36:19 -07:00
Dane Springmeyer
ab451cbee2 support unicode keys in dict2attr 2014-10-24 21:36:19 -07:00
artemp
38a169e56e Merge branch 'MapQuest-peucker' 2014-10-24 15:20:25 +01:00
artemp
71085323a7 Merge branch 'peucker' of git://github.com/MapQuest/mapnik into MapQuest-peucker 2014-10-24 15:20:05 +01:00
artemp
ff8b1294a5 Merge branch 'kapouer-patch-3' 2014-10-24 14:39:43 +01:00
Jérémy Lal
87f9481621 Add missing argument to mapnik::raster call 2014-10-24 14:58:16 +02:00
Dane Springmeyer
c3dbd83348 try running benchmarks on travis again 2014-10-23 16:16:51 -07:00
artemp
f686d3de1b update dejavu-fonts-ttf path (v 2.34) 2014-10-23 11:35:20 +01:00
artemp
456ebe006b fix [-Wparentheses] warning 2014-10-23 09:51:45 +01:00
Dane Springmeyer
654c31d72d Add to changelog 2014-10-23 01:36:39 -07:00
Dane Springmeyer
eddbc2d3da copy edit of changelog 2014-10-23 01:20:02 -07:00
Dane Springmeyer
ad52fc7637 get mapnik version in a less brittle way 2014-10-23 01:02:14 -07:00
Dane Springmeyer
2ce6a317dd better defaults for git metadata 2014-10-23 01:00:35 -07:00
Dane Springmeyer
64b614c570 no need to ingore obsolete files [skip ci] 2014-10-23 00:43:23 -07:00
Dane Springmeyer
036a3bb14f only report git metadata for git checkout builds 2014-10-23 00:42:10 -07:00
Dane Springmeyer
f6e077fb08 remove unused scons function 2014-10-23 00:41:06 -07:00
Dane Springmeyer
4621fd6445 fix srs in c++ demo 2014-10-23 00:15:33 -07:00
Dane Springmeyer
520bab27be remove pycairo from python demo - closes #2533 2014-10-23 00:15:19 -07:00
Dane Springmeyer
900def16ae put mapnik-config on PATH [skip ci] 2014-10-23 00:06:40 -07:00
Dane Springmeyer
16ea7d85b2 add to authors 2014-10-23 00:04:52 -07:00
Dane Springmeyer
ed425b7f3f move local boost headers into deps directory 2014-10-22 23:51:44 -07:00
Dane Springmeyer
a0dc3df575 move mapnik-config back to utils/ 2014-10-22 23:46:33 -07:00
Dane Springmeyer
63f2171edc finish removal of workspace dir - amends 27d8cef3c4 2014-10-22 23:37:55 -07:00
Dane Springmeyer
c7fb48eb75 update expected visual test 2014-10-22 15:35:07 -07:00
Dane Springmeyer
a1314935af fix initialization order in proj_transform 2014-10-22 15:34:17 -07:00
Dane Springmeyer
27666bb686 ignore -Wunsequenced warnings 2014-10-22 15:34:04 -07:00
Dane Springmeyer
15a2acf0d5 silence warnings in pgraster plugin - refs #2356 2014-10-22 15:33:25 -07:00
Dane Springmeyer
ca3078938c simplify and install mapnik wkt and json libs 2014-10-22 00:09:22 -07:00
Dane Springmeyer
46a41f3ae1 initialize proj_transform::is_source_equal_dest_ 2014-10-22 00:08:48 -07:00
Dane Springmeyer
e88748c57e stop defaulting to -Wextra [skip ci] 2014-10-21 20:31:48 -07:00
Dane Springmeyer
a00c56f40c travis cannot cope with debug builds 2014-10-21 20:24:11 -07:00
Dane Springmeyer
aae4a20ec9 fix various -Wunused-parameter warnings 2014-10-21 20:23:17 -07:00
Dane Springmeyer
95b301deb4 set ignore unknown pragmas after -Wall and -Wextra 2014-10-21 20:22:33 -07:00
Dane Springmeyer
dcfa056413 merge 2014-10-21 19:49:03 -07:00
Dane Springmeyer
14cf32d9c0 Merge pull request #2542 from mapnik/warnings
Silence boost warnings using pragmas
2014-10-21 18:00:00 -07:00
Dane Springmeyer
d25f0c316a silence more warnings 2014-10-21 17:44:47 -07:00
Dane Springmeyer
87192bfcb7 silence more boost warnings 2014-10-21 16:57:44 -07:00
Dane Springmeyer
241c2ebf0b try gcc too 2014-10-21 16:54:53 -07:00
Dane Springmeyer
7acaa3068a silence warning in font_engine_freetype 2014-10-21 16:54:46 -07:00
Dane Springmeyer
83588937b9 silence boost warnings 2014-10-21 16:37:27 -07:00
Dane Springmeyer
0ec4fbef45 add std::fill to array alloc benchmark 2014-10-21 13:11:32 -07:00
Dane Springmeyer
963ac22588 silence -Wunused-parameter warning in grain-extract for now - refs #2067 2014-10-21 13:01:14 -07:00
artemp
d62a4b0914 update to dejavu-fonts-ttf-2.34 2014-10-21 16:54:43 +01:00
artemp
295f15bd51 ImageData -> image_data (remove camel-case) 2014-10-21 16:06:27 +01:00
artemp
fdd646aa5b more c++ 2014-10-21 15:52:01 +01:00
artemp
30907b3dd1 use c++ std::fill/copy instead of c-style memset/memcpy 2014-10-21 14:57:34 +01:00
artemp
107bad002d c++11 - use c++ style casts + cleanups + use std::fill 2014-10-21 14:51:27 +01:00
Dane Springmeyer
27c959b1bf quiet use of mapnik-test-data 2014-10-20 22:43:17 -07:00
Dane Springmeyer
18183aed2a fix a few -Wunused-parameter warnings 2014-10-20 22:28:40 -07:00
Dane Springmeyer
96733cda41 adapt to new dejavu version 2014-10-20 22:28:15 -07:00
Dane Springmeyer
02b7537d6d remove unused/supported second arg to parse_expression 2014-10-20 22:20:04 -07:00
Dane Springmeyer
f8b8eb1c52 upgrade scons to 2.3.4 2014-10-20 22:18:07 -07:00
Dane Springmeyer
2572568f29 upgrade bundled unifont to 7.0.05 and dejavu to 2.34 2014-10-20 22:17:27 -07:00
Dane Springmeyer
1b35d5a31b C++ test cleanup 2014-10-20 19:55:11 -07:00
Dane Springmeyer
a6978cb375 contributing: note that shared/unique_ptr should be used sparingly 2014-10-20 12:56:24 -07:00
artemp
52d0e3e641 expression grammar - add boolean_constants and floating_point_constants symbols
```python
>>> import mapnik
>>> f=mapnik.Feature(mapnik.Context(),1)
>>> expr = mapnik.Expression("rad_to_deg * pi")
>>> expr.evaluate(f)
180.0
```
2014-10-20 17:57:08 +01:00
artemp
1ed3d24193 update variant.hpp (use std::forward<T> for perfect forwarding - via @DennisOSRM) 2014-10-20 15:48:47 +01:00
Dane Springmeyer
29c8ba5ef6 Merge pull request #2461 from mapycz/test-data-binding
add visual test - text data binding
2014-10-18 10:14:13 -07:00
Jiri Drbalek
fef8079f03 add visual test - text data binding 2014-10-18 16:50:57 +00:00
Jiri Drbalek
4c11a4809c improve visual test - more data bound properties 2014-10-18 16:31:20 +00:00
Dane Springmeyer
e473e10f22 Merge pull request #2540 from mapycz/fix-geometry-transform-scale-factor
ignore scale_factor for geometry-transform scale
2014-10-18 07:04:14 -07:00
Jiri Drbalek
8ed1a2141b add visual test - geometry-transform scale 2014-10-18 10:31:07 +00:00
Jiri Drbalek
4549c0b63c ignore scale_factor for geometry-transform scale 2014-10-18 10:31:07 +00:00
Dane Springmeyer
2af2775e83 simplify readme 2014-10-17 17:32:44 -07:00
Dane Springmeyer
1a9002859d fix test - previous image was actually being rendered with radial-distance 2014-10-17 13:34:47 -07:00
artemp
2516d6dd43 default to GLOBAL alignment 2014-10-17 21:23:00 +01:00
artemp
ea9cc4c54b remove cast 2014-10-17 21:22:36 +01:00
artemp
6eb65434c5 upgrade to new get<value_type, keys::key> 2014-10-17 20:45:15 +01:00
artemp
35a044578b re-implement assign_value to use target property type 2014-10-17 18:45:08 +01:00
artemp
bbdc136b5b fix names + update property_meta_type tuple 2014-10-17 18:44:26 +01:00
artemp
b3e3a4f6bd update get<>() to use values from symbolizer_default_values.hpp 2014-10-17 10:39:40 +01:00
artemp
9d87f7715b symbolizer properties default values 2014-10-17 10:38:54 +01:00
Dane Springmeyer
75e46c9a6a python: conditionally require paths.py be available 2014-10-15 20:11:08 -07:00
Dane Springmeyer
b90763469a iwyu 2014-10-15 19:03:36 -07:00
Dane Springmeyer
dac7170616 break out topojson parsing grammar 2014-10-15 18:59:39 -07:00
Dane Springmeyer
bdb1f900eb sync code between geojson and topojson rtree impl 2014-10-15 18:51:53 -07:00
Dane Springmeyer
fa18783bf5 python tests: remove either paths.py data or env settings for fonts/plugins 2014-10-15 18:40:07 -07:00
Dane Springmeyer
4e8125d2ad use c file io wrapper in geojson/topojson plugins 2014-10-15 11:36:57 -07:00
Dane Springmeyer
9684880062 c file io wrapper: no need for explicit move + reset seek after checking size in ctor 2014-10-15 11:36:25 -07:00
artemp
2e4c5b3ee0 use finer control over rtree instantiation 2014-10-15 15:15:31 +01:00
artemp
0aac586f7c use enclosing namespaces in core lib 2014-10-15 15:14:21 +01:00
Dane Springmeyer
52e9531179 always return a value from evaluate_displacement 2014-10-14 21:35:20 -07:00
Dane Springmeyer
03b6b71ed2 update a few visual tests based on osx+mapnik-packaging deps 2014-10-14 21:03:15 -07:00
Dane Springmeyer
e1c1371935 Merge pull request #2514 from mapycz/perf-tolerance-iterator
exponential tolerance_iterator
2014-10-14 20:49:19 -07:00
Dane Springmeyer
8b441cbd2d fix mapnik/node-mapnik#332 2014-10-14 20:30:55 -07:00
Dane Springmeyer
1c80cfe44f fix geojson plugin linking #2535 2014-10-14 20:26:13 -07:00
Dane Springmeyer
7a58a9413d remove uneeded include 2014-10-14 20:23:21 -07:00
Dane Springmeyer
f00b35f56b remove unneeded boost/cast.hpp header 2014-10-14 17:58:02 -07:00
Dane Springmeyer
4c93d14537 get sqlite rtree tests passing on windows - refs #1871 and #2530 2014-10-14 17:49:04 -07:00
Dane Springmeyer
a98158e97d close sqlite db after testing 2014-10-14 17:35:59 -07:00
Jiri Drbalek
6c0aa68451 update grid reference images 2014-10-14 10:47:51 +00:00
Jiri Drbalek
2f36fbf1b0 update cairo reference images 2014-10-14 10:47:51 +00:00
Jiri Drbalek
a6e4a1bfce update agg reference images 2014-10-14 10:47:51 +00:00
Jiri Drbalek
f95f200ac1 make tolerance_iterator exponential 2014-10-14 10:47:45 +00:00
Dane Springmeyer
09f91a24a0 Merge pull request #2523 from mapycz/halign-adjust-immutable
halign adjust with immutability of style objects in mind
2014-10-13 18:47:37 -07:00
Dane Springmeyer
ad91c56718 Avoid BOOST_MPL_LIMIT_VECTOR_SIZE redefined warning 2014-10-13 18:06:53 -07:00
Dane Springmeyer
9a78c6dfe1 improve register_datasources + drop filesystem v2 support since v3 is default in boost >= 1.46 2014-10-13 17:43:14 -07:00
Dane Springmeyer
66ce021ad5 cairo_gradient: fallback to radial if the class is misused to prevent crash on uninitalized pattern 2014-10-13 17:26:32 -07:00
Dane Springmeyer
1f1c8a322b initialize all member variables 2014-10-13 17:23:45 -07:00
Dane Springmeyer
4b689ef05d fix casting to doubles 2014-10-13 17:23:30 -07:00
Dane Springmeyer
2d7f79a8c5 fix possible out-of-bounds write [coverity] 2014-10-13 16:19:51 -07:00
Artem Pavlenko
12ebb97779 Merge pull request #2528 from mapycz/fix-plugin-sqlite-shared-cache
sqlite plugin - disable shared cache for sqlite prior to 3.7.15
2014-10-13 14:42:48 +01:00
artemp
1e3b82a245 add new line 2014-10-13 14:23:06 +01:00
artemp
f8031dec96 no need to initialise `evaluated_xxx' structures as initialisation happens at evaluation step 2014-10-13 14:11:23 +01:00
Jiri Drbalek
959451af5d sqlite plugin - disable shared cache for sqlite prior to 3.7.15 2014-10-13 13:07:21 +00:00
artemp
7969a1c13a use more appropriate header 2014-10-13 13:23:14 +01:00
Jiri Drbalek
be7b593957 update visual test - horizontal-alignment="adjust" 2014-10-13 12:16:48 +00:00
Jiri Drbalek
1252369292 add horizontal-alignment="adjust" with immutability of style objects in
mind
2014-10-13 12:16:48 +00:00
artemp
4fe0c249a6 make hb_feature_t EqualityComparable and fix font_feature_settings operator== 2014-10-13 11:22:28 +01:00
Dane Springmeyer
5a91c68399 link wkt grammers from python bindings 2014-10-13 01:17:57 -07:00
Dane Springmeyer
9dae68ebbf add builds scripts for json/wkt grammars 2014-10-13 01:07:11 -07:00
Dane Springmeyer
44bc5b59d6 break out wkt/json grammars into separate libraries 2014-10-13 01:06:36 -07:00
Dane Springmeyer
6b1c4d00e5 MAPNIK_DECL font_feature_settings 2014-10-12 22:00:25 -07:00
Dane Springmeyer
885a98f9c1 improve handling of format properties - refs #2516
- changes evaluated_format_properties_ptr to unique_ptr
 - refactors group symbolizer helper to keep scope by
   having each "thunk" own its helper
 - glyph_info can now be noncopyable
 - format node children now need an owner for their
   evaluated_format_ptr so the enclosing parent layout
   now allocates and holds pointers in a deque
 - plus other noncopyable/move constructor fixes
2014-10-12 21:41:59 -07:00
Dane Springmeyer
a39cb0aaf8 break up geometry grammars - refs #2526 2014-10-12 16:50:36 -07:00
Dane Springmeyer
38b944aef7 break apart expression+transform grammars - refs #2526 2014-10-12 16:36:33 -07:00
Dane Springmeyer
35b4518b13 iwyu 2014-10-12 16:35:35 -07:00
Dane Springmeyer
a9f58c70b4 shuffle complexity into layout constructor
- should reduce mistakes in refactoring
  - gives top level ownership of evaluated_format_properties_ptr to a layout node (#2516)
  - not sure ^^ if this actually keeps it in scope enough for rendering?
  - moves data transformation functions off of text_symbolizer_properties
2014-10-12 16:07:26 -07:00
Dane Springmeyer
cf2df4f0cc harfbuzz shaper: return early if itemizer returns empty list 2014-10-12 15:48:15 -07:00
Dane Springmeyer
f3eba54078 noncopyable glyph_info - refs #2516 2014-10-12 14:24:57 -07:00
Dane Springmeyer
2000c1713d in place construction of glyph_positions 2014-10-12 13:54:07 -07:00
Dane Springmeyer
4e7feaf747 move glyph_positions to new cpp 2014-10-12 13:46:35 -07:00
Dane Springmeyer
39ff0945ef in place construction of pixel_positions 2014-10-12 13:38:18 -07:00
Dane Springmeyer
94aa67b0af vertex_cache: in place construction of segments 2014-10-12 13:30:24 -07:00
Dane Springmeyer
e4c895d4c1 zero copy usage of text_line 2014-10-12 13:23:03 -07:00
Dane Springmeyer
a648538bcd add more code comments to placement_finder to help explain layouts 2014-10-12 12:18:59 -07:00
Dane Springmeyer
f1c3d0c3ce iwyu in group_symbolizer_helper.hpp 2014-10-12 12:00:00 -07:00
Dane Springmeyer
8f94f23ea5 update postgis visual test I missed updating after #2519 2014-10-12 11:09:58 -07:00
Dane Springmeyer
6e894b1b97 avoid failing cairo tests due to #2334 (let's revert once #2334 is fixed) 2014-10-12 11:06:10 -07:00
Dane Springmeyer
22476b151f fix code comment: test actually for #1533 2014-10-12 11:04:31 -07:00
Dane Springmeyer
a8c8ea9ac4 reserve space for glyph_pos in renderer prepare_glyphs 2014-10-11 22:59:56 -07:00
Dane Springmeyer
3d142c2712 move evaluate_text_properties to standalone function - refs #2516 2014-10-11 22:48:00 -07:00
Dane Springmeyer
84b20ad9c9 Merge pull request #2522 from mapnik/ff_settings_by_value
Store and pass font_feature_settings by value
2014-10-11 22:46:12 -07:00
Dane Springmeyer
e6a66aaaba finish work to pass font_feature_settings by value - refs #2516 2014-10-11 22:39:40 -07:00
Dane Springmeyer
a61364d263 revert halign support - refs #2426 2014-10-11 20:03:56 -07:00
Dane Springmeyer
f7849cea09 make evaluated_text_properties noncopyable 2014-10-11 19:28:04 -07:00
Dane Springmeyer
477d6cc7ee zero-copy text_item insertion 2014-10-11 19:12:15 -07:00
Dane Springmeyer
b455cc9098 give glyph_info better ctor 2014-10-11 17:52:54 -07:00
Dane Springmeyer
eabdf46118 drop unwise glyph_info caching - reverts 99a46f6910 - re-opens #2334 2014-10-11 17:32:41 -07:00
Dane Springmeyer
d4f0d51a91 cairo text rendering: avoid double call of set_character_sizes for text and halo 2014-10-11 16:59:22 -07:00
Dane Springmeyer
ba285aa9fa remove unused (after 8bc7a56cda) font_face::char_height_ 2014-10-11 15:55:15 -07:00
Dane Springmeyer
b275144004 make cairo_context.add_text more like agg::text_renderer 2014-10-11 13:08:28 -07:00
Dane Springmeyer
51620e2b4d cairo: avoid creating evaluated_format_properties_ptr on stack 2014-10-11 11:37:16 -07:00
Dane Springmeyer
e1eb9fa5b1 reduce pointer usage in text renderer - refs #2516 2014-10-10 18:01:24 -07:00
Dane Springmeyer
5687765508 Merge pull request #2519 from mapnik/max-glyph-height2
use real max glyph height
2014-10-10 15:35:29 -07:00
Dane Springmeyer
4bfe542f31 update expected cairo images 2014-10-10 15:26:09 -07:00
Dane Springmeyer
45987988fb update expected agg images 2014-10-10 15:26:03 -07:00
Dane Springmeyer
b35eaec891 update expected grids 2014-10-10 15:25:51 -07:00
Dane Springmeyer
e29be4cec5 update a few expected images in python tests 2014-10-10 15:25:06 -07:00
Dane Springmeyer
8bc7a56cda use real max glyph height
- avoids breakage on fonts lacking an `X` glyph (#2506)
      - avoids needing to create and mutate a temporary glyph (#2516)
      - lots of minor visual changes - mostly improvements notably more correct collision boxes for lines with tall glyphs
2014-10-10 15:18:11 -07:00
artemp
74e872c48b avoid storing evaluated text properties in text_symbolizer_properties (all style related strucures must be read-only)
make process(..) method const
2014-10-10 12:38:06 +01:00
Dane Springmeyer
c6ed108a72 start marking as much of the text structures as const as possible - refs #2516 2014-10-09 23:00:39 -07:00
Dane Springmeyer
2d88f736fe remove uneeded access to format tree 2014-10-09 20:51:43 -07:00
Dane Springmeyer
e8bb880a45 fully disable text symbolizer for now - refs #2324 2014-10-09 20:51:43 -07:00
Dane Springmeyer
c26c60e48e remove set_old_style_expression 2014-10-09 20:51:43 -07:00
Dane Springmeyer
e98ea70d2e add a benchmark that tests rendering with shared map - refs #2516 2014-10-09 20:29:42 -07:00
Dane Springmeyer
344108c621 const not viable yet on itemizer 2014-10-09 20:00:35 -07:00
Dane Springmeyer
364af033a2 stash work on trying to convert font_feature_settings to be passed by value 2014-10-09 19:23:11 -07:00
Dane Springmeyer
2e4a9cfaf2 itemizer should be const in icu_shaper 2014-10-09 18:44:28 -07:00
Dane Springmeyer
536b23bfde fix uneeded pointer indirection with glyph_info/glyph_position 2014-10-09 18:38:29 -07:00
Dane Springmeyer
aed5243302 avoid creating evaluated_format_properties on the stack 2014-10-09 18:24:39 -07:00
Dane Springmeyer
38567d8213 font_set: explicitly initialize face_names_ member 2014-10-09 17:36:51 -07:00
Dane Springmeyer
5cc44ceee3 accept scale_factor as option in test_rendering bench 2014-10-09 17:33:01 -07:00
Dane Springmeyer
1fead3396b cleanup unused clipped_ member of base_symbolizer_helper after 9835057b0f 2014-10-09 11:40:30 -07:00
Dane Springmeyer
3479fcaec5 finish templating the json geometry generator on geometry container 2014-10-09 00:48:58 -07:00
Dane Springmeyer
7bc956e9e8 fix mis-spelling of fwd declare for text_placement_info_dummy 2014-10-08 16:51:33 -07:00
Dane Springmeyer
c4857c640b clean up string handling in font_set::add_face_name 2014-10-08 16:46:48 -07:00
Dane Springmeyer
1f29ce7d3d back to using shared_ptr for holding text_placement_info 2014-10-08 16:28:07 -07:00
Dane Springmeyer
a24b29624a remove unused include 2014-10-08 16:27:38 -07:00
Dane Springmeyer
98794accb4 travis: run all visual tests using threaded load 2014-10-08 14:25:42 -07:00
Dane Springmeyer
280c280a9c make rendering bench shell easy to run 2014-10-08 14:23:33 -07:00
Kevin Kreiser
2178f1602c note to self. read coding convention guidelines before actually writing code. 2014-10-08 15:05:38 -04:00
Kevin Kreiser
5962d68621 tab vs spaces in ide finally fixed. apologies 2014-10-08 14:37:18 -04:00
Kevin Kreiser
d8a9a5ed4d make the simplify test function general purpose so others can add other test cases for other simplification algorithms 2014-10-08 14:33:50 -04:00
Kevin Kreiser
96bf063b1c standardize commenting convention. i prefer lower case no space (ie laziness) but that doesnt seem to be the norm. 2014-10-08 14:09:07 -04:00
Kevin Kreiser
a5bedfbae3 fix some whitespace issues. somehow tabs were getting in there 2014-10-08 14:05:25 -04:00
Kevin Kreiser
b7d3a798cd add ramer douglas peucker to the list of simplify converters. also add tests for the simplify converters but so far only testing peucker. also add a method to the wkt factor for converting geometry container to wkt 2014-10-08 13:47:36 -04:00
Dane Springmeyer
65438f17aa further tests of path expressions for shields 2014-10-08 08:00:59 -07:00
Dane Springmeyer
3019787b30 enable another shield test - this one using null path expression 2014-10-08 08:00:59 -07:00
Dane Springmeyer
3a7c8ff3fb make scoped_state noncopyable 2014-10-08 08:00:59 -07:00
artemp
37f6aadcbb template json::(multi_)geometry_grammar on Geometry and GeometryContainer respectfully 2014-10-08 11:01:28 +01:00
artemp
7f219b4f8b use phoenix v3 syntax + cleanups 2014-10-08 11:00:25 +01:00
artemp
66252075e9 use <type_traits> 2014-10-08 10:37:35 +01:00
Dane Springmeyer
0a192a5260 completely purge buggy osm plugin from visual tests 2014-10-07 15:44:20 -07:00
artemp
29c7c5ac3e throw std::runtime_error on expectation failure 2014-10-07 11:21:44 +01:00
artemp
5990eecec5 better rules names 2014-10-07 11:21:05 +01:00
Dane Springmeyer
41009bfeb3 fix font caching logic 2014-10-07 00:21:52 -07:00
Dane Springmeyer
c2fe4a14be drop useless template usage for has_key 2014-10-06 23:21:13 -07:00
Dane Springmeyer
934f0dec1d warn if duplicate attribute - closes #2508 2014-10-06 23:20:43 -07:00
Dane Springmeyer
7ce776a79c fix handling of shield-text-opacity/text-opacity - closes #2507 2014-10-06 21:52:29 -07:00
Dane Springmeyer
6e7935b959 visual test coverage of shield-text-opacity/text-opacity - refs #2507 2014-10-06 21:51:58 -07:00
Dane Springmeyer
51f62ad083 dodge #2505 by avoiding registering gdal/ogr plugin 2014-10-06 18:19:52 -07:00
Dane Springmeyer
87e5df48de scons: fix memory leak in configure test 2014-10-06 17:23:18 -07:00
Dane Springmeyer
1ae43a25ff text_properties code cleanup - pregame for #2504 2014-10-06 16:59:49 -07:00
Dane Springmeyer
5a1126b0c0 higher grid tolerance, even for OS X 2014-10-06 14:31:38 -07:00
Dane Springmeyer
37bd319c87 start more font reg/cache tests 2014-10-06 14:31:27 -07:00
Dane Springmeyer
f733c7f2ac comment debug code 2014-10-06 14:31:11 -07:00
Dane Springmeyer
1670fdabf0 fix line symbolizer 'rasterizer' property - closes #2503 2014-10-06 14:10:43 -07:00
Dane Springmeyer
8be50220e0 Merge pull request #2501 from MapQuest/grid_markers_fix
Grid markers fix for issue #2500
2014-10-06 12:30:19 -07:00
Dane Springmeyer
737c299341 fix back compat for text-placement-type:dummy - closes #2502 2014-10-06 11:37:39 -07:00
jhollinger2
c5d0c44de0 Merge branch 'grid_markers_fix' into marker-refactor
Conflicts:
	include/mapnik/grid/grid_marker_helpers.hpp
2014-10-06 14:08:40 -04:00
jhollinger2
5ca07a26d1 Refactor marker helpers for agg and grid renderer. 2014-10-06 14:03:48 -04:00
Jordan Hollinger
f6368da679 Update other affected test grids from recenter fix in grid markers helper. 2014-10-06 09:16:16 -04:00
Jordan Hollinger
8405400776 Pass recentered transform to markers_placement_finder in vector_markers_rasterizer_dispatch_grid. Update expected grids for test case. 2014-10-06 09:16:16 -04:00
Jordan Hollinger
47bd76e683 Add test case to isolate collision error in grid renderer. 2014-10-06 09:16:16 -04:00
Dane Springmeyer
4aec64871d add missing header 2014-10-03 20:00:33 -07:00
Dane Springmeyer
e0ba9e9a8c use common dispatch for symbolizers 2014-10-03 19:07:08 -07:00
Dane Springmeyer
2cf3990e0d warn if fontset not found and load_map is not in strict mode - closes #1791 2014-10-03 17:43:44 -07:00
Dane Springmeyer
ebf7a61135 fix unsafe return of temporary - closes #2493 2014-10-03 16:39:25 -07:00
Dane Springmeyer
2925a70046 c++ style / delay std::string creation in xml loading 2014-10-03 16:39:25 -07:00
Dane Springmeyer
b09df2fa13 Merge pull request #2490 from MapQuest/group-margin
Use margin attribute in group symbolizer
2014-10-03 12:19:02 -07:00
Jordan Hollinger
8dad0c8975 Add test case expected results. 2014-10-03 14:45:25 -04:00
jhollinger2
4dfa76a0fc Update group symbolizer collision to use margin instead of minimum-distance. Add test case. 2014-10-03 13:46:23 -04:00
artemp
e8b3083a6a remove std::function usage in text_properties 2014-10-03 16:00:05 +01:00
5575 changed files with 590371 additions and 209388 deletions

94
.clang-format Normal file
View file

@ -0,0 +1,94 @@
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments: None
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros: Consecutive
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Inline
# AlwaysBreakAfterReturnType:
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BitFieldColonSpacing: After
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: Always
AfterEnum: false # see AllowShortEnumsOnASingleLine
AfterFunction: true # see AllowShortFunctionsOnASingleLine
AfterNamespace: false
AfterStruct: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: AfterComma
BreakStringLiterals: true
ColumnLimit: 120
CompactNamespaces: false
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DeriveLineEnding: true
EmptyLineAfterAccessModifier: Leave
EmptyLineBeforeAccessModifier: LogicalBlock
FixNamespaceComments: true
IncludeBlocks: Preserve
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: NoIndent
IndentPPDirectives: None
IndentRequires: true
IndentWidth: 4
IndentWrappedFunctionNames: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
# PackConstructorInitializers: CurrentLine # only clang-format > 14
PointerAlignment: Left
#QualifierAlignment: Left # only clang-format > 14
ReferenceAlignment: Left
ReflowComments: true
SortIncludes: Never
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeInheritanceColon: true
Standard: c++14
BinPackParameters: false
BreakBeforeInheritanceComma: false
IncludeCategories:
# Headers in <> without extension.
- Regex: '<([A-Za-z0-9\Q/-_\E])+>'
Priority: 1
# Headers in <> from specific external libraries.
- Regex: '<(boost)\/'
Priority: 2
# Headers in <> from specific external libraries.
- Regex: '<(mapnik)\/'
Priority: 3
# Headers in <> with extension.
- Regex: '<([A-Za-z0-9.\Q/-_\E])+>'
Priority: 4
# Headers in "" with extension.
- Regex: '"([A-Za-z0-9.\Q/-_\E])+"'
Priority: 5

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
*.svg text eol=lf
scons/** linguist-vendored

85
.github/actions/run_tests/action.yml vendored Normal file
View file

@ -0,0 +1,85 @@
name: Run tests with coverage
description: Runs all mapnik tests with coverage
inputs:
cmake-preset:
description: The used CMake preset
required: true
runs:
using: composite
steps:
- name: Set PROJ_LIB
shell: bash
run: |
cmake --preset ${{ inputs.cmake-preset }} -N -L | grep -o "PROJ_LIB=.*" >> ${GITHUB_ENV}
- name: Set TEST_WRAPPER (Windows)
if: runner.os == 'Windows'
shell: bash
run: |-
echo "TEST_WRAPPER=OpenCppCoverage \
--cover_children \
--export_type binary \
--modules '*.input' \
--modules '*libmapnik*' \
--modules 'mapnik*.exe' \
--quiet \
--sources '${{ github.workspace }}' \
--" >> ${GITHUB_ENV}
- name: Test
shell: bash
env:
UPDATE: 1
run: |
${TEST_WRAPPER:-} ctest --preset ${{ inputs.cmake-preset }}
- name: Test visuals
continue-on-error: true
working-directory: build/out
shell: bash
run: |
${TEST_WRAPPER:-} ./mapnik-test-visual -j ${CTEST_PARALLEL_LEVEL} --output-dir visual-test-result
- name: Pack visual test results
working-directory: build/out
shell: bash
run: |
tar -vzcf visual-test-results.tar.gz visual-test-result
- name: Upload visual test results
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.cmake-preset }}-visual-tests-${{ github.sha }}
path: build/out/visual-test-results.tar.gz
- name: Run Benchmarks (Linux & macOS)
working-directory: build/out
if: runner.os != 'Windows'
shell: bash
run: |
./run_benchmarks
- name: Collect coverage (Linux & macOS)
working-directory: build
if: runner.os != 'Windows'
shell: bash
run: |
if [ "${RUNNER_OS}" == "macOS" ]; then
LCOV_EXTRA_OPTIONS="--ignore-errors count,gcov,inconsistent,range,unused --keep-going"
fi
lcov ${LCOV_EXTRA_OPTIONS:-} --directory . --capture --output-file coverage.info
lcov ${LCOV_EXTRA_OPTIONS:-} --remove coverage.info '/usr/*' '*/vcpkg_installed/*' '/.cache/*' '*/test/*' --output-file coverage.info
lcov ${LCOV_EXTRA_OPTIONS:-} --list coverage.info
- name: Upload coverage to Codecov (Linux & macOS)
if: runner.os != 'Windows'
uses: codecov/codecov-action@v4
with:
files: build/coverage.info
- name: Upload coverage to Codecov (Windows)
if: runner.os == 'Windows'
uses: codecov/codecov-action@v4
with:
files: ctest.cov,build/out/mapnik-test-visual.cov

136
.github/workflows/build_and_test.yml vendored Normal file
View file

@ -0,0 +1,136 @@
name: Build and Test
on:
push:
branches:
- "*"
pull_request:
branches-ignore:
- "no-ci-*"
env:
VCPKG_BINARY_SOURCES: clear;x-gha,readwrite
VCPKG_RELEASE: 2024.06.15
jobs:
checkSource:
name: Check Source Code
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: pre-commit/action@v3.0.1
buildAndTest:
name: >-
Build & Test
(${{ matrix.os }})
(C++ ${{ matrix.cxx-standard }})
${{ startsWith(matrix.os, 'macos-') && (matrix.os == 'macos-14' && '(ARM64)' || '(AMD64)') || '' }}
needs: checkSource
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-14
- ubuntu-22.04
- windows-2022
cxx-standard:
- 17
steps:
- name: Checkout Mapnik
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout vcpkg
uses: actions/checkout@v4
with:
path: vcpkg
ref: ${{ env.VCPKG_RELEASE }}
repository: microsoft/vcpkg
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Install required system packages
shell: bash
run: |
if [ "${RUNNER_OS}" == "Linux" ]; then
sudo apt-get update
sudo apt-get -y install \
autoconf \
autoconf-archive \
automake \
gperf \
lcov \
libxxf86vm-dev \
ninja-build \
postgresql-client
elif [ "${RUNNER_OS}" == "macOS" ]; then
brew install \
autoconf \
autoconf-archive \
automake \
lcov \
libtool \
ninja \
vcpkg
elif [ "${RUNNER_OS}" == "Windows" ]; then
choco install \
ninja \
OpenCppCoverage
echo "C:\Program Files\OpenCppCoverage" >> ${GITHUB_PATH}
fi
- name: Enable Developer Command Prompt (Windows)
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
- name: Set CMAKE_BUILD_PARALLEL_LEVEL, CTEST_PARALLEL_LEVEL & PRESET
shell: bash
run: |
PRESET=$(echo "${RUNNER_OS}" | perl -ne "print lc")-ci
if [ "${RUNNER_OS}" == "Linux" ]; then
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
echo "CTEST_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
elif [ "${RUNNER_OS}" == "macOS" ]; then
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(sysctl -n hw.logicalcpu)" >> ${GITHUB_ENV}
echo "CTEST_PARALLEL_LEVEL=$(sysctl -n hw.logicalcpu)" >> ${GITHUB_ENV}
PRESET=${PRESET}-${{ matrix.os == 'macos-14' && 'arm64' || 'x64' }}
elif [ "${RUNNER_OS}" == "Windows" ]; then
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(pwsh -Command '(Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors')" >> ${GITHUB_ENV}
echo "CTEST_PARALLEL_LEVEL=$(pwsh -Command '(Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors')" >> ${GITHUB_ENV}
fi
echo "PRESET=${PRESET}" >> ${GITHUB_ENV}
- name: Configure CMake
shell: bash
run: |
cmake \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_CXX_STANDARD:STRING=${{ matrix.cxx-standard }} \
-DUSE_MEMORY_MAPPED_FILE:BOOL=ON \
-LA \
--preset ${PRESET}
- name: Build
shell: bash
run: |
cmake \
--build \
--preset ${PRESET}
- name: Run Tests
uses: ./.github/actions/run_tests
with:
cmake-preset: ${{ env.PRESET }}

55
.github/workflows/release_linux.yml vendored Normal file
View file

@ -0,0 +1,55 @@
name: Release Linux
on:
push:
branches:
- "*"
pull_request:
branches-ignore:
- "no-ci-*"
env:
PRESET: linux-ci-release
jobs:
build:
runs-on: "ubuntu-22.04"
steps:
- name: checkout mapnik
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: "Install required system packages"
shell: bash
run: |
sudo apt update
sudo apt install -y ninja-build\
libicu-dev \
libfreetype6-dev \
libharfbuzz-dev \
libxml2-dev \
libjpeg-dev \
libtiff-dev \
libwebp-dev \
libcairo2-dev \
libproj-dev \
libgdal-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-regex-dev
- name: Configure CMake
run: cmake -LA --preset ${{ env.PRESET }}
- name: Build
run: cmake --build --preset ${{ env.PRESET }}
- name: Package
run: cmake --build --preset ${{ env.PRESET }} --target package
- name: Upload mapnik debian package
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRESET }}-deb
path: build/mapnik-*.deb

33
.gitignore vendored
View file

@ -1,11 +1,19 @@
.DS_Store
.vscode
.cache
*.gcov
*.gcda
*.gcno
*~
*.o
*.pyc
*.os
*.so
*.so.*
*.a
*.swp
*.dylib
mapnik-gyp
plugins/input/*.input
plugins/input/templates/*.input
demo/c++/rundemo
@ -13,28 +21,24 @@ bindings/python/mapnik/paths.py
config.cache
config.log
config.py
mapnik-settings.env
mason_packages/
.mason/
.sconf_temp/
.sconsign.dblite
demo/viewer/viewer.ini
tests/cpp_tests/font_registration_test
tests/python_tests/raster_colorizer_test.png
tests/python_tests/raster_colorizer_test_save.xml
bin/mapnik-config
utils/mapnik-config/mapnik-config
utils/shapeindex/shapeindex
utils/mapnik-index/mapnik-index
utils/ogrindex/ogrindex
utils/pgsql2sqlite/pgsql2sqlite
utils/svg2png/svg2png
utils/nik2img/nik2img
utils/mapnik-render/mapnik-render
demo/python/demo*
demo/python/map.xml
tests/cpp_tests/svg_renderer_tests/background_color_test
tests/cpp_tests/svg_renderer_tests/combined_test
tests/cpp_tests/svg_renderer_tests/compilation_test
tests/cpp_tests/svg_renderer_tests/file_output_test
tests/cpp_tests/svg_renderer_tests/file_output_test_case.svg
tests/cpp_tests/svg_renderer_tests/path_element_test
tests/cpp_tests/svg_renderer_tests/path_element_test_case_1.svg
tests/cpp_tests/svg_renderer_tests/root_element_test
tests/data/sqlite/*index
demo/c++/cairo-demo.pdf
demo/c++/cairo-demo.png
@ -51,4 +55,11 @@ demo/viewer/release/
demo/viewer/ui_about.h
demo/viewer/ui_info.h
demo/viewer/ui_layer_info.h
tests/cpp_tests/*-bin
test/standalone/*-bin
test/unit/run
test/visual/run
# cmake
build
.vs
CMakeUserPresets.json

23
.gitmodules vendored Normal file
View file

@ -0,0 +1,23 @@
[submodule "test/data"]
path = test/data
url = https://github.com/mapnik/test-data.git
branch = master
[submodule "test/data-visual"]
path = test/data-visual
url = https://github.com/mapnik/test-data-visual.git
branch = master
[submodule "deps/mapbox/variant"]
path = deps/mapbox/variant
url = https://github.com/mapbox/variant.git
branch = master
[submodule "deps/mapbox/geometry"]
path = deps/mapbox/geometry
url = https://github.com/mapbox/geometry.hpp.git
branch = master
[submodule "deps/mapbox/protozero"]
path = deps/mapbox/protozero
url = https://github.com/mapbox/protozero.git
branch = master
[submodule "deps/mapbox/polylabel"]
path = deps/mapbox/polylabel
url = https://github.com/mapbox/polylabel.git

16
.pre-commit-config.yaml Normal file
View file

@ -0,0 +1,16 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
files: ^.*\.cmake|CMakeLists\.txt$
- id: end-of-file-fixer
files: ^.*\.cmake|CMakeLists\.txt$
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v18.1.3
hooks:
- id: clang-format
types_or: [c++, c]

View file

@ -1,51 +0,0 @@
language: cpp
compiler:
- clang
#- gcc
env:
matrix:
#- DEBUG=True ENABLE_LOG=True DEFAULT_LOG_SEVERITY=debug XMLPARSER="libxml2" DEMO=False BENCHMARK=False CUSTOM_CXXFLAGS="" CUSTOM_LDFLAGS=""
- DEBUG=False ENABLE_LOG=False DEFAULT_LOG_SEVERITY=none XMLPARSER="ptree" DEMO=False BENCHMARK=False CUSTOM_CXXFLAGS="" CUSTOM_LDFLAGS=""
# travis + ubuntugis with gdal and postggis leads to many potential dead-end conflicts
# the below is thanks to https://github.com/CartoDB/Windshaft/blob/d82fe08b32fc7907bbe907ab290f8a082215ae26/.travis.yml#L1
before_install:
- export PGUSER=postgres
- sudo mv /etc/apt/sources.list.d/pgdg-source.list* /tmp
- sudo apt-get -qq purge postgis* postgresql*
- sudo apt-add-repository -y ppa:cartodb/postgresql-9.3
- sudo apt-add-repository -y ppa:cartodb/gis
# grab harfbuzz from ppa
- sudo apt-add-repository -y ppa:fontforge/fontforge
# we need at least g++-4.7 for c++11 features
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
# enable to test against latest boost rather that v1.48
#- sudo add-apt-repository -y ppa:boost-latest/ppa
- sudo rm -Rf /var/lib/postgresql /etc/postgresql
- sudo apt-get update -qq
- sudo apt-get install -q libharfbuzz-dev postgresql-9.3-postgis-2.1 postgresql-contrib-9.3 gdal-bin libgdal-dev
- echo -e "local\tall\tall\ttrust\nhost\tall\tall\t127.0.0.1/32\ttrust\nhost\tall\tall\t::1/128\ttrust" |sudo tee /etc/postgresql/9.3/main/pg_hba.conf
- sudo service postgresql restart
install:
# enable to test against boost ppa
#- sudo apt-get install -y boost1.55
- sudo apt-get install -y libboost-python1.48-dev libboost-thread1.48-dev libboost-filesystem1.48-dev libboost-regex1.48-dev libboost-program-options1.48-dev
- sudo apt-get install -y ttf-wqy-microhei make libstdc++6 libstdc++-4.8-dev valgrind python-nose libicu-dev libproj-dev libcairo-dev python-cairo-dev libcairo-dev python-cairo-dev libpng-dev libjpeg-dev libtiff-dev libwebp-dev libz-dev libfreetype6-dev libxml2-dev libsqlite3-dev
before_script:
- psql -U postgres -c 'create database template_postgis'
- psql -U postgres -c 'create extension postgis' -d template_postgis
- if [[ "${CXX}" == 'g++' ]]; then export JOBS=2; sudo apt-get install gcc-4.8 g++-4.8; export CXX="$(which g++-4.8)"; export CC="$(which gcc-4.8)"; fi;
- if [[ "${CXX}" == 'clang++' ]]; then export JOBS=4; export CXX="$(which clang++)"; export CC="$(which clang)"; fi;
script:
- ./configure CXX="${CXX}" CC="${CC}" CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS}" CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS}" XML_PARSER="${XML_PARSER}" ENABLE_LOG="${ENABLE_LOG}" DEBUG="${DEBUG}" DEMO="${DEMO}" BENCHMARK="${BENCHMARK}" CPP_TESTS=True CAIRO=True FAST=True || cat config.log
- if [[ "${DEBUG}" == True ]]; then export JOBS=$((JOBS/2)); fi;
- make
- git clone https://github.com/mapbox/mapnik-test-data tests/data/mapnik-test-data
- make test
- source localize.sh && make grind
- if [[ ${BENCHMARK} != False ]]; then make bench; fi;

View file

@ -6,39 +6,55 @@ Mapnik is written by Artem Pavlenko with contributions from:
* AJ Ashton
* Matt Amos
* Lucio Asnaghi
* Alexandre Bonnasseau
* Justin Bronn
* Joel Brown
* Christopher Brown
* Jon Burgess
* Stephan Bösch-Plepelits
* Manel Clos
* Toby Collet
* Robert Coup
* Berteun Damman
* Craig de Stigter
* Petr Dlouhy
* Jiri Drbalek
* Jean-Francois Doyon
* David Eastcott
* Seth Fitzsimmons
* Sean Gillies
* Krzysztof Godlewski
* Beau Gunderson
* John Hague
* Dominic Hargreaves
* Axel Haustant
* Aubrey Holland
* Jordan Hollinger
* Tom Hughes
* Konstantin Käfer
* Mak Kolybabi
* Peter Körner
* Hermann Kraus
* Stella Laurenzo
* XinGang Li
* lightmare
* David Leaver
* Carlos López
* Dennis Luxen
* Tom MacWright
* Sara Metz
* Michal Migurski
* Andrii Mishkovskyi
* Ben Moores
* Mike Morris
* Dražen Odobašić
* Cameron Patrick
* Clint Pells
* Igor Podolskiy
* Reid Priedhorsky
* Brian Quinion
* Even Rouault
* Marcin Rudowski
* Sandro Santilli
* Christopher Schmidt
* Andreas Schneider
* Vincent Schut
@ -49,9 +65,13 @@ Mapnik is written by Artem Pavlenko with contributions from:
* Vince Spader
* Philipp Spitzer
* Dane Springmeyer
* Craig de Stigter
* Dave Stubbs
* River Tarnell
* Cezary Tarnowski
* Blake Thompson
* Oliver Tonnhofer
* Jochen Topf
* Alberto Valverde
* Martijn van Oosterhout
* Andreas Volz
@ -60,3 +80,4 @@ Mapnik is written by Artem Pavlenko with contributions from:
* Rich Wareham
* Nick Whitelegg
* Leslie Wu
* Roman Galacz

File diff suppressed because it is too large Load diff

34
CITATION.cff Normal file
View file

@ -0,0 +1,34 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: mapnik
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Artem
family-names: Pavlenko
identifiers:
- type: url
value: 'https://github.com/mapnik/mapnik'
description: GitHub Repository
- type: swh
value: >-
swh:1:dir:3f5758e17e9d54016ca694268da68cf6856fab58
description: Software Archive
repository-code: 'https://github.com/mapnik/mapnik'
url: 'https://mapnik.org/'
abstract: >-
Mapnik is an open source toolkit for developing
mapping applications. At the core is a C++ shared
library providing algorithms and patterns for
spatial data access and visualization.
keywords:
- mapping
- gis
- cartography
- beautiful-maps
- rendering
license: LGPL-2.1

472
CMakeLists.txt Normal file
View file

@ -0,0 +1,472 @@
cmake_minimum_required(VERSION 3.15)
# 3.15 is required since the Boost::XXXX targets was first added. https://cmake.org/cmake/help/latest/module/FindBoost.html#imported-targets
# 3.14 is required since SQLite3 Module was first added. https://cmake.org/cmake/help/latest/module/FindSQLite3.html#findsqlite3
include(cmake/GetVersion.cmake)
get_mapnik_version()
project(mapnik
VERSION ${MAPNIK_MAJOR_VERSION}.${MAPNIK_MINOR_VERSION}.${MAPNIK_PATCH_VERSION}
HOMEPAGE_URL "https://mapnik.org/"
DESCRIPTION "Mapnik is an open source toolkit for developing mapping applications"
LANGUAGES CXX
)
message(STATUS "mapnik version: ${PROJECT_VERSION}")
# https://cliutils.gitlab.io/modern-cmake/chapters/features/ides.html
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_FIND_PACKAGE_TARGETS_GLOBAL ON) # with newer cmake versions put all find_package in global scope
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(FeatureSummary)
include(MapnikOption)
include(MapnikMinimumVersions)
include(MapnikFindPackage)
include(MapnikInstall)
include(CTest)
add_feature_info(BUILD_TESTING BUILD_TESTING "Adds tests")
mapnik_option(INSTALL_DEPENDENCIES "if ON, all dependencies (eg. required dlls) will be copied into CMAKE_INSTALL_PREFIX/MAPNIK_BIN_DIR." ON)
mapnik_option(BUILD_SHARED_LIBS "build mapnik dynamic(ON) or static(OFF)" ON)
mapnik_option(BUILD_SHARED_PLUGINS "build dynamic plugins" ${BUILD_SHARED_LIBS}) # use BUILD_SHARED_LIBS as default option
mapnik_option(BUILD_SHARED_CRT "(only windows with msvc) use msvc shared crt" ON)
if(WIN32 AND BUILD_SHARED_PLUGINS AND NOT BUILD_SHARED_LIBS)
message(FATAL_ERROR "static libmapnik and dynamic plugins won't work correctly")
endif()
mapnik_option(USE_EXTERNAL_MAPBOX_GEOMETRY "Use a external mapnik/geometry.hpp. If off, use the submodule" OFF)
mapnik_option(USE_EXTERNAL_MAPBOX_POLYLABEL "Use a external mapnik/polylabel. If off, use the submodule" OFF)
mapnik_option(USE_EXTERNAL_MAPBOX_PROTOZERO "Use a external mapnik/protozero. If off, use the submodule" OFF)
mapnik_option(USE_EXTERNAL_MAPBOX_VARIANT "Use a external mapnik/variant. If off, use the submodule" OFF)
mapnik_option(USE_JPEG "adds jpeg support" ON)
mapnik_option(USE_PNG "adds png support" ON)
mapnik_option(USE_TIFF "adds tiff support" ON)
mapnik_option(USE_WEBP "adds webp support" ON)
mapnik_option(USE_LIBXML2 "adds libxml2 support" ON)
mapnik_option(USE_CAIRO "adds the cairo renderer" ON)
mapnik_option(USE_PROJ "adds proj support" ON)
mapnik_option(USE_GRID_RENDERER "adds grid renderer" ON)
mapnik_option(USE_SVG_RENDERER "adds svg renderer" ON)
mapnik_option(USE_BIGINT "uses 64 bit instead of 32" ON)
mapnik_option(USE_BOOST_FILESYSTEM "use boost::filesytem even if `std::filesystem` is available (since c++17)" OFF)
mapnik_option(USE_MEMORY_MAPPED_FILE "uses file cache" ON)
mapnik_option(USE_MULTITHREADED "enables the multithreaded features (threadsafe)" ON)
mapnik_option(USE_NO_ATEXIT "disable atexit" OFF)
mapnik_option(USE_NO_DLCLOSE "disable dlclose" OFF)
mapnik_option(USE_DEBUG_OUTPUT "enables some debug messages for development" OFF)
mapnik_option(USE_LOG "enables logging output. See log severity level." OFF)
# 0 = debug
# 1 = warn
# 2 = error
# 3 = none
set(USE_LOG_SEVERITY "1" CACHE STRING "sets the logging severity (only applies when USE_LOG is ON")
mapnik_option(USE_STATS "Enable statistics reporting" OFF)
mapnik_option(DISABLE_MAPNIK_AUTOSETUP "disables the autosetup. Need to call mapnik::setup() then" OFF)
mapnik_option(USE_PLUGIN_INPUT_CSV "adds plugin input csv" ON)
mapnik_option(USE_PLUGIN_INPUT_GDAL "adds plugin input gdal" ON)
mapnik_option(USE_PLUGIN_INPUT_GEOBUF "adds plugin input geobuf" ON)
mapnik_option(USE_PLUGIN_INPUT_GEOJSON "adds plugin input geojson" ON)
mapnik_option(USE_PLUGIN_INPUT_OGR "adds plugin input ogr" ON)
mapnik_option(USE_PLUGIN_INPUT_PGRASTER "adds plugin input pgraster" ON)
mapnik_option(USE_PLUGIN_INPUT_POSTGIS "adds plugin input postgis" ON)
mapnik_option(USE_PLUGIN_INPUT_RASTER "adds plugin input raster" ON)
mapnik_option(USE_PLUGIN_INPUT_SHAPE "adds plugin input shape" ON)
mapnik_option(USE_PLUGIN_INPUT_SQLITE "adds plugin input sqlite" ON)
mapnik_option(USE_PLUGIN_INPUT_TOPOJSON "adds plugin input topojson" ON)
mapnik_option(BUILD_DEMO_VIEWER "builds the demo viewer" ON)
mapnik_option(BUILD_DEMO_CPP "builds the demo c++ application" ON)
mapnik_option(BUILD_BENCHMARK "builds benchmark project" ON)
mapnik_option(BUILD_UTILITY_GEOMETRY_TO_WKB "builds the utility program geometry_to_wkb" ON)
mapnik_option(BUILD_UTILITY_MAPNIK_INDEX "builds the utility program mapnik_index" ON)
mapnik_option(BUILD_UTILITY_MAPNIK_RENDER "builds the utility program mapnik_render" ON)
mapnik_option(BUILD_UTILITY_OGRINDEX "builds the utility program ogrindex" OFF)
mapnik_option(BUILD_UTILITY_PGSQL2SQLITE "builds the utility program pgsql2sqlite" ON)
mapnik_option(BUILD_UTILITY_SHAPEINDEX "builds the utility program shapeindex" ON)
mapnik_option(BUILD_UTILITY_SVG2PNG "builds the utility program svg2png" ON)
mapnik_option(USE_BOOST_REGEX_ICU_WORKAROUND "if you don't use your system libraries and get double linked icu libraries set this to ON" OFF)
mapnik_option(USE_GLIBC_WORKAROUND "see https://github.com/mapnik/mapnik/pull/3792 if you building with libstdc++-4.9" OFF)
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
feature_summary(FILENAME "${CMAKE_CURRENT_BINARY_DIR}/features.log" WHAT ENABLED_FEATURES DISABLED_FEATURES)
include(GNUInstallDirs)
# See for more details: https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html
set(MAPNIK_BIN_DIR ${CMAKE_INSTALL_BINDIR} CACHE STRING "Install directory for binaries")
set(MAPNIK_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE STRING "Install directory for libraries")
set(MAPNIK_ARCHIVE_DIR ${CMAKE_INSTALL_LIBDIR} CACHE STRING "Install directory for archives")
set(MAPNIK_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE STRING "Install directory for the headers")
set(MAPNIK_CMAKE_DIR ${MAPNIK_LIB_DIR}/cmake/mapnik CACHE STRING "Install directory of the cmake targets")
set(MAPNIK_PKGCONF_DIR ${MAPNIK_LIB_DIR}/pkgconfig CACHE STRING "Install directory for the .pc files for pkg-config")
set(MAPNIK_OUTPUT_DIR "${CMAKE_BINARY_DIR}/out")
if(WIN32)
set(DEFAULT_PLUGINS_INSTALL_DIR ${MAPNIK_BIN_DIR}/mapnik/input)
else()
set(DEFAULT_PLUGINS_INSTALL_DIR ${MAPNIK_LIB_DIR}/mapnik/input)
endif()
set(PLUGINS_INSTALL_DIR ${DEFAULT_PLUGINS_INSTALL_DIR} CACHE STRING "installs the plugins in the specified directory")
message(STATUS "Installing plugins to ${PLUGINS_INSTALL_DIR}")
set(FONTS_INSTALL_DIR ${MAPNIK_LIB_DIR}/mapnik/fonts CACHE STRING "installs the fonts in the specified directory")
message(STATUS "Installing fonts to ${FONTS_INSTALL_DIR}")
set(MAPNIK_COMPILE_DEFS "")
set(MAPNIK_OPTIONAL_LIBS "")
set(MAPNIK_OPTIONAL_LIBS_INCLUDE "")
#############################
#############################
# Begin project configuration
#############################
#############################
set(CMAKE_CXX_STANDARD 17 CACHE STRING "Sets the c++ standard. c++17 is minimum.")
set(CMAKE_CXX_STANDARD_REQUIRED ON) # require the specified CMAKE_CXX_STANDARD
set(CMAKE_CXX_EXTENSIONS OFF CACHE STRING "Enables the compiler specific extensions.") # Fallsback to -std=c++<ver> if off
message(STATUS "Using c++${CMAKE_CXX_STANDARD}")
message(STATUS "Using c++ extensions: ${CXX_EXTENSIONS}")
# add debug postfix to the libraries
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "sets the debug library postfix on mapnik, wkt and json")
message(STATUS "postfix for debug libraries: ${CMAKE_DEBUG_POSTFIX}")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>$<$<BOOL:${BUILD_SHARED_CRT}>:DLL>")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${MAPNIK_OUTPUT_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${MAPNIK_OUTPUT_DIR}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${MAPNIK_OUTPUT_DIR}/lib")
# needs to be before the first call of find_boost.
if(CMAKE_CXX_STANDARD VERSION_LESS 17)
list(APPEND MAPNIK_COMPILE_DEFS BOOST_SPIRIT_X3_HIDE_CXX17_WARNING)
endif()
if(USE_MULTITHREADED)
set(Boost_USE_MULTITHREADED ON)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_THREADSAFE)
else()
set(Boost_USE_MULTITHREADED OFF)
endif()
mapnik_find_package(PkgConfig REQUIRED)
mapnik_find_threads()
mapnik_find_package(ICU REQUIRED COMPONENTS uc i18n data)
mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS regex)
if(CMAKE_CXX_STANDARD VERSION_LESS 17)
set(USE_BOOST_FILESYSTEM ON CACHE BOOL "Use boost::filesystem" FORCE)
endif()
if(USE_BOOST_FILESYSTEM)
mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS filesystem system)
endif()
list(APPEND MAPNIK_COMPILE_DEFS BOOST_REGEX_HAS_ICU)
if(USE_BOOST_REGEX_ICU_WORKAROUND)
message(STATUS "using boost regex workaround")
set_property(TARGET Boost::regex PROPERTY INTERFACE_LINK_LIBRARIES)
endif()
include(CheckBoostRegexIcu)
check_boost_regex()
if(BOOST_REGEX_HAS_ICU)
message(STATUS "boost regex has icu support")
list(APPEND MAPNIK_COMPILE_DEFS BOOST_REGEX_HAS_ICU)
endif()
mapnik_find_package(Freetype REQUIRED)
# try to find harfbuzz with the native configuration and fallback to our "own" FindHarfBuzz
mapnik_find_package(harfbuzz CONFIG QUIET)
if(harfbuzz_FOUND)
message(STATUS "Found harfbuzz native cmake")
list(APPEND MAPNIK_OPTIONAL_LIBS harfbuzz::harfbuzz)
else()
# Use pkg-config when harfbuzz is not found.
# It might be possible that in future version harfbuzz could only be found via pkg-config.
# harfbuzz related discussion: https://github.com/harfbuzz/harfbuzz/issues/2653
message(STATUS "harfbuzz not found via cmake. Searching via pkg-config...")
mapnik_pkg_check_modules(harfbuzz REQUIRED IMPORTED_TARGET harfbuzz>=${HARFBUZZ_MIN_VERSION})
list(APPEND MAPNIK_OPTIONAL_LIBS PkgConfig::harfbuzz)
endif()
if(USE_EXTERNAL_MAPBOX_GEOMETRY)
# this is used to provide a way to specify include dirs with CACHE VARIABLES
if(NOT MAPBOX_GEOMETRY_INCLUDE_DIRS)
message(STATUS "Searching for the include dir of mapbox/geometry.hpp")
find_path(MAPBOX_GEOMETRY_INCLUDE_DIRS "mapbox/geometry.hpp" REQUIRED)
endif()
else()
set(MAPBOX_GEOMETRY_INCLUDE_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/geometry/include>
$<INSTALL_INTERFACE:include>
)
endif()
if(NOT MAPBOX_GEOMETRY_INCLUDE_DIRS)
message(FATAL_ERROR "Set -DMAPBOX_GEOMETRY_INCLUDE_DIRS to the mapbox/geometry.hpp include dir")
endif()
if(USE_EXTERNAL_MAPBOX_POLYLABEL)
if(NOT MAPBOX_POLYLABEL_INCLUDE_DIRS)
message(STATUS "Searching for the include dir of mapbox/polylabel")
find_path(MAPBOX_POLYLABEL_INCLUDE_DIRS "mapbox/polylabel.hpp")
endif()
else()
set(MAPBOX_POLYLABEL_INCLUDE_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/polylabel/include>
$<INSTALL_INTERFACE:include>
)
endif()
if(NOT MAPBOX_POLYLABEL_INCLUDE_DIRS)
message(FATAL_ERROR "Set MAPBOX_POLYLABEL_INCLUDE_DIRS to the mapbox/geometry include dir")
endif()
if(USE_EXTERNAL_MAPBOX_PROTOZERO)
if(NOT MAPBOX_PROTOZERO_INCLUDE_DIRS)
message(STATUS "Searching for the include dir of mapbox/protozero")
find_path(MAPBOX_PROTOZERO_INCLUDE_DIRS "protozero/pbf_message.hpp")
endif()
else()
set(MAPBOX_PROTOZERO_INCLUDE_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/protozero/include>
$<INSTALL_INTERFACE:include>
)
endif()
if(NOT MAPBOX_PROTOZERO_INCLUDE_DIRS)
message(FATAL_ERROR "Set MAPBOX_PROTOZERO_INCLUDE_DIRS to the mapbox/protozero include dir")
endif()
if(USE_EXTERNAL_MAPBOX_VARIANT)
if(NOT MAPBOX_VARIANT_INCLUDE_DIRS)
message(STATUS "Searching for the include dir of mapbox/variant")
find_path(MAPBOX_VARIANT_INCLUDE_DIRS "mapbox/variant.hpp")
endif()
else()
set(MAPBOX_VARIANT_INCLUDE_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/variant/include>
$<INSTALL_INTERFACE:include>
)
endif()
if(NOT MAPBOX_VARIANT_INCLUDE_DIRS)
message(FATAL_ERROR "Set MAPBOX_VARIANT_INCLUDE_DIRS to the mapbox/variant include dir")
endif()
# (used by MapnikInstall.cmake. properties are needed since "set(...)" will be out of scope
set_property(GLOBAL PROPERTY TARGETS "")
set_property(GLOBAL PROPERTY PLUGINS "")
set_property(GLOBAL PROPERTY MAPNIK_UTILITIES "")
if(USE_GLIBC_WORKAROUND)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_ENABLE_GLIBC_WORKAROUND)
endif()
if(USE_BIGINT)
list(APPEND MAPNIK_COMPILE_DEFS BIGINT)
endif()
if(USE_BOOST_FILESYSTEM)
list(APPEND MAPNIK_COMPILE_DEFS USE_BOOST_FILESYSTEM)
list(APPEND MAPNIK_OPTIONAL_LIBS Boost::filesystem)
endif()
if(USE_MEMORY_MAPPED_FILE)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_MEMORY_MAPPED_FILE)
endif()
if(USE_NO_ATEXIT)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_NO_ATEXIT)
endif()
if(USE_NO_DLCLOSE)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_NO_DLCLOSE)
endif()
if(USE_DEBUG_OUTPUT)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_DEBUG)
endif()
if(USE_LOG)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_LOG MAPNIK_DEFAULT_LOG_SEVERITY=${USE_LOG_SEVERITY})
endif()
if(USE_STATS)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_STATS)
endif()
if(USE_LIBXML2)
mapnik_find_package(LibXml2 REQUIRED)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_LIBXML2)
list(APPEND MAPNIK_OPTIONAL_LIBS LibXml2::LibXml2)
endif()
if(USE_PNG)
mapnik_find_package(PNG REQUIRED)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_PNG)
list(APPEND MAPNIK_OPTIONAL_LIBS PNG::PNG)
endif()
if(USE_JPEG)
mapnik_find_package(JPEG REQUIRED)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_JPEG)
list(APPEND MAPNIK_OPTIONAL_LIBS JPEG::JPEG)
endif()
if(USE_TIFF)
mapnik_find_package(TIFF REQUIRED)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_TIFF)
list(APPEND MAPNIK_OPTIONAL_LIBS TIFF::TIFF)
endif()
if(USE_WEBP)
mapnik_pkg_check_modules(WebP REQUIRED IMPORTED_TARGET libwebp)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_WEBP)
list(APPEND MAPNIK_OPTIONAL_LIBS PkgConfig::WebP)
endif()
if(USE_CAIRO)
mapnik_pkg_check_modules(Cairo REQUIRED IMPORTED_TARGET cairo)
list(APPEND MAPNIK_COMPILE_DEFS HAVE_CAIRO)
list(APPEND MAPNIK_OPTIONAL_LIBS PkgConfig::Cairo)
endif()
if(USE_PROJ)
#https://proj.org/development/cmake.html
mapnik_find_package(PROJ QUIET)
# currently the cmake files are not installed, when installing proj via apt-get. So search via pkg-config
if(NOT PROJ_FOUND)
message(STATUS "PROJ not found via FindPROJ. Searching via pkg-config...")
mapnik_pkg_check_modules(PROJ REQUIRED IMPORTED_TARGET proj>=${PROJ_MIN_VERSION})
string(REGEX MATCH "([0-9]+)\.([0-9]+)\.([0-9]+)" _dummy "${PROJ_VERSION}")
set(PROJ_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PROJ_VERSION_MINOR "${CMAKE_MATCH_2}")
set(PROJ_VERSION_PATCH "${CMAKE_MATCH_3}")
list(APPEND MAPNIK_OPTIONAL_LIBS PkgConfig::PROJ)
else()
if(PROJ_VERSION VERSION_LESS PROJ_MIN_VERSION)
message(FATAL_ERROR "Proj needs to be at least version ${PROJ_MIN_VERSION}")
endif()
list(APPEND MAPNIK_OPTIONAL_LIBS ${PROJ_LIBRARIES})
list(APPEND MAPNIK_OPTIONAL_LIBS_INCLUDE $<BUILD_INTERFACE:${PROJ_INCLUDE_DIRS}>)
endif()
math(EXPR MAPNIK_PROJ_VERSION "${PROJ_VERSION_MAJOR}*10000 + ${PROJ_VERSION_MINOR}*100 + ${PROJ_VERSION_PATCH}" OUTPUT_FORMAT DECIMAL)
message(STATUS "Using mapnik PROJ version: ${MAPNIK_PROJ_VERSION}")
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_USE_PROJ MAPNIK_PROJ_VERSION=${MAPNIK_PROJ_VERSION})
endif()
if(USE_GRID_RENDERER)
list(APPEND MAPNIK_COMPILE_DEFS GRID_RENDERER)
endif()
if(USE_SVG_RENDERER)
list(APPEND MAPNIK_COMPILE_DEFS SVG_RENDERER)
endif()
if(NOT WIN32)
message(STATUS "Compiling with -DMAPNIK_HAS_DLCFN")
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_HAS_DLCFN)
list(APPEND MAPNIK_OPTIONAL_LIBS ${CMAKE_DL_LIBS})
endif()
if(NOT BUILD_SHARED_PLUGINS)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_STATIC_PLUGINS)
endif()
# when building static, this have to be public so that all depending libs know about
if(NOT BUILD_SHARED_LIBS)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_STATIC_DEFINE)
endif()
if(DISABLE_MAPNIK_AUTOSETUP)
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_DISABLE_AUTOSETUP)
endif()
# force utf-8 source code processing
# see https://docs.microsoft.com/de-de/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170
add_compile_options(
"$<$<CXX_COMPILER_ID:MSVC>:/utf-8>"
"$<$<CXX_COMPILER_ID:MSVC>:/EHsc>"
)
add_library(core INTERFACE)
add_library(mapnik::core ALIAS core)
target_include_directories(core INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${MAPBOX_GEOMETRY_INCLUDE_DIRS}>
$<BUILD_INTERFACE:${MAPBOX_POLYLABEL_INCLUDE_DIRS}>
$<BUILD_INTERFACE:${MAPBOX_VARIANT_INCLUDE_DIRS}>
$<BUILD_INTERFACE:${MAPBOX_PROTOZERO_INCLUDE_DIRS}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/deps>
$<INSTALL_INTERFACE:include>
${MAPNIK_OPTIONAL_LIBS_INCLUDE}
)
target_link_libraries(core INTERFACE
Threads::Threads
ICU::uc
ICU::data
ICU::i18n
Boost::headers
Boost::regex
Freetype::Freetype
${MAPNIK_OPTIONAL_LIBS}
)
target_compile_definitions(core INTERFACE ${MAPNIK_COMPILE_DEFS})
mapnik_install(core)
###
# forward declaring libraries to consume them when building static plugins (circle deps between mapnik <-> plugin_target)
add_library(mapnik "")
add_library(mapnik::mapnik ALIAS mapnik)
add_library(wkt STATIC "")
add_library(mapnik::wkt ALIAS wkt)
add_library(json STATIC "")
add_library(mapnik::json ALIAS json)
# end forward declaration
###
add_subdirectory(deps)
add_subdirectory(plugins)
add_subdirectory(src)
add_subdirectory(utils)
add_subdirectory(demo)
if(BUILD_BENCHMARK)
add_subdirectory(benchmark)
endif()
if(BUILD_TESTING)
add_subdirectory(test)
endif()
file(COPY fonts DESTINATION "${MAPNIK_OUTPUT_DIR}")
feature_summary(FILENAME "${CMAKE_CURRENT_BINARY_DIR}/packages.log" WHAT PACKAGES_FOUND PACKAGES_NOT_FOUND INCLUDE_QUIET_PACKAGES)
# start package mapnik
include(MapnikExport)
include(MapnikExportPkgConfig)
install(DIRECTORY include/mapnik/ DESTINATION "${MAPNIK_INCLUDE_DIR}/mapnik")
install(DIRECTORY deps/agg/include/ DESTINATION "${MAPNIK_INCLUDE_DIR}/mapnik/agg")
install(DIRECTORY deps/mapnik DESTINATION "${MAPNIK_INCLUDE_DIR}")
file(GLOB TTF_FONT_FILES "fonts/*/*/*.ttf")
install(FILES ${TTF_FONT_FILES} DESTINATION "${FONTS_INSTALL_DIR}")
if(NOT USE_EXTERNAL_MAPBOX_GEOMETRY)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/geometry/include/" DESTINATION "${MAPNIK_INCLUDE_DIR}")
endif()
if(NOT USE_EXTERNAL_MAPBOX_POLYLABEL)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/polylabel/include/" DESTINATION "${MAPNIK_INCLUDE_DIR}")
endif()
if(NOT USE_EXTERNAL_MAPBOX_PROTOZERO)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/protozero/include/" DESTINATION "${MAPNIK_INCLUDE_DIR}")
endif()
if(NOT USE_EXTERNAL_MAPBOX_VARIANT)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/deps/mapbox/variant/include/" DESTINATION "${MAPNIK_INCLUDE_DIR}")
endif()
mapnik_install_targets()
include(pack)

350
CMakePresets.json Normal file
View file

@ -0,0 +1,350 @@
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 25,
"patch": 0
},
"configurePresets": [
{
"name": "use-ninja",
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "default-build-dir",
"hidden": true,
"binaryDir": "${sourceDir}/build"
},
{
"name": "debug-build",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"USE_DEBUG_OUTPUT": "ON",
"USE_LOG": "ON",
"USE_LOG_SEVERITY": "0"
}
},
{
"name": "release-with-debug-build",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"USE_DEBUG_OUTPUT": "OFF",
"USE_LOG": "OFF"
}
},
{
"name": "release-build",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"USE_DEBUG_OUTPUT": "OFF",
"USE_LOG": "OFF"
}
},
{
"name": "use-clang",
"hidden": true,
"inherits": [
"default-build-dir",
"use-ninja"
],
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS": "-stdlib=libc++",
"CMAKE_EXE_LINKER_FLAGS": "-stdlib=libc++",
"CMAKE_SHARED_LINKER_FLAGS": "-stdlib=libc++"
}
},
{
"name": "use-gcc",
"hidden": true,
"inherits": [
"default-build-dir",
"use-ninja"
],
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++"
}
},
{
"name": "use-msvc-cl",
"hidden": true,
"inherits": [
"default-build-dir",
"use-ninja"
],
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl"
}
},
{
"name": "use-msvc-clang-cl",
"hidden": true,
"inherits": [
"default-build-dir",
"use-ninja"
],
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
}
},
{
"name": "linux-clang-debug",
"displayName": "Linux clang debug",
"inherits": [
"use-clang",
"debug-build"
]
},
{
"name": "linux-clang-release",
"displayName": "Linux clang release",
"inherits": [
"use-clang",
"release-build"
]
},
{
"name": "linux-gcc-debug",
"displayName": "Linux gcc debug",
"inherits": [
"use-gcc",
"debug-build"
]
},
{
"name": "linux-gcc-release",
"displayName": "Linux gcc release",
"inherits": [
"use-gcc",
"release-build"
]
},
{
"name": "windows-arch-x64",
"hidden": true,
"architecture": {
"value": "x64",
"strategy": "external"
},
"toolset": {
"value": "host=x64",
"strategy": "external"
}
},
{
"name": "windows-default",
"displayName": "Windows x64 Debug",
"hidden": true,
"inherits": [
"use-msvc-cl",
"windows-arch-x64"
],
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [
"Windows"
]
}
}
},
{
"name": "windows-debug",
"displayName": "Windows x64 Debug",
"inherits": [
"windows-default",
"debug-build"
]
},
{
"name": "windows-release",
"displayName": "Windows x64 Release",
"inherits": [
"windows-default",
"release-build"
]
},
{
"name": "ci-options",
"hidden": true,
"cacheVariables": {
"BUILD_TESTING": "ON",
"BUILD_DEMO_VIEWER": "OFF",
"DISABLE_MAPNIK_AUTOSETUP": "ON"
},
"toolchainFile": "vcpkg/scripts/buildsystems/vcpkg.cmake"
},
{
"name": "windows-ci",
"description": "used by the ci pipeline",
"inherits": [
"windows-release",
"ci-options"
],
"cacheVariables": {
"INSTALL_DEPENDENCIES": "ON",
"ADDITIONAL_LIBARIES_PATHS": "${sourceDir}/build/vcpkg_installed/x64-windows/bin"
},
"environment": {
"PROJ_LIB": "${sourceDir}/build/vcpkg_installed/x64-windows/share/proj"
}
},
{
"name": "linux-ci",
"description": "used by the ci pipeline",
"inherits": [
"release-with-debug-build",
"use-gcc",
"ci-options"
],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "--coverage"
},
"environment": {
"PROJ_LIB": "${sourceDir}/build/vcpkg_installed/x64-linux/share/proj"
}
},
{
"name": "linux-ci-release",
"description": "used by the ci pipeline for releasing",
"inherits": [
"release-build",
"linux-gcc-release"
],
"cacheVariables": {
"BUILD_TESTING": "OFF",
"BUILD_DEMO_VIEWER": "OFF",
"USE_MEMORY_MAPPED_FILE": "ON"
}
},
{
"name": "macos-ci-arm64",
"description": "used by the ci pipeline",
"inherits": [
"use-ninja",
"release-with-debug-build",
"default-build-dir",
"ci-options"
],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fprofile-arcs -ftest-coverage"
},
"environment": {
"PROJ_LIB": "${sourceDir}/build/vcpkg_installed/arm64-osx/share/proj"
}
},
{
"name": "macos-ci-x64",
"description": "used by the ci pipeline",
"inherits": [
"use-ninja",
"release-with-debug-build",
"default-build-dir",
"ci-options"
],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fprofile-arcs -ftest-coverage"
},
"environment": {
"PROJ_LIB": "${sourceDir}/build/vcpkg_installed/x64-osx/share/proj"
}
}
],
"buildPresets": [
{
"name": "windows-debug",
"configurePreset": "windows-debug"
},
{
"name": "windows-release",
"configurePreset": "windows-release"
},
{
"name": "linux-clang-debug",
"configurePreset": "linux-clang-debug"
},
{
"name": "linux-clang-release",
"configurePreset": "linux-clang-release"
},
{
"name": "linux-gcc-debug",
"configurePreset": "linux-gcc-debug"
},
{
"name": "linux-gcc-release",
"configurePreset": "linux-gcc-release"
},
{
"name": "windows-ci",
"configurePreset": "windows-ci"
},
{
"name": "linux-ci",
"configurePreset": "linux-ci"
},
{
"name": "linux-ci-release",
"configurePreset": "linux-ci-release"
},
{
"name": "macos-ci-arm64",
"configurePreset": "macos-ci-arm64"
},
{
"name": "macos-ci-x64",
"configurePreset": "macos-ci-x64"
}
],
"testPresets": [
{
"name": "test-default",
"hidden": true,
"output": {
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": false
}
},
{
"name": "windows-ci",
"configurePreset": "windows-ci",
"inherits": [
"test-default"
]
},
{
"name": "linux-ci",
"configurePreset": "linux-ci",
"inherits": [
"test-default"
]
},
{
"name": "macos-ci-arm64",
"configurePreset": "macos-ci-arm64",
"inherits": [
"test-default"
]
},
{
"name": "macos-ci-x64",
"configurePreset": "macos-ci-x64",
"inherits": [
"test-default"
]
}
]
}

22
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,22 @@
# Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information, such as physical or electronic addresses, without explicit permission
* Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)

View file

@ -1,43 +1,64 @@
# Mapnik Installation
Mapnik is cross platform and runs on Linux, Mac OSX, Solaris, *BSD, and Windows.
Mapnik runs on Linux, OS X, Windows, and BSD systems.
## Package managers
### vcpkg
To install mapnik with vcpkg type `vcpkg install mapnik`. It will install a minimal version of mapnik and all the needed dependencies.
To install more features, type `vcpkg search mapnik` to see all available features.
## Source build
First clone mapnik from github and initialize submodules
```bash
git clone https://github.com/mapnik/mapnik.git
cd mapnik
git submodule update --init
```
To configure and build Mapnik do:
```bash
$ ./configure
$ make
./configure
make
```
To trigger parallel compilation you can pass a JOBS value to make:
```bash
$ JOBS=4 make
JOBS=4 make
```
(Note that compiling Mapnik needs several GBytes of RAM. If you use parallel compiliation it needs more.)
Mapnik needs > 2 GB of RAM to build. If you use parallel compilation it needs more.
If you are on a system with less memory make sure you only build with one JOB:
```bash
JOBS=1 make
```
To use a Python interpreter that is not named `python` for your build, do
something like the following instead:
```bash
$ PYTHON=python2 ./configure
$ make PYTHON=python2
$ PYTHON=python3 ./configure
$ make PYTHON=python3
```
NOTE: the above will not work on windows, rather see https://github.com/mapnik/mapnik/wiki/WindowsInstallation
Then to run the tests locally (without needing to install):
make test-local
make test
Install like:
sudo make install
make install
If you need to uninstall do:
sudo make uninstall
make uninstall
For more details see the `Building` Section below.
@ -50,19 +71,18 @@ For troubleshooting help see https://github.com/mapnik/mapnik/wiki/InstallationT
Build system dependencies are:
* C++ compiler supporting `-std=c++11` (like >= g++ 4.8 or >= clang++ 3.4)
* >= 2 GB RAM (> 5 GB for g++)
* Python 2.4-2.7
* Scons (a copy is bundled)
* C++ compiler supporting `-std=c++17` (like >= g++ 9 or >= clang++ 5)
* \>= 2 GB RAM (> 5 GB for g++)
* Python 3
* Scons (a copy is bundled) or CMake >= 3.15 see [docs/cmake-usage.md](./docs/cmake-usage.md)
Mapnik Core depends on:
* Boost
- >= 1.47 is required.
- \>= 1.73 is required
- These libraries are used:
- filesystem
- system
- thread (if mapnik threadsafe support is required, default on)
- regex (optionally built with icu regex support)
- program_options (optionally for mapnik command line programs)
* libicuuc >= 4.0 (ideally >= 4.2) - International Components for Unicode
@ -77,29 +97,17 @@ Mapnik Core optionally depends on:
* libjpeg - JPEG graphics (Default enabled, if found)
* libtiff - TIFF graphics (Default enabled, if found)
* libwebp - WEBP graphics (Default enabled, if found)
* libproj - PROJ.4 projection library (Default enabled, if found)
Mapnik Python bindings depend on:
* Python 2.5-2.7 or >= 3.2
* Boost python
* simplejson module if using <= 2.5
Note: Python 3.x is supported, see: https://github.com/mapnik/mapnik/wiki/Python3k
* libproj >= 7.2.0 - PROJ projection library (Default enabled, if found)
Additional optional dependencies:
* Cairo >= 1.6.0 - Graphics library for output formats like PDF, PS, and SVG
- pkg-config - Required for building with cairo support
- pycairo - Python bindings for cairo
* PostgreSQL (for PostGIS plugin support)
- libpq - PostreSQL libraries
- pg_config - PostgreSQL installation capabilities
* libgdal - GDAL/OGR input (For gdal and ogr plugin support)
* libgdal - GDAL/OGR input (For gdal and ogr plugin support) (>= GDAL 2.0.2 for thread safety - https://github.com/mapnik/mapnik/issues/3339)
* libsqlite3 - SQLite input (needs RTree support builtin) (sqlite plugin support)
* libocci - Oracle input plugin support
* libcurl - OSM input plugin support
* librasterlite - Rasterlite input plugin support
Instructions for installing many of these dependencies on
various platforms can be found at the Mapnik Wiki:
@ -160,17 +168,13 @@ For more details on usage see:
You can run the Mapnik tests locally (without installing) like:
make test-local # see the Makefile for how this works
make test
Or you can install and test like:
## Python Bindings
make install && make test
Many of the tests are written in python and you can run them individually like:
make install
python tests/python_tests/shapefile_test.py
Python bindings are not included by default. You'll need to add those separately.
* Build from source: https://github.com/mapnik/python-mapnik
## Learning Mapnik
@ -187,7 +191,7 @@ If you need help or want to participate starting points include:
### Cartographers
TileMill, which uses Mapnik internally, offers great step by step tutorials for
learning advanced map styling: http://mapbox.com/tilemill/docs/crashcourse/introduction/
learning advanced map styling: https://tilemill-project.github.io/tilemill/docs/crashcourse/introduction/
### Programmers
@ -195,6 +199,6 @@ Mapnik is great for building your own mapping applications. Visit
https://github.com/mapnik/mapnik/wiki/LearningMapnik for basic
tutorials on how to programmatically use Mapnik.
### Contributers
### Contributors
Read docs/contributing.markdown for resources for getting involved with Mapnik development.
Read [docs/contributing.md](docs/contributing.md) for resources for getting involved with Mapnik development.

View file

@ -1,18 +1,50 @@
OS := $(shell uname -s)
PYTHON = python
ifeq ($(JOBS),)
JOBS:=1
endif
ifeq ($(HEAVY_JOBS),)
HEAVY_JOBS:=1
endif
all: mapnik
install:
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
mapnik:
release:
./scripts/publish_release.sh
test-release:
./scripts/test_release.sh
src/json/libmapnik-json.a:
# we first build memory intensive files with -j$(HEAVY_JOBS)
$(PYTHON) scons/scons.py -j$(HEAVY_JOBS) \
--config=cache --implicit-cache --max-drift=1 \
src/renderer_common/render_group_symbolizer.os \
src/renderer_common/render_markers_symbolizer.os \
src/renderer_common/render_thunk_extractor.os \
src/json/libmapnik-json.a \
src/wkt/libmapnik-wkt.a \
src/css/css_grammar_x3.os \
src/css/css_color_grammar_x3.os \
src/expression_grammar_x3.os \
src/transform_expression_grammar_x3.os \
src/image_filter_grammar_x3.os \
src/marker_helpers.os \
src/svg/svg_transform_parser.os \
src/agg/process_line_symbolizer.os \
plugins/input/geojson/geojson_datasource.os \
src/svg/svg_path_parser.os \
src/svg/svg_parser.os \
src/svg/svg_points_parser.os \
src/svg/svg_transform_parser.os \
mapnik: src/json/libmapnik-json.a
# then install the rest with -j$(JOBS)
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1
clean:
@ -23,11 +55,12 @@ clean:
@if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi
@find ./ -name "*.pyc" -exec rm {} \;
@find ./ -name "*.os" -exec rm {} \;
@find ./ -name "*.dylib" -exec rm {} \;
@find ./ -name "*.so" -exec rm {} \;
@find ./src/ -name "*.dylib" -exec rm {} \;
@find ./src/ -name "*.so" -exec rm {} \;
@find ./ -name "*.o" -exec rm {} \;
@find ./ -name "*.pyc" -exec rm {} \;
@if test -e "bindings/python/mapnik/paths.py"; then rm "bindings/python/mapnik/paths.py"; fi
@find ./src/ -name "*.a" -exec rm {} \;
@find ./ -name "*.gcda" -exec rm {} \;
@find ./ -name "*.gcno" -exec rm {} \;
distclean:
if test -e "config.py"; then mv "config.py" "config.py.backup"; fi
@ -40,22 +73,16 @@ rebuild:
uninstall:
@$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 uninstall
test:
./run_tests
test/data-visual:
./scripts/ensure_test_data.sh
test-local:
make test
test/data:
./scripts/ensure_test_data.sh
test-visual:
bash -c "source ./localize.sh && python tests/visual_tests/test.py -q"
test: ./test/data test/data-visual
@./test/run
test-python:
bash -c "source ./localize.sh && python tests/run_tests.py -q"
test-cpp:
./tests/cpp_tests/run
check: test-local
check: test
bench:
./benchmark/run
@ -63,16 +90,16 @@ bench:
demo:
cd demo/c++; ./rundemo `mapnik-config --prefix`
pep8:
# https://gist.github.com/1903033
# gsed on osx
@pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$//'
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}'
# note: pass --gen-suppressions=yes to create new suppression entries
grind:
@for FILE in tests/cpp_tests/*-bin; do \
valgrind --leak-check=full --log-fd=1 $${FILE} | grep definitely; \
@source localize.sh && \
valgrind --suppressions=./test/unit/valgrind.supp --leak-check=full --log-fd=1 ./test/visual/run | grep definitely;
@source localize.sh && \
for FILE in test/standalone/*-bin; do \
valgrind --suppressions=./test/unit/valgrind.supp --leak-check=full --log-fd=1 $${FILE} | grep definitely; \
done
@source localize.sh && \
valgrind --suppressions=./test/unit/valgrind.supp --leak-check=full --log-fd=1 ./test/unit/run | grep definitely;
render:
@for FILE in tests/data/good_maps/*xml; do \

View file

@ -8,22 +8,23 @@ _/ _/ _/_/_/ _/_/_/ _/ _/ _/ _/ _/
_/
```
[![Build Status](https://secure.travis-ci.org/mapnik/mapnik.png)](http://travis-ci.org/mapnik/mapnik)
[![TravisCI](https://api.travis-ci.com/mapnik/mapnik.svg?branch=master)](http://travis-ci.com/mapnik/mapnik)
[![codecov](https://codecov.io/gh/mapnik/mapnik/branch/master/graph/badge.svg)](https://codecov.io/gh/mapnik/mapnik)
# What is Mapnik?
Mapnik is an open source toolkit for developing mapping applications. At the core is a C++ shared library providing algorithms and patterns for spatial data access and visualization. High-level bindings for JavaScript, Python, and Ruby facilitate rapid application development in a variety of environments.
# Overview
Mapnik is an open source toolkit for developing mapping applications. At the core is a C++ shared library providing algorithms and patterns for spatial data access and visualization.
Mapnik is basically a collection of geographic objects like maps, layers, datasources, features, and geometries. The library doesn't rely on any OS specific "windowing systems" and it can be deployed to any server environment. It is intended to play fair in a multi-threaded environment and is aimed primarily, but not exclusively, at web-based development.
For further information see [http://mapnik.org](http://mapnik.org) and also our [wiki documentation](https://github.com/mapnik/mapnik/wiki) here on GitHub.
For further information see [http://mapnik.org](http://mapnik.org) and also our [wiki documentation](https://github.com/mapnik/mapnik/wiki).
# Installation
See [INSTALL.md](https://github.com/mapnik/mapnik/blob/master/INSTALL.md) for installation instructions and the [Install](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) page on the wiki for guides.
See [INSTALL.md](INSTALL.md) for installation instructions and the [Install](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) page on the wiki for guides.
# Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](https://github.com/mapnik/mapnik/blob/master/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
# License
Mapnik software is free and is released under the LGPL ([GNU Lesser General Public License](http://www.gnu.org/licenses/lgpl.html_)). Please see [COPYING](https://github.com/mapnik/mapnik/blob/master/COPYING) for more information.
Mapnik software is free and is released under the LGPL v2.1 ([GNU Lesser General Public License, version 2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)). Please see [COPYING](https://github.com/mapnik/mapnik/blob/master/COPYING) for more information.

1222
SConstruct

File diff suppressed because it is too large Load diff

52
benchmark/CMakeLists.txt Normal file
View file

@ -0,0 +1,52 @@
project(mapnik-benchmark)
set(BENCHMARK_SRCS
src/normalize_angle.cpp
src/test_array_allocation.cpp
src/test_expression_parse.cpp
src/test_face_ptr_creation.cpp
src/test_font_registration.cpp
src/test_getline.cpp
src/test_marker_cache.cpp
src/test_noop_rendering.cpp
src/test_numeric_cast_vs_static_cast.cpp
src/test_offset_converter.cpp
src/test_png_encoding1.cpp
src/test_png_encoding2.cpp
src/test_polygon_clipping_rendering.cpp
src/test_polygon_clipping.cpp
src/test_proj_transform1.cpp
src/test_quad_tree.cpp
src/test_rendering_shared_map.cpp
src/test_rendering.cpp
src/test_to_bool.cpp
src/test_to_double.cpp
src/test_to_int.cpp
src/test_to_string1.cpp
src/test_to_string2.cpp
src/test_utf_encoding.cpp
)
function(mapnik_create_benchmark)
get_filename_component(BENCHNAME ${ARGV0} NAME_WE)
set(TARGET_NAME "mapnik-benchmark-${BENCHNAME}")
add_executable(${TARGET_NAME} ${ARGV0})
target_include_directories(${TARGET_NAME} PRIVATE include)
target_link_libraries(${TARGET_NAME} PRIVATE
mapnik::agg
mapnik::mapnik
ICU::data ICU::i18n ICU::uc # needed for the static build (TODO: why isn't this correctly propagated from mapnik::mapnik?)
)
set_target_properties(${TARGET_NAME} PROPERTIES
OUTPUT_NAME "${BENCHNAME}"
)
endfunction()
foreach(benchmark ${BENCHMARK_SRCS})
mapnik_create_benchmark(${benchmark})
endforeach()
file(COPY data DESTINATION "${MAPNIK_OUTPUT_DIR}/benchmark")
file(COPY run_benchmarks
DESTINATION "${MAPNIK_OUTPUT_DIR}"
FILE_PERMISSIONS OWNER_READ OWNER_EXECUTE OWNER_WRITE GROUP_WRITE GROUP_READ GROUP_EXECUTE WORLD_READ
)

View file

@ -1,129 +0,0 @@
#ifndef __MAPNIK_BENCH_FRAMEWORK_HPP__
#define __MAPNIK_BENCH_FRAMEWORK_HPP__
// mapnik
#include <mapnik/params.hpp>
#include <mapnik/value_types.hpp>
// stl
#include <chrono>
#include <iomanip>
#include <iostream>
#include <set>
#include <sstream>
#include <thread>
#include <vector>
namespace benchmark {
class test_case
{
protected:
mapnik::parameters params_;
std::size_t threads_;
std::size_t iterations_;
public:
test_case(mapnik::parameters const& params)
: params_(params),
threads_(*params.get<mapnik::value_integer>("threads",0)),
iterations_(*params.get<mapnik::value_integer>("iterations",0))
{}
std::size_t threads() const
{
return threads_;
}
std::size_t iterations() const
{
return iterations_;
}
virtual bool validate() const = 0;
virtual void operator()() const = 0;
virtual ~test_case() {}
};
void handle_args(int argc, char** argv, mapnik::parameters & params)
{
if (argc > 0) {
for (int i=1;i<argc;++i) {
std::string opt(argv[i]);
// parse --foo bar
if (!opt.empty() && (opt.find("--") != 0)) {
std::string key = std::string(argv[i-1]);
if (!key.empty() && (key.find("--") == 0)) {
key = key.substr(key.find_first_not_of("-"));
params[key] = opt;
}
}
}
}
}
#define BENCHMARK(test_class,name) \
int main(int argc, char** argv) \
{ \
try \
{ \
mapnik::parameters params; \
benchmark::handle_args(argc,argv,params); \
test_class test_runner(params); \
return run(test_runner,name); \
} \
catch (std::exception const& ex) \
{ \
std::clog << ex.what() << "\n"; \
return -1; \
} \
} \
template <typename T>
int run(T const& test_runner, std::string const& name)
{
try
{
if (!test_runner.validate())
{
std::clog << "test did not validate: " << name << "\n";
return -1;
}
std::chrono::high_resolution_clock::time_point start;
std::chrono::high_resolution_clock::duration elapsed;
std::stringstream s;
s << name << ":"
<< std::setw(45 - (int)s.tellp()) << std::right
<< " t:" << test_runner.threads()
<< " i:" << test_runner.iterations();
if (test_runner.threads() > 0)
{
using thread_group = std::vector<std::unique_ptr<std::thread> >;
using value_type = thread_group::value_type;
thread_group tg;
for (std::size_t i=0;i<test_runner.threads();++i)
{
tg.emplace_back(new std::thread(test_runner));
}
start = std::chrono::high_resolution_clock::now();
std::for_each(tg.begin(), tg.end(), [](value_type & t) {if (t->joinable()) t->join();});
elapsed = std::chrono::high_resolution_clock::now() - start;
}
else
{
start = std::chrono::high_resolution_clock::now();
test_runner();
elapsed = std::chrono::high_resolution_clock::now() - start;
}
s << std::setw(65 - (int)s.tellp()) << std::right
<< std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() << " milliseconds\n";
std::clog << s.str();
return 0;
}
catch (std::exception const& ex)
{
std::clog << "test runner did not complete: " << ex.what() << "\n";
return -1;
}
return 0;
}
}
#endif // __MAPNIK_BENCH_FRAMEWORK_HPP__

View file

@ -8,6 +8,8 @@ test_env = env.Clone()
test_env['LIBS'] = [env['MAPNIK_NAME']]
test_env.AppendUnique(LIBS=copy(env['LIBMAPNIK_LIBS']))
test_env.AppendUnique(LIBS='mapnik-wkt')
test_env.AppendUnique(LIBS='sqlite3')
if env['PLATFORM'] == 'Linux':
test_env.AppendUnique(LIBS='dl')
test_env.AppendUnique(LIBS='rt')
@ -17,33 +19,19 @@ test_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
if test_env['HAS_CAIRO']:
test_env.PrependUnique(CPPPATH=test_env['CAIRO_CPPPATHS'])
test_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
test_env.PrependUnique(CPPPATH='include', delete_existing=True)
test_env['LINKFLAGS'] = copy(test_env['LIBMAPNIK_LINKFLAGS'])
if env['PLATFORM'] == 'Darwin':
test_env.Append(LINKFLAGS='-F/ -framework CoreFoundation')
test_env_local = test_env.Clone()
#benchmarks = glob.glob('test*cpp')
benchmarks = [
#"test_array_allocation.cpp",
#"test_png_encoding1.cpp",
#"test_png_encoding2.cpp",
#"test_to_string1.cpp",
#"test_to_string2.cpp",
#"test_to_bool.cpp",
#"test_to_double.cpp",
#"test_to_int.cpp",
#"test_utf_encoding.cpp"
#"test_polygon_clipping.cpp",
#"test_polygon_clipping_rendering.cpp",
"test_proj_transform1.cpp",
"test_expression_parse.cpp",
"test_face_ptr_creation.cpp",
"test_font_registration.cpp",
"test_rendering.cpp",
]
for cpp_test in benchmarks:
test_program = test_env_local.Program('out/'+cpp_test.replace('.cpp',''), source=[cpp_test])
benchmarks = glob.glob("src/*.cpp")
for src in benchmarks:
name, ext = os.path.splitext(os.path.basename(src))
out = os.path.join("out", name)
test_program = test_env_local.Program(out, source=[src])
if 'install' in COMMAND_LINE_TARGETS:
env.Alias('install',test_program)
#Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))

View file

@ -1,51 +0,0 @@
#ifndef __MAPNIK_COMPARE_IMAGES_HPP__
#define __MAPNIK_COMPARE_IMAGES_HPP__
#include <mapnik/graphics.hpp>
#include <mapnik/image_data.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/image_reader.hpp>
using namespace mapnik;
namespace benchmark {
bool compare_images(std::string const& src_fn,std::string const& dest_fn)
{
std::unique_ptr<mapnik::image_reader> reader1(mapnik::get_image_reader(dest_fn,"png"));
if (!reader1.get())
{
throw mapnik::image_reader_exception("Failed to load: " + dest_fn);
}
std::shared_ptr<image_32> image_ptr1 = std::make_shared<image_32>(reader1->width(),reader1->height());
reader1->read(0,0,image_ptr1->data());
std::unique_ptr<mapnik::image_reader> reader2(mapnik::get_image_reader(src_fn,"png"));
if (!reader2.get())
{
throw mapnik::image_reader_exception("Failed to load: " + src_fn);
}
std::shared_ptr<image_32> image_ptr2 = std::make_shared<image_32>(reader2->width(),reader2->height());
reader2->read(0,0,image_ptr2->data());
image_data_32 const& dest = image_ptr1->data();
image_data_32 const& src = image_ptr2->data();
unsigned int width = src.width();
unsigned int height = src.height();
if ((width != dest.width()) || height != dest.height()) return false;
for (unsigned int y = 0; y < height; ++y)
{
const unsigned int* row_from = src.getRow(y);
const unsigned int* row_to = dest.getRow(y);
for (unsigned int x = 0; x < width; ++x)
{
if (row_from[x] != row_to[x]) return false;
}
}
return true;
}
}
#endif // __MAPNIK_COMPARE_IMAGES_HPP__

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map
srs="epsg:4326"
background-color="#dfd8c9">
<Style name="style">
<Rule>
<RasterSymbolizer />
</Rule>
</Style>
<Layer name="layer"
srs="epsg:4326">
<StyleName>style</StyleName>
<Datasource>
<Parameter name="file">./valid.geotiff.tif</Parameter>
<Parameter name="type">gdal</Parameter>
</Datasource>
</Layer>
</Map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View file

@ -7,7 +7,7 @@
<Layer name="world" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
<StyleName>style</StyleName>
<Datasource>
<Parameter name="file">../../tests/data/shp/world_merc.shp</Parameter>
<Parameter name="file">../../test/data/shp/world_merc.shp</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>

View file

@ -7,7 +7,7 @@
<Layer name="world" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
<StyleName>style</StyleName>
<Datasource>
<Parameter name="file">../../tests/data/shp/world_merc.shp</Parameter>
<Parameter name="file">../../test/data/shp/world_merc.shp</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map
srs="epsg:4326"
background-color="#dfd8c9">
<Style name="style">
<Rule>
<RasterSymbolizer />
</Rule>
</Style>
<Layer name="layer"
srs="epsg:4326">
<StyleName>style</StyleName>
<Datasource>
<Parameter name="file">./valid.geotiff.tif</Parameter>
<Parameter name="type">raster</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -2,7 +2,7 @@
<!DOCTYPE Map[]>
<Map
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
font-directory="../../fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSans.ttf"
font-directory="../../fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf"
background-color="#dfd8c9">
<Style name="marking" filter-mode="first">
@ -76,12 +76,12 @@
<StyleName>labels</StyleName>
<Datasource>
<!--
ogr2ogr -f CSV tests/visual_tests/data/roads.csv -lco GEOMETRY=AS_WKT tests/visual_tests/data/grouped-rendering.sqlite roads -sql "SELECT fid,geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z FROM roads ORDER BY z_order"
-->
ogr2ogr -f CSV tests/visual_tests/data/roads.csv -lco GEOMETRY=AS_WKT tests/visual_tests/data/grouped-rendering.sqlite roads -sql "SELECT fid,geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z FROM roads ORDER BY z_order"
-->
<Parameter name="file">./roads.csv</Parameter>
<Parameter name="extent">1477001.12245,6890242.37746,1480004.49012,6892244.62256</Parameter>
<Parameter name="type">csv</Parameter>
</Datasource>
</Layer>
</Map>
</Map>

Binary file not shown.

View file

@ -0,0 +1,302 @@
#ifndef MAPNIK_BENCH_FRAMEWORK_HPP
#define MAPNIK_BENCH_FRAMEWORK_HPP
// mapnik
#include <mapnik/mapnik.hpp>
#include <mapnik/debug.hpp>
#include <mapnik/params.hpp>
#include <mapnik/value/types.hpp>
#include <mapnik/safe_cast.hpp>
#include "../test/cleanup.hpp"
// stl
#include <chrono>
#include <cmath> // log10, round
#include <cstdio> // snprintf
#include <iomanip>
#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
namespace benchmark {
template<typename T>
using milliseconds = std::chrono::duration<T, std::milli>;
template<typename T>
using seconds = std::chrono::duration<T>;
class test_case
{
protected:
mapnik::parameters params_;
std::size_t threads_;
std::size_t iterations_;
public:
test_case(mapnik::parameters const& params)
: params_(params)
, threads_(mapnik::safe_cast<std::size_t>(*params.get<mapnik::value_integer>("threads", 0)))
, iterations_(mapnik::safe_cast<std::size_t>(*params.get<mapnik::value_integer>("iterations", 0)))
{}
std::size_t threads() const { return threads_; }
std::size_t iterations() const { return iterations_; }
mapnik::parameters const& params() const { return params_; }
virtual bool validate() const = 0;
virtual bool operator()() const = 0;
};
// gathers --long-option values in 'params';
// returns the index of the first non-option argument,
// or negated index of an ill-formed option argument
inline int parse_args(int argc, char** argv, mapnik::parameters& params)
{
for (int i = 1; i < argc; ++i)
{
const char* opt = argv[i];
if (opt[0] != '-')
{
// non-option argument, return its index
return i;
}
if (opt[1] != '-')
{
// we only accept --long-options, but instead of throwing,
// just issue a warning and let the caller decide what to do
std::clog << argv[0] << ": invalid option '" << opt << "'\n";
return -i; // negative means ill-formed option #i
}
if (opt[2] == '\0')
{
// option-list terminator '--'
return i + 1;
}
// take option name without the leading '--'
std::string key(opt + 2);
size_t eq = key.find('=');
if (eq != std::string::npos)
{
// one-argument form '--foo=bar'
params[key.substr(0, eq)] = key.substr(eq + 1);
}
else if (i + 1 < argc)
{
// two-argument form '--foo' 'bar'
params[key] = std::string(argv[++i]);
}
else
{
// missing second argument
std::clog << argv[0] << ": missing option '" << opt << "' value\n";
return -i; // negative means ill-formed option #i
}
}
return argc; // there were no non-option arguments
}
inline void handle_common_args(mapnik::parameters const& params)
{
if (auto severity = params.get<std::string>("log"))
{
if (*severity == "debug")
mapnik::logger::set_severity(mapnik::logger::debug);
else if (*severity == "warn")
mapnik::logger::set_severity(mapnik::logger::warn);
else if (*severity == "error")
mapnik::logger::set_severity(mapnik::logger::error);
else if (*severity == "none")
mapnik::logger::set_severity(mapnik::logger::none);
else
std::clog << "ignoring option --log='" << *severity << "' (allowed values are: debug, warn, error, none)\n";
}
}
inline int handle_args(int argc, char** argv, mapnik::parameters& params)
{
int res = parse_args(argc, argv, params);
handle_common_args(params);
return res;
}
#define BENCHMARK(test_class, name) \
int main(int argc, char** argv) \
{ \
mapnik::setup(); \
try \
{ \
mapnik::parameters params; \
benchmark::handle_args(argc, argv, params); \
test_class test_runner(params); \
auto result = run(test_runner, name); \
testing::run_cleanup(); \
return result; \
} \
catch (std::exception const& ex) \
{ \
std::clog << ex.what() << "\n"; \
testing::run_cleanup(); \
return -1; \
} \
}
struct big_number_fmt
{
int w;
double v;
const char* u;
big_number_fmt(int width, double value, int base = 1000)
: w(width)
, v(value)
, u("")
{
static const char* suffixes = "\0\0k\0M\0G\0T\0P\0E\0Z\0Y\0\0";
u = suffixes;
while (v > 1 && std::log10(std::round(v)) >= width && u[2])
{
v /= base;
u += 2;
}
// adjust width for proper alignment without suffix
w += (u == suffixes);
}
};
template<typename T>
int run(T const& test_runner, std::string const& name)
{
try
{
if (!test_runner.validate())
{
std::clog << "test did not validate: " << name << "\n";
return 1;
}
// run test once before timing
// if it returns false then we'll abort timing
if (!test_runner())
{
return 2;
}
std::chrono::high_resolution_clock::time_point start;
std::chrono::high_resolution_clock::duration elapsed;
auto opt_min_duration = test_runner.params().template get<double>("min-duration", 0.0);
std::chrono::duration<double> min_seconds(*opt_min_duration);
auto min_duration = std::chrono::duration_cast<decltype(elapsed)>(min_seconds);
auto num_iters = test_runner.iterations();
auto num_threads = test_runner.threads();
auto total_iters = 0;
if (num_threads > 0)
{
std::mutex mtx_ready;
std::unique_lock<std::mutex> lock_ready(mtx_ready);
auto stub = [&](T const& test_copy) {
// workers will wait on this mutex until the main thread
// constructs all of them and starts measuring time
std::unique_lock<std::mutex> my_lock(mtx_ready);
my_lock.unlock();
test_copy();
};
std::vector<std::thread> tg;
tg.reserve(num_threads);
for (auto i = num_threads; i-- > 0;)
{
tg.emplace_back(stub, test_runner);
}
start = std::chrono::high_resolution_clock::now();
lock_ready.unlock();
// wait for all workers to finish
for (auto& t : tg)
{
if (t.joinable())
t.join();
}
elapsed = std::chrono::high_resolution_clock::now() - start;
// this is actually per-thread count, not total, but I think
// reporting average 'iters/thread/second' is more useful
// than 'iters/second' multiplied by the number of threads
total_iters += num_iters;
}
else
{
start = std::chrono::high_resolution_clock::now();
do
{
test_runner();
elapsed = std::chrono::high_resolution_clock::now() - start;
total_iters += num_iters;
} while (elapsed < min_duration);
}
char msg[200];
double dur_total = milliseconds<double>(elapsed).count();
auto elapsed_nonzero = std::max(elapsed, decltype(elapsed){1});
big_number_fmt itersf(4, total_iters);
big_number_fmt ips(5, total_iters / seconds<double>(elapsed_nonzero).count());
std::clog << std::left << std::setw(43) << name;
std::clog << std::resetiosflags(std::ios::adjustfield);
if (num_threads > 0)
{
std::clog << ' ' << std::setw(3) << num_threads << " worker" << (num_threads > 1 ? "s" : " ");
}
else
{
std::clog << " main thread";
}
std::snprintf(msg,
sizeof(msg),
" %*.0f%s iters %6.0f milliseconds %*.0f%s i/t/s\n",
itersf.w,
itersf.v,
itersf.u,
dur_total,
ips.w,
ips.v,
ips.u);
std::clog << msg;
return 0;
}
catch (std::exception const& ex)
{
std::clog << "test runner did not complete: " << ex.what() << "\n";
return 4;
}
}
struct sequencer
{
sequencer(int argc, char** argv)
: exit_code_(0)
{
benchmark::handle_args(argc, argv, params_);
}
int done() const { return exit_code_; }
template<typename Test, typename... Args>
sequencer& run(std::string const& name, Args&&... args)
{
// Test instance lifetime is confined to this function
Test test_runner(params_, std::forward<Args>(args)...);
// any failing test run will make exit code non-zero
exit_code_ |= benchmark::run(test_runner, name);
return *this; // allow chaining calls
}
protected:
mapnik::parameters params_;
int exit_code_;
};
} // namespace benchmark
#endif // MAPNIK_BENCH_FRAMEWORK_HPP

View file

@ -0,0 +1,35 @@
#ifndef MAPNIK_COMPARE_IMAGES_HPP
#define MAPNIK_COMPARE_IMAGES_HPP
#include <mapnik/image.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/image_reader.hpp>
namespace benchmark {
bool compare_images(std::string const& src_fn, std::string const& dest_fn)
{
std::unique_ptr<mapnik::image_reader> reader1(mapnik::get_image_reader(dest_fn, "png"));
if (!reader1.get())
{
throw mapnik::image_reader_exception("Failed to load: " + dest_fn);
}
std::unique_ptr<mapnik::image_reader> reader2(mapnik::get_image_reader(src_fn, "png"));
if (!reader2.get())
{
throw mapnik::image_reader_exception("Failed to load: " + src_fn);
}
const mapnik::image_any desc_any = reader1->read(0, 0, reader1->width(), reader1->height());
const mapnik::image_any src_any = reader2->read(0, 0, reader2->width(), reader2->height());
mapnik::image_rgba8 const& dest = mapnik::util::get<mapnik::image_rgba8>(desc_any);
mapnik::image_rgba8 const& src = mapnik::util::get<mapnik::image_rgba8>(src_any);
return compare(dest, src, 0, true) == 0;
}
} // namespace benchmark
#endif // MAPNIK_COMPARE_IMAGES_HPP

View file

@ -6,10 +6,16 @@ source ./localize.sh
BASE=./benchmark/out
function run {
${BASE}/$1 --threads 0 --iterations $3;
${BASE}/$1 --threads $2 --iterations $(expr $3 / $2);
local runner="$BASE/$1 --log=none"
local threads="$2"
local iters="$3"
shift 3
$runner --threads 0 --iterations $iters "$@"
if test $threads -gt 0; then
$runner --threads $threads --iterations $((iters/threads)) "$@"
fi
}
run test_getline 30 10000000
#run test_array_allocation 20 100000
#run test_png_encoding1 10 1000
#run test_png_encoding2 10 50
@ -19,9 +25,13 @@ function run {
#run test_polygon_clipping_rendering 10 100
run test_proj_transform1 10 100
run test_expression_parse 10 10000
run test_face_ptr_creation 10 10000
run test_font_registration 10 1000
run test_face_ptr_creation 10 1000
run test_font_registration 10 100
run test_offset_converter 10 1000
#run normalize_angle 0 1000000 --min-duration=0.2
# commented since this is really slow on travis
: '
./benchmark/out/test_rendering \
--name "text rendering" \
--map benchmark/data/roads.xml \
@ -29,4 +39,31 @@ run test_font_registration 10 1000
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
--threads 10
'
./benchmark/out/test_rendering \
--name "gdal tiff rendering" \
--map benchmark/data/gdal-wgs.xml \
--extent -180.0,-120.0,180.0,120.0 \
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
./benchmark/out/test_rendering \
--name "raster tiff rendering" \
--map benchmark/data/raster-wgs.xml \
--extent -180.0,-120.0,180.0,120.0 \
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
./benchmark/out/test_quad_tree \
--iterations 10000 \
--threads 1
./benchmark/out/test_quad_tree \
--iterations 1000 \
--threads 10

65
benchmark/run_benchmarks Normal file
View file

@ -0,0 +1,65 @@
#!/bin/bash
BASE=.
function run {
local runner="$BASE/$1 --log=none"
local threads="$2"
local iters="$3"
shift 3
$runner --threads 0 --iterations $iters "$@"
if test $threads -gt 0; then
$runner --threads $threads --iterations $((iters/threads)) "$@"
fi
}
run test_getline 30 10000000
#run test_array_allocation 20 100000
#run test_png_encoding1 10 1000
#run test_png_encoding2 10 50
#run test_to_string1 10 100000
#run test_to_string2 10 100000
#run test_polygon_clipping 10 1000
#run test_polygon_clipping_rendering 10 100
run test_proj_transform1 10 100
run test_expression_parse 10 10000
run test_face_ptr_creation 10 1000
run test_font_registration 10 100
run test_offset_converter 10 1000
#run normalize_angle 0 1000000 --min-duration=0.2
# commented since this is really slow on travis
: '
$BASE/test_rendering \
--name "text rendering" \
--map benchmark/data/roads.xml \
--extent 1477001.12245,6890242.37746,1480004.49012,6892244.62256 \
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
'
$BASE/test_rendering \
--name "gdal tiff rendering" \
--map benchmark/data/gdal-wgs.xml \
--extent -180.0,-120.0,180.0,120.0 \
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
$BASE/test_rendering \
--name "raster tiff rendering" \
--map benchmark/data/raster-wgs.xml \
--extent -180.0,-120.0,180.0,120.0 \
--width 600 \
--height 600 \
--iterations 20 \
--threads 10
$BASE/test_quad_tree \
--iterations 10000 \
--threads 1
$BASE/test_quad_tree \
--iterations 1000 \
--threads 10

View file

@ -0,0 +1,72 @@
#include "bench_framework.hpp"
#include <mapnik/util/math.hpp>
template<typename T>
struct bench_func : benchmark::test_case
{
T (*const func_)(T);
T const value_;
bench_func(mapnik::parameters const& params, T (*func)(T), T value)
: test_case(params)
, func_(func)
, value_(value)
{}
bool validate() const { return true; }
bool operator()() const
{
for (auto i = this->iterations_; i-- > 0;)
{
func_(value_);
}
return true;
}
};
#define BENCH_FUNC1(func, value) run<bench_func<double>>(#func "(" #value ")", func, value)
int main(int argc, char** argv)
{
mapnik::setup();
return benchmark::sequencer(argc, argv)
.BENCH_FUNC1(mapnik::util::normalize_angle, +3)
.BENCH_FUNC1(mapnik::util::normalize_angle, +6)
.BENCH_FUNC1(mapnik::util::normalize_angle, +9)
.BENCH_FUNC1(mapnik::util::normalize_angle, +12)
.BENCH_FUNC1(mapnik::util::normalize_angle, +15)
.BENCH_FUNC1(mapnik::util::normalize_angle, +20)
.BENCH_FUNC1(mapnik::util::normalize_angle, +30)
.BENCH_FUNC1(mapnik::util::normalize_angle, +40)
.BENCH_FUNC1(mapnik::util::normalize_angle, +50)
.BENCH_FUNC1(mapnik::util::normalize_angle, +70)
.BENCH_FUNC1(mapnik::util::normalize_angle, +90)
.BENCH_FUNC1(mapnik::util::normalize_angle, +110)
.BENCH_FUNC1(mapnik::util::normalize_angle, +130)
.BENCH_FUNC1(mapnik::util::normalize_angle, +157)
.BENCH_FUNC1(mapnik::util::normalize_angle, +209)
.BENCH_FUNC1(mapnik::util::normalize_angle, +314)
.BENCH_FUNC1(mapnik::util::normalize_angle, +628)
.BENCH_FUNC1(mapnik::util::normalize_angle, +942)
.BENCH_FUNC1(mapnik::util::normalize_angle, -3)
.BENCH_FUNC1(mapnik::util::normalize_angle, -6)
.BENCH_FUNC1(mapnik::util::normalize_angle, -9)
.BENCH_FUNC1(mapnik::util::normalize_angle, -12)
.BENCH_FUNC1(mapnik::util::normalize_angle, -15)
.BENCH_FUNC1(mapnik::util::normalize_angle, -20)
.BENCH_FUNC1(mapnik::util::normalize_angle, -30)
.BENCH_FUNC1(mapnik::util::normalize_angle, -40)
.BENCH_FUNC1(mapnik::util::normalize_angle, -50)
.BENCH_FUNC1(mapnik::util::normalize_angle, -70)
.BENCH_FUNC1(mapnik::util::normalize_angle, -90)
.BENCH_FUNC1(mapnik::util::normalize_angle, -110)
.BENCH_FUNC1(mapnik::util::normalize_angle, -130)
.BENCH_FUNC1(mapnik::util::normalize_angle, -157)
.BENCH_FUNC1(mapnik::util::normalize_angle, -209)
.BENCH_FUNC1(mapnik::util::normalize_angle, -314)
.BENCH_FUNC1(mapnik::util::normalize_angle, -628)
.BENCH_FUNC1(mapnik::util::normalize_angle, -942)
.done();
}

View file

@ -0,0 +1,370 @@
#include "bench_framework.hpp"
#include <cstring>
#include <cstdlib>
#include <deque>
#include <stdexcept>
#include <array>
#include <valarray>
#include <boost/version.hpp>
#if BOOST_VERSION >= 105400
#include <boost/container/static_vector.hpp>
#endif
// http://stackoverflow.com/questions/17347254/why-is-allocation-and-deallocation-of-stdvector-slower-than-dynamic-array-on-m
#define FULL_ZERO_CHECK
inline void ensure_zero(uint8_t* data, uint32_t size)
{
#ifdef FULL_ZERO_CHECK
for (std::size_t i = 0; i < size; ++i)
{
if (data[i] != 0)
{
throw std::runtime_error("found non zero value");
}
}
#else
if (data[0] != 0)
{
throw std::runtime_error("found non zero value");
}
#endif
}
class test1 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test1(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
// NOTE: sizeof(uint8_t) == 1
uint8_t* data = (uint8_t*)malloc(sizeof(uint8_t) * size_);
memcpy(data, &array_[0], size_);
ensure_zero(data, size_);
free(data);
}
return true;
}
};
class test1b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test1b(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
// NOTE: sizeof(uint8_t) == 1
uint8_t* data = (uint8_t*)malloc(sizeof(uint8_t) * size_);
memset(data, 0, sizeof(uint8_t) * size_);
ensure_zero(data, size_);
free(data);
}
return true;
}
};
class test1c : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test1c(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
uint8_t* data = static_cast<uint8_t*>(::operator new(sizeof(uint8_t) * size_));
std::fill(data, data + size_, 0);
ensure_zero(data, size_);
::operator delete(data);
}
return true;
}
};
class test2 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test2(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
uint8_t* data = static_cast<uint8_t*>(::operator new(sizeof(uint8_t) * size_));
memcpy(data, &array_[0], size_);
ensure_zero(data, size_);
::operator delete(data), data = 0;
}
return true;
}
};
class test3 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::vector<uint8_t> data(size_);
ensure_zero(&data[0], data.size());
}
return true;
}
};
class test3b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3b(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::vector<uint8_t> data(0);
data.resize(size_, 0);
ensure_zero(&data[0], data.size());
}
return true;
}
};
class test3c : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3c(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::vector<uint8_t> data(0);
data.assign(size_, 0);
ensure_zero(&data[0], data.size());
}
return true;
}
};
class test3d : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3d(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::deque<uint8_t> data(size_);
for (std::size_t i = 0; i < size_; ++i)
{
if (data[i] != 0)
{
throw std::runtime_error("found non zero value");
}
}
}
return true;
}
};
class test4 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test4(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
uint8_t* data = (uint8_t*)calloc(size_, sizeof(uint8_t));
ensure_zero(data, size_);
free(data);
}
return true;
}
};
class test5 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test5(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::string data(array_.begin(), array_.end());
ensure_zero((uint8_t*)&data[0], size_);
}
return true;
}
};
class test5b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<char> array_;
test5b(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::string data(&array_[0], array_.size());
ensure_zero((uint8_t*)&data[0], size_);
}
return true;
}
};
// C++14 dynarray<T>
// http://isocpp.org/blog/2013/04/trip-report-iso-c-spring-2013-meeting
// http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130909/088700.html
// http://stackoverflow.com/questions/17303902/any-alternative-to-stddynarray-presently-available
class test6 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test6(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
std::valarray<uint8_t> data(static_cast<uint8_t>(0), static_cast<size_t>(size_));
ensure_zero(&data[0], size_);
}
return true;
}
};
#if BOOST_VERSION >= 105400
// http://i42.co.uk/stuff/vecarray.htm
// http://www.boost.org/doc/libs/1_54_0/doc/html/boost/container/static_vector.html
class test7 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test7(mapnik::parameters const& params)
: test_case(params)
, size_(*params.get<mapnik::value_integer>("size", 256 * 256))
, array_(size_, 0)
{}
bool validate() const { return true; }
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
boost::container::static_vector<uint8_t, 256 * 256> data(size_, 0);
ensure_zero(&data[0], size_);
}
return true;
}
};
#endif
int main(int argc, char** argv)
{
mapnik::setup();
return benchmark::sequencer(argc, argv)
.run<test4>("calloc")
.run<test1>("malloc/memcpy")
.run<test1b>("malloc/memset")
.run<test1c>("operator new/std::fill")
.run<test2>("operator new/memcpy")
.run<test3>("vector(N)")
.run<test3b>("vector/resize")
.run<test3c>("vector/assign")
.run<test3d>("deque(N)")
.run<test5>("std::string range")
.run<test5b>("std::string &[0]")
.run<test6>("valarray")
#if BOOST_VERSION >= 105400
.run<test7>("static_vector")
#endif
.done();
}

View file

@ -0,0 +1,44 @@
#include "bench_framework.hpp"
#include <mapnik/unicode.hpp>
#include <mapnik/attribute.hpp>
#include <mapnik/expression.hpp>
#include <mapnik/expression_string.hpp>
class test : public benchmark::test_case
{
std::string expr_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, expr_("((([mapnik::geometry_type]=2) and ([oneway]=1)) and ([class]='path'))")
{}
bool validate() const
{
mapnik::expression_ptr expr = mapnik::parse_expression(expr_);
std::string result = mapnik::to_expression_string(*expr);
bool ret = (result == expr_);
if (!ret)
{
std::clog << result << " != " << expr_ << "\n";
}
return ret;
}
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
mapnik::expression_ptr expr = mapnik::parse_expression(expr_);
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
test test_runner(params);
return run(test_runner, "expr parsing");
}

View file

@ -4,9 +4,10 @@
class test : public benchmark::test_case
{
public:
public:
test(mapnik::parameters const& params)
: test_case(params) {}
: test_case(params)
{}
bool validate() const
{
std::size_t count = 0;
@ -22,14 +23,15 @@ public:
font_cache,
mapnik::freetype_engine::get_mapping(),
mapnik::freetype_engine::get_cache());
if (f) ++count;
if (f)
++count;
}
return count == expected_count;
}
void operator()() const
bool operator()() const
{
std::size_t expected_count = mapnik::freetype_engine::face_names().size();
for (unsigned i=0;i<iterations_;++i)
for (unsigned i = 0; i < iterations_; ++i)
{
std::size_t count = 0;
mapnik::freetype_engine::font_file_mapping_type font_file_mapping;
@ -43,26 +45,30 @@ public:
font_cache,
mapnik::freetype_engine::get_mapping(),
mapnik::freetype_engine::get_cache());
if (f) ++count;
if (f)
++count;
}
if (count != expected_count) {
if (count != expected_count)
{
std::clog << "warning: face creation not working as expected\n";
}
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
benchmark::handle_args(argc, argv, params);
bool success = mapnik::freetype_engine::register_fonts("./fonts", true);
if (!success) {
std::clog << "warning, did not register any new fonts!\n";
return -1;
}
if (!success)
{
std::clog << "warning, did not register any new fonts!\n";
return -1;
}
std::size_t face_count = mapnik::freetype_engine::face_names().size();
test test_runner(params);
return run(test_runner,(boost::format("font_engine: creating %ld faces") % (face_count)).str());
return run(test_runner, (boost::format("font_engine: creating %ld faces") % (face_count)).str());
}

View file

@ -0,0 +1,24 @@
#include "bench_framework.hpp"
#include <mapnik/font_engine_freetype.hpp>
#include <boost/format.hpp>
class test : public benchmark::test_case
{
public:
test(mapnik::parameters const& params)
: test_case(params)
{}
bool validate() const { return mapnik::freetype_engine::register_fonts("./fonts", true); }
bool operator()() const
{
unsigned long count = 0;
for (unsigned i = 0; i < iterations_; ++i)
{
mapnik::freetype_engine::register_fonts("./fonts", true);
count++;
}
return true;
}
};
BENCHMARK(test, "font registration")

View file

@ -0,0 +1,125 @@
#include "bench_framework.hpp"
#include "../plugins/input/csv/csv_getline.hpp"
class test : public benchmark::test_case
{
public:
std::string line_data_;
test(mapnik::parameters const& params)
: test_case(params)
, line_data_("this is one line\nand this is a second line\nand a third line")
{
auto line_data = params.get<std::string>("line");
if (line_data)
{
line_data_ = *line_data;
}
}
bool validate() const
{
std::string first = line_data_.substr(line_data_.find_first_not_of('\n'));
char newline = '\n';
std::string csv_line;
std::stringstream s;
s << line_data_;
std::getline(s, csv_line, newline);
if (csv_line != first)
{
return true;
}
else
{
std::clog << "Error: the parsed line (" << csv_line << ") should be a subset of the original line ("
<< line_data_ << ") (ensure you pass a line with a \\n)\n";
}
return true;
}
bool operator()() const
{
char newline = '\n';
std::string csv_line;
std::stringstream s;
s << line_data_;
for (unsigned i = 0; i < iterations_; ++i)
{
std::getline(s, csv_line, newline);
}
return true;
}
};
class test2 : public benchmark::test_case
{
public:
std::string line_data_;
test2(mapnik::parameters const& params)
: test_case(params)
, line_data_("this is one line\nand this is a second line\nand a third line")
{
auto line_data = params.get<std::string>("line");
if (line_data)
{
line_data_ = *line_data;
}
}
bool validate() const
{
std::string first = line_data_.substr(line_data_.find_first_not_of('\n'));
char newline = '\n';
char quote = '"';
std::string csv_line;
std::stringstream s;
s << line_data_;
csv_utils::getline_csv(s, csv_line, newline, quote);
if (csv_line != first)
{
return true;
}
else
{
std::clog << "Error: the parsed line (" << csv_line << ") should be a subset of the original line ("
<< line_data_ << ") (ensure you pass a line with a \\n)\n";
}
return true;
}
bool operator()() const
{
char newline = '\n';
char quote = '"';
std::string csv_line;
std::stringstream s;
s << line_data_;
for (unsigned i = 0; i < iterations_; ++i)
{
csv_utils::getline_csv(s, csv_line, newline, quote);
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
int return_value = 0;
try
{
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
{
test test_runner(params);
return_value = return_value | run(test_runner, "std::getline");
}
{
test2 test_runner2(params);
return_value = return_value | run(test_runner2, "csv_utils::getline_csv");
}
}
catch (std::exception const& ex)
{
std::clog << ex.what() << "\n";
return -1;
}
return return_value;
}

View file

@ -0,0 +1,40 @@
#include "bench_framework.hpp"
#include <mapnik/marker_cache.hpp>
class test : public benchmark::test_case
{
std::vector<std::string> images_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, images_{"./test/data/images/dummy.jpg",
"./test/data/images/dummy.jpeg",
"./test/data/images/dummy.png",
"./test/data/images/dummy.tif",
"./test/data/images/dummy.tiff",
//"./test/data/images/landusepattern.jpeg", // will fail since it is a png
//"./test/data/images/xcode-CgBI.png", // will fail since its an invalid png
"./test/data/svg/octocat.svg",
"./test/data/svg/place-of-worship-24.svg",
"./test/data/svg/point_sm.svg",
"./test/data/svg/point.svg",
"./test/data/svg/airfield-12.svg"}
{}
bool validate() const { return true; }
bool operator()() const
{
unsigned count = 0;
for (std::size_t i = 0; i < iterations_; ++i)
{
for (auto filename : images_)
{
auto marker = mapnik::marker_cache::instance().find(filename, true);
}
++count;
}
return (count == iterations_);
}
};
BENCHMARK(test, "marker cache")

View file

@ -0,0 +1,51 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
#include <mapnik/font_engine_freetype.hpp>
#include <stdexcept>
#include <mapnik/layer.hpp>
#include <mapnik/memory_datasource.hpp>
#include <mapnik/feature_type_style.hpp>
#include <memory>
class test : public benchmark::test_case
{
public:
test(mapnik::parameters const& params)
: test_case(params)
{}
bool validate() const { return true; }
bool operator()() const
{
mapnik::Map m(256, 256, "epsg:3857");
mapnik::parameters params;
params["type"] = "memory";
auto ds = std::make_shared<mapnik::memory_datasource>(params);
// add whitespace to trigger phony "reprojection"
mapnik::layer lay("layer", m.srs() + " ");
lay.set_datasource(ds);
lay.add_style("style");
m.add_layer(lay);
// dummy style to ensure that layer is processed
m.insert_style("style", mapnik::feature_type_style());
// dummy bbox, but "valid" because minx and miny are less
// with an invalid bbox then layer.visible() returns false
// and the initial rendering setup is not run
m.zoom_to_box(mapnik::box2d<double>(-1, -1, 0, 0));
for (unsigned i = 0; i < iterations_; ++i)
{
mapnik::image_rgba8 im(256, 256);
mapnik::agg_renderer<mapnik::image_rgba8> ren(m, im);
ren.apply();
}
return true;
}
};
BENCHMARK(test, "rendering with reprojection")

View file

@ -0,0 +1,81 @@
#include "bench_framework.hpp"
// boost
#include <boost/numeric/conversion/cast.hpp>
static double STEP_NUM = 0.0000000001;
static std::uint8_t START_NUM = 2;
class test_static : public benchmark::test_case
{
double step_;
std::uint8_t start_;
public:
test_static(mapnik::parameters const& params)
: test_case(params)
, step_(STEP_NUM)
, start_(START_NUM)
{}
bool validate() const { return true; }
bool operator()() const
{
double value_ = 0.0;
std::uint8_t x;
for (std::size_t i = 0; i < iterations_; ++i)
{
double c = static_cast<double>(start_) * value_;
if (c >= 256.0)
c = 255.0;
if (c < 0.0)
c = 0.0;
x = static_cast<std::uint8_t>(c);
value_ += step_;
}
return static_cast<double>(x) < (static_cast<double>(start_) * value_);
}
};
using boost::numeric::negative_overflow;
using boost::numeric::positive_overflow;
class test_numeric : public benchmark::test_case
{
double step_;
std::uint8_t start_;
public:
test_numeric(mapnik::parameters const& params)
: test_case(params)
, step_(STEP_NUM)
, start_(START_NUM)
{}
bool validate() const { return true; }
bool operator()() const
{
double value_ = 0.0;
std::uint8_t x;
for (std::size_t i = 0; i < iterations_; ++i)
{
try
{
x = boost::numeric_cast<std::uint8_t>(start_ * value_);
}
catch (negative_overflow&)
{
x = std::numeric_limits<std::uint8_t>::min();
}
catch (positive_overflow&)
{
x = std::numeric_limits<std::uint8_t>::max();
}
value_ += step_;
}
return static_cast<double>(x) < (static_cast<double>(start_) * value_);
}
};
int main(int argc, char** argv)
{
mapnik::setup();
return benchmark::sequencer(argc, argv).run<test_static>("static_cast").run<test_numeric>("numeric_cast").done();
}

View file

@ -0,0 +1,104 @@
#include "bench_framework.hpp"
// mapnik
#include <mapnik/global.hpp>
#include <mapnik/coord.hpp>
#include <mapnik/vertex.hpp>
#include <mapnik/offset_converter.hpp>
struct fake_path
{
using coord_type = std::tuple<double, double, unsigned>;
using cont_type = std::vector<coord_type>;
cont_type vertices_;
cont_type::iterator itr_;
fake_path(std::initializer_list<double> l)
: fake_path(l.begin(), l.size())
{}
fake_path(std::vector<double> const& v)
: fake_path(v.begin(), v.size())
{}
template<typename Itr>
fake_path(Itr itr, size_t sz)
{
size_t num_coords = sz >> 1;
vertices_.reserve(num_coords);
for (size_t i = 0; i < num_coords; ++i)
{
double x = *itr++;
double y = *itr++;
unsigned cmd = (i == 0) ? mapnik::SEG_MOVETO : mapnik::SEG_LINETO;
vertices_.push_back(std::make_tuple(x, y, cmd));
if (i == num_coords - 1)
cmd = mapnik::SEG_END;
vertices_.push_back(std::make_tuple(x, y, cmd));
}
itr_ = vertices_.begin();
}
unsigned vertex(double* x, double* y)
{
if (itr_ == vertices_.end())
{
return mapnik::SEG_END;
}
*x = std::get<0>(*itr_);
*y = std::get<1>(*itr_);
unsigned cmd = std::get<2>(*itr_);
++itr_;
return cmd;
}
void rewind(unsigned) { itr_ = vertices_.begin(); }
};
class test_offset : public benchmark::test_case
{
public:
test_offset(mapnik::parameters const& params)
: test_case(params)
{}
bool validate() const { return true; }
bool operator()() const
{
std::vector<double> path;
int mysize = 2500;
int x1 = 0;
path.reserve(mysize * 2);
for (int i = 0; i < mysize; i++)
{
path.push_back(i);
path.push_back(0);
}
fake_path fpath(path);
for (std::size_t i = 0; i < iterations_; ++i)
{
mapnik::offset_converter<fake_path> off_path(fpath);
off_path.set_offset(10);
unsigned cmd;
double x, y;
while ((cmd = off_path.vertex(&x, &y)) != mapnik::SEG_END)
{
x1++;
}
}
return x1 > 0;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
int return_value = 0;
{
test_offset test_runner(params);
return_value = run(test_runner, "offset_test");
}
return return_value;
}

View file

@ -0,0 +1,26 @@
#include "bench_framework.hpp"
#include <mapnik/image_util.hpp>
class test : public benchmark::test_case
{
mapnik::image_rgba8 im_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, im_(256, 256)
{}
bool validate() const { return true; }
bool operator()() const
{
std::string out;
for (std::size_t i = 0; i < iterations_; ++i)
{
out.clear();
out = mapnik::save_to_string(im_, "png8:m=h:z=1");
}
return true;
}
};
BENCHMARK(test, "encoding blank png")

View file

@ -0,0 +1,41 @@
#include "bench_framework.hpp"
#include "compare_images.hpp"
#include <memory>
class test : public benchmark::test_case
{
std::shared_ptr<mapnik::image_rgba8> im_;
public:
test(mapnik::parameters const& params)
: test_case(params)
{
std::string filename("./benchmark/data/multicolor.png");
std::unique_ptr<mapnik::image_reader> reader(mapnik::get_image_reader(filename, "png"));
if (!reader.get())
{
throw mapnik::image_reader_exception("Failed to load: " + filename);
}
im_ = std::make_shared<mapnik::image_rgba8>(reader->width(), reader->height());
reader->read(0, 0, *im_);
}
bool validate() const
{
std::string expected("./benchmark/data/multicolor-hextree-expected.png");
std::string actual("./benchmark/data/multicolor-hextree-actual.png");
mapnik::save_to_file(*im_, actual, "png8:m=h:z=1");
return benchmark::compare_images(actual, expected);
}
bool operator()() const
{
std::string out;
for (std::size_t i = 0; i < iterations_; ++i)
{
out.clear();
out = mapnik::save_to_string(*im_, "png8:m=h:z=1");
}
return true;
}
};
BENCHMARK(test, "encoding multicolor png")

View file

@ -0,0 +1,550 @@
#include "bench_framework.hpp"
#include "compare_images.hpp"
#include <mapnik/vertex.hpp>
#include <mapnik/transform_path_adapter.hpp>
#include <mapnik/view_transform.hpp>
#include <mapnik/wkt/wkt_factory.hpp>
#include <mapnik/projection.hpp>
#include <mapnik/proj_transform.hpp>
#include <mapnik/util/fs.hpp>
#include <mapnik/geometry.hpp>
#include <mapnik/vertex_adapters.hpp>
#include <mapnik/geometry.hpp>
#include <mapnik/geometry/boost_adapters.hpp>
#include <mapnik/geometry/envelope.hpp>
#include <mapnik/geometry/correct.hpp>
#include <mapnik/geometry/is_empty.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/color.hpp>
// boost geometry
#include <boost/geometry.hpp>
// agg
#include "agg_conv_clip_polygon.h"
// clipper
#include "agg_path_storage.h"
// rendering
#include "agg_basics.h"
#include "agg_rendering_buffer.h"
#include "agg_pixfmt_rgba.h"
#include "agg_rasterizer_scanline_aa.h"
#include "agg_scanline_u.h"
#include "agg_renderer_scanline.h"
// stl
#include <fstream>
#include <iostream>
#include <cstdlib>
void render(mapnik::geometry::multi_polygon<double> const& geom,
mapnik::box2d<double> const& extent,
std::string const& name)
{
using path_type =
mapnik::transform_path_adapter<mapnik::view_transform, mapnik::geometry::polygon_vertex_adapter<double>>;
using ren_base = agg::renderer_base<agg::pixfmt_rgba32_plain>;
using renderer = agg::renderer_scanline_aa_solid<ren_base>;
mapnik::image_rgba8 im(256, 256);
mapnik::fill(im, mapnik::color("white"));
mapnik::box2d<double> padded_extent(155, 134, 665, 466); // extent;
padded_extent.pad(10);
mapnik::view_transform tr(im.width(), im.height(), padded_extent, 0, 0);
agg::rendering_buffer buf(im.bytes(), im.width(), im.height(), im.row_size());
agg::pixfmt_rgba32_plain pixf(buf);
ren_base renb(pixf);
renderer ren(renb);
mapnik::proj_transform prj_trans(mapnik::projection("epsg:4326"), mapnik::projection("epsg:4326"));
ren.color(agg::rgba8(127, 127, 127, 255));
agg::rasterizer_scanline_aa<> ras;
for (auto const& poly : geom)
{
mapnik::geometry::polygon_vertex_adapter<double> va(poly);
path_type path(tr, va, prj_trans);
ras.add_path(path);
}
agg::scanline_u8 sl;
agg::render_scanlines(ras, sl, ren);
mapnik::save_to_file(im, name);
}
class test1 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
using conv_clip = agg::conv_clip_polygon<mapnik::geometry::polygon_vertex_adapter<double>>;
test1(mapnik::parameters const& params, std::string const& wkt_in, mapnik::box2d<double> const& extent)
: test_case(params)
, wkt_in_(wkt_in)
, extent_(extent)
, expected_("./benchmark/data/polygon_clipping_agg")
{}
bool validate() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double>>())
{
std::clog << "not a polygon!\n";
return false;
}
mapnik::geometry::polygon<double> const& poly = mapnik::util::get<mapnik::geometry::polygon<double>>(geom);
mapnik::geometry::polygon_vertex_adapter<double> va(poly);
conv_clip clipped(va);
clipped.clip_box(extent_.minx(), extent_.miny(), extent_.maxx(), extent_.maxy());
clipped.rewind(0);
mapnik::geometry::polygon<double> poly2;
mapnik::geometry::linear_ring<double> ring;
// exterior ring
unsigned cmd;
double x, y, x0, y0;
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END)
{
if (cmd == mapnik::SEG_MOVETO)
{
x0 = x;
y0 = y;
}
if (cmd == mapnik::SEG_CLOSE)
{
ring.emplace_back(x0, y0);
break;
}
ring.emplace_back(x, y);
}
poly2.push_back(std::move(ring));
// interior rings
ring.clear();
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END)
{
if (cmd == mapnik::SEG_MOVETO)
{
x0 = x;
y0 = y;
}
else if (cmd == mapnik::SEG_CLOSE)
{
ring.emplace_back(x0, y0);
poly2.push_back(std::move(ring));
ring.clear();
continue;
}
ring.emplace_back(x, y);
}
std::string expect = expected_ + ".png";
std::string actual = expected_ + "_actual.png";
mapnik::geometry::multi_polygon<double> mp;
mp.emplace_back(poly2);
auto env = mapnik::geometry::envelope(mp);
if (!mapnik::util::exists(expect) || (std::getenv("UPDATE") != nullptr))
{
std::clog << "generating expected image: " << expect << "\n";
render(mp, env, expect);
}
render(mp, env, actual);
return benchmark::compare_images(actual, expect);
}
bool operator()() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double>>())
{
std::clog << "not a polygon!\n";
return false;
}
bool valid = true;
for (unsigned i = 0; i < iterations_; ++i)
{
unsigned count = 0;
mapnik::geometry::polygon<double> const& poly = mapnik::util::get<mapnik::geometry::polygon<double>>(geom);
mapnik::geometry::polygon_vertex_adapter<double> va(poly);
conv_clip clipped(va);
clipped.clip_box(extent_.minx(), extent_.miny(), extent_.maxx(), extent_.maxy());
unsigned cmd;
double x, y;
// NOTE: this rewind is critical otherwise
// agg_conv_adapter_vpgen will give garbage
// values for the first vertex
clipped.rewind(0);
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END)
{
count++;
}
unsigned expected_count = 30;
if (count != expected_count)
{
std::clog << "test1: clipping failed: processed " << count << " verticies but expected "
<< expected_count << "\n";
valid = false;
}
}
return valid;
}
};
class test3 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
test3(mapnik::parameters const& params, std::string const& wkt_in, mapnik::box2d<double> const& extent)
: test_case(params)
, wkt_in_(wkt_in)
, extent_(extent)
, expected_("./benchmark/data/polygon_clipping_boost")
{}
bool validate() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double>>())
{
std::clog << "not a polygon!\n";
return false;
}
mapnik::geometry::polygon<double>& poly = mapnik::util::get<mapnik::geometry::polygon<double>>(geom);
mapnik::geometry::correct(poly);
mapnik::geometry::linear_ring<double> bbox;
bbox.emplace_back(extent_.minx(), extent_.miny());
bbox.emplace_back(extent_.minx(), extent_.maxy());
bbox.emplace_back(extent_.maxx(), extent_.maxy());
bbox.emplace_back(extent_.maxx(), extent_.miny());
bbox.emplace_back(extent_.minx(), extent_.miny());
std::deque<mapnik::geometry::polygon<double>> result;
boost::geometry::intersection(bbox, poly, result);
std::string expect = expected_ + ".png";
std::string actual = expected_ + "_actual.png";
mapnik::geometry::multi_polygon<double> mp;
for (auto const& _geom : result)
{
// std::clog << boost::geometry::dsv(geom) << "\n";
mp.emplace_back(_geom);
}
mapnik::geometry::geometry<double> geom2(mp);
auto env = mapnik::geometry::envelope(geom2);
if (!mapnik::util::exists(expect) || (std::getenv("UPDATE") != nullptr))
{
std::clog << "generating expected image: " << expect << "\n";
render(mp, env, expect);
}
render(mp, env, actual);
return benchmark::compare_images(actual, expect);
}
bool operator()() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double>>())
{
std::clog << "not a polygon!\n";
return false;
}
mapnik::geometry::polygon<double>& poly = mapnik::util::get<mapnik::geometry::polygon<double>>(geom);
mapnik::geometry::correct(poly);
mapnik::geometry::linear_ring<double> bbox;
bbox.emplace_back(extent_.minx(), extent_.miny());
bbox.emplace_back(extent_.minx(), extent_.maxy());
bbox.emplace_back(extent_.maxx(), extent_.maxy());
bbox.emplace_back(extent_.maxx(), extent_.miny());
bbox.emplace_back(extent_.minx(), extent_.miny());
bool valid = true;
for (unsigned i = 0; i < iterations_; ++i)
{
std::deque<mapnik::geometry::polygon<double>> result;
boost::geometry::intersection(bbox, poly, result);
unsigned count = 0;
for (auto const& _geom : result)
{
mapnik::geometry::polygon_vertex_adapter<double> va(_geom);
unsigned cmd;
double x, y;
while ((cmd = va.vertex(&x, &y)) != mapnik::SEG_END)
{
++count;
}
unsigned expected_count = 29;
if (count != expected_count)
{
std::clog << "test3: clipping failed: processed " << count << " verticies but expected "
<< expected_count << "\n";
valid = false;
}
}
}
return valid;
}
};
/*
Commented out section because clipper moved out of mapnik core.
inline void process_polynode_branch(ClipperLib::PolyNode* polynode,
mapnik::geometry::multi_polygon<double> & mp)
{
mapnik::geometry::polygon<double> polygon;
mapnik::geometry::linear_ring<double> outer;
for (auto const& pt : polynode->Contour)
{
outer.emplace_back(static_cast<double>(pt.x),static_cast<double>(pt.y));
}
if (outer.front() != outer.back())
{
outer.emplace_back(outer.front().x, outer.front().y);
}
polygon.set_exterior_ring(std::move(outer));
for (auto * ring : polynode->Childs)
{
mapnik::geometry::linear_ring<double> inner;
for (auto const& pt : ring->Contour)
{
inner.emplace_back(static_cast<double>(pt.x),static_cast<double>(pt.y));
}
if (inner.front() != inner.back())
{
inner.emplace_back(inner.front().x, inner.front().y);
}
polygon.add_hole(std::move(inner));
}
mp.emplace_back(std::move(polygon));
for (auto * ring : polynode->Childs)
{
for (auto * sub_ring : ring->Childs)
{
process_polynode_branch(sub_ring, mp);
}
}
}
class test4 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
test4(mapnik::parameters const& params,
std::string const& wkt_in,
mapnik::box2d<double> const& extent)
: test_case(params),
wkt_in_(wkt_in),
extent_(extent),
expected_("./benchmark/data/polygon_clipping_clipper") {}
bool validate() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double> >())
{
std::clog << "not a polygon!\n";
return false;
}
mapnik::geometry::polygon<double> & poly = mapnik::util::get<mapnik::geometry::polygon<double> >(geom);
mapnik::geometry::correct(poly);
ClipperLib::Clipper clipper;
mapnik::geometry::line_string<std::int64_t> path;
for (auto const& pt : poly.exterior_ring)
{
double x = pt.x;
double y = pt.y;
path.emplace_back(static_cast<ClipperLib::cInt>(x),static_cast<ClipperLib::cInt>(y));
}
double area = ClipperLib::Area(path);
if (area > 0)
{
std::reverse(path.begin(), path.end());
}
if (!clipper.AddPath(path, ClipperLib::ptSubject, true))
{
std::clog << "ptSubject ext failed!\n";
}
for (auto const& ring : poly.interior_rings)
{
path.clear();
for (auto const& pt : ring)
{
double x = pt.x;
double y = pt.y;
path.emplace_back(static_cast<ClipperLib::cInt>(x),static_cast<ClipperLib::cInt>(y));
}
area = ClipperLib::Area(path);
if (area < 0)
{
std::reverse(path.begin(), path.end());
}
if (!clipper.AddPath(path, ClipperLib::ptSubject, true))
{
std::clog << "ptSubject ext failed!\n";
}
}
std::cerr << "path size=" << path.size() << std::endl;
mapnik::geometry::line_string<std::int64_t> clip_box;
clip_box.emplace_back(static_cast<ClipperLib::cInt>(extent_.minx()),static_cast<ClipperLib::cInt>(extent_.miny()));
clip_box.emplace_back(static_cast<ClipperLib::cInt>(extent_.maxx()),static_cast<ClipperLib::cInt>(extent_.miny()));
clip_box.emplace_back(static_cast<ClipperLib::cInt>(extent_.maxx()),static_cast<ClipperLib::cInt>(extent_.maxy()));
clip_box.emplace_back(static_cast<ClipperLib::cInt>(extent_.minx()),static_cast<ClipperLib::cInt>(extent_.maxy()));
clip_box.emplace_back(static_cast<ClipperLib::cInt>(extent_.minx()),static_cast<ClipperLib::cInt>(extent_.miny()));
if (!clipper.AddPath( clip_box, ClipperLib::ptClip, true ))
{
std::clog << "ptClip failed!\n";
}
ClipperLib::PolyTree polygons;
clipper.Execute(ClipperLib::ctIntersection, polygons);// ClipperLib::pftNonZero);
clipper.Clear();
mapnik::geometry::multi_polygon<double> mp;
for (auto * polynode : polygons.Childs)
{
process_polynode_branch(polynode, mp);
}
std::string expect = expected_+".png";
std::string actual = expected_+"_actual.png";
//mapnik::geometry::geometry<double> geom2(mp);
auto env = mapnik::geometry::envelope(mp);
if (!mapnik::util::exists(expect) || (std::getenv("UPDATE") != nullptr))
{
std::clog << "generating expected image: " << expect << "\n";
render(mp,env,expect);
}
render(mp,env,actual);
return benchmark::compare_images(actual,expect);
}
bool operator()() const
{
mapnik::geometry::geometry<double> geom;
if (!mapnik::from_wkt(wkt_in_, geom))
{
throw std::runtime_error("Failed to parse WKT");
}
if (mapnik::geometry::is_empty(geom))
{
std::clog << "empty geom!\n";
return false;
}
if (!geom.is<mapnik::geometry::polygon<double> >())
{
std::clog << "not a polygon!\n";
return false;
}
mapnik::geometry::polygon<double> & poly = mapnik::util::get<mapnik::geometry::polygon<double> >(geom);
mapnik::geometry::correct(poly);
bool valid = true;
for (unsigned i=0;i<iterations_;++i)
{
std::deque<mapnik::geometry::polygon<double> > result;
boost::geometry::intersection(extent_,poly,result);
unsigned count = 0;
for (auto const& geom : result)
{
mapnik::geometry::polygon_vertex_adapter<double> va(geom);
unsigned cmd;
double x,y;
while ((cmd = va.vertex(&x, &y)) != mapnik::SEG_END) {
++count;
}
unsigned expected_count = 29;
if (count != expected_count) {
std::clog << "test3: clipping failed: processed " << count << " verticies but expected " <<
expected_count << "\n"; valid = false;
}
}
}
return valid;
}
};
*/
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
// polygon/rect clipping
// IN : POLYGON ((155 203, 233 454, 315 340, 421 446, 463 324, 559 466, 665 253, 528 178, 394 229, 329 138, 212 134,
// 183 228, 200 264, 155 203),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343
// 287, 249 334, 229 191, 313 190)) RECT : POLYGON ((181 106, 181 470, 631 470, 631 106, 181 106)) OUT (expected)
// POLYGON ((181 286.6666666666667, 233 454, 315 340, 421 446, 463 324, 559 466, 631 321.3207547169811, 631
// 234.38686131386862, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 181 238.24444444444444, 181
// 286.6666666666667),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249
// 334, 229 191, 313 190))
#if 0
mapnik::box2d<double> clipping_box(181,106,631,470);
std::string filename_("./benchmark/data/polygon.wkt");
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
if (!in.is_open())
throw std::runtime_error("could not open: '" + filename_ + "'");
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
(std::istreambuf_iterator<char>()) );
int return_value = 0;
{
test1 test_runner(params,wkt_in,clipping_box);
return_value = return_value | run(test_runner,"clipping polygon with agg");
}
{
test3 test_runner(params,wkt_in,clipping_box);
return_value = return_value | run(test_runner,"clipping polygon with boost");
}
/*
{
test4 test_runner(params,wkt_in,clipping_box);
return_value = return_value | run(test_runner,"clipping polygon with clipper_tree");
}
*/
#endif
return 0; // return_value;
}

View file

@ -0,0 +1,59 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
class test : public benchmark::test_case
{
std::string xml_;
mapnik::box2d<double> extent_;
public:
test(mapnik::parameters const& params, std::string const& xml, mapnik::box2d<double> const& extent)
: test_case(params)
, xml_(xml)
, extent_(extent)
{}
bool validate() const
{
mapnik::Map m(256, 256);
mapnik::load_map(m, xml_);
m.zoom_to_box(extent_);
mapnik::image_rgba8 im(m.width(), m.height());
mapnik::agg_renderer<mapnik::image_rgba8> ren(m, im);
ren.apply();
// mapnik::save_to_file(im.data(),"test.png");
return true;
}
bool operator()() const
{
mapnik::Map m(256, 256);
mapnik::load_map(m, xml_);
m.zoom_to_box(extent_);
for (unsigned i = 0; i < iterations_; ++i)
{
mapnik::image_rgba8 im(m.width(), m.height());
mapnik::agg_renderer<mapnik::image_rgba8> ren(m, im);
ren.apply();
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
mapnik::box2d<double> z1(-20037508.3428, -8317435.0606, 20037508.3428, 18399242.7298);
// bbox for 16/10491/22911.png
mapnik::box2d<double> z16(-13622912.929097254, 6026906.8062295765, -13621689.93664469, 6028129.79868214);
return benchmark::sequencer(argc, argv)
.run<test>("polygon clip render z1", "benchmark/data/polygon_rendering_clip.xml", z1)
.run<test>("polygon noclip render z1", "benchmark/data/polygon_rendering_no_clip.xml", z1)
.run<test>("polygon clip render z16", "benchmark/data/polygon_rendering_clip.xml", z16)
.run<test>("polygon noclip render z16", "benchmark/data/polygon_rendering_no_clip.xml", z16)
.done();
}

View file

@ -0,0 +1,77 @@
#include "bench_framework.hpp"
#include <mapnik/geometry/box2d.hpp>
#include <mapnik/projection.hpp>
#include <mapnik/proj_transform.hpp>
class test : public benchmark::test_case
{
std::string src_;
std::string dest_;
mapnik::box2d<double> from_;
mapnik::box2d<double> to_;
bool defer_proj_init_;
public:
test(mapnik::parameters const& params,
std::string const& src,
std::string const& dest,
mapnik::box2d<double> const& from,
mapnik::box2d<double> const& to,
bool defer_proj)
: test_case(params)
, src_(src)
, dest_(dest)
, from_(from)
, to_(to)
, defer_proj_init_(defer_proj)
{}
bool validate() const
{
mapnik::projection src(src_, defer_proj_init_);
mapnik::projection dest(dest_, defer_proj_init_);
mapnik::proj_transform tr(src, dest);
mapnik::box2d<double> bbox = from_;
if (!tr.forward(bbox))
return false;
return ((std::fabs(bbox.minx() - to_.minx()) < .5) && (std::fabs(bbox.maxx() - to_.maxx()) < .5) &&
(std::fabs(bbox.miny() - to_.miny()) < .5) && (std::fabs(bbox.maxy() - to_.maxy()) < .5));
}
bool operator()() const
{
mapnik::projection src(src_, defer_proj_init_);
mapnik::projection dest(dest_, defer_proj_init_);
mapnik::proj_transform tr(src, dest);
for (std::size_t i = 0; i < iterations_; ++i)
{
for (int j = -180; j < 180; j = j + 5)
{
for (int k = -85; k < 85; k = k + 5)
{
mapnik::box2d<double> box(j, k, j, k);
if (!tr.forward(box))
throw std::runtime_error("could not transform coords");
}
}
}
return true;
}
};
// echo -180 -60 | cs2cs -f "%.10f" epsg:4326 +to epsg:3857
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::box2d<double> from(-180, -80, 180, 80);
mapnik::box2d<double> to(-20037508.3427892476, -15538711.0963092316, 20037508.3427892476, 15538711.0963092316);
std::string from_str("epsg:4326");
std::string to_str("epsg:3857");
std::string from_str2("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
std::string to_str2("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m "
"+nadgrids=@null +wktext +no_defs +over");
return benchmark::sequencer(argc, argv)
.run<test>("lonlat->merc epsg (internal)", from_str, to_str, from, to, true)
.run<test>("lonlat->merc literal (libproj)", from_str2, to_str2, from, to, true)
.run<test>("merc->lonlat epsg (internal)", to_str, from_str, to, from, true)
.run<test>("merc->lonlat literal (libproj)", to_str2, from_str2, to, from, true)
.done();
}

View file

@ -0,0 +1,52 @@
#include "bench_framework.hpp"
#include <mapnik/quad_tree.hpp>
#include <random>
using quad_tree_type = mapnik::quad_tree<std::size_t>;
class test : public benchmark::test_case
{
public:
test(mapnik::parameters const& params)
: test_case(params)
{}
bool validate() const { return true; }
bool operator()() const
{
std::random_device rd;
std::default_random_engine engine(rd());
std::uniform_int_distribution<int> uniform_dist(0, 2048);
quad_tree_type tree(mapnik::box2d<double>(0, 0, 2048, 2048));
// populate
for (size_t i = 0; i < iterations_; ++i)
{
int cx = uniform_dist(engine);
int cy = uniform_dist(engine);
int sx = 0.2 * uniform_dist(engine);
int sy = 0.2 * uniform_dist(engine);
mapnik::box2d<double> box(cx - sx, cy - sy, cx + sx, cy + sy);
tree.insert(i, box);
}
// bounding box query
std::size_t count = 0;
for (size_t i = 0; i < iterations_; ++i)
{
int cx = uniform_dist(engine);
int cy = uniform_dist(engine);
int sx = 0.4 * uniform_dist(engine);
int sy = 0.4 * uniform_dist(engine);
mapnik::box2d<double> box(cx - sx, cy - sy, cx + sx, cy + sy);
auto itr = tree.query_in_box(box);
auto end = tree.query_end();
for (; itr != end; ++itr)
{
++count;
}
}
return true;
}
};
BENCHMARK(test, "quad_tree creation")

View file

@ -0,0 +1,123 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
#include <mapnik/font_engine_freetype.hpp>
#include <stdexcept>
class test : public benchmark::test_case
{
std::string xml_;
mapnik::box2d<double> extent_;
mapnik::value_integer width_;
mapnik::value_integer height_;
double scale_factor_;
std::string preview_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, xml_()
, extent_()
, width_(*params.get<mapnik::value_integer>("width", 256))
, height_(*params.get<mapnik::value_integer>("height", 256))
, scale_factor_(*params.get<mapnik::value_double>("scale_factor", 1.0))
, preview_(*params.get<std::string>("preview", ""))
{
const auto map = params.get<std::string>("map");
if (!map)
{
throw std::runtime_error("please provide a --map <path to xml> arg");
}
xml_ = *map;
const auto ext = params.get<std::string>("extent");
if (ext && !ext->empty())
{
if (!extent_.from_string(*ext))
throw std::runtime_error("could not parse `extent` string" + *ext);
}
/*
else
{
throw std::runtime_error("please provide a --extent=<minx,miny,maxx,maxy> arg");
}*/
}
bool validate() const
{
mapnik::Map m(width_, height_);
mapnik::load_map(m, xml_, true);
if (extent_.valid())
{
m.zoom_to_box(extent_);
}
else
{
m.zoom_all();
}
mapnik::image_rgba8 im(m.width(), m.height());
mapnik::agg_renderer<mapnik::image_rgba8> ren(m, im, scale_factor_);
ren.apply();
if (!preview_.empty())
{
std::clog << "preview available at " << preview_ << "\n";
mapnik::save_to_file(im, preview_);
}
return true;
}
bool operator()() const
{
if (!preview_.empty())
{
return false;
}
mapnik::Map m(width_, height_);
mapnik::load_map(m, xml_);
if (extent_.valid())
{
m.zoom_to_box(extent_);
}
else
{
m.zoom_all();
}
for (unsigned i = 0; i < iterations_; ++i)
{
mapnik::image_rgba8 im(m.width(), m.height());
mapnik::agg_renderer<mapnik::image_rgba8> ren(m, im, scale_factor_);
ren.apply();
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
int return_value = 0;
try
{
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
const auto name = params.get<std::string>("name");
if (!name)
{
std::clog << "please provide a name for this test\n";
return -1;
}
mapnik::freetype_engine::register_fonts("./fonts/", true);
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
{
test test_runner(params);
return_value = run(test_runner, *name);
}
}
catch (std::exception const& ex)
{
std::clog << ex.what() << "\n";
return -1;
}
return return_value;
}

View file

@ -0,0 +1,178 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
#include <mapnik/font_engine_freetype.hpp>
#include <mapnik/scale_denominator.hpp>
#include <mapnik/projection.hpp>
#include <mapnik/layer.hpp>
#include <mapnik/proj_transform.hpp>
#include <mapnik/datasource_cache.hpp>
#include <stdexcept>
template<typename Renderer>
void process_layers(Renderer& ren,
mapnik::request const& m_req,
mapnik::projection const& map_proj,
std::vector<mapnik::layer> const& layers,
double scale_denom)
{
unsigned layers_size = layers.size();
for (unsigned i = 0; i < layers_size; ++i)
{
mapnik::layer const& lyr = layers[i];
if (lyr.visible(scale_denom))
{
std::set<std::string> names;
mapnik::layer l(lyr);
ren.apply_to_layer(l,
ren,
map_proj,
m_req.scale(),
scale_denom,
m_req.width(),
m_req.height(),
m_req.extent(),
m_req.buffer_size(),
names);
}
}
}
class test : public benchmark::test_case
{
std::string xml_;
mapnik::box2d<double> extent_;
mapnik::value_integer width_;
mapnik::value_integer height_;
std::shared_ptr<mapnik::Map> m_;
double scale_factor_;
std::string preview_;
mutable mapnik::image_rgba8 im_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, xml_()
, extent_()
, width_(*params.get<mapnik::value_integer>("width", 256))
, height_(*params.get<mapnik::value_integer>("height", 256))
, m_(new mapnik::Map(width_, height_))
, scale_factor_(*params.get<mapnik::value_double>("scale_factor", 2.0))
, preview_(*params.get<std::string>("preview", ""))
, im_(m_->width(), m_->height())
{
const auto map = params.get<std::string>("map");
if (!map)
{
throw std::runtime_error("please provide a --map=<path to xml> arg");
}
xml_ = *map;
auto ext = params.get<std::string>("extent");
mapnik::load_map(*m_, xml_, true);
if (ext && !ext->empty())
{
if (!extent_.from_string(*ext))
throw std::runtime_error("could not parse `extent` string" + *ext);
}
else
{
m_->zoom_all();
extent_ = m_->get_current_extent();
std::clog << "Defaulting to max extent " << extent_ << "\n";
std::clog << " (pass --extent=<minx,miny,maxx,maxy> to restrict bounds)\n";
}
}
bool validate() const
{
mapnik::request m_req(width_, height_, extent_);
mapnik::attributes variables;
m_req.set_buffer_size(m_->buffer_size());
mapnik::projection map_proj(m_->srs(), true);
double scale_denom = mapnik::scale_denominator(m_req.scale(), map_proj.is_geographic());
scale_denom *= scale_factor_;
mapnik::agg_renderer<mapnik::image_rgba8> ren(*m_, m_req, variables, im_, scale_factor_);
ren.start_map_processing(*m_);
std::vector<mapnik::layer> const& layers = m_->layers();
process_layers(ren, m_req, map_proj, layers, scale_denom);
ren.end_map_processing(*m_);
if (!preview_.empty())
{
std::clog << "preview available at " << preview_ << "\n";
mapnik::save_to_file(im_, preview_);
}
return true;
}
bool operator()() const
{
if (!preview_.empty())
{
return false;
}
for (unsigned i = 0; i < iterations_; ++i)
{
mapnik::request m_req(width_, height_, extent_);
mapnik::image_rgba8 im(m_->width(), m_->height());
mapnik::attributes variables;
m_req.set_buffer_size(m_->buffer_size());
mapnik::projection map_proj(m_->srs(), true);
double scale_denom = mapnik::scale_denominator(m_req.scale(), map_proj.is_geographic());
scale_denom *= scale_factor_;
mapnik::agg_renderer<mapnik::image_rgba8> ren(*m_, m_req, variables, im, scale_factor_);
ren.start_map_processing(*m_);
std::vector<mapnik::layer> const& layers = m_->layers();
process_layers(ren, m_req, map_proj, layers, scale_denom);
ren.end_map_processing(*m_);
bool diff = false;
mapnik::image_rgba8 const& dest = im;
mapnik::image_rgba8 const& src = im_;
for (unsigned int y = 0; y < height_; ++y)
{
const unsigned int* row_from = src.get_row(y);
const unsigned int* row_to = dest.get_row(y);
for (unsigned int x = 0; x < width_; ++x)
{
if (row_from[x] != row_to[x])
diff = true;
}
}
if (diff)
throw std::runtime_error("images differ");
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
int return_value = 0;
try
{
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
const auto name = params.get<std::string>("name");
if (!name)
{
std::clog << "please provide a name for this test\n";
return -1;
}
mapnik::freetype_engine::register_fonts("./fonts/", true);
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
{
test test_runner(params);
return_value = run(test_runner, *name);
}
}
catch (std::exception const& ex)
{
std::clog << ex.what() << "\n";
return -1;
}
return return_value;
}

View file

@ -0,0 +1,34 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, value_("true")
{}
bool validate() const
{
bool result = false;
mapnik::util::string2bool(value_.data(), value_.data() + value_.size(), result);
if (!result)
return result;
mapnik::util::string2bool(value_, result);
return (result == true);
}
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
bool result = false;
mapnik::util::string2bool(value_, result);
mapnik::util::string2bool(value_.data(), value_.data() + value_.size(), result);
}
return true;
}
};
BENCHMARK(test, "string->bool")

View file

@ -0,0 +1,39 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, value_("1.23456789")
{}
bool validate() const
{
double result = 0;
if (!mapnik::util::string2double(value_.data(), value_.data() + value_.size(), result))
return false;
if (result != 1.23456789)
return false;
result = 0;
if (!mapnik::util::string2double(value_, result))
return false;
if (result != 1.23456789)
return false;
return true;
}
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
double result = 0;
mapnik::util::string2double(value_, result);
mapnik::util::string2double(value_.data(), value_.data() + value_.size(), result);
}
return true;
}
};
BENCHMARK(test, "string->double")

View file

@ -0,0 +1,39 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, value_("123456789")
{}
bool validate() const
{
mapnik::value_integer result = 0;
if (!mapnik::util::string2int(value_.data(), value_.data() + value_.size(), result))
return false;
if (result != 123456789)
return false;
result = 0;
if (!mapnik::util::string2int(value_, result))
return false;
if (result != 123456789)
return false;
return true;
}
bool operator()() const
{
for (std::size_t i = 0; i < iterations_; ++i)
{
mapnik::value_integer result = 0;
mapnik::util::string2int(value_, result);
mapnik::util::string2int(value_.data(), value_.data() + value_.size(), result);
}
return true;
}
};
BENCHMARK(test, "string->int")

View file

@ -0,0 +1,31 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
double value_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, value_(-0.1234)
{}
bool validate() const
{
std::string s;
mapnik::util::to_string(s, value_);
return (s == "-0.1234");
}
bool operator()() const
{
std::string out;
for (std::size_t i = 0; i < iterations_; ++i)
{
out.clear();
mapnik::util::to_string(out, value_);
}
return true;
}
};
BENCHMARK(test, "to_string double->string")

View file

@ -0,0 +1,32 @@
#include "bench_framework.hpp"
#include <sstream>
class test : public benchmark::test_case
{
double value_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, value_(-0.1234)
{}
bool validate() const
{
std::ostringstream s;
s << value_;
return (s.str() == "-0.1234");
}
bool operator()() const
{
std::string out;
for (std::size_t i = 0; i < iterations_; ++i)
{
std::ostringstream s;
s << value_;
out = s.str();
}
return true;
}
};
BENCHMARK(test, "ostringstream double->string")

View file

@ -0,0 +1,124 @@
#include "bench_framework.hpp"
#include <mapnik/unicode.hpp>
#include <mapnik/util/from_u8string.hpp>
#include <mapnik/value.hpp>
#include <boost/locale.hpp>
#ifndef __linux__
#include <codecvt>
#endif
using mapnik::util::from_u8string;
#ifndef __linux__
class test : public benchmark::test_case
{
std::string utf8_;
public:
test(mapnik::parameters const& params)
: test_case(params)
, utf8_(from_u8string(u8"שלום"))
{}
bool validate() const
{
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> utf32conv;
std::u32string utf32 = utf32conv.from_bytes(utf8_);
if (utf32.size() != 4)
return false;
if (utf32[0] != 0x5e9 && utf32[1] != 0x5dc && utf32[2] != 0x5d5 && utf32[3] != 0x5dd)
return false;
return true;
}
bool operator()() const
{
std::u32string utf32;
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> utf32conv;
for (std::size_t i = 0; i < iterations_; ++i)
{
utf32 = utf32conv.from_bytes(utf8_);
}
return true;
}
};
#endif
class test2 : public benchmark::test_case
{
std::string utf8_;
public:
test2(mapnik::parameters const& params)
: test_case(params)
, utf8_(from_u8string(u8"שלום"))
{}
bool validate() const
{
std::u32string utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
if (utf32.size() != 4)
return false;
if (utf32[0] != 0x5e9 && utf32[1] != 0x5dc && utf32[2] != 0x5d5 && utf32[3] != 0x5dd)
return false;
return true;
}
bool operator()() const
{
std::u32string utf32;
for (std::size_t i = 0; i < iterations_; ++i)
{
utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
}
return true;
}
};
class test3 : public benchmark::test_case
{
std::string utf8_;
public:
test3(mapnik::parameters const& params)
: test_case(params)
, utf8_(from_u8string(u8"שלום"))
{}
bool validate() const
{
mapnik::transcoder tr_("utf-8");
mapnik::value_unicode_string utf32 = tr_.transcode(utf8_.data(), utf8_.size());
// std::u32string utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
if (utf32.length() != 4)
return false;
if (utf32[0] != 0x5e9 && utf32[1] != 0x5dc && utf32[2] != 0x5d5 && utf32[3] != 0x5dd)
return false;
return true;
}
bool operator()() const
{
mapnik::transcoder tr_("utf-8");
mapnik::value_unicode_string utf32;
for (std::size_t i = 0; i < iterations_; ++i)
{
utf32 = tr_.transcode(utf8_.data(), utf8_.size());
}
return true;
}
};
int main(int argc, char** argv)
{
mapnik::setup();
mapnik::parameters params;
benchmark::handle_args(argc, argv, params);
int return_value = 0;
#ifndef __linux__
test test_runner(params);
return_value = return_value | run(test_runner, "utf encode std::codecvt");
#else
std::clog << "skipping 'utf encode std::codecvt' test since <codecvt> is not supported on __linux__\n";
#endif
test2 test_runner2(params);
return_value = return_value | run(test_runner2, "utf encode boost::locale");
test3 test_runner3(params);
return_value = return_value | run(test_runner3, "utf encode ICU");
return return_value;
}

View file

@ -2,16 +2,12 @@
class test : public benchmark::test_case
{
public:
public:
test(mapnik::parameters const& params)
: test_case(params) {}
bool validate() const
{
return true;
}
void operator()() const
{
}
: test_case(params)
{}
bool validate() const { return true; }
void operator()() const {}
};
BENCHMARK(test,"test name")
BENCHMARK(test, "test name")

View file

@ -1,347 +0,0 @@
#include "bench_framework.hpp"
#include <cstring>
#include <cstdlib>
#include <stdexcept>
#include <array>
#include <valarray>
#include <boost/version.hpp>
#if BOOST_VERSION >= 105400
#include <boost/container/static_vector.hpp>
#endif
// http://stackoverflow.com/questions/17347254/why-is-allocation-and-deallocation-of-stdvector-slower-than-dynamic-array-on-m
#define FULL_ZERO_CHECK
inline void ensure_zero(uint8_t * data, uint32_t size) {
#ifdef FULL_ZERO_CHECK
for (std::size_t i=0;i<size;++i) {
if (data[i] != 0) {
throw std::runtime_error("found non zero value");
}
}
#else
if (data[0] != 0) {
throw std::runtime_error("found non zero value");
}
#endif
}
class test1 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test1(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
// NOTE: sizeof(uint8_t) == 1
uint8_t *data = (uint8_t *)malloc(sizeof(uint8_t)*size_);
memcpy(data, &array_[0], size_);
ensure_zero(data,size_);
free(data);
}
}
};
class test1b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test1b(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
// NOTE: sizeof(uint8_t) == 1
uint8_t *data = (uint8_t *)malloc(sizeof(uint8_t)*size_);
memset(data, 0, sizeof(uint8_t)*size_);
ensure_zero(data,size_);
free(data);
}
}
};
class test2 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test2(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
uint8_t * data = static_cast<uint8_t*>(::operator new(sizeof(uint8_t)*size_));
memcpy(data, &array_[0], size_);
ensure_zero(data,size_);
::operator delete(data),data=0;
}
}
};
class test3 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::vector<uint8_t> data(size_);
ensure_zero(&data[0],data.size());
}
}
};
class test3b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3b(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::vector<uint8_t> data(0);
data.resize(size_,0);
ensure_zero(&data[0],data.size());
}
}
};
class test3c : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test3c(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::vector<uint8_t> data(0);
data.assign(size_,0);
ensure_zero(&data[0],data.size());
}
}
};
class test4 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test4(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
uint8_t *data = (uint8_t *)calloc(size_,sizeof(uint8_t));
ensure_zero(data,size_);
free(data);
}
}
};
class test5 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test5(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::string data(array_.begin(),array_.end());
ensure_zero((uint8_t *)&data[0],size_);
}
}
};
class test5b : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<char> array_;
test5b(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::string data(&array_[0],array_.size());
ensure_zero((uint8_t *)&data[0],size_);
}
}
};
// C++14 dynarray<T>
// http://isocpp.org/blog/2013/04/trip-report-iso-c-spring-2013-meeting
// http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130909/088700.html
// http://stackoverflow.com/questions/17303902/any-alternative-to-stddynarray-presently-available
class test6 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test6(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
std::valarray<uint8_t> data(static_cast<uint8_t>(0),static_cast<size_t>(size_));
ensure_zero(&data[0],size_);
}
}
};
#if BOOST_VERSION >= 105400
// http://i42.co.uk/stuff/vecarray.htm
// http://www.boost.org/doc/libs/1_54_0/doc/html/boost/container/static_vector.html
class test7 : public benchmark::test_case
{
public:
uint32_t size_;
std::vector<uint8_t> array_;
test7(mapnik::parameters const& params)
: test_case(params),
size_(*params.get<mapnik::value_integer>("size",256*256)),
array_(size_,0) { }
bool validate() const
{
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
boost::container::static_vector<uint8_t,256*256> data(size_,0);
ensure_zero(&data[0],size_);
}
}
};
#endif
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
{
test4 test_runner4(params);
run(test_runner4,"calloc");
}
{
test1 test_runner(params);
run(test_runner,"malloc/memcpy");
}
{
test1b test_runner(params);
run(test_runner,"malloc/memset");
}
{
test2 test_runner(params);
run(test_runner,"new");
}
{
test3 test_runner(params);
run(test_runner,"vector(N)");
}
{
test3b test_runner(params);
run(test_runner,"vector/resize");
}
{
test3c test_runner(params);
run(test_runner,"vector/assign");
}
{
test5 test_runner(params);
run(test_runner,"std::string range");
}
{
test5b test_runner(params);
run(test_runner,"std::string &[0]");
}
{
test6 test_runner(params);
run(test_runner,"valarray");
}
#if BOOST_VERSION >= 105400
{
test7 test_runner(params);
run(test_runner,"static_vector");
}
#endif
return 0;
}

View file

@ -1,40 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/unicode.hpp>
#include <mapnik/expression.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/expression_grammar.hpp>
class test : public benchmark::test_case
{
std::string expr_;
public:
test(mapnik::parameters const& params)
: test_case(params),
expr_("((([mapnik::geometry_type]=2) and ([oneway]=1)) and ([class]='path'))") {}
bool validate() const
{
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
std::string result = mapnik::to_expression_string(*expr);
bool ret = (result == expr_);
if (!ret)
{
std::clog << result << " != " << expr_ << "\n";
}
return ret;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
}
}
};
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
test test_runner(params);
run(test_runner,"expr parsing");
}

View file

@ -1,26 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/font_engine_freetype.hpp>
#include <boost/format.hpp>
#include <boost/foreach.hpp>
class test : public benchmark::test_case
{
public:
test(mapnik::parameters const& params)
: test_case(params) {}
bool validate() const
{
return mapnik::freetype_engine::register_fonts("./fonts", true);
}
void operator()() const
{
unsigned long count = 0;
for (unsigned i=0;i<iterations_;++i)
{
mapnik::freetype_engine::register_fonts("./fonts", true);
count++;
}
}
};
BENCHMARK(test,"font registration")

View file

@ -1,26 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/image_util.hpp>
#include <mapnik/graphics.hpp>
class test : public benchmark::test_case
{
mapnik::image_data_32 im_;
public:
test(mapnik::parameters const& params)
: test_case(params),
im_(256,256) {}
bool validate() const
{
return true;
}
void operator()() const
{
std::string out;
for (std::size_t i=0;i<iterations_;++i) {
out.clear();
out = mapnik::save_to_string(im_,"png8:m=h:z=1");
}
}
};
BENCHMARK(test,"encoding blank png")

View file

@ -1,36 +0,0 @@
#include "bench_framework.hpp"
#include "compare_images.hpp"
class test : public benchmark::test_case
{
std::shared_ptr<image_32> im_;
public:
test(mapnik::parameters const& params)
: test_case(params) {
std::string filename("./benchmark/data/multicolor.png");
std::unique_ptr<mapnik::image_reader> reader(mapnik::get_image_reader(filename,"png"));
if (!reader.get())
{
throw mapnik::image_reader_exception("Failed to load: " + filename);
}
im_ = std::make_shared<image_32>(reader->width(),reader->height());
reader->read(0,0,im_->data());
}
bool validate() const
{
std::string expected("./benchmark/data/multicolor-hextree-expected.png");
std::string actual("./benchmark/data/multicolor-hextree-actual.png");
mapnik::save_to_file(im_->data(),actual, "png8:m=h:z=1");
return benchmark::compare_images(actual,expected);
}
void operator()() const
{
std::string out;
for (std::size_t i=0;i<iterations_;++i) {
out.clear();
out = mapnik::save_to_string(im_->data(),"png8:m=h:z=1");
}
}
};
BENCHMARK(test,"encoding multicolor png")

View file

@ -1,320 +0,0 @@
#include "bench_framework.hpp"
#include "compare_images.hpp"
#include "agg_conv_clip_polygon.h"
#include <mapnik/geometry.hpp>
#include <mapnik/vertex.hpp>
#include <mapnik/transform_path_adapter.hpp>
#include <mapnik/view_transform.hpp>
#include <mapnik/graphics.hpp>
#include <mapnik/wkt/wkt_factory.hpp>
#include <mapnik/wkt/wkt_grammar_impl.hpp>
#include <mapnik/geometry.hpp>
#include <mapnik/projection.hpp>
#include <mapnik/proj_transform.hpp>
#include <mapnik/util/fs.hpp>
#include <mapnik/polygon_clipper.hpp>
#include <mapnik/image_util.hpp>
// agg
#include "agg_conv_clip_polygon.h"
// clipper
#include "agg_conv_clipper.h"
#include "agg_path_storage.h"
// rendering
#include "agg_basics.h"
#include "agg_rendering_buffer.h"
#include "agg_pixfmt_rgba.h"
#include "agg_rasterizer_scanline_aa.h"
#include "agg_scanline_u.h"
#include "agg_renderer_scanline.h"
// stl
#include <fstream>
void render(mapnik::geometry_type & geom,
mapnik::box2d<double> const& extent,
std::string const& name)
{
using path_type = mapnik::transform_path_adapter<mapnik::view_transform,mapnik::geometry_type>;
using ren_base = agg::renderer_base<agg::pixfmt_rgba32_plain>;
using renderer = agg::renderer_scanline_aa_solid<ren_base>;
mapnik::image_32 im(256,256);
im.set_background(mapnik::color("white"));
mapnik::box2d<double> padded_extent = extent;
padded_extent.pad(10);
mapnik::view_transform tr(im.width(),im.height(),padded_extent,0,0);
agg::rendering_buffer buf(im.raw_data(),im.width(),im.height(), im.width() * 4);
agg::pixfmt_rgba32_plain pixf(buf);
ren_base renb(pixf);
renderer ren(renb);
ren.color(agg::rgba8(127,127,127,255));
agg::rasterizer_scanline_aa<> ras;
mapnik::proj_transform prj_trans(mapnik::projection("+init=epsg:4326"),mapnik::projection("+init=epsg:4326"));
geom.rewind(0);
path_type path(tr,geom,prj_trans);
ras.add_path(path);
agg::scanline_u8 sl;
agg::render_scanlines(ras, sl, ren);
mapnik::save_to_file(im,name);
geom.rewind(0);
}
class test1 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
using conv_clip = agg::conv_clip_polygon<mapnik::geometry_type>;
test1(mapnik::parameters const& params,
std::string const& wkt_in,
mapnik::box2d<double> const& extent)
: test_case(params),
wkt_in_(wkt_in),
extent_(extent),
expected_("./benchmark/data/polygon_clipping_agg") {}
bool validate() const
{
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190,313 190))");
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
if (paths.size() != 1)
{
std::clog << "paths.size() != 1\n";
return false;
}
mapnik::geometry_type & geom = paths[0];
conv_clip clipped(geom);
clipped.clip_box(
extent_.minx(),
extent_.miny(),
extent_.maxx(),
extent_.maxy());
unsigned cmd;
double x,y;
mapnik::geometry_type geom2(mapnik::geometry_type::types::Polygon);
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
}
std::string expect = expected_+".png";
std::string actual = expected_+"_actual.png";
if (!mapnik::util::exists(expect))
{
std::clog << "generating expected image: " << expect << "\n";
render(geom2,geom.envelope(),expect);
}
render(geom2,geom.envelope(),actual);
return benchmark::compare_images(actual,expect);
}
void operator()() const
{
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
for (unsigned i=0;i<iterations_;++i)
{
for (mapnik::geometry_type & geom : paths)
{
conv_clip clipped(geom);
clipped.clip_box(
extent_.minx(),
extent_.miny(),
extent_.maxx(),
extent_.maxy());
unsigned cmd;
double x,y;
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
}
}
}
};
class test2 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
using poly_clipper = agg::conv_clipper<mapnik::geometry_type, agg::path_storage>;
test2(mapnik::parameters const& params,
std::string const& wkt_in,
mapnik::box2d<double> const& extent)
: test_case(params),
wkt_in_(wkt_in),
extent_(extent),
expected_("./benchmark/data/polygon_clipping_clipper") {}
bool validate() const
{
std::string expected_wkt("Polygon((212 134,329 138,394 229,528 178,631 234.4,631 321.3,559 466,463 324,421 446,315 340,233 454,181 286.7,181 238.2,200 264,183 228),(313 190,229 191,249 334,343 287,405 378,455 262,553 397,613 263,533 237,510 305,470 248,440 256))");
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
agg::path_storage ps;
ps.move_to(extent_.minx(), extent_.miny());
ps.line_to(extent_.minx(), extent_.maxy());
ps.line_to(extent_.maxx(), extent_.maxy());
ps.line_to(extent_.maxx(), extent_.miny());
ps.close_polygon();
if (paths.size() != 1)
{
std::clog << "paths.size() != 1\n";
return false;
}
mapnik::geometry_type & geom = paths[0];
poly_clipper clipped(geom,ps,
agg::clipper_and,
agg::clipper_non_zero,
agg::clipper_non_zero,
1);
clipped.rewind(0);
unsigned cmd;
double x,y;
mapnik::geometry_type geom2(mapnik::geometry_type::types::Polygon);
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
}
std::string expect = expected_+".png";
std::string actual = expected_+"_actual.png";
if (!mapnik::util::exists(expect))
{
std::clog << "generating expected image: " << expect << "\n";
render(geom2,geom.envelope(),expect);
}
render(geom2,geom.envelope(),actual);
return benchmark::compare_images(actual,expect);
}
void operator()() const
{
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
agg::path_storage ps;
ps.move_to(extent_.minx(), extent_.miny());
ps.line_to(extent_.minx(), extent_.maxy());
ps.line_to(extent_.maxx(), extent_.maxy());
ps.line_to(extent_.maxx(), extent_.miny());
ps.close_polygon();
for (unsigned i=0;i<iterations_;++i)
{
for (mapnik::geometry_type & geom : paths)
{
poly_clipper clipped(geom,ps,
agg::clipper_and,
agg::clipper_non_zero,
agg::clipper_non_zero,
1);
clipped.rewind(0);
unsigned cmd;
double x,y;
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
}
}
}
};
class test3 : public benchmark::test_case
{
std::string wkt_in_;
mapnik::box2d<double> extent_;
std::string expected_;
public:
using poly_clipper = mapnik::polygon_clipper<mapnik::geometry_type>;
test3(mapnik::parameters const& params,
std::string const& wkt_in,
mapnik::box2d<double> const& extent)
: test_case(params),
wkt_in_(wkt_in),
extent_(extent),
expected_("./benchmark/data/polygon_clipping_boost") {}
bool validate() const
{
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444,181 286.666667),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190))");
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
if (paths.size() != 1)
{
std::clog << "paths.size() != 1\n";
return false;
}
mapnik::geometry_type & geom = paths[0];
poly_clipper clipped(extent_, geom);
unsigned cmd;
double x,y;
mapnik::geometry_type geom2(mapnik::geometry_type::types::Polygon);
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
}
std::string expect = expected_+".png";
std::string actual = expected_+"_actual.png";
if (!mapnik::util::exists(expect))
{
std::clog << "generating expected image: " << expect << "\n";
render(geom2,geom.envelope(),expect);
}
render(geom2,geom.envelope(),actual);
return benchmark::compare_images(actual,expect);
}
void operator()() const
{
boost::ptr_vector<mapnik::geometry_type> paths;
if (!mapnik::from_wkt(wkt_in_, paths))
{
throw std::runtime_error("Failed to parse WKT");
}
for (unsigned i=0;i<iterations_;++i)
{
for ( mapnik::geometry_type & geom : paths)
{
poly_clipper clipped(extent_, geom);
unsigned cmd;
double x,y;
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
}
}
}
};
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
// polygon/rect clipping
// IN : POLYGON ((155 203, 233 454, 315 340, 421 446, 463 324, 559 466, 665 253, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 155 203),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
// RECT : POLYGON ((181 106, 181 470, 631 470, 631 106, 181 106))
// OUT (expected)
// POLYGON ((181 286.6666666666667, 233 454, 315 340, 421 446, 463 324, 559 466, 631 321.3207547169811, 631 234.38686131386862, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 181 238.24444444444444, 181 286.6666666666667),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
mapnik::box2d<double> clipping_box(181,106,631,470);
std::string filename_("./benchmark/data/polygon.wkt");
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
if (!in.is_open())
throw std::runtime_error("could not open: '" + filename_ + "'");
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
(std::istreambuf_iterator<char>()) );
{
test1 test_runner(params,wkt_in,clipping_box);
run(test_runner,"clipping polygon with agg");
}
{
test2 test_runner(params,wkt_in,clipping_box);
run(test_runner,"clipping polygon with clipper");
}
{
test3 test_runner(params,wkt_in,clipping_box);
run(test_runner,"clipping polygon with boost");
}
return 0;
}

View file

@ -1,79 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/graphics.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
class test : public benchmark::test_case
{
std::string xml_;
mapnik::box2d<double> extent_;
public:
test(mapnik::parameters const& params,
std::string const& xml,
mapnik::box2d<double> const& extent)
: test_case(params),
xml_(xml),
extent_(extent)
{}
bool validate() const
{
mapnik::Map m(256,256);
mapnik::load_map(m,xml_);
m.zoom_to_box(extent_);
mapnik::image_32 im(m.width(),m.height());
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
ren.apply();
//mapnik::save_to_file(im,"test.png");
return true;
}
void operator()() const
{
mapnik::Map m(256,256);
mapnik::load_map(m,xml_);
m.zoom_to_box(extent_);
for (unsigned i=0;i<iterations_;++i)
{
mapnik::image_32 im(m.width(),m.height());
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
ren.apply();
}
}
};
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
mapnik::box2d<double> z1(-20037508.3428,-8317435.0606,20037508.3428,18399242.7298);
// bbox for 16/10491/22911.png
mapnik::box2d<double> z16(-13622912.929097254,6026906.8062295765,-13621689.93664469,6028129.79868214);
{
test test_runner(params,
"benchmark/data/polygon_rendering_clip.xml",
z1);
run(test_runner,"polygon clip render z1");
}
{
test test_runner(params,
"benchmark/data/polygon_rendering_no_clip.xml",
z1);
run(test_runner,"polygon noclip render z1");
}
{
test test_runner(params,
"benchmark/data/polygon_rendering_clip.xml",
z16);
run(test_runner,"polygon clip render z16");
}
{
test test_runner(params,
"benchmark/data/polygon_rendering_no_clip.xml",
z16);
run(test_runner,"polygon noclip render z16");
}
return 0;
}

View file

@ -1,96 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/box2d.hpp>
#include <mapnik/projection.hpp>
#include <mapnik/proj_transform.hpp>
class test : public benchmark::test_case
{
std::string src_;
std::string dest_;
mapnik::box2d<double> from_;
mapnik::box2d<double> to_;
bool defer_proj4_init_;
public:
test(mapnik::parameters const& params,
std::string const& src,
std::string const& dest,
mapnik::box2d<double> const& from,
mapnik::box2d<double> const& to,
bool defer_proj)
: test_case(params),
src_(src),
dest_(dest),
from_(from),
to_(to),
defer_proj4_init_(defer_proj) {}
bool validate() const
{
mapnik::projection src(src_,defer_proj4_init_);
mapnik::projection dest(dest_,defer_proj4_init_);
mapnik::proj_transform tr(src,dest);
mapnik::box2d<double> bbox = from_;
if (!tr.forward(bbox)) return false;
return ((std::fabs(bbox.minx() - to_.minx()) < .5) &&
(std::fabs(bbox.maxx() - to_.maxx()) < .5) &&
(std::fabs(bbox.miny() - to_.miny()) < .5) &&
(std::fabs(bbox.maxy() - to_.maxy()) < .5)
);
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
for (int i=-180;i<180;i=i+5)
{
for (int j=-85;j<85;j=j+5)
{
mapnik::projection src(src_,defer_proj4_init_);
mapnik::projection dest(dest_,defer_proj4_init_);
mapnik::proj_transform tr(src,dest);
mapnik::box2d<double> box(i,j,i,j);
if (!tr.forward(box)) throw std::runtime_error("could not transform coords");
}
}
}
}
};
// echo -180 -60 | cs2cs -f "%.10f" +init=epsg:4326 +to +init=epsg:3857
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
mapnik::box2d<double> from(-180,-80,180,80);
mapnik::box2d<double> to(-20037508.3427892476,-15538711.0963092316,20037508.3427892476,15538711.0963092316);
std::string from_str("+init=epsg:4326");
std::string to_str("+init=epsg:3857");
std::string from_str2("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
std::string to_str2("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over");
test test_runner(params,
from_str,
to_str,
from,
to,
true);
run(test_runner,"lonlat->merc epsg");
test test_runner2(params,
from_str2,
to_str2,
from,
to,
true);
run(test_runner2,"lonlat->merc literal");
test test_runner3(params,
to_str,
from_str,
to,
from,
true);
run(test_runner3,"merc->lonlat epsg");
test test_runner4(params,
to_str2,
from_str2,
to,
from,
true);
return run(test_runner4,"merc->lonlat literal");
}

View file

@ -1,95 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/map.hpp>
#include <mapnik/image_util.hpp>
#include <mapnik/load_map.hpp>
#include <mapnik/graphics.hpp>
#include <mapnik/agg_renderer.hpp>
#include <mapnik/datasource_cache.hpp>
#include <stdexcept>
class test : public benchmark::test_case
{
std::string xml_;
mapnik::box2d<double> extent_;
mapnik::value_integer width_;
mapnik::value_integer height_;
std::string preview_;
public:
test(mapnik::parameters const& params)
: test_case(params),
xml_(),
extent_(),
width_(*params.get<mapnik::value_integer>("width",256)),
height_(*params.get<mapnik::value_integer>("height",256)),
preview_(*params.get<std::string>("preview",""))
{
boost::optional<std::string> map = params.get<std::string>("map");
if (!map)
{
throw std::runtime_error("please provide a --map=<path to xml> arg");
}
xml_ = *map;
boost::optional<std::string> ext = params.get<std::string>("extent");
if (ext && !ext->empty())
{
if (!extent_.from_string(*ext))
throw std::runtime_error("could not parse `extent` string" + *ext);
}
else
{
throw std::runtime_error("please provide a --extent=<minx,miny,maxx,maxy> arg");
}
}
bool validate() const
{
mapnik::Map m(width_,height_);
mapnik::load_map(m,xml_,true);
m.zoom_to_box(extent_);
mapnik::image_32 im(m.width(),m.height());
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
ren.apply();
if (!preview_.empty()) mapnik::save_to_file(im,preview_);
return true;
}
void operator()() const
{
mapnik::Map m(width_,height_);
mapnik::load_map(m,xml_);
m.zoom_to_box(extent_);
for (unsigned i=0;i<iterations_;++i)
{
mapnik::image_32 im(m.width(),m.height());
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
ren.apply();
}
}
};
int main(int argc, char** argv)
{
try
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
boost::optional<std::string> name = params.get<std::string>("name");
if (!name)
{
std::clog << "please provide a name for this test\n";
return -1;
}
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
{
test test_runner(params);
run(test_runner,*name);
}
}
catch (std::exception const& ex)
{
std::clog << ex.what() << "\n";
return -1;
}
return 0;
}

View file

@ -1,29 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params),
value_("true") {}
bool validate() const
{
bool result = false;
mapnik::util::string2bool(value_.data(),value_.data()+value_.size(),result);
if (!result) return result;
mapnik::util::string2bool(value_,result);
return (result == true);
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
bool result = false;
mapnik::util::string2bool(value_,result);
mapnik::util::string2bool(value_.data(),value_.data()+value_.size(),result);
}
}
};
BENCHMARK(test,"string->bool")

View file

@ -1,31 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params),
value_("1.23456789") {}
bool validate() const
{
double result = 0;
if (!mapnik::util::string2double(value_.data(),value_.data()+value_.size(),result)) return false;
if (result != 1.23456789) return false;
result = 0;
if (!mapnik::util::string2double(value_,result)) return false;
if (result != 1.23456789) return false;
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
double result = 0;
mapnik::util::string2double(value_,result);
mapnik::util::string2double(value_.data(),value_.data()+value_.size(),result);
}
}
};
BENCHMARK(test,"string->double")

View file

@ -1,31 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
std::string value_;
public:
test(mapnik::parameters const& params)
: test_case(params),
value_("123456789") {}
bool validate() const
{
mapnik::value_integer result = 0;
if (!mapnik::util::string2int(value_.data(),value_.data()+value_.size(),result)) return false;
if (result != 123456789) return false;
result = 0;
if (!mapnik::util::string2int(value_,result)) return false;
if (result != 123456789) return false;
return true;
}
void operator()() const
{
for (std::size_t i=0;i<iterations_;++i) {
mapnik::value_integer result = 0;
mapnik::util::string2int(value_,result);
mapnik::util::string2int(value_.data(),value_.data()+value_.size(),result);
}
}
};
BENCHMARK(test,"string->int")

View file

@ -1,27 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/util/conversions.hpp>
class test : public benchmark::test_case
{
double value_;
public:
test(mapnik::parameters const& params)
: test_case(params),
value_(-0.1234) {}
bool validate() const
{
std::string s;
mapnik::util::to_string(s,value_);
return (s == "-0.1234");
}
void operator()() const
{
std::string out;
for (std::size_t i=0;i<iterations_;++i) {
out.clear();
mapnik::util::to_string(out,value_);
}
}
};
BENCHMARK(test,"to_string double->string")

View file

@ -1,28 +0,0 @@
#include "bench_framework.hpp"
#include <sstream>
class test : public benchmark::test_case
{
double value_;
public:
test(mapnik::parameters const& params)
: test_case(params),
value_(-0.1234) {}
bool validate() const
{
std::ostringstream s;
s << value_;
return (s.str() == "-0.1234");
}
void operator()() const
{
std::string out;
for (std::size_t i=0;i<iterations_;++i) {
std::ostringstream s;
s << value_;
out = s.str();
}
}
};
BENCHMARK(test,"ostringstream double->string")

View file

@ -1,107 +0,0 @@
#include "bench_framework.hpp"
#include <mapnik/unicode.hpp>
#include <mapnik/value.hpp>
#include <boost/locale.hpp>
#ifndef __linux__
#include <codecvt>
class test : public benchmark::test_case
{
std::string utf8_;
public:
test(mapnik::parameters const& params)
: test_case(params),
utf8_(u8"שלום") {}
bool validate() const
{
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> utf32conv;
std::u32string utf32 = utf32conv.from_bytes(utf8_);
if (utf32.size() != 4) return false;
if (utf32[0] != 0x5e9 &&
utf32[1] != 0x5dc &&
utf32[2] != 0x5d5 &&
utf32[3] != 0x5dd) return false;
return true;
}
void operator()() const
{
std::u32string utf32;
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> utf32conv;
for (std::size_t i=0;i<iterations_;++i) {
utf32 = utf32conv.from_bytes(utf8_);
}
}
};
#endif
class test2 : public benchmark::test_case
{
std::string utf8_;
public:
test2(mapnik::parameters const& params)
: test_case(params),
utf8_(u8"שלום") {}
bool validate() const
{
std::u32string utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
if (utf32.size() != 4) return false;
if (utf32[0] != 0x5e9 &&
utf32[1] != 0x5dc &&
utf32[2] != 0x5d5 &&
utf32[3] != 0x5dd) return false;
return true;
}
void operator()() const
{
std::u32string utf32;
for (std::size_t i=0;i<iterations_;++i) {
utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
}
}
};
class test3 : public benchmark::test_case
{
std::string utf8_;
public:
test3(mapnik::parameters const& params)
: test_case(params),
utf8_(u8"שלום") {}
bool validate() const
{
mapnik::transcoder tr_("utf-8");
mapnik::value_unicode_string utf32 = tr_.transcode(utf8_.data(),utf8_.size());
//std::u32string utf32 = boost::locale::conv::utf_to_utf<char32_t>(utf8_);
if (utf32.length() != 4) return false;
if (utf32[0] != 0x5e9 &&
utf32[1] != 0x5dc &&
utf32[2] != 0x5d5 &&
utf32[3] != 0x5dd) return false;
return true;
}
void operator()() const
{
mapnik::transcoder tr_("utf-8");
mapnik::value_unicode_string utf32;
for (std::size_t i=0;i<iterations_;++i) {
utf32 = tr_.transcode(utf8_.data(),utf8_.size());
}
}
};
int main(int argc, char** argv)
{
mapnik::parameters params;
benchmark::handle_args(argc,argv,params);
#ifndef __linux__
test test_runner(params);
run(test_runner,"utf encode std::codecvt");
#else
std::clog << "skipping 'utf encode std::codecvt' test since <codecvt> is not supported on __linux__\n";
#endif
test2 test_runner2(params);
run(test_runner2,"utf encode boost::locale");
test3 test_runner3(params);
return run(test_runner3,"utf encode ICU");
}

View file

@ -3,8 +3,8 @@ import random
im = mapnik.Image(256,256)
for x in xrange(0,im.width()):
for y in xrange(0,im.height()):
for x in range(im.width()):
for y in range(im.height()):
r = int(random.random() * 255)
g = random.random() * 255
b = random.random() * 255

View file

@ -1,160 +0,0 @@
#
# This file is part of Mapnik (c++ mapping toolkit)
#
# Copyright (C) 2013 Artem Pavlenko
#
# Mapnik is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
#
import re
import os
import sys
from copy import copy
from subprocess import Popen, PIPE
Import('env')
config_env = env.Clone()
config_variables = '''#!/bin/bash
## variables
CONFIG_PREFIX="$( cd "$( dirname $( dirname "$0" ))" && pwd )"
CONFIG_MAPNIK_VERSION_STRING='%(version_string)s'
CONFIG_MAPNIK_VERSION='%(version)s'
CONFIG_GIT_REVISION='%(git_revision)s'
CONFIG_GIT_DESCRIBE='%(git_describe)s'
CONFIG_FONTS="%(fonts)s"
CONFIG_INPUT_PLUGINS="%(input_plugins)s"
CONFIG_MAPNIK_DEFINES='%(defines)s'
CONFIG_MAPNIK_LIBNAME='%(mapnik_libname)s'
CONFIG_MAPNIK_LIBPATH="%(mapnik_libpath)s"
CONFIG_DEP_LIBS='%(dep_libs)s'
CONFIG_MAPNIK_LDFLAGS="%(ldflags)s"
CONFIG_MAPNIK_INCLUDE="${CONFIG_PREFIX}/include -I${CONFIG_PREFIX}/include/mapnik/agg"
CONFIG_DEP_INCLUDES="%(dep_includes)s"
CONFIG_CXXFLAGS="%(cxxflags)s"
CONFIG_CXX='%(cxx)s'
'''
def write_config(configuration,template,config_file):
template = open(template,'r').read()
open(config_file,'w').write(config_variables % configuration + template)
try:
os.chmod(config_file,0755)
except: pass
cxxflags = ' '.join(config_env['LIBMAPNIK_CXXFLAGS'])
defines = ' '.join(config_env['LIBMAPNIK_DEFINES'])
dep_includes = ''.join([' -I%s' % i for i in config_env['CPPPATH'] if not i.startswith('#')])
dep_includes += ' '
if config_env['HAS_CAIRO']:
dep_includes += ''.join([' -I%s' % i for i in env['CAIRO_CPPPATHS'] if not i.startswith('#')])
ldflags = ''.join([' -L%s' % i for i in config_env['LIBPATH'] if not i.startswith('#')])
ldflags += config_env['LIBMAPNIK_LINKFLAGS']
dep_libs = ''.join([' -l%s' % i for i in env['LIBMAPNIK_LIBS']])
# remove local agg from public linking
dep_libs = dep_libs.replace('-lagg','')
git_revision = 'unknown'
git_describe = 'unknown'
# special GIT_REVISION/GIT_DESCRIBE files present only for official releases
# where the git directory metadata is stripped
# more info: https://github.com/mapnik/mapnik/wiki/MapnikReleaseSteps
revision_release_file = '../../GIT_REVISION'
if os.path.exists(revision_release_file):
git_revision = open(revision_release_file,'r').read()
else:
git_cmd = "git rev-list --max-count=1 HEAD"
stdin, stderr = Popen(git_cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate()
if not stderr:
git_revision = stdin.strip()
describe_release_file = '../../GIT_DESCRIBE'
if os.path.exists(describe_release_file):
git_describe = open(describe_release_file,'r').read()
else:
git_cmd = "git describe"
stdin, stderr = Popen(git_cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate()
if not stderr:
git_describe = stdin.strip()
# for fonts and input plugins we should try
# to store the relative path, if feasible
fontspath = config_env['MAPNIK_FONTS']
lib_root = os.path.join(config_env['PREFIX'], config_env['LIBDIR_SCHEMA'])
if lib_root in fontspath:
fontspath = "${CONFIG_PREFIX}/" + os.path.relpath(fontspath,config_env['PREFIX'])
inputpluginspath = config_env['MAPNIK_INPUT_PLUGINS']
if lib_root in inputpluginspath:
inputpluginspath = "${CONFIG_PREFIX}/" + os.path.relpath(inputpluginspath,config_env['PREFIX'])
lib_path = "${CONFIG_PREFIX}/" + config_env['LIBDIR_SCHEMA']
configuration = {
"git_revision": git_revision,
"git_describe": git_describe,
"version_string": config_env['MAPNIK_VERSION_STRING'],
"version": config_env['MAPNIK_VERSION'],
"mapnik_libname": env['MAPNIK_NAME'],
"mapnik_libpath": lib_path,
"ldflags": ldflags,
"dep_libs": dep_libs,
"dep_includes": dep_includes,
"fonts": fontspath,
"input_plugins": inputpluginspath,
"defines":defines,
"cxxflags":cxxflags,
"cxx":env['CXX']
}
## if we are statically linking depedencies
## then they do not need to be reported in ldflags
#if env['RUNTIME_LINK'] == 'static':
# configuration['ldflags'] = ''
# configuration['dep_libs'] = ''
template = 'mapnik-config.template.sh'
config_file = 'mapnik-config'
source = config_file
write_config(configuration,template,config_file)
target_path = os.path.normpath(os.path.join(config_env['INSTALL_PREFIX'],'bin'))
full_target = os.path.join(target_path,config_file)
Depends(full_target, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
if 'install' in COMMAND_LINE_TARGETS:
# we must add 'install' catch here because otherwise
# custom command will be run when not installing
env.Alias('install',full_target)
env.Command(full_target, config_file,
[
Copy("$TARGET","$SOURCE"),
Chmod("$TARGET", 0755),
])
config_env['create_uninstall_target'](env,os.path.join(target_path,config_file))

View file

@ -1,139 +0,0 @@
## program below
usage()
{
cat <<EOF
Usage: mapnik-config [OPTION]
Known values for OPTION are:
-h --help display this help and exit
-v --version version information (MAPNIK_VERSION_STRING)
--version-number version number (MAPNIK_VERSION) (new in 2.2.0)
--git-revision git hash from "git rev-list --max-count=1 HEAD"
--git-describe git decribe output (new in 2.2.0)
--fonts default fonts directory
--input-plugins default input plugins directory
--defines pre-processor defines for Mapnik build (new in 2.2.0)
--prefix Mapnik prefix [default $CONFIG_PREFIX]
--lib-name Mapnik library name
--libs library linking information
--dep-libs library linking information for Mapnik dependencies
--ldflags library paths (-L) information
--includes include paths (-I) for Mapnik headers (new in 2.2.0)
--dep-includes include paths (-I) for Mapnik dependencies (new in 2.2.0)
--cxxflags c++ compiler flags and pre-processor defines (new in 2.2.0)
--cflags all include paths, compiler flags, and pre-processor defines (for back-compatibility)
--cxx c++ compiler used to build mapnik (new in 2.2.0)
--all-flags all compile and link flags (new in 2.2.0)
EOF
exit $1
}
echoerr() { echo "$@" 1>&2; }
if test $# -eq 0; then
usage 1
fi
while test $# -gt 0; do
case "$1" in
esac
case "$1" in
--help)
usage 0
;;
-h)
usage 0
;;
-v)
echo ${CONFIG_MAPNIK_VERSION_STRING}
;;
--version)
echo ${CONFIG_MAPNIK_VERSION_STRING}
;;
--version-number)
echo ${CONFIG_MAPNIK_VERSION}
;;
--git-revision)
echo ${CONFIG_GIT_REVISION}
;;
--git-describe)
echo ${CONFIG_GIT_DESCRIBE}
;;
--fonts)
echo ${CONFIG_FONTS}
;;
--input-plugins)
echo ${CONFIG_INPUT_PLUGINS}
;;
--defines)
echo ${CONFIG_MAPNIK_DEFINES}
;;
--prefix)
echo ${CONFIG_PREFIX}
;;
--lib-name)
echo ${CONFIG_MAPNIK_LIBNAME}
;;
--libs)
echo -L${CONFIG_MAPNIK_LIBPATH} -l${CONFIG_MAPNIK_LIBNAME}
;;
--dep-libs)
echo ${CONFIG_DEP_LIBS}
;;
--ldflags)
echo ${CONFIG_MAPNIK_LDFLAGS}
;;
--includes)
echo -I${CONFIG_MAPNIK_INCLUDE}
;;
--dep-includes)
echo ${CONFIG_DEP_INCLUDES}
;;
--cxxflags)
echo ${CONFIG_CXXFLAGS}
;;
--cflags)
echo -I${CONFIG_MAPNIK_INCLUDE} ${CONFIG_DEP_INCLUDES} ${CONFIG_MAPNIK_DEFINES} ${CONFIG_CXXFLAGS}
;;
--cxx)
echo ${CONFIG_CXX}
;;
--all-flags)
echo -I${CONFIG_MAPNIK_INCLUDE} ${CONFIG_DEP_INCLUDES} ${CONFIG_MAPNIK_DEFINES} ${CONFIG_CXXFLAGS} -L${CONFIG_MAPNIK_LIBPATH} -l${CONFIG_MAPNIK_LIBNAME} ${CONFIG_MAPNIK_LDFLAGS} ${CONFIG_DEP_LIBS}
;;
*)
# push to stderr any invalid options
echo "unknown option $1" 1>&2;
;;
esac
shift
done
exit 0

View file

@ -1,49 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2013 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#ifndef MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM
#define MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM
// boost
#include <boost/version.hpp>
#include <boost/config.hpp>
#if BOOST_VERSION < 105300 || defined BOOST_NO_CXX11_SMART_PTR
// https://github.com/mapnik/mapnik/issues/2022
#include <memory>
namespace boost {
template<class T> const T* get_pointer(std::shared_ptr<T> const& p)
{
return p.get();
}
template<class T> T* get_pointer(std::shared_ptr<T>& p)
{
return p.get();
}
} // namespace boost
#endif
#endif // MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM

View file

@ -1,206 +0,0 @@
#
# This file is part of Mapnik (c++ mapping toolkit)
#
# Copyright (C) 2013 Artem Pavlenko
#
# Mapnik is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
#
import os, re, sys, glob
from subprocess import Popen, PIPE
Import('env')
def call(cmd, silent=True):
stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate()
if not stderr:
return stdin.strip()
elif not silent:
print stderr
def run_2to3(*args,**kwargs):
call('2to3 -w %s' % os.path.dirname(kwargs['target'][0].path))
def is_py3():
return 'True' in os.popen('''%s -c "import sys as s;s.stdout.write(str(s.version_info[0] == 3))"''' % env['PYTHON']).read().strip()
prefix = env['PREFIX']
target_path = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + env['MAPNIK_NAME'])
target_path_deprecated = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'mapnik2')
py_env = env.Clone()
py_env.Append(CPPPATH = env['PYTHON_INCLUDES'])
py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
py_env['LIBS'] = [env['MAPNIK_NAME'],env['BOOST_PYTHON_LIB']]
link_all_libs = env['LINKING'] == 'static' or env['RUNTIME_LINK'] == 'static' or (env['PLATFORM'] == 'Darwin' and not env['PYTHON_DYNAMIC_LOOKUP'])
# even though boost_thread is no longer used in mapnik core
# we need to link in for boost_python to avoid missing symbol: _ZN5boost6detail12get_tss_dataEPKv / boost::detail::get_tss_data
py_env.AppendUnique(LIBS = 'boost_thread%s' % env['BOOST_APPEND'])
if link_all_libs:
py_env.AppendUnique(LIBS=env['LIBMAPNIK_LIBS'])
# note: on linux -lrt must be linked after thread to avoid: undefined symbol: clock_gettime
if env['RUNTIME_LINK'] == 'static' and env['PLATFORM'] == 'Linux':
py_env.AppendUnique(LIBS='rt')
# TODO - do solaris/fedora need direct linking too?
if env['PLATFORM'] == 'Darwin':
##### Python linking on OS X is tricky ###
# Confounding problems are:
# 1) likelyhood of multiple python installs of the same major.minor version
# because apple supplies python built-in and many users may have installed
# further versions using macports
# 2) boost python directly links to a python version
# 3) the below will directly link _mapnik.so to a python version
# 4) _mapnik.so must link to the same python lib as boost_python.dylib otherwise
# python will Abort with a Version Mismatch error.
# See https://github.com/mapnik/mapnik/issues/453 for the seeds of a better approach
# for now we offer control over method of direct linking...
# The default below is to link against the python dylib in the form of
#/path/to/Python.framework/Python instead of -lpython
# http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/ld.1.html
if env['PYTHON_DYNAMIC_LOOKUP']:
python_link_flag = '-undefined dynamic_lookup'
elif env['FRAMEWORK_PYTHON']:
if env['FRAMEWORK_SEARCH_PATH']:
# if the user has supplied a custom root path to search for
# a given Python framework, then use that to direct the linker
python_link_flag = '-F%s -framework Python -Z' % env['FRAMEWORK_SEARCH_PATH']
else:
# otherwise be as explicit as possible for linking to the same Framework
# as the executable we are building with (or is pointed to by the PYTHON variable)
# otherwise we may accidentally link against either:
# /System/Library/Frameworks/Python.framework/Python/Versions/
# or
# /Library/Frameworks/Python.framework/Python/Versions/
# See: https://github.com/mapnik/mapnik/issues/380
link_prefix = env['PYTHON_SYS_PREFIX']
if '.framework' in link_prefix:
python_link_flag = '-F%s -framework Python -Z' % os.path.dirname(link_prefix.split('.')[0])
elif '/System' in link_prefix:
python_link_flag = '-F/System/Library/Frameworks/ -framework Python -Z'
else:
# should we fall back to -lpython here?
python_link_flag = '-F/ -framework Python'
# if we are not linking to a framework then use the *nix standard approach
else:
# TODO - do we need to pass -L/?
python_link_flag = '-lpython%s' % env['PYTHON_VERSION']
elif env['PLATFORM'] == 'SunOS':
# make sure to explicitly link mapnik.so against
# libmapnik in its installed location
python_link_flag = '-R%s' % env['MAPNIK_LIB_BASE']
else:
# all other platforms we don't directly link python
python_link_flag = ''
paths = '''
"""Configuration paths of Mapnik fonts and input plugins (auto-generated by SCons)."""
from os.path import normpath,join,dirname
mapniklibpath = '%s'
mapniklibpath = normpath(join(dirname(__file__),mapniklibpath))
'''
paths += "inputpluginspath = join(mapniklibpath,'input')\n"
if env['SYSTEM_FONTS']:
paths += "fontscollectionpath = normpath('%s')\n" % env['SYSTEM_FONTS']
else:
paths += "fontscollectionpath = join(mapniklibpath,'fonts')\n"
paths += "__all__ = [mapniklibpath,inputpluginspath,fontscollectionpath]\n"
if not os.path.exists(env['MAPNIK_NAME']):
os.mkdir(env['MAPNIK_NAME'])
file('mapnik/paths.py','w').write(paths % (env['MAPNIK_LIB_DIR']))
# force open perms temporarily so that `sudo scons install`
# does not later break simple non-install non-sudo rebuild
try:
os.chmod('mapnik/paths.py',0666)
except: pass
# install the shared object beside the module directory
sources = glob.glob('*.cpp')
if 'install' in COMMAND_LINE_TARGETS:
# install the core mapnik python files, including '__init__.py'
init_files = glob.glob('mapnik/*.py')
if 'mapnik/paths.py' in init_files:
init_files.remove('mapnik/paths.py')
init_module = env.Install(target_path, init_files)
env.Alias(target='install', source=init_module)
# install mapnik2 module which redirects to mapnik and issues DeprecatedWarning
init_mapnik2 = env.Install(target_path_deprecated, 'mapnik2/__init__.py')
env.Alias(target='install', source=init_mapnik2)
# fix perms and install the custom generated 'paths.py'
targetp = os.path.join(target_path,'paths.py')
env.Alias("install", targetp)
# use env.Command rather than env.Install
# to enable setting proper perms on `paths.py`
env.Command( targetp, 'mapnik/paths.py',
[
Copy("$TARGET","$SOURCE"),
Chmod("$TARGET", 0644),
])
if 'uninstall' not in COMMAND_LINE_TARGETS:
if env['HAS_CAIRO']:
py_env.Append(CPPPATH = env['CAIRO_CPPPATHS'])
py_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
if link_all_libs:
py_env.Append(LIBS=env['CAIRO_ALL_LIBS'])
if env['HAS_PYCAIRO']:
py_env.ParseConfig('pkg-config --cflags pycairo')
py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO')
py_env.Append(LINKFLAGS=python_link_flag)
_mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so')
Depends(_mapnik, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME']))
if env['PLATFORM'] == 'SunOS' and env['PYTHON_IS_64BIT']:
# http://mail.python.org/pipermail/python-dev/2006-August/068528.html
cxx_module_path = os.path.join(target_path,'64')
else:
cxx_module_path = target_path
if 'uninstall' not in COMMAND_LINE_TARGETS:
pymapniklib = env.Install(cxx_module_path,_mapnik)
py_env.Alias(target='install',source=pymapniklib)
if 'install' in COMMAND_LINE_TARGETS:
if is_py3():
env.AddPostAction(pymapniklib, run_2to3)
env['create_uninstall_target'](env, target_path)
env['create_uninstall_target'](env, target_path_deprecated)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,27 +0,0 @@
#
# This file is part of Mapnik (C++/Python mapping toolkit)
# Copyright (C) 2011 Artem Pavlenko
#
# Mapnik is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# mapnik2 module (Deprecated)
import warnings
from mapnik import *
warnings.simplefilter("default")
msg=""" mapnik2 module has been deprecated,
please use 'import mapnik' """
warnings.warn(msg, DeprecationWarning)

View file

@ -1,98 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
//mapnik
#include <mapnik/color.hpp>
using mapnik::color;
struct color_pickle_suite : boost::python::pickle_suite
{
static boost::python::tuple
getinitargs(const color& c)
{
using namespace boost::python;
return boost::python::make_tuple(c.red(),c.green(),c.blue(),c.alpha());
}
};
void export_color ()
{
using namespace boost::python;
class_<color>("Color", init<int,int,int,int>(
( arg("r"), arg("g"), arg("b"), arg("a") ),
"Creates a new color from its RGB components\n"
"and an alpha value.\n"
"All values between 0 and 255.\n")
)
.def(init<int,int,int>(
( arg("r"), arg("g"), arg("b") ),
"Creates a new color from its RGB components.\n"
"All values between 0 and 255.\n")
)
.def(init<std::string>(
( arg("color_string") ),
"Creates a new color from its CSS string representation.\n"
"The string may be a CSS color name (e.g. 'blue')\n"
"or a hex color string (e.g. '#0000ff').\n")
)
.add_property("r",
&color::red,
&color::set_red,
"Gets or sets the red component.\n"
"The value is between 0 and 255.\n")
.add_property("g",
&color::green,
&color::set_green,
"Gets or sets the green component.\n"
"The value is between 0 and 255.\n")
.add_property("b",
&color::blue,
&color::set_blue,
"Gets or sets the blue component.\n"
"The value is between 0 and 255.\n")
.add_property("a",
&color::alpha,
&color::set_alpha,
"Gets or sets the alpha component.\n"
"The value is between 0 and 255.\n")
.def(self == self)
.def(self != self)
.def_pickle(color_pickle_suite())
.def("__str__",&color::to_string)
.def("packed",&color::rgba)
.def("to_hex_string",&color::to_hex_string,
"Returns the hexadecimal representation of this color.\n"
"\n"
"Example:\n"
">>> c = Color('blue')\n"
">>> c.to_hex_string()\n"
"'#0000ff'\n")
;
}

View file

@ -1,66 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
// mapnik
#include <mapnik/coord.hpp>
using mapnik::coord;
struct coord_pickle_suite : boost::python::pickle_suite
{
static boost::python::tuple
getinitargs(const coord<double,2>& c)
{
using namespace boost::python;
return boost::python::make_tuple(c.x,c.y);
}
};
void export_coord()
{
using namespace boost::python;
class_<coord<double,2> >("Coord",init<double, double>(
// class docstring is in mapnik/__init__.py, class _Coord
(arg("x"), arg("y")),
"Constructs a new point with the given coordinates.\n")
)
.def_pickle(coord_pickle_suite())
.def_readwrite("x", &coord<double,2>::x,
"Gets or sets the x/lon coordinate of the point.\n")
.def_readwrite("y", &coord<double,2>::y,
"Gets or sets the y/lat coordinate of the point.\n")
.def(self == self) // __eq__
.def(self + self) // __add__
.def(self + float())
.def(float() + self)
.def(self - self) // __sub__
.def(self - float())
.def(self * float()) //__mult__
.def(float() * self)
.def(self / float()) // __div__
;
}

View file

@ -1,207 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
// boost
#include "boost_std_shared_shim.hpp"
#include <boost/python.hpp>
#include <boost/noncopyable.hpp>
#include <boost/version.hpp>
// stl
#include <vector>
// mapnik
#include <mapnik/box2d.hpp>
#include <mapnik/datasource.hpp>
#include <mapnik/datasource_cache.hpp>
#include <mapnik/feature_layer_desc.hpp>
#include <mapnik/memory_datasource.hpp>
using mapnik::datasource;
using mapnik::memory_datasource;
using mapnik::layer_descriptor;
using mapnik::attribute_descriptor;
using mapnik::parameters;
namespace
{
//user-friendly wrapper that uses Python dictionary
using namespace boost::python;
std::shared_ptr<mapnik::datasource> create_datasource(dict const& d)
{
mapnik::parameters params;
boost::python::list keys=d.keys();
for (int i=0; i < len(keys); ++i)
{
std::string key = extract<std::string>(keys[i]);
object obj = d[key];
if (PyUnicode_Check(obj.ptr()))
{
PyObject* temp = PyUnicode_AsUTF8String(obj.ptr());
if (temp)
{
#if PY_VERSION_HEX >= 0x03000000
char* c_str = PyBytes_AsString(temp);
#else
char* c_str = PyString_AsString(temp);
#endif
params[key] = std::string(c_str);
Py_DecRef(temp);
}
continue;
}
extract<std::string> ex0(obj);
extract<mapnik::value_integer> ex1(obj);
extract<double> ex2(obj);
if (ex0.check())
{
params[key] = ex0();
}
else if (ex1.check())
{
params[key] = ex1();
}
else if (ex2.check())
{
params[key] = ex2();
}
}
return mapnik::datasource_cache::instance().create(params);
}
boost::python::dict describe(std::shared_ptr<mapnik::datasource> const& ds)
{
boost::python::dict description;
mapnik::layer_descriptor ld = ds->get_descriptor();
description["type"] = ds->type();
description["name"] = ld.get_name();
description["geometry_type"] = ds->get_geometry_type();
description["encoding"] = ld.get_encoding();
return description;
}
boost::python::list fields(std::shared_ptr<mapnik::datasource> const& ds)
{
boost::python::list flds;
if (ds)
{
layer_descriptor ld = ds->get_descriptor();
std::vector<attribute_descriptor> const& desc_ar = ld.get_descriptors();
std::vector<attribute_descriptor>::const_iterator it = desc_ar.begin();
std::vector<attribute_descriptor>::const_iterator end = desc_ar.end();
for (; it != end; ++it)
{
flds.append(it->get_name());
}
}
return flds;
}
boost::python::list field_types(std::shared_ptr<mapnik::datasource> const& ds)
{
boost::python::list fld_types;
if (ds)
{
layer_descriptor ld = ds->get_descriptor();
std::vector<attribute_descriptor> const& desc_ar = ld.get_descriptors();
std::vector<attribute_descriptor>::const_iterator it = desc_ar.begin();
std::vector<attribute_descriptor>::const_iterator end = desc_ar.end();
for (; it != end; ++it)
{
unsigned type = it->get_type();
if (type == mapnik::Integer)
// this crashes, so send back strings instead
//fld_types.append(boost::python::object(boost::python::handle<>(&PyInt_Type)));
fld_types.append(boost::python::str("int"));
else if (type == mapnik::Float)
fld_types.append(boost::python::str("float"));
else if (type == mapnik::Double)
fld_types.append(boost::python::str("float"));
else if (type == mapnik::String)
fld_types.append(boost::python::str("str"));
else if (type == mapnik::Boolean)
fld_types.append(boost::python::str("bool"));
else if (type == mapnik::Geometry)
fld_types.append(boost::python::str("geometry"));
else if (type == mapnik::Object)
fld_types.append(boost::python::str("object"));
else
fld_types.append(boost::python::str("unknown"));
}
}
return fld_types;
}}
mapnik::parameters const& (mapnik::datasource::*params_const)() const = &mapnik::datasource::params;
void export_datasource()
{
using namespace boost::python;
enum_<mapnik::datasource::datasource_t>("DataType")
.value("Vector",mapnik::datasource::Vector)
.value("Raster",mapnik::datasource::Raster)
;
enum_<mapnik::datasource::geometry_t>("DataGeometryType")
.value("Point",mapnik::datasource::Point)
.value("LineString",mapnik::datasource::LineString)
.value("Polygon",mapnik::datasource::Polygon)
.value("Collection",mapnik::datasource::Collection)
;
class_<datasource,std::shared_ptr<datasource>,
boost::noncopyable>("Datasource",no_init)
.def("type",&datasource::type)
.def("geometry_type",&datasource::get_geometry_type)
.def("describe",&describe)
.def("envelope",&datasource::envelope)
.def("features",&datasource::features)
.def("fields",&fields)
.def("field_types",&field_types)
.def("features_at_point",&datasource::features_at_point, (arg("coord"),arg("tolerance")=0))
.def("params",make_function(params_const,return_value_policy<copy_const_reference>()),
"The configuration parameters of the data source. "
"These vary depending on the type of data source.")
.def(self == self)
;
def("CreateDatasource",&create_datasource);
class_<memory_datasource,
bases<datasource>, std::shared_ptr<memory_datasource>,
boost::noncopyable>("MemoryDatasourceBase", init<parameters>())
.def("add_feature",&memory_datasource::push,
"Adds a Feature:\n"
">>> ms = MemoryDatasource()\n"
">>> feature = Feature(1)\n"
">>> ms.add_feature(Feature(1))\n")
.def("num_features",&memory_datasource::size)
;
implicitly_convertible<std::shared_ptr<memory_datasource>,std::shared_ptr<datasource> >();
}

View file

@ -1,98 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
#include <boost/python.hpp>
#include <boost/noncopyable.hpp>
#include <mapnik/value_types.hpp>
#include <mapnik/params.hpp>
#include <mapnik/datasource.hpp>
#include <mapnik/datasource_cache.hpp>
namespace {
using namespace boost::python;
std::shared_ptr<mapnik::datasource> create_datasource(const dict& d)
{
mapnik::parameters params;
boost::python::list keys=d.keys();
for (int i=0; i<len(keys); ++i)
{
std::string key = extract<std::string>(keys[i]);
object obj = d[key];
extract<std::string> ex0(obj);
extract<mapnik::value_integer> ex1(obj);
extract<double> ex2(obj);
if (ex0.check())
{
params[key] = ex0();
}
else if (ex1.check())
{
params[key] = ex1();
}
else if (ex2.check())
{
params[key] = ex2();
}
}
return mapnik::datasource_cache::instance().create(params);
}
void register_datasources(std::string const& path)
{
mapnik::datasource_cache::instance().register_datasources(path);
}
std::vector<std::string> plugin_names()
{
return mapnik::datasource_cache::instance().plugin_names();
}
std::string plugin_directories()
{
return mapnik::datasource_cache::instance().plugin_directories();
}
}
void export_datasource_cache()
{
using mapnik::datasource_cache;
class_<datasource_cache,
boost::noncopyable>("DatasourceCache",no_init)
.def("create",&create_datasource)
.staticmethod("create")
.def("register_datasources",&register_datasources)
.staticmethod("register_datasources")
.def("plugin_names",&plugin_names)
.staticmethod("plugin_names")
.def("plugin_directories",&plugin_directories)
.staticmethod("plugin_directories")
;
}

View file

@ -1,88 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#ifndef MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED
#define MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED
#include <boost/python/converter/registered.hpp> // for registered
#include <boost/python/enum.hpp> // for enum_
#include <boost/python/implicit.hpp> // for implicitly_convertible
#include <boost/python/to_python_converter.hpp>
namespace mapnik {
template <typename EnumWrapper>
class enumeration_ :
public boost::python::enum_<typename EnumWrapper::native_type>
{
// some short cuts
using base_type = boost::python::enum_<typename EnumWrapper::native_type>;
using native_type = typename EnumWrapper::native_type;
public:
enumeration_() :
base_type( EnumWrapper::get_name().c_str() )
{
init();
}
enumeration_(const char * python_alias) :
base_type( python_alias )
{
init();
}
enumeration_(const char * python_alias, const char * doc) :
base_type( python_alias, doc )
{
init();
}
private:
struct converter
{
static PyObject* convert(EnumWrapper const& v)
{
// Redirect conversion to a static method of our base class's
// base class. A free template converter will not work because
// the base_type::base typedef is protected.
// Lets hope MSVC agrees that this is legal C++
using namespace boost::python::converter;
return base_type::base::to_python(
registered<native_type>::converters.m_class_object
, static_cast<long>( v ));
}
};
void init() {
boost::python::implicitly_convertible<native_type, EnumWrapper>();
boost::python::to_python_converter<EnumWrapper, converter >();
for (unsigned i = 0; i < EnumWrapper::MAX; ++i)
{
// Register the strings already defined for this enum.
base_type::value( EnumWrapper::get_string( i ), native_type( i ) );
}
}
};
} // end of namespace mapnik
#endif // MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED

View file

@ -1,45 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2013 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#ifndef MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER
#define MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER
// mapnik
#include <mapnik/symbolizer.hpp>
// boost
#include <boost/python.hpp>
namespace boost { namespace python {
struct mapnik_enumeration_wrapper_to_python
{
static PyObject* convert(mapnik::enumeration_wrapper const& v)
{
return ::PyLong_FromLongLong(v.value); // FIXME: this is a temp hack!!
}
};
}}
#endif // MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER

View file

@ -1,297 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
// mapnik
#include <mapnik/box2d.hpp>
#include <mapnik/value_error.hpp>
using mapnik::coord;
using mapnik::box2d;
struct envelope_pickle_suite : boost::python::pickle_suite
{
static boost::python::tuple
getinitargs(const box2d<double>& e)
{
using namespace boost::python;
return boost::python::make_tuple(e.minx(),e.miny(),e.maxx(),e.maxy());
}
};
box2d<double> from_string(std::string const& s)
{
box2d<double> bbox;
bool success = bbox.from_string(s);
if (success)
{
return bbox;
}
else
{
std::stringstream ss;
ss << "Could not parse bbox from string: '" << s << "'";
throw mapnik::value_error(ss.str());
}
}
//define overloads here
void (box2d<double>::*width_p1)(double) = &box2d<double>::width;
double (box2d<double>::*width_p2)() const = &box2d<double>::width;
void (box2d<double>::*height_p1)(double) = &box2d<double>::height;
double (box2d<double>::*height_p2)() const = &box2d<double>::height;
void (box2d<double>::*expand_to_include_p1)(double,double) = &box2d<double>::expand_to_include;
void (box2d<double>::*expand_to_include_p2)(coord<double,2> const& ) = &box2d<double>::expand_to_include;
void (box2d<double>::*expand_to_include_p3)(box2d<double> const& ) = &box2d<double>::expand_to_include;
bool (box2d<double>::*contains_p1)(double,double) const = &box2d<double>::contains;
bool (box2d<double>::*contains_p2)(coord<double,2> const&) const = &box2d<double>::contains;
bool (box2d<double>::*contains_p3)(box2d<double> const&) const = &box2d<double>::contains;
//intersects
bool (box2d<double>::*intersects_p1)(double,double) const = &box2d<double>::intersects;
bool (box2d<double>::*intersects_p2)(coord<double,2> const&) const = &box2d<double>::intersects;
bool (box2d<double>::*intersects_p3)(box2d<double> const&) const = &box2d<double>::intersects;
// intersect
box2d<double> (box2d<double>::*intersect)(box2d<double> const&) const = &box2d<double>::intersect;
// re_center
void (box2d<double>::*re_center_p1)(double,double) = &box2d<double>::re_center;
void (box2d<double>::*re_center_p2)(coord<double,2> const& ) = &box2d<double>::re_center;
// clip
void (box2d<double>::*clip)(box2d<double> const&) = &box2d<double>::clip;
// pad
void (box2d<double>::*pad)(double) = &box2d<double>::pad;
// deepcopy
box2d<double> box2d_deepcopy(box2d<double> & obj, boost::python::dict memo)
{
// FIXME::ignore memo for now
box2d<double> result(obj);
return result;
}
void export_envelope()
{
using namespace boost::python;
class_<box2d<double> >("Box2d",
// class docstring is in mapnik/__init__.py, class _Coord
init<double,double,double,double>(
(arg("minx"),arg("miny"),arg("maxx"),arg("maxy")),
"Constructs a new envelope from the coordinates\n"
"of its lower left and upper right corner points.\n"))
.def(init<>("Equivalent to Box2d(0, 0, -1, -1).\n"))
.def(init<const coord<double,2>&, const coord<double,2>&>(
(arg("ll"),arg("ur")),
"Equivalent to Box2d(ll.x, ll.y, ur.x, ur.y).\n"))
.def("from_string",from_string)
.staticmethod("from_string")
.add_property("minx", &box2d<double>::minx,
"X coordinate for the lower left corner")
.add_property("miny", &box2d<double>::miny,
"Y coordinate for the lower left corner")
.add_property("maxx", &box2d<double>::maxx,
"X coordinate for the upper right corner")
.add_property("maxy", &box2d<double>::maxy,
"Y coordinate for the upper right corner")
.def("center", &box2d<double>::center,
"Returns the coordinates of the center of the bounding box.\n"
"\n"
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.center()\n"
"Coord(50, 50)\n")
.def("center", re_center_p1,
(arg("x"), arg("y")),
"Moves the envelope so that the given coordinates become its new center.\n"
"The width and the height are preserved.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.center(60, 60)\n"
">>> e.center()\n"
"Coord(60.0,60.0)\n"
">>> (e.width(), e.height())\n"
"(100.0, 100.0)\n"
">>> e\n"
"Box2d(10.0, 10.0, 110.0, 110.0)\n"
)
.def("center", re_center_p2,
(arg("Coord")),
"Moves the envelope so that the given coordinates become its new center.\n"
"The width and the height are preserved.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.center(Coord60, 60)\n"
">>> e.center()\n"
"Coord(60.0,60.0)\n"
">>> (e.width(), e.height())\n"
"(100.0, 100.0)\n"
">>> e\n"
"Box2d(10.0, 10.0, 110.0, 110.0)\n"
)
.def("clip", clip,
(arg("other")),
"Clip the envelope based on the bounds of another envelope.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> c = Box2d(-50, -50, 50, 50)\n"
">>> e.clip(c)\n"
">>> e\n"
"Box2d(0.0,0.0,50.0,50.0\n"
)
.def("pad", pad,
(arg("padding")),
"Pad the envelope based on a padding value.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.pad(10)\n"
">>> e\n"
"Box2d(-10.0,-10.0,110.0,110.0\n"
)
.def("width", width_p1,
(arg("new_width")),
"Sets the width to new_width of the envelope preserving its center.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.width(120)\n"
">>> e.center()\n"
"Coord(50.0,50.0)\n"
">>> e\n"
"Box2d(-10.0, 0.0, 110.0, 100.0)\n"
)
.def("width", width_p2,
"Returns the width of this envelope.\n"
)
.def("height", height_p1,
(arg("new_height")),
"Sets the height to new_height of the envelope preserving its center.\n"
"\n "
"Example:\n"
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.height(120)\n"
">>> e.center()\n"
"Coord(50.0,50.0)\n"
">>> e\n"
"Box2d(0.0, -10.0, 100.0, 110.0)\n"
)
.def("height", height_p2,
"Returns the height of this envelope.\n"
)
.def("expand_to_include",expand_to_include_p1,
(arg("x"),arg("y")),
"Expands this envelope to include the point given by x and y.\n"
"\n"
"Example:\n",
">>> e = Box2d(0, 0, 100, 100)\n"
">>> e.expand_to_include(110, 110)\n"
">>> e\n"
"Box2d(0.0, 00.0, 110.0, 110.0)\n"
)
.def("expand_to_include",expand_to_include_p2,
(arg("p")),
"Equivalent to expand_to_include(p.x, p.y)\n"
)
.def("expand_to_include",expand_to_include_p3,
(arg("other")),
"Equivalent to:\n"
" expand_to_include(other.minx, other.miny)\n"
" expand_to_include(other.maxx, other.maxy)\n"
)
.def("contains",contains_p1,
(arg("x"),arg("y")),
"Returns True iff this envelope contains the point\n"
"given by x and y.\n"
)
.def("contains",contains_p2,
(arg("p")),
"Equivalent to contains(p.x, p.y)\n"
)
.def("contains",contains_p3,
(arg("other")),
"Equivalent to:\n"
" contains(other.minx, other.miny) and contains(other.maxx, other.maxy)\n"
)
.def("intersects",intersects_p1,
(arg("x"),arg("y")),
"Returns True iff this envelope intersects the point\n"
"given by x and y.\n"
"\n"
"Note: For points, intersection is equivalent\n"
"to containment, i.e. the following holds:\n"
" e.contains(x, y) == e.intersects(x, y)\n"
)
.def("intersects",intersects_p2,
(arg("p")),
"Equivalent to contains(p.x, p.y)\n")
.def("intersects",intersects_p3,
(arg("other")),
"Returns True iff this envelope intersects the other envelope,\n"
"This relationship is symmetric."
"\n"
"Example:\n"
">>> e1 = Box2d(0, 0, 100, 100)\n"
">>> e2 = Box2d(50, 50, 150, 150)\n"
">>> e1.intersects(e2)\n"
"True\n"
">>> e1.contains(e2)\n"
"False\n"
)
.def("intersect",intersect,
(arg("other")),
"Returns the overlap of this envelope and the other envelope\n"
"as a new envelope.\n"
"\n"
"Example:\n"
">>> e1 = Box2d(0, 0, 100, 100)\n"
">>> e2 = Box2d(50, 50, 150, 150)\n"
">>> e1.intersect(e2)\n"
"Box2d(50.0, 50.0, 100.0, 100.0)\n"
)
.def(self == self) // __eq__
.def(self != self) // __neq__
.def(self + self) // __add__
.def(self * float()) // __mult__
.def(float() * self)
.def(self / float()) // __div__
.def("__getitem__",&box2d<double>::operator[])
.def("valid",&box2d<double>::valid)
.def_pickle(envelope_pickle_suite())
.def("__deepcopy__", &box2d_deepcopy)
;
}

View file

@ -1,105 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
#include "python_to_value.hpp"
// boost
#include <boost/python.hpp>
#include <mapnik/util/variant.hpp>
#include <boost/noncopyable.hpp>
// mapnik
#include <mapnik/feature.hpp>
#include <mapnik/expression.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/expression_evaluator.hpp>
#include <mapnik/parse_path.hpp>
#include <mapnik/value.hpp>
using mapnik::expression_ptr;
using mapnik::parse_expression;
using mapnik::to_expression_string;
using mapnik::path_expression_ptr;
// expression
expression_ptr parse_expression_(std::string const& wkt)
{
return parse_expression(wkt,"utf8");
}
std::string expression_to_string_(mapnik::expr_node const& expr)
{
return mapnik::to_expression_string(expr);
}
mapnik::value expression_evaluate_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d)
{
// will be auto-converted to proper python type by `mapnik_value_to_python`
return mapnik::util::apply_visitor(mapnik::evaluate<mapnik::feature_impl,mapnik::value,mapnik::attributes>(f,mapnik::dict2attr(d)),expr);
}
bool expression_evaluate_to_bool_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d)
{
return mapnik::util::apply_visitor(mapnik::evaluate<mapnik::feature_impl,mapnik::value,mapnik::attributes>(f,mapnik::dict2attr(d)),expr).to_bool();
}
// path expression
path_expression_ptr parse_path_(std::string const& path)
{
return mapnik::parse_path(path);
}
std::string path_to_string_(mapnik::path_expression const& expr)
{
return mapnik::path_processor_type::to_string(expr);
}
std::string path_evaluate_(mapnik::path_expression const& expr, mapnik::feature_impl const& f)
{
return mapnik::path_processor_type::evaluate(expr, f);
}
void export_expression()
{
using namespace boost::python;
class_<mapnik::expr_node ,boost::noncopyable>("Expression",
"TODO"
"",no_init)
.def("evaluate", &expression_evaluate_,(arg("feature"),arg("variables")=boost::python::dict()))
.def("to_bool", &expression_evaluate_to_bool_,(arg("feature"),arg("variables")=boost::python::dict()))
.def("__str__",&expression_to_string_);
;
def("Expression",&parse_expression_,(arg("expr")),"Expression string");
class_<mapnik::path_expression ,boost::noncopyable>("PathExpression",
"TODO"
"",no_init)
.def("evaluate", &path_evaluate_) // note: "pass" is a reserved word in Python
.def("__str__",&path_to_string_);
;
def("PathExpression",&parse_path_,(arg("expr")),"PathExpression string");
}

View file

@ -1,250 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
#include <boost/python/iterator.hpp>
#include <boost/python/call_method.hpp>
#include <boost/python/tuple.hpp>
#include <boost/python/to_python_converter.hpp>
#include <boost/noncopyable.hpp>
// mapnik
#include <mapnik/value_types.hpp>
#include <mapnik/feature.hpp>
#include <mapnik/feature_factory.hpp>
#include <mapnik/feature_kv_iterator.hpp>
#include <mapnik/datasource.hpp>
#include <mapnik/wkb.hpp>
#include <mapnik/wkt/wkt_factory.hpp>
#include <mapnik/json/feature_parser.hpp>
#include <mapnik/json/feature_generator.hpp>
// stl
#include <stdexcept>
namespace {
using mapnik::geometry_utils;
using mapnik::context_type;
using mapnik::context_ptr;
using mapnik::feature_kv_iterator;
mapnik::geometry_type const& (mapnik::feature_impl::*get_geometry_by_const_ref)(std::size_t) const = &mapnik::feature_impl::get_geometry;
mapnik::geometry_container const& (mapnik::feature_impl::*get_paths_by_const_ref)() const = &mapnik::feature_impl::paths;
void feature_add_geometries_from_wkb(mapnik::feature_impl & feature, std::string wkb)
{
bool result = geometry_utils::from_wkb(feature.paths(), wkb.c_str(), wkb.size());
if (!result) throw std::runtime_error("Failed to parse WKB");
}
void feature_add_geometries_from_wkt(mapnik::feature_impl & feature, std::string const& wkt)
{
bool result = mapnik::from_wkt(wkt, feature.paths());
if (!result) throw std::runtime_error("Failed to parse WKT");
}
mapnik::feature_ptr from_geojson_impl(std::string const& json, mapnik::context_ptr const& ctx)
{
mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1));
if (!mapnik::json::from_geojson(json,*feature))
{
throw std::runtime_error("Failed to parse geojson feature");
}
return feature;
}
std::string feature_to_geojson(mapnik::feature_impl const& feature)
{
std::string json;
if (!mapnik::json::to_geojson(json,feature))
{
throw std::runtime_error("Failed to generate GeoJSON");
}
return json;
}
mapnik::value __getitem__(mapnik::feature_impl const& feature, std::string const& name)
{
return feature.get(name);
}
mapnik::value __getitem2__(mapnik::feature_impl const& feature, std::size_t index)
{
return feature.get(index);
}
void __setitem__(mapnik::feature_impl & feature, std::string const& name, mapnik::value const& val)
{
feature.put_new(name,val);
}
boost::python::dict attributes(mapnik::feature_impl const& f)
{
boost::python::dict attributes;
feature_kv_iterator itr = f.begin();
feature_kv_iterator end = f.end();
for ( ;itr!=end; ++itr)
{
attributes[std::get<0>(*itr)] = std::get<1>(*itr);
}
return attributes;
}
} // end anonymous namespace
struct unicode_string_from_python_str
{
unicode_string_from_python_str()
{
boost::python::converter::registry::push_back(
&convertible,
&construct,
boost::python::type_id<mapnik::value_unicode_string>());
}
static void* convertible(PyObject* obj_ptr)
{
if (!(
#if PY_VERSION_HEX >= 0x03000000
PyBytes_Check(obj_ptr)
#else
PyString_Check(obj_ptr)
#endif
|| PyUnicode_Check(obj_ptr)))
return 0;
return obj_ptr;
}
static void construct(
PyObject* obj_ptr,
boost::python::converter::rvalue_from_python_stage1_data* data)
{
char * value=0;
if (PyUnicode_Check(obj_ptr)) {
PyObject *encoded = PyUnicode_AsEncodedString(obj_ptr, "utf8", "replace");
if (encoded) {
#if PY_VERSION_HEX >= 0x03000000
value = PyBytes_AsString(encoded);
#else
value = PyString_AsString(encoded);
#endif
Py_DecRef(encoded);
}
} else {
#if PY_VERSION_HEX >= 0x03000000
value = PyBytes_AsString(obj_ptr);
#else
value = PyString_AsString(obj_ptr);
#endif
}
if (value == 0) boost::python::throw_error_already_set();
void* storage = (
(boost::python::converter::rvalue_from_python_storage<mapnik::value_unicode_string>*)
data)->storage.bytes;
new (storage) mapnik::value_unicode_string(value);
data->convertible = storage;
}
};
struct value_null_from_python
{
value_null_from_python()
{
boost::python::converter::registry::push_back(
&convertible,
&construct,
boost::python::type_id<mapnik::value_null>());
}
static void* convertible(PyObject* obj_ptr)
{
if (obj_ptr == Py_None) return obj_ptr;
return 0;
}
static void construct(
PyObject* obj_ptr,
boost::python::converter::rvalue_from_python_stage1_data* data)
{
if (obj_ptr != Py_None) boost::python::throw_error_already_set();
void* storage = (
(boost::python::converter::rvalue_from_python_storage<mapnik::value_null>*)
data)->storage.bytes;
new (storage) mapnik::value_null();
data->convertible = storage;
}
};
void export_feature()
{
using namespace boost::python;
// Python to mapnik::value converters
// NOTE: order matters here. For example value_null must be listed before
// bool otherwise Py_None will be interpreted as bool (false)
implicitly_convertible<mapnik::value_unicode_string,mapnik::value>();
implicitly_convertible<mapnik::value_null,mapnik::value>();
implicitly_convertible<mapnik::value_integer,mapnik::value>();
implicitly_convertible<mapnik::value_double,mapnik::value>();
implicitly_convertible<mapnik::value_bool,mapnik::value>();
// http://misspent.wordpress.com/2009/09/27/how-to-write-boost-python-converters/
unicode_string_from_python_str();
value_null_from_python();
class_<context_type,context_ptr,boost::noncopyable>
("Context",init<>("Default ctor."))
.def("push", &context_type::push)
;
class_<mapnik::feature_impl,std::shared_ptr<mapnik::feature_impl>,
boost::noncopyable>("Feature",init<context_ptr,mapnik::value_integer>("Default ctor."))
.def("id",&mapnik::feature_impl::id)
.def("add_geometries_from_wkb", &feature_add_geometries_from_wkb)
.def("add_geometries_from_wkt", &feature_add_geometries_from_wkt)
.def("add_geometry", &mapnik::feature_impl::add_geometry)
.def("num_geometries",&mapnik::feature_impl::num_geometries)
.def("get_geometry", make_function(get_geometry_by_const_ref,return_value_policy<reference_existing_object>()))
.def("geometries",make_function(get_paths_by_const_ref,return_value_policy<reference_existing_object>()))
.def("envelope", &mapnik::feature_impl::envelope)
.def("has_key", &mapnik::feature_impl::has_key)
.add_property("attributes",&attributes)
.def("__setitem__",&__setitem__)
.def("__contains__",&__getitem__)
.def("__getitem__",&__getitem__)
.def("__getitem__",&__getitem2__)
.def("__len__", &mapnik::feature_impl::size)
.def("context",&mapnik::feature_impl::context)
.def("to_geojson",&feature_to_geojson)
.def("from_geojson",from_geojson_impl)
.staticmethod("from_geojson")
;
}

View file

@ -1,88 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
#include <boost/noncopyable.hpp>
// mapnik
#include <mapnik/feature.hpp>
#include <mapnik/datasource.hpp>
namespace {
using namespace boost::python;
inline list features(mapnik::featureset_ptr const& itr)
{
list l;
while (true)
{
mapnik::feature_ptr fp = itr->next();
if (!fp)
{
break;
}
l.append(fp);
}
return l;
}
inline object pass_through(object const& o) { return o; }
inline mapnik::feature_ptr next(mapnik::featureset_ptr const& itr)
{
mapnik::feature_ptr f = itr->next();
if (!f)
{
PyErr_SetString(PyExc_StopIteration, "No more features.");
boost::python::throw_error_already_set();
}
return f;
}
}
void export_featureset()
{
using namespace boost::python;
class_<mapnik::Featureset,std::shared_ptr<mapnik::Featureset>,
boost::noncopyable>("Featureset",no_init)
.def("__iter__",pass_through)
.def("next",next)
.add_property("features",features,
"The list of features.\n"
"\n"
"Usage:\n"
">>> m.query_map_point(0, 10, 10)\n"
"<mapnik._mapnik.Featureset object at 0x1004d2938>\n"
">>> fs = m.query_map_point(0, 10, 10)\n"
">>> for f in fs.features:\n"
">>> print f\n"
"<mapnik.Feature object at 0x105e64140>\n"
)
;
}

View file

@ -1,54 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
#include <boost/python.hpp>
#include <boost/noncopyable.hpp>
#include <mapnik/font_engine_freetype.hpp>
#include <mapnik/utils.hpp>
void export_font_engine()
{
using mapnik::freetype_engine;
using mapnik::singleton;
using mapnik::CreateStatic;
using namespace boost::python;
class_<singleton<freetype_engine,CreateStatic>,boost::noncopyable>("Singleton",no_init)
.def("instance",&singleton<freetype_engine,CreateStatic>::instance,
return_value_policy<reference_existing_object>())
.staticmethod("instance")
;
class_<freetype_engine,bases<singleton<freetype_engine,CreateStatic> >,
boost::noncopyable>("FontEngine",no_init)
.def("register_font",&freetype_engine::register_font)
.def("register_fonts",&freetype_engine::register_fonts)
.def("face_names",&freetype_engine::face_names)
.staticmethod("register_font")
.staticmethod("register_fonts")
.staticmethod("face_names")
;
}

View file

@ -1,58 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2011 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
//mapnik
#include <mapnik/font_set.hpp>
using mapnik::font_set;
void export_fontset ()
{
using namespace boost::python;
class_<font_set>("FontSet", init<std::string const&>("default fontset constructor")
)
.add_property("name",
make_function(&font_set::get_name,return_value_policy<copy_const_reference>()),
&font_set::set_name,
"Get/Set the name of the FontSet.\n"
)
.def("add_face_name",&font_set::add_face_name,
(arg("name")),
"Add a face-name to the fontset.\n"
"\n"
"Example:\n"
">>> fs = Fontset('book-fonts')\n"
">>> fs.add_face_name('DejaVu Sans Book')\n")
.add_property("names",make_function
(&font_set::get_face_names,
return_value_policy<reference_existing_object>()),
"List of face names belonging to a FontSet.\n"
)
;
}

View file

@ -1,41 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2006 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include <boost/python.hpp>
#include <mapnik/symbolizer_enumerations.hpp>
#include "mapnik_enumeration.hpp"
void export_gamma_method()
{
using namespace boost::python;
mapnik::enumeration_<mapnik::gamma_method_e>("gamma_method")
.value("POWER", mapnik::GAMMA_POWER)
.value("LINEAR",mapnik::GAMMA_LINEAR)
.value("NONE", mapnik::GAMMA_NONE)
.value("THRESHOLD", mapnik::GAMMA_THRESHOLD)
.value("MULTIPLY", mapnik::GAMMA_MULTIPLY)
;
}

View file

@ -1,36 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/geometry.hpp>
#include <mapnik/wkt/wkt_generator_grammar_impl.hpp>
#include <mapnik/json/feature_generator_grammar_impl.hpp>
#include <mapnik/json/geometry_generator_grammar_impl.hpp>
#include <mapnik/svg/geometry_svg_generator_impl.hpp>
#include <string>
using sink_type = std::back_insert_iterator<std::string>;
template struct mapnik::json::feature_generator_grammar<sink_type>;
template struct mapnik::json::geometry_generator_grammar<sink_type>;
template struct mapnik::json::multi_geometry_generator_grammar<sink_type>;
template struct mapnik::svg::svg_path_generator<sink_type, mapnik::geometry_type>;
template struct mapnik::wkt::wkt_generator<sink_type, mapnik::geometry_type>;
template struct mapnik::wkt::wkt_multi_generator<sink_type, mapnik::geometry_container>;

View file

@ -1,276 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
#include <boost/python/def.hpp>
#include <boost/python/exception_translator.hpp>
#include <boost/python/manage_new_object.hpp>
#include <boost/python/iterator.hpp>
#include <boost/noncopyable.hpp>
#include <boost/version.hpp>
// mapnik
#include <mapnik/geometry.hpp>
#include <mapnik/geometry_container.hpp>
#include <mapnik/wkt/wkt_factory.hpp> // from_wkt
#include <mapnik/util/geometry_to_wkt.hpp>
#include <mapnik/json/geometry_parser.hpp> // from_geojson
#include <mapnik/util/geometry_to_geojson.hpp>
#include <mapnik/util/geometry_to_svg.hpp>
#include <mapnik/wkb.hpp>
#include <mapnik/util/geometry_to_wkb.hpp>
// stl
#include <stdexcept>
namespace {
mapnik::geometry_type const& getitem_impl(mapnik::geometry_container & p, int key)
{
if (key >=0 && key < static_cast<int>(p.size()))
return p[key];
PyErr_SetString(PyExc_IndexError, "Index is out of range");
throw boost::python::error_already_set();
}
void add_wkt_impl(mapnik::geometry_container& p, std::string const& wkt)
{
if (!mapnik::from_wkt(wkt , p))
throw std::runtime_error("Failed to parse WKT");
}
void add_wkb_impl(mapnik::geometry_container& p, std::string const& wkb)
{
if (!mapnik::geometry_utils::from_wkb(p, wkb.c_str(), wkb.size()))
throw std::runtime_error("Failed to parse WKB");
}
void add_geojson_impl(mapnik::geometry_container& paths, std::string const& json)
{
if (!mapnik::json::from_geojson(json, paths))
throw std::runtime_error("Failed to parse geojson geometry");
}
std::shared_ptr<mapnik::geometry_container> from_wkt_impl(std::string const& wkt)
{
std::shared_ptr<mapnik::geometry_container> paths = std::make_shared<mapnik::geometry_container>();
if (!mapnik::from_wkt(wkt, *paths))
throw std::runtime_error("Failed to parse WKT");
return paths;
}
std::shared_ptr<mapnik::geometry_container> from_wkb_impl(std::string const& wkb)
{
std::shared_ptr<mapnik::geometry_container> paths = std::make_shared<mapnik::geometry_container>();
if (!mapnik::geometry_utils::from_wkb(*paths, wkb.c_str(), wkb.size()))
throw std::runtime_error("Failed to parse WKB");
return paths;
}
std::shared_ptr<mapnik::geometry_container> from_geojson_impl(std::string const& json)
{
std::shared_ptr<mapnik::geometry_container> paths = std::make_shared<mapnik::geometry_container>();
if (!mapnik::json::from_geojson(json, *paths))
throw std::runtime_error("Failed to parse geojson geometry");
return paths;
}
mapnik::box2d<double> envelope_impl(mapnik::geometry_container & p)
{
mapnik::box2d<double> b;
bool first = true;
for (mapnik::geometry_type const& geom : p)
{
if (first)
{
b = geom.envelope();
first=false;
}
else
{
b.expand_to_include(geom.envelope());
}
}
return b;
}
}
inline std::string boost_version()
{
std::ostringstream s;
s << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100;
return s.str();
}
PyObject* to_wkb(mapnik::geometry_type const& geom, mapnik::util::wkbByteOrder byte_order)
{
mapnik::util::wkb_buffer_ptr wkb = mapnik::util::to_wkb(geom,byte_order);
if (wkb)
{
return
#if PY_VERSION_HEX >= 0x03000000
::PyBytes_FromStringAndSize
#else
::PyString_FromStringAndSize
#endif
((const char*)wkb->buffer(),wkb->size());
}
else
{
Py_RETURN_NONE;
}
}
PyObject* to_wkb2( mapnik::geometry_container const& p, mapnik::util::wkbByteOrder byte_order)
{
mapnik::util::wkb_buffer_ptr wkb = mapnik::util::to_wkb(p,byte_order);
if (wkb)
{
return
#if PY_VERSION_HEX >= 0x03000000
::PyBytes_FromStringAndSize
#else
::PyString_FromStringAndSize
#endif
((const char*)wkb->buffer(),wkb->size());
}
else
{
Py_RETURN_NONE;
}
}
std::string to_wkt(mapnik::geometry_type const& geom)
{
std::string wkt;
if (!mapnik::util::to_wkt(wkt,geom))
{
throw std::runtime_error("Generate WKT failed");
}
return wkt;
}
std::string to_wkt2(mapnik::geometry_container const& geom)
{
std::string wkt;
if (!mapnik::util::to_wkt(wkt,geom))
{
throw std::runtime_error("Generate WKT failed");
}
return wkt;
}
std::string to_geojson(mapnik::geometry_type const& geom)
{
std::string wkt;
if (!mapnik::util::to_geojson(wkt,geom))
{
throw std::runtime_error("Generate JSON failed");
}
return wkt;
}
std::string to_geojson2(mapnik::geometry_container const& geom)
{
std::string wkt;
if (!mapnik::util::to_geojson(wkt,geom))
{
throw std::runtime_error("Generate JSON failed");
}
return wkt;
}
std::string to_svg(mapnik::geometry_type const& geom)
{
std::string svg;
if (!mapnik::util::to_svg(svg,geom))
{
throw std::runtime_error("Generate SVG failed");
}
return svg;
}
/*
// https://github.com/mapnik/mapnik/issues/1437
std::string to_svg2( mapnik::geometry_container const& geom)
{
std::string svg; // Use Python String directly ?
bool result = mapnik::util::to_svg(svg,geom);
if (!result)
{
throw std::runtime_error("Generate WKT failed");
}
return svg;
}*/
void export_geometry()
{
using namespace boost::python;
enum_<mapnik::geometry_type::types>("GeometryType")
.value("Point",mapnik::geometry_type::types::Point)
.value("LineString",mapnik::geometry_type::types::LineString)
.value("Polygon",mapnik::geometry_type::types::Polygon)
;
enum_<mapnik::util::wkbByteOrder>("wkbByteOrder")
.value("XDR",mapnik::util::wkbXDR)
.value("NDR",mapnik::util::wkbNDR)
;
using mapnik::geometry_type;
class_<mapnik::geometry_type, std::shared_ptr<mapnik::geometry_type>, boost::noncopyable>("Geometry2d",no_init)
.def("envelope",&mapnik::geometry_type::envelope)
// .def("__str__",&mapnik::geometry_type::to_string)
.def("type",&mapnik::geometry_type::type)
.def("to_wkb",&to_wkb)
.def("to_wkt",&to_wkt)
.def("to_geojson",&to_geojson)
.def("to_svg",&to_svg)
// TODO add other geometry_type methods
;
class_<mapnik::geometry_container, std::shared_ptr<mapnik::geometry_container>, boost::noncopyable>("Path")
.def("__getitem__", getitem_impl,return_value_policy<reference_existing_object>())
.def("__len__", &mapnik::geometry_container::size)
.def("envelope",envelope_impl)
.def("add_wkt",add_wkt_impl)
.def("add_wkb",add_wkb_impl)
.def("add_geojson",add_geojson_impl)
.def("to_wkt",&to_wkt2)
//.def("to_svg",&to_svg2)
.def("to_wkb",&to_wkb2)
.def("from_wkt",from_wkt_impl)
.def("from_wkb",from_wkb_impl)
.def("from_geojson",from_geojson_impl)
.def("to_geojson",&to_geojson2)
.staticmethod("from_wkt")
.staticmethod("from_wkb")
.staticmethod("from_geojson")
;
}

View file

@ -1,90 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2011 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#if defined(GRID_RENDERER)
#include <mapnik/config.hpp>
#include "boost_std_shared_shim.hpp"
// boost
#include <boost/python.hpp>
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
// mapnik
#include <mapnik/grid/grid.hpp>
#include "python_grid_utils.hpp"
using namespace boost::python;
// help compiler see template definitions
static dict (*encode)( mapnik::grid const&, std::string const& , bool, unsigned int) = mapnik::grid_encode;
bool painted(mapnik::grid const& grid)
{
return grid.painted();
}
mapnik::grid::value_type get_pixel(mapnik::grid const& grid, int x, int y)
{
if (x < static_cast<int>(grid.width()) && y < static_cast<int>(grid.height()))
{
mapnik::grid::data_type const & data = grid.data();
return data(x,y);
}
PyErr_SetString(PyExc_IndexError, "invalid x,y for grid dimensions");
boost::python::throw_error_already_set();
return 0;
}
void export_grid()
{
class_<mapnik::grid,std::shared_ptr<mapnik::grid> >(
"Grid",
"This class represents a feature hitgrid.",
init<int,int,std::string,unsigned>(
( boost::python::arg("width"), boost::python::arg("height"),boost::python::arg("key")="__id__", boost::python::arg("resolution")=1 ),
"Create a mapnik.Grid object\n"
))
.def("painted",&painted)
.def("width",&mapnik::grid::width)
.def("height",&mapnik::grid::height)
.def("view",&mapnik::grid::get_view)
.def("get_pixel",&get_pixel)
.def("clear",&mapnik::grid::clear)
.def("encode",encode,
( boost::python::arg("encoding")="utf", boost::python::arg("features")=true,boost::python::arg("resolution")=4 ),
"Encode the grid as as optimized json\n"
)
.add_property("key",
make_function(&mapnik::grid::get_key,return_value_policy<copy_const_reference>()),
&mapnik::grid::set_key,
"Get/Set key to be used as unique indentifier for features\n"
"The value should either be __id__ to refer to the feature.id()\n"
"or some globally unique integer or string attribute field\n"
)
;
}
#endif

Some files were not shown because too many files have changed in this diff Show more