Merge pull request #2990 from mapycz/fix-text-minimum-path-length

fix text-minimum-path-length
This commit is contained in:
Dane Springmeyer 2015-07-27 16:33:25 -07:00
commit 90f2fd91f5

View file

@ -77,11 +77,10 @@ struct split_multi_geometries
{
using container_type = T;
split_multi_geometries(container_type & cont, view_transform const& t,
proj_transform const& prj_trans, double minimum_path_length)
proj_transform const& prj_trans)
: cont_(cont),
t_(t),
prj_trans_(prj_trans),
minimum_path_length_(minimum_path_length) {}
prj_trans_(prj_trans) { }
void operator() (geometry::geometry_empty const&) const {}
void operator() (geometry::multi_point<double> const& multi_pt) const
@ -93,18 +92,7 @@ struct split_multi_geometries
}
void operator() (geometry::line_string<double> const& line) const
{
if (minimum_path_length_ > 0)
{
box2d<double> bbox = t_.forward(geometry::envelope(line), prj_trans_);
if (bbox.width() >= minimum_path_length_)
{
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
}
}
else
{
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
}
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(line)));
}
void operator() (geometry::multi_line_string<double> const& multi_line) const
@ -117,18 +105,7 @@ struct split_multi_geometries
void operator() (geometry::polygon<double> const& poly) const
{
if (minimum_path_length_ > 0)
{
box2d<double> bbox = t_.forward(geometry::envelope(poly), prj_trans_);
if (bbox.width() >= minimum_path_length_)
{
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
}
}
else
{
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
}
cont_.push_back(base_symbolizer_helper::geometry_cref(std::cref(poly)));
}
void operator() (geometry::multi_polygon<double> const& multi_poly) const
@ -156,7 +133,6 @@ struct split_multi_geometries
container_type & cont_;
view_transform const& t_;
proj_transform const& prj_trans_;
double minimum_path_length_;
};
} // ns detail
@ -208,7 +184,7 @@ void base_symbolizer_helper::initialize_geometries() const
double minimum_path_length = text_props_->minimum_path_length;
auto const& geom = feature_.get_geometry();
util::apply_visitor(detail::split_multi_geometries<geometry_container_type>
(geometries_to_process_, t_, prj_trans_, minimum_path_length ), geom);
(geometries_to_process_, t_, prj_trans_), geom);
if (!geometries_to_process_.empty())
{
auto type = geometry::geometry_type(geom);