+ apply has_dimensions for line_placement only

This commit is contained in:
Artem Pavlenko 2008-09-21 10:42:51 +00:00
parent 20f3a9460d
commit 11100cf30e
3 changed files with 10 additions and 17 deletions

View file

@ -41,23 +41,13 @@ namespace mapnik
struct placement : boost::noncopyable
{
placement(string_info & info_,
//path_type & shape_path_,
shield_symbolizer const& sym);
placement(string_info & info_, shield_symbolizer const& sym, bool has_dimensions_= false);
placement(string_info & info_,
//path_type & shape_path_,
text_symbolizer const& sym);
placement(string_info & info_, text_symbolizer const& sym);
~placement();
//helpers
//std::pair<double, double> get_position_at_distance(double target_distance);
//double get_total_distance();
string_info & info;
//path_type & shape_path;
//double total_distance_; //cache for distance
position displacement_;
label_placement_e label_placement;

View file

@ -496,13 +496,14 @@ namespace mapnik
if (geom.num_points() > 0 )
{
path_type path(t_,geom,prj_trans);
placement text_placement(info, sym);
text_placement.avoid_edges = sym.get_avoid_edges();
if (sym.get_label_placement() == POINT_PLACEMENT)
{
double label_x;
double label_y;
double z=0.0;
placement text_placement(info, sym, false);
text_placement.avoid_edges = sym.get_avoid_edges();
geom.label_position(&label_x, &label_y);
prj_trans.backward(label_x,label_y, z);
t_.forward(&label_x,&label_y);
@ -533,6 +534,8 @@ namespace mapnik
else if (geom.num_points() > 1 && sym.get_label_placement() == LINE_PLACEMENT)
{
placement text_placement(info, sym, true);
text_placement.avoid_edges = sym.get_avoid_edges();
finder.find_point_placements<path_type>(text_placement,path);
for (unsigned int ii = 0; ii < text_placement.placements.size(); ++ ii)

View file

@ -50,7 +50,7 @@
namespace mapnik
{
placement::placement(string_info & info_,
shield_symbolizer const& sym)
shield_symbolizer const& sym, bool has_dimensions_)
: info(info_),
displacement_(sym.get_displacement()),
label_placement(sym.get_label_placement()),
@ -62,7 +62,7 @@ namespace mapnik
max_char_angle_delta(sym.get_max_char_angle_delta()),
minimum_distance(sym.get_minimum_distance()),
avoid_edges(sym.get_avoid_edges()),
has_dimensions(false),
has_dimensions(has_dimensions_),
dimensions(std::make_pair(sym.get_image()->width(),
sym.get_image()->height()))
{