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