diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik/__init__.py mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik/__init__.py --- mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik/__init__.py 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik/__init__.py 2014-04-25 23:01:35.000000000 +0000 @@ -976,17 +976,6 @@ self.properties.maximum_angle_char_delta = maximum_angle_char_delta - - @property - def force_odd_labels(self): - return self.properties.force_odd_labels - - @force_odd_labels.setter - def force_odd_labels(self, force_odd_labels): - self.properties.force_odd_labels = force_odd_labels - - - @property def allow_overlap(self): return self.properties.allow_overlap diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik_symbolizer.cpp mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik_symbolizer.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik_symbolizer.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik_symbolizer.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -345,9 +345,6 @@ .add_property("fontset", make_function(&shield_symbolizer::get_fontset,return_value_policy()), &shield_symbolizer::set_fontset) - .add_property("force_odd_labels", - &shield_symbolizer::get_force_odd_labels, - &shield_symbolizer::set_force_odd_labels) .add_property("halo_fill", make_function(&shield_symbolizer::get_halo_fill,return_value_policy()), &shield_symbolizer::set_halo_fill) diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik_text_placement.cpp mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik_text_placement.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/bindings/python/mapnik_text_placement.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/bindings/python/mapnik_text_placement.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -431,7 +431,6 @@ .def_readwrite("minimum_padding", &text_symbolizer_properties::minimum_padding) .def_readwrite("minimum_path_length", &text_symbolizer_properties::minimum_path_length) .def_readwrite("maximum_angle_char_delta", &text_symbolizer_properties::max_char_angle_delta) - .def_readwrite("force_odd_labels", &text_symbolizer_properties::force_odd_labels) .def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap) .def_readwrite("largest_bbox_only", &text_symbolizer_properties::largest_bbox_only) .def_readwrite("text_ratio", &text_symbolizer_properties::text_ratio) diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/debian/changelog mapnik-2.3.0+dev20140426.git.a4985b3/debian/changelog --- mapnik-2.3.0+dev20140425.git.1e53351/debian/changelog 2014-04-25 00:03:50.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/debian/changelog 2014-04-26 00:04:01.000000000 +0000 @@ -1,3 +1,14 @@ +mapnik (2.3.0+dev20140426.git.a4985b3-1~trusty1) trusty; urgency=medium + + [ Dane Springmeyer ] + * add support for halo-rasterizer for shields - closes #2226 + * update tests + * remove force_odd_labels - refs #2120 + [ artemp ] + * re-use evaluator object + + -- Robert Coup (Mapnik Nightly Builds) Sat, 26 Apr 2014 00:00:22 +0000 + mapnik (2.3.0+dev20140425.git.1e53351-1~trusty1) trusty; urgency=medium [ Dane Springmeyer ] diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/expression_evaluator.hpp mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/expression_evaluator.hpp --- mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/expression_evaluator.hpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/expression_evaluator.hpp 2014-04-25 23:01:35.000000000 +0000 @@ -38,6 +38,7 @@ namespace mapnik { + template struct evaluate : boost::static_visitor { @@ -84,22 +85,22 @@ value_type operator() (binary_node const & x) const { - return (boost::apply_visitor(evaluate(feature_),x.left).to_bool()) - && (boost::apply_visitor(evaluate(feature_),x.right).to_bool()); + return (boost::apply_visitor(*this, x.left).to_bool()) + && (boost::apply_visitor(*this, x.right).to_bool()); } value_type operator() (binary_node const & x) const { - return (boost::apply_visitor(evaluate(feature_),x.left).to_bool()) - || (boost::apply_visitor(evaluate(feature_),x.right).to_bool()); + return (boost::apply_visitor(*this,x.left).to_bool()) + || (boost::apply_visitor(*this,x.right).to_bool()); } template value_type operator() (binary_node const& x) const { typename make_op::type operation; - return operation(boost::apply_visitor(evaluate(feature_),x.left), - boost::apply_visitor(evaluate(feature_),x.right)); + return operation(boost::apply_visitor(*this, x.left), + boost::apply_visitor(*this, x.right)); } template @@ -111,12 +112,12 @@ value_type operator() (unary_node const& x) const { - return ! (boost::apply_visitor(evaluate(feature_),x.expr).to_bool()); + return ! (boost::apply_visitor(*this,x.expr).to_bool()); } value_type operator() (regex_match_node const& x) const { - value_type v = boost::apply_visitor(evaluate(feature_),x.expr); + value_type v = boost::apply_visitor(*this, x.expr); #if defined(BOOST_REGEX_HAS_ICU) return boost::u32regex_match(v.to_unicode(),x.pattern); #else @@ -127,7 +128,7 @@ value_type operator() (regex_replace_node const& x) const { - value_type v = boost::apply_visitor(evaluate(feature_),x.expr); + value_type v = boost::apply_visitor(*this, x.expr); #if defined(BOOST_REGEX_HAS_ICU) return boost::u32regex_replace(v.to_unicode(),x.pattern,x.format); #else diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/text_properties.hpp mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/text_properties.hpp --- mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/text_properties.hpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/text_properties.hpp 2014-04-25 23:01:35.000000000 +0000 @@ -163,8 +163,6 @@ double minimum_padding; double minimum_path_length; double max_char_angle_delta; - /** Always try render an odd amount of labels */ - bool force_odd_labels; bool allow_overlap; /** Only consider geometry with largest bbox (polygons) */ bool largest_bbox_only; diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/text_symbolizer.hpp mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/text_symbolizer.hpp --- mapnik-2.3.0+dev20140425.git.1e53351/include/mapnik/text_symbolizer.hpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/include/mapnik/text_symbolizer.hpp 2014-04-25 23:01:35.000000000 +0000 @@ -93,8 +93,6 @@ void set_label_spacing(double spacing); double get_label_position_tolerance() const func_deprecated; //distance the label can be moved on the line to fit, if 0 the default is used void set_label_position_tolerance(double tolerance); - bool get_force_odd_labels() const func_deprecated; // try render an odd amount of labels - void set_force_odd_labels(bool force); double get_max_char_angle_delta() const func_deprecated; // maximum change in angle between adjacent characters void set_max_char_angle_delta(double angle); double get_text_size() const func_deprecated; diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/src/load_map.cpp mapnik-2.3.0+dev20140426.git.a4985b3/src/load_map.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/src/load_map.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/src/load_map.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -1309,6 +1309,8 @@ ensure_exists(file); shield_symbol.set_filename( parse_path(file, sym.get_tree().path_expr_grammar) ); parse_symbolizer_base(shield_symbol, sym); + optional halo_rasterizer = sym.get_opt_attr("halo-rasterizer"); + if (halo_rasterizer) shield_symbol.set_halo_rasterizer(*halo_rasterizer); rule.append(shield_symbol); } catch (config_error const& ex) diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/src/placement_finder.cpp mapnik-2.3.0+dev20140426.git.a4985b3/src/placement_finder.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/src/placement_finder.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/src/placement_finder.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -144,8 +144,6 @@ if (p.label_spacing > 0) num_labels = static_cast (floor(total_distance / pi.get_actual_label_spacing())); - if (p.force_odd_labels && num_labels % 2 == 0) - num_labels--; if (num_labels <= 0) num_labels = 1; @@ -589,8 +587,6 @@ if (p.label_spacing > 0) num_labels = static_cast(floor(total_distance / (pi.get_actual_label_spacing() + string_width_))); - if (p.force_odd_labels && (num_labels % 2 == 0)) - num_labels--; if (num_labels <= 0) num_labels = 1; diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/src/text_properties.cpp mapnik-2.3.0+dev20140426.git.a4985b3/src/text_properties.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/src/text_properties.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/src/text_properties.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -52,7 +52,6 @@ minimum_padding(0.0), minimum_path_length(0.0), max_char_angle_delta(22.5 * M_PI/180.0), - force_odd_labels(false), allow_overlap(false), largest_bbox_only(true), text_ratio(0.0), diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/src/text_symbolizer.cpp mapnik-2.3.0+dev20140426.git.a4985b3/src/text_symbolizer.cpp --- mapnik-2.3.0+dev20140425.git.1e53351/src/text_symbolizer.cpp 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/src/text_symbolizer.cpp 2014-04-25 23:01:35.000000000 +0000 @@ -290,16 +290,6 @@ placement_options_->defaults.label_position_tolerance = tolerance; } -bool text_symbolizer::get_force_odd_labels() const -{ - return placement_options_->defaults.force_odd_labels; -} - -void text_symbolizer::set_force_odd_labels(bool force) -{ - placement_options_->defaults.force_odd_labels = force; -} - double text_symbolizer::get_max_char_angle_delta() const { return placement_options_->defaults.max_char_angle_delta; diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/tests/python_tests/object_test.py mapnik-2.3.0+dev20140426.git.a4985b3/tests/python_tests/object_test.py --- mapnik-2.3.0+dev20140425.git.1e53351/tests/python_tests/object_test.py 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/tests/python_tests/object_test.py 2014-04-25 23:01:35.000000000 +0000 @@ -133,7 +133,6 @@ eq_(s.face_name, 'DejaVu Sans Bold') eq_(s.allow_overlap, False) eq_(s.fill, mapnik.Color('#000000')) - eq_(s.force_odd_labels, False) eq_(s.halo_fill, mapnik.Color('rgb(255,255,255)')) eq_(s.halo_radius, 0) eq_(s.label_placement, mapnik.label_placement.POINT_PLACEMENT) diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/tests/python_tests/postgis_test.py mapnik-2.3.0+dev20140426.git.a4985b3/tests/python_tests/postgis_test.py --- mapnik-2.3.0+dev20140425.git.1e53351/tests/python_tests/postgis_test.py 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/tests/python_tests/postgis_test.py 2014-04-25 23:01:35.000000000 +0000 @@ -278,7 +278,7 @@ except StopIteration: pass eq_(feature,None) - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Collection) + eq_(ds.describe()['geometry_type'],None) def test_geometry_detection(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test', Binary files /tmp/Wd8BTL_Oos/mapnik-2.3.0+dev20140425.git.1e53351/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-agg-reference.png and /tmp/t7qx5xdb9i/mapnik-2.3.0+dev20140426.git.a4985b3/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-agg-reference.png differ Binary files /tmp/Wd8BTL_Oos/mapnik-2.3.0+dev20140425.git.1e53351/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-agg-reference.png and /tmp/t7qx5xdb9i/mapnik-2.3.0+dev20140426.git.a4985b3/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-agg-reference.png differ diff -Nru mapnik-2.3.0+dev20140425.git.1e53351/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml mapnik-2.3.0+dev20140426.git.a4985b3/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml --- mapnik-2.3.0+dev20140425.git.1e53351/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml 2014-04-24 19:54:18.000000000 +0000 +++ mapnik-2.3.0+dev20140426.git.a4985b3/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml 2014-04-25 23:01:35.000000000 +0000 @@ -69,6 +69,7 @@ face-name="DejaVu Sans Book" halo-fill="white" halo-radius="2" + halo-rasterizer="fast" spacing="15"> 'hi'