Commit graph

3731 commits

Author SHA1 Message Date
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
7c5f4539e1 Fix error message + update SVG parser unit test 2021-04-15 16:29:05 +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
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
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
ee90425de1 fixes proj_transform_cache incomplete type for gcc 2021-04-01 17:57:20 +02: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
Artem Pavlenko
3a302667a1 Fix return value (MAPNIK_WEBMERCATOR_PROJ is not geographic SRS) 2021-03-24 09:42:52 +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
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
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
b532beccde mapnik::Map ctor/operator= - initialise proj transforms 2021-03-04 10:19:44 +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
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
Artem Pavlenko
5c086b0cd5 Add proj_transform caching to minimise expensive initialisations calls in libproj >= 6 [WIP] 2021-01-27 09:40:28 +00: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
88241b32ee Initial implementation of new proj7 APIs support 2021-01-15 15:21:09 +00:00
Artem Pavlenko
bd961c4da2 update copyright year [skip ci] 2021-01-05 14:39:07 +00:00
Mathis Logemann
64054fade4 compiler independent warning ignore
Signed-off-by: Mathis Logemann <mathisloge@gmail.com>
2020-11-19 17:25:10 +01:00
Artem Pavlenko
fba418d20b <execution> is available starting from c++17 2020-09-10 18:00:12 +01:00
Artem Pavlenko
adced85761 Implement is_solid using stdlib <algorithm> `find_if 2020-09-10 15:57:19 +01:00
Artem Pavlenko
8913b673c3 remove unused function 2020-07-09 12:57:37 +01:00
Artem Pavlenko
4bd05cec22 Add missing include (bootstrap build) 2020-06-15 14:38:23 +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
Martin Ždila
657442947b add support for spacing-offset 2020-03-23 23:07:49 +01: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
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
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
1a0b1a1e77 SVG parser: fix typo (stroke gradient was applied instead if fill gradient) 2020-01-21 11:01:36 +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
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
Artem Pavlenko
cfa5809cd2 Make x3::rules declarations const 2019-11-25 10:36:34 +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
9dac8dcc34 Only push new elements to parenStack when needed (via @lightmare) (ref #4096) 2019-11-18 08:45:03 +00:00
Artem Pavlenko
7003255c0e avoid negative indicies access to parenStack - thanks @talaj! (ref #4096) 2019-11-05 09:50:51 +00:00