Skip to content

Commit 8481096

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 9e37fdf + 335fe44 commit 8481096

File tree

2 files changed

+58
-10
lines changed

2 files changed

+58
-10
lines changed

demo/python/rundemo.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@
164164
# FIXME - currently adding dash arrays is broken
165165
# https://github.com/mapnik/mapnik/issues/2324
166166
sym.stroke = mapnik.Color('black')
167-
sym.stroke_width = 1.0
167+
sym.stroke_width = 1
168168
provlines_rule.symbols.append(sym)
169169
provlines_style.rules.append(provlines_rule)
170170

@@ -196,7 +196,7 @@
196196

197197
sym = mapnik.LineSymbolizer()
198198
sym.stroke = mapnik.Color(171,158,137)
199-
sym.stroke_width = 2.0
199+
sym.stroke_width = 2
200200
sym.stroke_linecap = mapnik.stroke_linecap.ROUND_CAP
201201

202202
roads34_rule.symbols.append(sym)
@@ -219,7 +219,7 @@
219219

220220
sym = mapnik.LineSymbolizer()
221221
sym.stroke = mapnik.Color(171,158,137)
222-
sym.stroke_width = 4.0
222+
sym.stroke_width = 4
223223
sym.stroke_linecap = mapnik.stroke_linecap.ROUND_CAP
224224
roads2_rule_1.symbols.append(sym)
225225
roads2_style_1.rules.append(roads2_rule_1)
@@ -232,7 +232,7 @@
232232
sym = mapnik.LineSymbolizer()
233233
sym.stroke = mapnik.Color(255,250,115)
234234
sym.stroke_linecap = mapnik.stroke_linecap.ROUND_CAP
235-
sym.stroke_width = 2.0
235+
sym.stroke_width = 2
236236
roads2_rule_2.symbols.append(sym)
237237
roads2_style_2.rules.append(roads2_rule_2)
238238

@@ -255,7 +255,7 @@
255255
sym = mapnik.LineSymbolizer()
256256
sym.stroke = mapnik.Color(188,149,28)
257257
sym.stroke_linecap = mapnik.stroke_linecap.ROUND_CAP
258-
sym.stroke_width = 7.0
258+
sym.stroke_width = 7
259259
roads1_rule_1.symbols.append(sym)
260260
roads1_style_1.rules.append(roads1_rule_1)
261261
m.append_style('highway-border', roads1_style_1)
@@ -265,7 +265,7 @@
265265
roads1_rule_2.filter = mapnik.Expression('[CLASS] = 1')
266266
sym.stroke = mapnik.Color(242,191,36)
267267
sym.stroke_linecap = mapnik.stroke_linecap.ROUND_CAP
268-
sym.stroke_width = 5.0
268+
sym.stroke_width = 5
269269
roads1_rule_2.symbols.append(sym)
270270
roads1_style_2.rules.append(roads1_rule_2)
271271

src/mapnik_symbolizer.cpp

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@
4747
#include <mapnik/group/group_symbolizer_properties.hpp>
4848
#include <mapnik/util/variant.hpp>
4949

50-
// stl
51-
#include <sstream>
52-
5350
using mapnik::symbolizer;
5451
using mapnik::point_symbolizer;
5552
using mapnik::line_symbolizer;
@@ -73,10 +70,61 @@ using mapnik::parse_path;
7370

7471

7572
namespace {
73+
74+
struct value_to_target
75+
{
76+
value_to_target(mapnik::symbolizer_base & sym, std::string const& name)
77+
: sym_(sym), name_(name) {}
78+
79+
void operator() (mapnik::value_integer const& val)
80+
{
81+
auto key = mapnik::get_key(name_);
82+
switch (std::get<2>(get_meta(key)))
83+
{
84+
case mapnik::property_types::target_bool:
85+
put(sym_, key, static_cast<mapnik::value_bool>(val));
86+
break;
87+
case mapnik::property_types::target_double:
88+
put(sym_, key, static_cast<mapnik::value_double>(val));
89+
break;
90+
default:
91+
put(sym_, key, val);
92+
break;
93+
}
94+
}
95+
96+
void operator() (mapnik::value_double const& val)
97+
{
98+
auto key = mapnik::get_key(name_);
99+
switch (std::get<2>(get_meta(key)))
100+
{
101+
case mapnik::property_types::target_bool:
102+
put(sym_, key, static_cast<mapnik::value_bool>(val));
103+
break;
104+
case mapnik::property_types::target_integer:
105+
put(sym_, key, static_cast<mapnik::value_integer>(val));
106+
break;
107+
default:
108+
put(sym_, key, val);
109+
break;
110+
}
111+
}
112+
113+
template <typename T>
114+
void operator() (T const& val)
115+
{
116+
put(sym_, mapnik::get_key(name_), val);
117+
}
118+
private:
119+
mapnik::symbolizer_base & sym_;
120+
std::string const& name_;
121+
122+
};
123+
76124
using namespace boost::python;
77125
void __setitem__(mapnik::symbolizer_base & sym, std::string const& name, mapnik::symbolizer_base::value_type const& val)
78126
{
79-
put(sym, mapnik::get_key(name), val);
127+
mapnik::util::apply_visitor(value_to_target(sym, name), val);
80128
}
81129

82130
std::shared_ptr<mapnik::symbolizer_base::value_type> numeric_wrapper(const object& arg)

0 commit comments

Comments
 (0)