2828#include < mapnik/symbolizer_keys.hpp>
2929#include < mapnik/symbolizer_enumerations.hpp>
3030#include < mapnik/text/placements/dummy.hpp>
31+ #include < mapnik/text/placements/simple.hpp>
3132#include < mapnik/text/text_properties.hpp>
3233#include < mapnik/text/formatting/text.hpp>
3334#include " mapnik_symbolizer.hpp"
@@ -39,67 +40,79 @@ namespace py = pybind11;
3940namespace
4041{
4142
42- void set_face_name (mapnik::text_placements_dummy & finder, std::string const & face_name)
43+ template <typename PlacementFinder>
44+ void set_face_name (PlacementFinder & finder, std::string const & face_name)
4345{
4446 finder.defaults .format_defaults .face_name = face_name;
4547}
4648
47- std::string get_face_name (mapnik::text_placements_dummy & finder)
49+ template <typename PlacementFinder>
50+ std::string get_face_name (PlacementFinder const & finder)
4851{
4952 return finder.defaults .format_defaults .face_name ;
5053}
5154
52- void set_text_size (mapnik::text_placements_dummy & finder, double text_size)
55+ template <typename PlacementFinder>
56+ void set_text_size (PlacementFinder & finder, double text_size)
5357{
5458 finder.defaults .format_defaults .text_size = text_size;
5559}
5660
57- py::object get_text_size (mapnik::text_placements_dummy const & finder)
61+ template <typename PlacementFinder>
62+ py::object get_text_size (PlacementFinder const & finder)
5863{
5964 return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
6065 finder.defaults .format_defaults .text_size );
6166}
6267
63- void set_fill (mapnik::text_placements_dummy & finder, mapnik::color const & fill)
68+ template <typename PlacementFinder>
69+ void set_fill (PlacementFinder & finder, mapnik::color const & fill)
6470{
6571 finder.defaults .format_defaults .fill = fill;
6672}
6773
68- py::object get_fill (mapnik::text_placements_dummy & finder)
74+ template <typename PlacementFinder>
75+ py::object get_fill (PlacementFinder const & finder)
6976{
7077 return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
7178 finder.defaults .format_defaults .fill );
7279}
73- void set_halo_fill (mapnik::text_placements_dummy & finder, mapnik::color const & halo_fill )
80+
81+ template <typename PlacementFinder>
82+ void set_halo_fill (PlacementFinder & finder, mapnik::color const & halo_fill )
7483{
7584 finder.defaults .format_defaults .halo_fill = halo_fill;
7685}
7786
78- py::object get_halo_fill (mapnik::text_placements_dummy & finder)
87+ template <typename PlacementFinder>
88+ py::object get_halo_fill (PlacementFinder const & finder)
7989{
8090 return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
8191 finder.defaults .format_defaults .halo_fill );
8292}
8393
84-
85- void set_halo_radius (mapnik::text_placements_dummy & finder, double halo_radius)
94+ template < typename PlacementFinder>
95+ void set_halo_radius (PlacementFinder & finder, double halo_radius)
8696{
8797 finder.defaults .format_defaults .halo_radius = halo_radius;
8898}
8999
90- py::object get_halo_radius (mapnik::text_placements_dummy & finder)
100+ template <typename PlacementFinder>
101+ py::object get_halo_radius (PlacementFinder const & finder)
91102{
92103 return mapnik::util::apply_visitor (python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
93104 finder.defaults .format_defaults .halo_radius );
94105}
95106
96- void set_format_expr (mapnik::text_placements_dummy & finder, std::string const & expr)
107+ template <typename PlacementFinder>
108+ void set_format_expr (PlacementFinder & finder, std::string const & expr)
97109{
98110 finder.defaults .set_format_tree (
99111 std::make_shared<mapnik::formatting::text_node>(mapnik::parse_expression (expr)));
100112}
101113
102- std::string get_format_expr (mapnik::text_placements_dummy & finder)
114+ template <typename PlacementFinder>
115+ std::string get_format_expr (PlacementFinder const & finder)
103116{
104117 mapnik::expression_set exprs;
105118 finder.defaults .add_expressions (exprs);
@@ -118,11 +131,59 @@ void export_placement_finder(py::module const& m)
118131{
119132 py::class_<mapnik::text_placements_dummy, std::shared_ptr<mapnik::text_placements_dummy>>(m, " PlacementFinder" )
120133 .def (py::init<>(), " Default ctor" )
121- .def_property (" face_name" , &get_face_name, &set_face_name, " Font face name" )
122- .def_property (" text_size" , &get_text_size, &set_text_size, " Size of text" )
123- .def_property (" fill" , &get_fill, &set_fill, " Fill" )
124- .def_property (" halo_fill" , &get_halo_fill, &set_halo_fill, " Halo fill" )
125- .def_property (" halo_radius" , &get_halo_radius, &set_halo_radius, " Halo radius" )
126- .def_property (" format_expression" , &get_format_expr, &set_format_expr, " Format expression" )
134+ .def_property (" face_name" ,
135+ &get_face_name<mapnik::text_placements_dummy>,
136+ &set_face_name<mapnik::text_placements_dummy>,
137+ " Font face name" )
138+ .def_property (" text_size" ,
139+ &get_text_size<mapnik::text_placements_dummy>,
140+ &set_text_size<mapnik::text_placements_dummy>,
141+ " Size of text" )
142+ .def_property (" fill" ,
143+ &get_fill<mapnik::text_placements_dummy>,
144+ &set_fill<mapnik::text_placements_dummy>,
145+ " Fill" )
146+ .def_property (" halo_fill" ,
147+ &get_halo_fill<mapnik::text_placements_dummy>,
148+ &set_halo_fill<mapnik::text_placements_dummy>,
149+ " Halo fill" )
150+ .def_property (" halo_radius" ,
151+ &get_halo_radius<mapnik::text_placements_dummy>,
152+ &set_halo_radius<mapnik::text_placements_dummy>,
153+ " Halo radius" )
154+ .def_property (" format_expression" ,
155+ &get_format_expr<mapnik::text_placements_dummy>,
156+ &set_format_expr<mapnik::text_placements_dummy>,
157+ " Format expression" )
158+ ;
159+
160+ /*
161+ py::class_<mapnik::text_placements_simple, std::shared_ptr<mapnik::text_placements_simple>>(m, "PlacementFinderSimple")
162+ .def(py::init<>(), "Default ctor")
163+ .def_property("face_name",
164+ &get_face_name<mapnik::text_placements_simple>,
165+ &set_face_name<mapnik::text_placements_simple>,
166+ "Font face name")
167+ .def_property("text_size",
168+ &get_text_size<mapnik::text_placements_simple>,
169+ &set_text_size<mapnik::text_placements_simple>,
170+ "Size of text")
171+ .def_property("fill",
172+ &get_fill<mapnik::text_placements_simple>,
173+ &set_fill<mapnik::text_placements_simple>,
174+ "Fill")
175+ .def_property("halo_fill",
176+ &get_halo_fill<mapnik::text_placements_simple>,
177+ &set_halo_fill<mapnik::text_placements_simple>,
178+ "Halo fill")
179+ .def_property("halo_radius",
180+ &get_halo_radius<mapnik::text_placements_simple>,
181+ &set_halo_radius<mapnik::text_placements_simple>,
182+ "Halo radius")
183+ .def_property("format_expression",
184+ &get_format_expr<mapnik::text_placements_simple>,
185+ &set_format_expr<mapnik::text_placements_simple>,
186+ "Format expression")
127187 ;
188+ */
128189}
0 commit comments