From a140c9ef40c7d6e05b02b0b253de1b5dfd9be475 Mon Sep 17 00:00:00 2001 From: Hermann Kraus Date: Fri, 3 Feb 2012 13:54:49 +0100 Subject: [PATCH] Add python bindings for text_placements and text_placement_info. --- bindings/python/mapnik_text_placement.cpp | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/bindings/python/mapnik_text_placement.cpp b/bindings/python/mapnik_text_placement.cpp index 90e8dcd11..3d758861b 100644 --- a/bindings/python/mapnik_text_placement.cpp +++ b/bindings/python/mapnik_text_placement.cpp @@ -66,6 +66,30 @@ struct NodeWrap: formating::node, wrapper } }; +struct TextPlacementsWrap: text_placements, wrapper +{ + text_placement_info_ptr get_placement_info(double scale_factor_, dimension_type dim, + bool has_dimensions_) const + { + return this->get_override("get_placement_info")(); + } +}; + +struct TextPlacementInfoWrap: text_placement_info, wrapper +{ + TextPlacementInfoWrap(text_placements const* parent, + double scale_factor_, dimension_type dim, bool has_dimensions_) + : text_placement_info(parent, scale_factor_, dim, has_dimensions_) + { + + } + + bool next() + { + return this->get_override("next")(); + } +}; + } void export_text_placement() @@ -126,11 +150,15 @@ void export_text_placement() .def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap) .def_readwrite("text_ratio", &text_symbolizer_properties::text_ratio) .def_readwrite("wrap_width", &text_symbolizer_properties::wrap_width) + .def_readwrite("default_format", &text_symbolizer_properties::default_format) .add_property ("format_tree", &text_symbolizer_properties::format_tree, &text_symbolizer_properties::set_format_tree); /* from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python.*/ + /* TODO: process, get_all_expressions. */ + /* set_old_style expression is just a compatibility wrapper and doesn't need to be exposed in python. */ ; + class_("CharProperties") .def_readwrite("face_name", &char_properties::face_name) .def_readwrite("fontset", &char_properties::fontset) @@ -144,10 +172,36 @@ void export_text_placement() .def_readwrite("fill", &char_properties::fill) .def_readwrite("halo_fill", &char_properties::halo_fill) .def_readwrite("halo_radius", &char_properties::halo_radius) + /* from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python.*/ + ; + + class_("TextPlacements") + .def_readwrite("defaults", &text_placements::properties) + .def("get_placement_info", pure_virtual(&text_placements::get_placement_info)) + /* TODO: get_all expressions. */ + ; + + class_("TextPlacementInfo", + init()) + .def("next", pure_virtual(&text_placement_info::next)) + .def("get_actual_label_spacing", &text_placement_info::get_actual_label_spacing) + .def("get_actual_minimum_distance", &text_placement_info::get_actual_minimum_distance) + .def("get_actual_minimum_padding", &text_placement_info::get_actual_minimum_padding) + .def_readwrite("properties", &text_placement_info::properties) + .def_readwrite("scale_factor", &text_placement_info::scale_factor) + .def_readwrite("has_dimensions", &text_placement_info::has_dimensions) + .def_readwrite("dimensions", &text_placement_info::dimensions) + .def_readwrite("collect_extents", &text_placement_info::collect_extents) + .def_readwrite("extents", &text_placement_info::extents) + .def_readwrite("additional_boxes", &text_placement_info::additional_boxes) + .def_readwrite("envelopes", &text_placement_info::envelopes) +// .def_readwrite("placements", &text_placement_info::placements) + ; //TODO: Python namespace class_("FormatingNode") .def("apply", pure_virtual(&formating::node::apply)) ; + }