3030#include < mapnik/text/placements/dummy.hpp>
3131#include < mapnik/text/text_properties.hpp>
3232#include < mapnik/text/formatting/text.hpp>
33-
33+ # include " mapnik_symbolizer.hpp "
3434// pybind11
3535#include < pybind11/pybind11.h>
36- // #include <pybind11/operators.h>
37- // #include <pybind11/stl.h>
38- // #include <pybind11/stl_bind.h>
3936
4037namespace py = pybind11;
4138
@@ -57,28 +54,31 @@ void set_text_size(mapnik::text_placements_dummy & finder, double text_size)
5754 finder.defaults .format_defaults .text_size = text_size;
5855}
5956
60- mapnik::symbolizer_base::value_type get_text_size (mapnik::text_placements_dummy & finder)
57+ py::object get_text_size (mapnik::text_placements_dummy const & finder)
6158{
62- return finder.defaults .format_defaults .text_size ;
59+ return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
60+ finder.defaults .format_defaults .text_size );
6361}
6462
6563void set_fill (mapnik::text_placements_dummy & finder, mapnik::color const & fill)
6664{
6765 finder.defaults .format_defaults .fill = fill;
6866}
6967
70- mapnik::symbolizer_base::value_type get_fill (mapnik::text_placements_dummy & finder)
68+ py::object get_fill (mapnik::text_placements_dummy & finder)
7169{
72- return finder.defaults .format_defaults .fill ;
70+ return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
71+ finder.defaults .format_defaults .fill );
7372}
7473void set_halo_fill (mapnik::text_placements_dummy & finder, mapnik::color const & halo_fill )
7574{
7675 finder.defaults .format_defaults .halo_fill = halo_fill;
7776}
7877
79- mapnik::symbolizer_base::value_type get_halo_fill (mapnik::text_placements_dummy & finder)
78+ py::object get_halo_fill (mapnik::text_placements_dummy & finder)
8079{
81- return finder.defaults .format_defaults .halo_fill ;
80+ return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
81+ finder.defaults .format_defaults .halo_fill );
8282}
8383
8484
@@ -87,9 +87,10 @@ void set_halo_radius(mapnik::text_placements_dummy & finder, double halo_radius)
8787 finder.defaults .format_defaults .halo_radius = halo_radius;
8888}
8989
90- mapnik::symbolizer_base::value_type get_halo_radius (mapnik::text_placements_dummy & finder)
90+ py::object get_halo_radius (mapnik::text_placements_dummy & finder)
9191{
92- return finder.defaults .format_defaults .halo_radius ;
92+ return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
93+ finder.defaults .format_defaults .halo_radius );
9394}
9495
9596void set_format_expr (mapnik::text_placements_dummy & finder, std::string const & expr)
@@ -100,26 +101,21 @@ void set_format_expr(mapnik::text_placements_dummy & finder, std::string const&
100101
101102std::string get_format_expr (mapnik::text_placements_dummy & finder)
102103{
103- return " FIXME" ;
104+ mapnik::expression_set exprs;
105+ finder.defaults .add_expressions (exprs);
106+ std::string str = " " ;
107+ for (auto expr : exprs)
108+ {
109+ if (expr)
110+ str += mapnik::to_expression_string (*expr);
111+ }
112+ return str;
104113}
105114
106115}
107116
108117void export_placement_finder (py::module const & m)
109118{
110- // using namespace boost::python;
111- // implicitly_convertible<mapnik::symbolizer_base::value_type, mapnik::value_double>();
112- /*
113- text_placements_ptr placement_finder = std::make_shared<text_placements_dummy>();
114- placement_finder->defaults.format_defaults.face_name = "DejaVu Sans Book";
115- placement_finder->defaults.format_defaults.text_size = 10.0;
116- placement_finder->defaults.format_defaults.fill = color(0, 0, 0);
117- placement_finder->defaults.format_defaults.halo_fill = color(255, 255, 200);
118- placement_finder->defaults.format_defaults.halo_radius = 1.0;
119- placement_finder->defaults.set_format_tree(
120- std::make_shared<mapnik::formatting::text_node>(parse_expression("[GEONAME]")));
121- put<text_placements_ptr>(text_sym, keys::text_placements_, placement_finder);
122- */
123119 py::class_<mapnik::text_placements_dummy, std::shared_ptr<mapnik::text_placements_dummy>>(m, " PlacementFinder" )
124120 .def (py::init<>(), " Default ctor" )
125121 .def_property (" face_name" , &get_face_name, &set_face_name, " Font face name" )
0 commit comments