Commit graph

3765 commits

Author SHA1 Message Date
Dane Springmeyer
9dd07fd40b use c++ style casts 2016-03-10 11:44:23 -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
artemp
6856100433 box2d operator<< - output "box2d(INVALID)" for invalid box. 2016-03-07 13:51:50 +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
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
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
a855a12532 make code comment about needing immutable grammars - refs #3342 [skip ci] 2016-03-03 09:14:06 -08: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
296f8d467d avoid grammar_impl usage in headers - other minor refactoring around json spirit 2016-03-02 12:48:07 -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
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
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
bd5d1c8df8 prune include directives a bit more 2016-02-24 12:24:06 +01:00
artemp
50db396760 move value implementation into *.cpp 2016-02-23 23:05:19 +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
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
085a2afe40 minor formatting 2016-02-18 17:17:44 +01:00
Mickey Rose
1499475d04 remove to_utf8, instead use UnicodeString::toUTF8String 2016-02-15 21:07:01 +01:00
Dane Springmeyer
10bd37ddd7 avoid unneccesary dependence on << operator of mapnik::enumeration 2016-02-09 10:09:12 -08:00
Dane Springmeyer
6c1b6e301d gradient does not need to be a fancy enumeration 2016-02-09 09:56:57 -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
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
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
ed076bf3f5 compile image_filter_grammar separately 2016-01-28 12:04:36 -08: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
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
Blake Thompson
d3d1106865 Fixed bug around set envelope in memorydatasource 2016-01-21 15:20:50 -06: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
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
Artem Pavlenko
7997f3725e Merge pull request #3235 from mapnik/raster_mem_ds
Raster Type Memory Datasource
2016-01-14 16:19:43 +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
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
artemp
9e7f7917e3 export path_parse<svg_converter_type> 2016-01-12 15:06:30 +00: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
479a657437 make SVG path parser stricter by failing if not all input parsed ref #3225 2016-01-08 11:59:59 +00:00
artemp
b1c22ba853 SVG :initial support for "stroke-dasharray" 2016-01-07 15:54:34 +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
artemp
e0c756ee8d geometry_envelope - add missing linear_ring 2015-12-17 12:07:05 +00:00
Dane Springmeyer
50d1e2fbb3 handle more gcc 4.9 -Wshadow warnings 2015-12-04 14:07:42 -05:00
artemp
da617f92eb add scale_image_agg' and reproject_and_scale_raster` overloads for backward caps 2015-11-19 12:26:16 +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
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
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
Dane Springmeyer
7608040906 centralize warning suppression 2015-11-07 17:53:09 -08: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
Dane Springmeyer
8813e73cfc rename SHAPE_MEMORY_MAPPED_FILE to MAPNIK_MEMORY_MAPPED_FILE 2015-10-16 13:34:53 -07:00
artemp
2906706a40 geojson.input - split parsing FeatureCollection and single Feature/Geometry into separate grammars 2015-10-15 15:12:16 +01:00
Dane Springmeyer
7fa1e58ab7 better c++11 usage 2015-10-12 10:10:12 -07:00
Dane Springmeyer
25eaf96e98 silence -Wsign-compare warning from boost [skip ci] 2015-10-07 08:33:24 -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
Dane Springmeyer
7122fdc6e5 fix #3096 2015-09-30 14:23:21 -07:00
artemp
d6d9e94e36 svg_parser - fix double_list grammar to handle whitespace | comma correctly 2015-09-28 14:22:30 +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
jakepruitt
fcbb91a00e Add int list parser 2015-09-23 12:08:50 -07:00
artemp
d54eca9dca image - fix copy/move implementation and update/improve tests 2015-09-16 14:28:55 +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
Dane Springmeyer
b2d08ea4ea re-enable zero allocation image interface - refs #3069 2015-09-14 16:45:58 -07: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
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
a32fbdf635 use atomic<> where possible to avoid locking 2015-09-08 12:28:16 +02: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
0ea5ccc7bc fix typo 2015-08-27 13:07:51 +02:00
Jiri Drbalek
75a299ab1d remove incorrect and meaningless comments 2015-08-26 14:29:09 +00:00
Jiri Drbalek
883c9c83bf remove unused members 2015-08-26 12:59:11 +00: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
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
Blake Thompson
3d262c7426 Fixed linking errors in parse jpeg. closes #3031 2015-08-12 09:32:32 -05:00
artemp
715cff3f2a fix - pass by const ref 2015-08-12 12:09:40 +02:00
artemp
ebf4d66900 Merge branch 'master' into image_filters 2015-08-12 11:27:59 +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
75522c0cc5 Merge branch 'master' into image_filters 2015-08-11 15:31:41 -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
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
Artem Pavlenko
e68da0d083 Merge pull request #3016 from mapycz/text-null-bbox
Null text collision box
2015-08-10 12:18:31 +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
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
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
Brian Reavis
9bdca97579 Fixed dot symbolizer not acknowledging scale factor. 2015-08-02 14:55:26 -06:00
artemp
42bf2303e0 fix parse_double_optional_percent grammar and update tests 2015-07-31 11:35:02 +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
artemp
56712c2435 fix XMLPARSER=libxml2 logic 2015-07-30 14:34:01 +02:00
artemp
ffcacf3509 make libxml2 optional dependency (XMLPARSER=libxml2) 2015-07-30 13:14:37 +02:00
artemp
9d43f69cf6 const correctness 2015-07-30 11:09:08 +02:00
artemp
e5c4dbf1c0 format 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
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
515da3f9a8 rapidxml based svg parser - initial impl 2015-07-28 16:33:39 +02:00
artemp
42c8da72e9 Merge branch 'master' into svg-parser-errors 2015-07-28 10:29:59 +02: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
artemp
8ebb9db431 add xml:id support ( ref #2989 ) 2015-07-27 15:55:34 -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
2e7d75f022 track errors parsing double values 2015-07-24 11:05:26 +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
9eadd48d7b add tests for no-existing svg file + bogus color in fill and stroke 2015-07-22 11:52:18 +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
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
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
Dane Springmeyer
f9d65d0167 Merge branch 'master' of github.com:mapnik/mapnik into issue-2971 2015-07-17 07:23:10 -07:00
artemp
c4d8af702d don't return early from parse_linear_gradient 2015-07-17 09:42:05 +02:00
artemp
62a58937a4 try to never fail (almost) 2015-07-16 16:55:41 +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
1733db5022 c++ - don't rely on implicit int to bool conversions 2015-07-15 17:46:27 +02:00
Dane Springmeyer
0a126a3765 attemp to fix #2971 2015-07-14 22:54:32 -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
c2295755f6 fix typo 2015-07-13 13:48:34 +02:00
artemp
0a484bf784 handle Multi-geoms + update cairo and grid renderers
update
2015-07-07 18:37:27 +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
a91d73779f revert the functionality of 944f34b - refs #2937 2015-07-06 19:27:05 -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
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
artemp
4f6c286f92 style 2015-07-02 10:14:36 +02: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
Dane Springmeyer
48eb4abedb merge with master 2015-06-30 00:38:45 -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
15589c8568 pull in latest master 2015-06-22 13:51:09 -07:00
Dane Springmeyer
9a5cc81924 fix a few -Wunused-argument warnings [skip ci] 2015-06-22 13:29:57 -07:00
Jérémy Lal
f4b10fbbff Spelling error 2015-06-19 23:25:27 +02:00
artemp
7e0c23815e remove boost::ptr_vector usage 2015-06-19 10:45:43 +02:00
artemp
98d87f4c88 replace remaining boost::unordered_map 2015-06-18 11:08:35 +02:00
Dane Springmeyer
07e06e1781 tame a few more boost -Wsign-conversion warnings 2015-06-17 13:29:54 -07:00
Blake Thompson
bd9e580cd8 Merge branch 'master' into offset 2015-06-16 11:50:04 -05:00
artemp
8c6bf0eef6 update copyright notice 2015-06-16 12:49:16 +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
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
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
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
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
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
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
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
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
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
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
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
Blake Thompson
08602392a3 Merge branch 'master' into offset 2015-06-09 13:18:31 -05:00
Blake Thompson
75f7cb26bb Reversed the offsets 2015-06-09 09:18:52 -05:00
Dane Springmeyer
32d925b965 fix clipping regression on line patterns #2897 (proper tests depend on 2896) 2015-06-08 19:06:43 -07:00
Dane Springmeyer
c9293b8fd0 actually fix #2894 - refs #2202 2015-06-08 18:51:13 -07:00
Jiri Drbalek
76b7466719 fix rendering raster without scaling 2015-06-08 17:31:56 +00: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
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
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
artemp
3c159f7163 remove unused dump_xml.hpp 2015-06-03 11:18:32 +01: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
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
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
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
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
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
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
3492d06f80 Always use -fPIC, refs #2861, closes #2867 2015-05-26 15:11:44 -05:00
Blake Thompson
e027204b91 Added c++ with -fPIC for SUSE 2015-05-26 13:02:18 -05:00
Jiri Drbalek
51064a9479 grid: use correct types 2015-05-25 21:03:40 +00:00
Dane Springmeyer
84e4d8bf22 Start calling geometry::correct everywhere possible - refs #2834 2015-05-20 14:00:30 -07: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
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
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
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
artemp
bf6b7d79bd use if/else if ... 2015-05-18 11:21:56 +01:00
Dane Springmeyer
a3ac9dbca2 remove unused boost/math include and typedefs 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
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
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
e892f752e9 update remaining image writers to use image_options 2015-05-15 16:55:30 +01: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
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
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
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
527cbe7897 fix labeling on polygons 2015-05-14 11:26:01 +00: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
f3abe7fc25 Added test coverage to image buffer 2015-05-13 16:50:31 -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
493e1d8362 fix #2743 [skip ci] 2015-05-11 16:59:00 -07: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
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
4c76edaef7 algorithm is a somewhat large stl header, move it to cpp 2015-05-06 06:37:06 -07:00
Dane Springmeyer
126c777c8d shuffle around boost/geometry usage in headers to reduce compile time 2015-05-05 22:04:49 -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
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
081cf02dcf fix method signitures to use std::size_t
rename getSize() -> size(), getRowSize() -> row_size
2015-05-04 10:57:57 +02:00
Jiri Drbalek
78d7ea007a fix labeling 2015-04-30 07:20:10 +00:00
Dane Springmeyer
4ade976ee1 fix SVG rendering 2015-04-29 15:41:18 -07: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
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
930eb184d8 pedantic proj api usage 2015-04-26 23:24:19 +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
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
artemp
06d77865db update to templated geometry 2015-04-22 12:23:51 +02:00
artemp
2768aa6a4a Merge branch 'mapnik-geometry' into mapnik-geometry-template 2015-04-22 12:13:29 +02: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
Dane Springmeyer
3fb41e865a fix outline drawing in debugsymbolizer ring mode 2015-04-14 15:33:05 +02: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
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
Blake Thompson
87fb41907a Added template to geometries 2015-04-09 15:22:51 -05:00
artemp
2bc2e6b85e use geometry_to_path to convert geometry 2015-04-08 18:48:41 +02: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
Blake Thompson
6be658f5b5 Moved geometry envelope to an impl 2015-04-06 11:00:03 -05:00
artemp
3be0074c20 bug fix - add missing break statement 2015-04-02 14:58:05 +02: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
artemp
74fb3ddde0 Merge branch 'master' into mapnik-geometry 2015-03-25 16:19:02 +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
Dane Springmeyer
b87e09c147 fix memory datasource accumulate_extent 2015-03-24 14:46:26 -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
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
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
08a3911b0a Added the introduction of an image_view_null, this could possibly fix windows build issues 2015-03-19 21:28:16 -05:00
Dane Springmeyer
c1d7fe3a8f fix compile error on windows: error C2065: 'M_PI': undeclared identifier 2015-03-19 12:14:24 -07:00
artemp
8a0b4a6b6e Merge branch 'master' into mapnik-geometry 2015-03-19 19:17:01 +01:00
artemp
3bbb9a24f1 debug_symbolizer - update to use mapnik-geometry 2015-03-19 12:30:21 +01: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
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
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
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
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
71c9c04e92 Merge branch 'master' into mapnik-geometry 2015-03-16 16:20:46 +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
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
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
Blake Thompson
bf61a033d3 Intial commit for impl 2015-03-13 10:52:39 -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
6d13454f72 reinstate 'from_wkt' interface 2015-03-12 14:12:53 +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
c8e56f1128 fix high zoom crash in line pattern rendering - closes #2726 2015-03-10 18:16:04 -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
e7843ba471 use sequencial catch blocks 2015-03-09 18:48:41 +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
72e31d2768 update to use mapnik-geometry 2015-03-09 16:57:19 +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