#include <boost/python.hpp> #include <mapnik/glyph_symbolizer.hpp> #include "mapnik_enumeration.hpp" #include <boost/tuple/tuple.hpp> using mapnik::glyph_symbolizer; using mapnik::position; using mapnik::enumeration_; using mapnik::angle_mode_e; using mapnik::AZIMUTH; using mapnik::TRIGONOMETRIC; using namespace boost::python; namespace { using namespace boost::python; tuple get_displacement(const glyph_symbolizer& s) { boost::tuple<double,double> pos = s.get_displacement(); return boost::python::make_tuple(boost::get<0>(pos),boost::get<1>(pos)); } void set_displacement(glyph_symbolizer & s, boost::python::tuple arg) { s.set_displacement(extract<double>(arg[0]),extract<double>(arg[1])); } } void export_glyph_symbolizer() { enumeration_<angle_mode_e>("angle_mode") .value("AZIMUTH", AZIMUTH) .value("TRIGONOMETRIC", TRIGONOMETRIC) ; class_<glyph_symbolizer>("GlyphSymbolizer", init<std::string,mapnik::expression_ptr>()) .add_property("face_name", make_function(&glyph_symbolizer::get_face_name, return_value_policy<copy_const_reference>()), &glyph_symbolizer::set_face_name, "Get/Set the name of the font face (eg:\"DejaVu Sans " "Book\") which contains the glyph" ) .add_property("char", &glyph_symbolizer::get_char, &glyph_symbolizer::set_char, "Get/Set the char expression. The char is the unicode " "character indexing the glyph in the font referred by " "face_name." ) .add_property("allow_overlap", &glyph_symbolizer::get_allow_overlap, &glyph_symbolizer::set_allow_overlap, "Get/Set the flag which controls if glyphs should " "overlap any symbols previously rendered" ) .add_property("avoid_edges", &glyph_symbolizer::get_avoid_edges, &glyph_symbolizer::set_avoid_edges, "Get/Set the flag which controls if glyphs should be " "partially drawn beside the edge of a tile." ) .add_property("displacement", &get_displacement, &set_displacement) .add_property("halo_fill", make_function(&glyph_symbolizer::get_halo_fill, return_value_policy<copy_const_reference>()), &glyph_symbolizer::set_halo_fill) .add_property("halo_radius", &glyph_symbolizer::get_halo_radius, &glyph_symbolizer::set_halo_radius) .add_property("size", &glyph_symbolizer::get_size, &glyph_symbolizer::set_size, "Get/Set the size expression used to size the glyph." ) .add_property("angle", &glyph_symbolizer::get_angle, &glyph_symbolizer::set_angle, "Get/Set the angle expression used to rotate the glyph " "along its center." ) .add_property("angle_mode", &glyph_symbolizer::get_angle_mode, &glyph_symbolizer::set_angle_mode, "Get/Set the angle_mode property. This controls how the " "angle is interpreted. Valid values are AZIMUTH and " "TRIGONOMETRIC." ) .add_property("value", &glyph_symbolizer::get_value, &glyph_symbolizer::set_value, "Get/set the value expression which will be used to " "retrieve a a value for the colorizer to use to choose " "a color." ) .add_property("color", &glyph_symbolizer::get_color, &glyph_symbolizer::set_color, "Get/Set the color expression used to color the glyph. " "(See also the 'colorizer' attribute)" ) .add_property("colorizer", &glyph_symbolizer::get_colorizer, &glyph_symbolizer::set_colorizer, "Get/Set the RasterColorizer used to color the glyph " "depending on the 'value' expression (which must be " "defined).\n" "Only needed if no explicit color is provided" ) ; }