26
26
#include <mapnik/text_symbolizer.hpp>
27
27
#include "mapnik_enumeration.hpp"
29
using namespace mapnik;
31
using mapnik::text_symbolizer;
34
using namespace boost::python;
36
list get_displacement_list(const text_symbolizer& t)
38
position pos = t.get_displacement();
39
double dx = boost::get<0>(pos);
40
double dy = boost::get<1>(pos);
41
boost::python::list disp;
47
list get_anchor_list(const text_symbolizer& t)
49
position anch = t.get_anchor();
50
double x = boost::get<0>(anch);
51
double y = boost::get<1>(anch);
52
boost::python::list anchor;
59
struct text_symbolizer_pickle_suite : boost::python::pickle_suite
61
static boost::python::tuple
62
getinitargs(const text_symbolizer& t)
65
return boost::python::make_tuple(t.get_name(),t.get_face_name(),t.get_text_size(),t.get_fill());
69
static boost::python::tuple
70
getstate(const text_symbolizer& t)
72
boost::python::list disp = get_displacement_list(t);
73
boost::python::list anchor = get_anchor_list(t);
75
return boost::python::make_tuple(disp,t.get_fontset().get_name(),t.get_label_placement(),
76
t.get_vertical_alignment(),t.get_halo_radius(),t.get_halo_fill(),t.get_text_ratio(),
77
t.get_wrap_width(),t.get_label_spacing(),t.get_minimum_distance(),t.get_allow_overlap(),
78
anchor,t.get_force_odd_labels(),t.get_max_char_angle_delta());
82
setstate (text_symbolizer& t, boost::python::tuple state)
84
using namespace boost::python;
88
PyErr_SetObject(PyExc_ValueError,
89
("expected 14-item tuple in call to __setstate__; got %s"
92
throw_error_already_set();
95
list disp = extract<list>(state[0]);
96
double dx = extract<double>(disp[0]);
97
double dy = extract<double>(disp[1]);
98
t.set_displacement(dx,dy);
102
std::string fontset = extract<std::string>(state[1]);
103
t.set_fontset(fontset);
106
t.set_label_placement(extract<label_placement_e>(state[2]));
108
t.set_vertical_alignment(extract<vertical_alignment_e>(state[3]));
110
t.set_halo_radius(extract<unsigned>(state[4]));
112
t.set_halo_fill(extract<color>(state[5]));
114
t.set_text_ratio(extract<unsigned>(state[6]));
116
t.set_wrap_width(extract<unsigned>(state[7]));
118
t.set_label_spacing(extract<unsigned>(state[8]));
120
t.set_minimum_distance(extract<double>(state[9]));
122
t.set_allow_overlap(extract<bool>(state[10]));
124
list anch = extract<list>(state[11]);
125
double x = extract<double>(anch[0]);
126
double y = extract<double>(anch[1]);
129
t.set_force_odd_labels(extract<bool>(state[12]));
131
t.set_max_char_angle_delta(extract<double>(state[13]));
29
137
void export_text_symbolizer()
31
139
using namespace boost::python;
32
using namespace mapnik;
34
using mapnik::text_symbolizer;
37
141
enumeration_<label_placement_e>("label_placement")
38
142
.value("LINE_PLACEMENT",LINE_PLACEMENT)
99
204
&text_symbolizer::set_minimum_distance)
100
205
.def("displacement",&text_symbolizer::set_displacement)
101
206
.def("anchor",&text_symbolizer::set_anchor)
207
.def("get_displacement",get_displacement_list)
208
.def("get_anchor",get_anchor_list)
102
209
.add_property("label_placement",
103
210
&text_symbolizer::get_label_placement,
104
211
&text_symbolizer::set_label_placement,