4848#include < mapnik/group/group_symbolizer_properties.hpp>
4949#include < mapnik/util/variant.hpp>
5050#include < mapnik/text/placements/dummy.hpp>
51+ #include < mapnik/transform/parse_transform.hpp>
52+ #include < mapnik/transform/transform_processor.hpp>
5153
5254using mapnik::symbolizer;
5355using mapnik::point_symbolizer;
@@ -185,7 +187,7 @@ struct extract_python_object
185187 }
186188};
187189
188- /*
190+
189191boost::python::object __getitem__ (mapnik::symbolizer_base const & sym, std::string const & name)
190192{
191193 using const_iterator = symbolizer_base::cont_type::const_iterator;
@@ -199,7 +201,7 @@ boost::python::object __getitem__(mapnik::symbolizer_base const& sym, std::strin
199201 // return mapnik::util::apply_visitor(extract_python_object(), std::get<1>(meta));
200202 return boost::python::object ();
201203}
202- */
204+
203205
204206boost::python::object symbolizer_keys (mapnik::symbolizer_base const & sym)
205207{
@@ -271,6 +273,20 @@ void set(symbolizer_base & sym, Value const& val)
271273 mapnik::put<Value>(sym, Key, val);
272274}
273275
276+ std::string get_transform (symbolizer_base const & sym)
277+ {
278+ auto expr = mapnik::get<mapnik::transform_type>(sym, mapnik::keys::geometry_transform);
279+ if (expr)
280+ return mapnik::transform_processor_type::to_string (*expr);
281+ return " " ;
282+ }
283+
284+ void set_transform (symbolizer_base & sym, std::string const & str)
285+ {
286+ mapnik::put (sym, mapnik::keys::geometry_transform, mapnik::parse_transform (str));
287+ }
288+
289+
274290}
275291
276292void export_symbolizer ()
@@ -306,11 +322,26 @@ void export_symbolizer()
306322 class_<symbolizer_base>(" SymbolizerBase" ,no_init)
307323 // .def("__setitem__",&__setitem__)
308324 // .def("__setattr__",&__setitem__)
309- // .def("__getitem__",&__getitem__)
310- // .def("__getattr__",&__getitem__)
325+ .def (" __getitem__" ,&__getitem__)
326+ .def (" __getattr__" ,&__getitem__)
311327 .def (" keys" , &symbolizer_keys)
312328 // .def("__str__", &__str__)
313329 .def (self == self) // __eq__
330+ .add_property (" smooth" ,
331+ &get<double , mapnik::keys::smooth>,
332+ &set<double , mapnik::keys::smooth>, " Smooth" )
333+ .add_property (" simplify_tolerance" ,
334+ &get<double , mapnik::keys::simplify_tolerance>,
335+ &set<double , mapnik::keys::simplify_tolerance>, " Simplify tolerance" )
336+ .add_property (" clip" ,
337+ &get<mapnik::value_bool, mapnik::keys::clip>,
338+ &set<mapnik::value_bool, mapnik::keys::clip>, " Clip - False/True" )
339+ .add_property (" comp_op" ,
340+ &get<mapnik::composite_mode_e, mapnik::keys::comp_op>,
341+ &set<mapnik::composite_mode_e, mapnik::keys::comp_op>, " Composite mode (comp-op)" )
342+ .add_property (" geometry_transform" ,
343+ &get_transform,
344+ &set_transform, " Geometry transform" )
314345 ;
315346}
316347
@@ -377,7 +408,16 @@ void export_polygon_symbolizer()
377408 .def (" __hash__" ,hash_impl_2<polygon_symbolizer>)
378409 .add_property (" fill" ,
379410 &get<mapnik::color, mapnik::keys::fill>,
380- &set<mapnik::color, mapnik::keys::fill>, " Fill color" )
411+ &set<mapnik::color, mapnik::keys::fill>, " Fill - CSS color)" )
412+ .add_property (" fill_opacity" ,
413+ &get<double , mapnik::keys::fill_opacity>,
414+ &set<double , mapnik::keys::fill_opacity>, " Fill opacity - 0..1.0" )
415+ .add_property (" gamma" ,
416+ &get<double , mapnik::keys::gamma>,
417+ &set<double , mapnik::keys::gamma>, " Fill gamma" )
418+ .add_property (" gamma_method" ,
419+ &get<mapnik::gamma_method_enum, mapnik::keys::gamma_method>,
420+ &set<mapnik::gamma_method_enum, mapnik::keys::gamma_method>, " Fill gamma method" )
381421 ;
382422
383423}
@@ -530,7 +570,12 @@ void export_line_symbolizer()
530570 .add_property (" stroke_dasharray" ,
531571 &get_stroke_dasharray,
532572 &set_stroke_dasharray, " Stroke dasharray" )
533-
573+ .add_property (" stroke_dashoffset" ,
574+ &get<double , mapnik::keys::stroke_dashoffset>,
575+ &set<double , mapnik::keys::stroke_dashoffset>, " Stroke dashoffset" )
576+ .add_property (" stroke_miterlimit" ,
577+ &get<double , mapnik::keys::stroke_miterlimit>,
578+ &set<double , mapnik::keys::stroke_miterlimit>, " Stroke miterlimit" )
534579
535580 ;
536581}
0 commit comments