Commit graph

2908 commits

Author SHA1 Message Date
artemp
7f8e18f89b cleanup 2014-08-12 16:15:57 +01:00
artemp
95cea92a4a convert all boost::variant to util::variant
apart from topojson (TODO)
2014-08-12 13:40:45 +01:00
artemp
8c7be886bd fix typo - uncomment column_collector 2014-08-12 10:47:29 +01:00
artemp
3f8c459195 make mapnik::symbolizer a mapnik::util::variant<Symbolizers...> 2014-08-12 10:40:38 +01:00
Dane Springmeyer
80aeceafc7 remove duplicate typedef for dash_array 2014-08-11 22:22:12 -07:00
Jordan Hollinger
c63e3a55f1 Merge branch 'master' of github.com:mapnik/mapnik into jh-min-repeat-distance 2014-08-11 17:43:51 -04:00
artemp
9a1639a1d6 AGG/Cairo - fix pattern opacity 2014-08-11 15:42:45 +01:00
artemp
201641a206 AGG/Cairo - fix pattern opacity 2014-08-11 15:36:48 +01:00
Jordan Hollinger
726274c2c9 Merge branch 'master' of github.com:mapnik/mapnik into jh-min-repeat-distance 2014-08-11 09:48:04 -04:00
artemp
27ee642bbe fix cairo_renderer usage in demo/viewer + revert aac69d0b34 2014-08-11 13:40:12 +01:00
artemp
9bfb41a39f convert symbolizer properties to use util::variant 2014-08-11 13:24:53 +01:00
artemp
aac69d0b34 expose cairo_renderer<cairo_surface_ptr> 2014-08-11 13:24:11 +01:00
artemp
c197822116 add getter interface compatible with boost::variant 2014-08-11 13:23:01 +01:00
artemp
e315922b70 Merge branch 'master' into custom-variant-2
Conflicts:
	include/mapnik/value.hpp
2014-08-11 11:53:59 +01:00
artemp
43b8069698 topojson - revert to using boost::variant for mapnik::topojson::geometry (TODO) 2014-08-11 11:51:19 +01:00
Dane Springmeyer
c285cfa188 refactor cairo_renderer
- splits process functions into new cpp files to reduce peak compile memory usage
 - drops cairo_renderer_base to match agg_renderer design
 - only cairo_ptr is accepted so cairo_surface_ptr must be converted into a context first
 - fixes -fvisibility=hidden
2014-08-10 13:53:45 -07:00
Dane Springmeyer
7cae3c34ca iwyu in renderer_common 2014-08-10 13:04:20 -07:00
Dane Springmeyer
4c10d90145 declare segment y_order inline 2014-08-10 13:02:34 -07:00
Dane Springmeyer
378ab71a51 more -fvisibility=hidden fixes for osx 2014-08-09 14:23:23 -07:00
Dane Springmeyer
678907e027 silence webp -Wunused-function warning 2014-08-09 13:57:01 -07:00
Dane Springmeyer
8ff987af6d iwyu 2014-08-09 13:46:13 -07:00
Dane Springmeyer
1c0b1884c3 use extern template to solve -fvisibility=hidden issues on osx 2014-08-09 13:44:42 -07:00
Dane Springmeyer
d61efc0b5a -fvisibility=hidden fixes on osx with -flto 2014-08-09 13:44:42 -07:00
Dane Springmeyer
1c9afc9a86 boolean_type cleanup/code re-use 2014-08-09 13:44:41 -07:00
Dane Springmeyer
95430a3beb remove uneeded debug statement 2014-08-08 15:41:18 -07:00
Dane Springmeyer
578da31702 use extern template to fix osx -flto bug - closes #2339 2014-08-08 14:16:49 -07:00
Dane Springmeyer
1727fae6e7 remove boost concept_check usage - refs #2346 2014-08-08 13:15:57 -07:00
Dane Springmeyer
e33e0150ad 2x faster compile of value_types.hpp - start working on #2346 2014-08-08 12:34:41 -07:00
Dane Springmeyer
8f183ac63a Merge pull request #2345 from mapnik/emplace
use emplace/emplace_back over insert/push_back - refs #2336
2014-08-08 11:30:14 -07:00
artemp
1f403a078e transform : is_null_node visitor 2014-08-08 16:43:15 +01:00
artemp
1a94ee1900 add link to custom generator TODO 2014-08-08 16:42:48 +01:00
artemp
93bad52e7e use is_null_visitor 2014-08-08 16:42:14 +01:00
artemp
7b255f2b95 value traits to control to value conversions + fix is_null 2014-08-08 16:41:03 +01:00
artemp
784d24828f replace boost::spirit::karma alternate operator (uses boost::variant) with direct util::variant to string conversion 2014-08-08 15:53:28 +01:00
artemp
6095df6702 Merge branch 'master' into custom-variant-2
Conflicts:
	include/mapnik/value.hpp
2014-08-08 12:31:31 +01:00
artemp
eff7fb2f94 Merge branch '3.x-szn-markers-symbolizer-vertex-placements' of git://github.com/mapycz/mapnik into mapycz-3.x-szn-markers-symbolizer-vertex-placements 2014-08-08 12:15:53 +01:00
artemp
09e78e3ee9 remove unused includes 2014-08-08 12:14:11 +01:00
artemp
ade32abcd8 mapnik::util::variant in mapnik::value 2014-08-08 12:13:49 +01:00
Jiri Drbalek
705260aa06 prefer c++ style comments 2014-08-08 06:34:33 +00:00
Jiri Drbalek
9b0953a955 remove needless virtual inheritance 2014-08-08 06:34:33 +00:00
Jiri Drbalek
fa0b97fff7 add markers placement methods vertex-first and vertex-last 2014-08-08 06:34:33 +00:00
artemp
e7caf63de2 remove unused includes 2014-08-07 16:53:32 +01:00
Dane Springmeyer
38852f27bb iwyu 2014-08-06 12:29:07 -07:00
Dane Springmeyer
aaaf82f28c remove unused <<operator 2014-08-06 12:28:35 -07:00
Dane Springmeyer
6ae59b80af iwyu 2014-08-06 12:27:10 -07:00
Dane Springmeyer
d4bb7ee279 remove unused <<operator 2014-08-06 12:26:01 -07:00
Dane Springmeyer
b8b76c1e1c iwyu 2014-08-06 08:17:31 -07:00
artemp
0490b7887c text_symbolizer - ``geometry-transform`` support 2014-08-06 14:54:38 +01:00
artemp
9835057b0f Use vertex_converters in text placement 2014-08-06 13:10:24 +01:00
artemp
ec97b8b744 c++ style 2014-08-06 12:32:50 +01:00
Dane Springmeyer
ce8aee1994 be explicit about copy needed to safely pass glyph_info into text_line - closes #2337 2014-08-05 17:03:30 -07:00
Dane Springmeyer
d27b45553a use emplace/emplace_back over insert/push_back - refs #2336 2014-08-05 15:19:37 -07:00
Dane Springmeyer
7a013e8151 switch glyph_info cache to an unordered_map (but no perf diff on osx) 2014-08-05 14:31:29 -07:00
Dane Springmeyer
2a7fc29e42 add support for opacity with svgs in pattern symbolizers - refs #1010 2014-08-05 13:48:40 -07:00
Dane Springmeyer
e111f77310 pedantic fixes to line_pattern_rasterizer 2014-08-05 12:33:39 -07:00
Dane Springmeyer
2c9e089317 move harfbuzz_shaper inc + other iwyu fixups 2014-08-05 11:10:49 -07:00
artemp
c3a83e6f74 re-arrange headers 2014-08-05 18:58:22 +01:00
Mike Morris
617524505b fix header include comment 2014-08-05 13:15:55 -04:00
artemp
2b90b382e7 move render_pattern into sepratre compilation module 2014-08-05 17:40:15 +01:00
artemp
a8991cd600 refactor clipping_extent into separate header for sharing 2014-08-05 17:22:13 +01:00
artemp
d01a5407ae remove unused symbolizer hash 2014-08-05 13:05:32 +01:00
artemp
59b666cb77 Cairo : use vertex_converter in line_pattern_symbolizer (#1386)
fix pattern alignment
2014-08-05 11:48:42 +01:00
Dane Springmeyer
8232180614 c++11 style in harfbuzz_shaper.hpp 2014-08-04 23:42:42 -07:00
Dane Springmeyer
ab1e5def47 text_line: remove unneeded acces to glyph storage 2014-08-04 20:29:25 -07:00
Dane Springmeyer
99a46f6910 re-enable glyph_info caching - refs #2326, #2265, #2334 2014-08-04 19:50:16 -07:00
Dane Springmeyer
db96f3c933 drop unnessary use of boost in transform_processor.hpp 2014-08-04 15:09:37 -07:00
Dane Springmeyer
aa63d6c9a0 include cleanups where we used to use boost 2014-08-04 14:42:51 -07:00
Dane Springmeyer
d7c3d8f774 fix std::sort and std::lower_bound usage 2014-08-04 14:42:24 -07:00
Dane Springmeyer
5134fdc0d3 use std::sort over boost::sort 2014-08-04 14:13:33 -07:00
Dane Springmeyer
a73440496a iwyu 2014-08-04 13:59:13 -07:00
Dane Springmeyer
03429f9bcb use std::unordered_map in non-perf critical code 2014-08-04 13:59:02 -07:00
Dane Springmeyer
75248e3376 remove obsolete wrap-character option for text symbolizer - closes #2333 2014-08-04 12:52:46 -07:00
artemp
c1c5421fb6 add divide, linear-dodge and linear-burn blending modes (needs testing) 2014-08-04 12:33:37 +01:00
Dane Springmeyer
9f05389754 fix handling of all sym enums as expressions - fixes tests from #2328 2014-08-03 21:28:36 -07:00
jhollinger2
0aad860a75 Add repeat-distance to text symbolizer properties.
Update collision detector to handle minimum-distance and repeat-distance seperately.
Update placement_finder to use repeat-distance.
Update group symbolizer to handle minimum-distance and repeat-distance.
2014-08-03 16:10:21 -04:00
artemp
f2db42d5e4 support image-transform for vector patterns 2014-08-01 13:39:29 +01:00
artemp
a9f0408e4f polygon_pattern_symbolizer: use set_symbolizer_property + add image-transform 2014-08-01 10:05:30 +01:00
artemp
18a7731d42 AGG line/polygon_pattern_symbolizer add support for SVG patterns 2014-07-31 15:25:22 +01:00
Dane Springmeyer
c6a291271f fix conditional pixel snapping for marker rasters 2014-07-31 00:49:00 -07:00
Dane Springmeyer
3412c071ab initialize default black square in marker cache - refs #952 2014-07-31 00:41:27 -07:00
Dane Springmeyer
6078f4cef1 more marker bbox fixes 2014-07-30 23:43:48 -07:00
Dane Springmeyer
d685307250 fix regression in raster marker collision box placement - refs #2295 2014-07-30 22:50:01 -07:00
Dane Springmeyer
6070c9caf0 fix compile 2014-07-30 16:25:21 -07:00
Dane Springmeyer
2a18280dc5 Add support for dynamic expressions for dasharrays - closes #2168 2014-07-30 16:02:23 -07:00
Dane Springmeyer
b7ecd00c31 complete support for face-name/fontset-name in <Format> node - closes #1900 2014-07-30 14:16:32 -07:00
Dane Springmeyer
350c2c29bd drop karma confix + solve conflicting spirit headers - closes #2323 2014-07-30 13:06:08 -07:00
Dane Springmeyer
da457eba81 Merge branch 'master' of github.com:mapnik/mapnik 2014-07-30 08:42:03 -07:00
artemp
3f5344ca82 geojson - make feature_collection_grammar not dependend on mapnik::context 2014-07-30 11:01:54 +01:00
Dane Springmeyer
8646ccc83f start passing fontsets down to format and layout - refs #1900 2014-07-29 18:29:20 -07:00
Dane Springmeyer
e7c6d84028 Avoid -Wdelete-non-virtual-dtor warning 2014-07-29 17:17:45 -07:00
Dane Springmeyer
acbebcdd79 Merge branch 'master' of github.com:mapnik/mapnik 2014-07-29 17:07:09 -07:00
Dane Springmeyer
673bd4fd8f use detail namespace in json/geometry_generator_parser.hpp 2014-07-29 17:06:54 -07:00
Dane Springmeyer
ba999ff4be Merge pull request #2295 from mapycz/3.x-szn-markers-symbolizer
refactor markers placements
2014-07-29 17:04:27 -07:00
Dane Springmeyer
1fa31d5d20 remove force-odd-labels - refs #2120 2014-07-29 14:37:29 -07:00
artemp
08c3dd1f88 convert remaining text properties to expressions 2014-07-29 14:43:26 +01:00
artemp
c565aa8722 move symbolizer property handling to symbolizer_utils 2014-07-29 13:31:07 +01:00
Jiri Drbalek
6730408039 fix include 2014-07-29 11:52:43 +00:00
Jiri Drbalek
6a17e17c04 fix markers transforms calc 2014-07-29 11:52:43 +00:00
Jiri Drbalek
2940de0b0b refactor markers placements 2014-07-29 11:52:39 +00:00
artemp
97f87b1946 aggregate text symbolizer properties loading 2014-07-29 10:09:54 +01:00
Dane Springmeyer
e525ca28b5 Re-instate skipping of proj_transform failures - closes #2147 2014-07-28 20:46:30 -07:00
Dane Springmeyer
cdb075f75f make clipping off by default - closes #2146 2014-07-28 20:31:10 -07:00
Dane Springmeyer
8feedd94cd rename mapnik::boolean to mapnik::boolean_type - closes #1899 2014-07-28 19:46:49 -07:00
Dane Springmeyer
04115c5838 fix #2290 2014-07-28 19:06:56 -07:00
Dane Springmeyer
b0f722a30b fix #2299 2014-07-28 17:09:51 -07:00
Dane Springmeyer
d55a0010dc also move feature_collection_grammar to impl file 2014-07-28 16:51:24 -07:00
artemp
f338028802 fix init order 2014-07-28 17:50:44 +01:00
artemp
0cf6e47006 c++ char_properties -> evaluated_format_properties 2014-07-28 17:22:32 +01:00
artemp
fb3d9cd7b6 convert horizontal/vertical/justify_alignment properties to expressions 2014-07-28 15:09:29 +01:00
artemp
61c0344dd6 generic set_property_from_xml implementation 2014-07-28 15:08:28 +01:00
artemp
51cf60125e rename source files to reflect class name e.g layout -> text_layout 2014-07-28 12:10:34 +01:00
Dane Springmeyer
0d95f038a7 shuffle the cost of spirit grammars 2014-07-25 16:15:18 -07:00
Dane Springmeyer
bbc57f442c fix -Wsign-compare warnings in several grammars 2014-07-25 15:49:50 -07:00
Dane Springmeyer
d598a2bb55 iwyu 2014-07-25 15:35:27 -07:00
Dane Springmeyer
34bbf36e3a Revert "return code 0 to gracefully exit if python bindings are not available"
This reverts commit 2f08dc29ef.

Conflicts:
	tests/run_tests.py
	tests/visual_tests/test.py
2014-07-25 11:49:05 -07:00
artemp
70059cc346 remove redundant ExpressionFormat node 2014-07-25 14:26:13 +01:00
artemp
37245fdde1 text properties : add framework to handle expressions in enumerations
+ make text-transform an expression
2014-07-25 14:19:41 +01:00
Dane Springmeyer
2f08dc29ef return code 0 to gracefully exit if python bindings are not available 2014-07-24 18:58:03 -07:00
Dane Springmeyer
99de69d96f Merge branch 'master' of github.com:mapnik/mapnik into grammar-refactor 2014-07-24 14:55:30 -07:00
Dane Springmeyer
c5be70ff65 refactor spirit grammars 2014-07-24 14:31:59 -07:00
artemp
b53572ab9c update text/formatting/format 2014-07-24 14:45:02 +01:00
artemp
9c39d4ebd2 collect expressions from format_properties 2014-07-24 12:00:46 +01:00
artemp
1927a00ee0 text-properties : make fill and halo-fill expressions 2014-07-24 11:37:16 +01:00
Dane Springmeyer
f8ccbf3ded fix compile of graphics.hpp 2014-07-23 14:32:48 -07:00
Dane Springmeyer
3defa77d88 remove big endian support - closes #2313 2014-07-23 14:16:44 -07:00
Dane Springmeyer
133f399777 iwyu 2014-07-23 14:16:11 -07:00
Dane Springmeyer
8dcd85a708 iwyu 2014-07-23 14:02:36 -07:00
Dane Springmeyer
9959006e61 remove boost::lexical_cast 2014-07-23 10:54:02 -07:00
Dane Springmeyer
bf8572fac6 remove boost::lexical_cast 2014-07-23 10:53:47 -07:00
Dane Springmeyer
2d2eec48c4 iwyu 2014-07-23 10:34:45 -07:00
artemp
8502019310 more format_properties expessions 2014-07-23 18:09:18 +01:00
artemp
e67f046a0e start re-factoring char_property (TODO: change name!) 2014-07-23 16:19:14 +01:00
Dane Springmeyer
265043e4d7 iwyu 2014-07-22 23:57:06 -07:00
Dane Springmeyer
148007cc48 iwyu + fwd declares 2014-07-22 23:36:54 -07:00
Dane Springmeyer
3de2457799 fwd declare layer 2014-07-22 23:11:12 -07:00
Dane Springmeyer
58163a583c clean up tuple includes 2014-07-22 23:01:31 -07:00
Dane Springmeyer
64e70fb374 iwyu 2014-07-22 22:40:39 -07:00
Dane Springmeyer
a80d7c9602 std::unordered_map for non-perf critical debug code 2014-07-22 22:39:49 -07:00
Dane Springmeyer
95aa4c709d use std::unique_lock instead of boost::unique_lock 2014-07-22 20:06:13 -07:00
Dane Springmeyer
6c6b1bd650 iwyu 2014-07-22 19:45:54 -07:00
Dane Springmeyer
28a05c96ef iwyu + faster compile 2014-07-22 19:36:39 -07:00
Dane Springmeyer
6a8b3e9cf9 fix clipping default until #2146 2014-07-22 12:15:45 -07:00
Dane Springmeyer
006c460c9c fix use of comp-op as data-driven expression 2014-07-22 10:52:30 -07:00
Dane Springmeyer
7744a65536 remove uneeded usage of boost::ignore_unused_variable_warning 2014-07-22 10:51:31 -07:00
artemp
498bba7cf8 c++ : pass arg by const ref 2014-07-22 16:09:10 +01:00
artemp
f12b5e06dd c++ style 2014-07-22 15:58:37 +01:00
artemp
bfc6c61d62 c++ - pass by const ref etc. 2014-07-21 14:46:54 +01:00
artemp
eacde4fe43 remove dummy_shaper 2014-07-21 12:41:31 +01:00
artemp
ee58762bd9 add property_serializer impl 2014-07-21 11:19:26 +01:00
artemp
93d40323c5 orientation -> symbolizer_base::value_type 2014-07-18 15:48:56 +01:00
artemp
594470ee17 expressions in text/formatting/layout (work-in-progress) 2014-07-18 11:18:54 +01:00
artemp
f9ed5d4027 add has_attribute(std::string const&) member function 2014-07-18 11:17:48 +01:00
artemp
56381b5770 make set_property_from_xml more generic
(e.g work with symbolizer_base::value_type and optional<symbolizer_base::value_type>)
2014-07-18 11:15:30 +01:00
artemp
efe0cf57b4 move set_property_from_xml into separate header for re-use 2014-07-18 11:14:28 +01:00
artemp
dcb60d5842 make add_expressions pure virtual in base class 2014-07-17 17:26:54 +01:00
artemp
18d1d0b8d5 fix path_move_dx 2014-07-17 17:26:20 +01:00
artemp
620aa62ab5 remove unused member variable 2014-07-17 17:01:03 +01:00
artemp
21986e5d4a refactor pass 2014-07-17 16:55:22 +01:00
artemp
79c1ac96b4 avoid captures in displacement_evaluator 2014-07-17 16:55:22 +01:00
Dane Springmeyer
8eab2d31de remove dead code 2014-07-16 16:13:56 -07:00
artemp
8a01cce2f7 move displacement_evaluator_ initialisation
c++ style fixes
2014-07-16 16:34:42 +01:00
artemp
4166fcdd5d store displacement logic in std::function and delay calc until dx/dy are evaluated (layout) 2014-07-16 14:24:00 +01:00
artemp
6c03a617a5 text displacement expr : more re-factoring and various fixes 2014-07-15 16:31:43 +01:00
artemp
1f17620e18 make methods pure virtual where appropriate
pass std::string by const ref (!)
c++ style
2014-07-15 11:15:26 +01:00
artemp
72bae0d6b8 text properties : displacement expr 2014-07-15 10:15:56 +01:00
artemp
a66c1ddb06 convert to expressions: text-ratio, wrap-before, rotate-displacement 2014-07-14 16:51:11 +01:00
artemp
0524a31d02 cleanup 2014-07-14 16:08:21 +01:00
artemp
00175c9e5f symbolizer : is_expression helper function 2014-07-14 14:15:06 +01:00
artemp
ee6d394321 color : add hash support 2014-07-14 12:36:04 +01:00
artemp
e066aa924f text_properties : wrap-width 2014-07-11 15:44:44 +01:00
artemp
4afd98a34a text_properties : store 'orientation' parameter in symbolizer_base::value_type 2014-07-11 14:43:56 +01:00
artemp
64ef711b76 move enumerations into separate compilation unit 2014-07-11 10:26:51 +01:00
artemp
c79e74116d cleanups 2014-07-11 09:51:34 +01:00
artemp
484c1fab50 c++ style 2014-07-10 17:14:34 +01:00
artemp
9e84b6101b store const* in glyph_t 2014-07-10 12:46:42 +01:00
artemp
6cd7026aac pass text_placement_info by ref to placement_finder + formatting 2014-07-10 11:44:46 +01:00
artemp
8c6015ec60 first take at cleaning-up text placement code
(NOTE: get_text_info is temp disabled in python bindings)
2014-07-09 11:31:03 +01:00
artemp
9e76ca7870 color : add move ctor 2014-07-08 18:13:44 +01:00
artemp
04facd3542 mode range ``for loops`` 2014-07-08 17:02:22 +01:00
artemp
65ee7ea005 range based for loops for better readability 2014-07-08 16:39:22 +01:00
artemp
81f7e69088 coord_arrat<T> : add support for range based for loop interface
update wkb parser to use it ^^
2014-07-08 16:22:24 +01:00
artemp
ebdfc5b11a use c++ casts 2014-07-07 19:23:28 +01:00
artemp
4556921e9a remove typedef usage
(FIXME: revisit yes/no hacky implementation with c++11 features)
2014-07-07 19:15:52 +01:00
artemp
fe215a684e c++11 style : replace (almost) all typedef with type alias's 2014-07-07 18:23:15 +01:00
artemp
0f01000570 prefer using type alias's instead of ``typedef``
e.g
```c++
using identifier attr(optional) = type-id ;
```
2014-07-07 11:56:16 +01:00
artemp
673c8edbb5 set_symbolizer_property_impl - pre-evaluate expressions when is_enum = false 2014-07-07 11:30:08 +01:00
artemp
0f9ff9fe5e typo 2014-07-07 11:30:08 +01:00
artemp
1f2f17160e initial implementation to pre-evaluate symbolizer properties where possible
FIXME: generic version needs needs help type deduction
2014-07-03 16:35:18 +01:00
artemp
6d1422c5bb c++ style : pre-increment 2014-07-03 10:16:11 +01:00
artemp
ab3aad38ad symbolizer properties : image_transform, cleanups 2014-07-03 09:06:24 +01:00
artemp
5ef8078252 markers_symbolizer properties update 2014-07-02 13:08:05 +01:00
artemp
13d3465000 update point_placement_enum, gamma_method_enum, line_rasterizer_enum parsing, gamma-method 2014-07-02 11:01:38 +01:00
artemp
504c6fdabd make ``simplify_algorithm`` an expression 2014-07-02 10:15:44 +01:00
artemp
e052b6c6cf Merge branch 'master' of git://github.com/romanustinov9/mapnik into romanustinov9-master 2014-07-01 14:03:31 +01:00
Roman Ustinov
595e8915a5 Made save_to_stream function available outside of library 2014-07-01 14:45:52 +04:00
artemp
2271e7413c ENUM_FROM_STRING macro to keep things tidy and scalable 2014-06-30 17:41:33 +01:00
artemp
79fa672843 support expressions in stroke-linejoin and stroke-linecap properties 2014-06-30 14:06:34 +01:00
artemp
19b38c2ed9 more generic expressions in enum
support expressions in halo-comp-op symbolizer property
2014-06-27 16:11:30 +01:00
artemp
aa9966ed88 parse comp-op property as enumeration_wrapper or expression_str 2014-06-27 13:58:03 +01:00
artemp
b197cbcdb7 tidy up 2014-06-25 09:01:20 +01:00