Skip to content

Commit f706a0a

Browse files
committed
PlacementFinder - text properties
1 parent 96008b2 commit f706a0a

2 files changed

Lines changed: 31 additions & 26 deletions

File tree

src/mapnik_placement_finder.cpp

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,9 @@
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

4037
namespace 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

6563
void 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
}
7473
void 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

9596
void 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

101102
std::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

108117
void 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")

src/mapnik_python.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,10 @@ void export_parameters(py::module const&);
616616
void export_raster_colorizer(py::module const&);
617617
void export_scaling_method(py::module const&);
618618
void export_label_collision_detector(py::module const& m);
619+
void export_dot_symbolizer(py::module const&);
620+
void export_shield_symbolizer(py::module const&);
621+
void export_group_symbolizer(py::module const&);
622+
void export_building_symbolizer(py::module const&);
619623

620624
using mapnik::load_map;
621625
using mapnik::load_map_string;
@@ -667,6 +671,11 @@ PYBIND11_MODULE(_mapnik, m) {
667671
export_raster_colorizer(m);
668672
export_scaling_method(m);
669673
export_label_collision_detector(m);
674+
export_dot_symbolizer(m);
675+
export_shield_symbolizer(m);
676+
export_group_symbolizer(m);
677+
export_building_symbolizer(m);
678+
670679
//
671680
m.def("mapnik_version", &mapnik_version,"Get the Mapnik version number");
672681
m.def("mapnik_version_string", &mapnik_version_string,"Get the Mapnik version string");

0 commit comments

Comments
 (0)